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..0416b00
--- /dev/null
+++ b/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl</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/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/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/README.md b/README.md
new file mode 100644
index 0000000..282ba8d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,9 @@
+lunifera-dsl
+============
+
+DSLs and their semantic models for lunifera.org
+
+
+## BUILD
+ mvn clean verify -Plunifera.build.p2 -Dlunifera.build.uses.remote.federated.p2 -Dlunifera.build.eclipse.platform.name=kepler
+
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..935810f
--- /dev/null
+++ b/jenkins.build.config.xml
@@ -0,0 +1,20 @@
+<?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.runtime</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.dsl.common.xtext.edit/.project b/org.eclipse.osbp.dsl.common.xtext.edit/.project
new file mode 100644
index 0000000..1a91f61
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.common.xtext.edit</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/LICENSE.txt b/org.eclipse.osbp.dsl.common.xtext.edit/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/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.dsl.common.xtext.edit/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.common.xtext.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..395fe09
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.common.xtext.edit
+Bundle-SymbolicName: org.eclipse.osbp.dsl.common.xtext.edit;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.osbp.dsl.semantic.common.types.provider.TypesEditPlugin$Implementation
+Bundle-Vendor: Eclipse OSBP
+ Germany)
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.semantic.common.types.provider;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.common.util,
+   org.eclipse.osbp.dsl.semantic.common.types.util,
+   org.eclipse.emf.common,
+   org.eclipse.emf.edit.provider,
+   org.eclipse.emf.common.notify,
+   org.eclipse.emf.edit.domain"
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.osbp.dsl.common.xtext;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.common.types.edit;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/about.html b/org.eclipse.osbp.dsl.common.xtext.edit/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/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.dsl.common.xtext.edit/about.ini b/org.eclipse.osbp.dsl.common.xtext.edit/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/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.dsl.common.xtext.edit/about.mappings b/org.eclipse.osbp.dsl.common.xtext.edit/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/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.dsl.common.xtext.edit/about.properties b/org.eclipse.osbp.dsl.common.xtext.edit/about.properties
new file mode 100644
index 0000000..bf40452
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.common.xtext.edit
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/build.properties b/org.eclipse.osbp.dsl.common.xtext.edit/build.properties
new file mode 100644
index 0000000..7a9d6cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/build.properties
@@ -0,0 +1,10 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               LICENSE.txt
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLAnnotationDef_annotation_XAnnotation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLAnnotationDef_annotation_XAnnotation.gif
new file mode 100644
index 0000000..be1a550
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLAnnotationDef_annotation_XAnnotation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLAnnotationTarget_annotations_LAnnotationDef.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLAnnotationTarget_annotations_LAnnotationDef.gif
new file mode 100644
index 0000000..f4fa5b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLAnnotationTarget_annotations_LAnnotationDef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCommonModel_packages_LTypedPackage.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCommonModel_packages_LTypedPackage.gif
new file mode 100644
index 0000000..50cbfbf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCommonModel_packages_LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCompoundConstraint_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCompoundConstraint_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..356dbad
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCompoundConstraint_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCompoundConstraint_constraints_LCompoundConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCompoundConstraint_constraints_LCompoundConstraint.gif
new file mode 100644
index 0000000..22ebacc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLCompoundConstraint_constraints_LCompoundConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..3145841
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCAssertFalse.gif
new file mode 100644
index 0000000..9e5723e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCAssertTrue.gif
new file mode 100644
index 0000000..3494d53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDecimalMax.gif
new file mode 100644
index 0000000..3494d53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDecimalMin.gif
new file mode 100644
index 0000000..2769bc6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDigits.gif
new file mode 100644
index 0000000..fd65ab1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCFuture.gif
new file mode 100644
index 0000000..0c1ee4c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNotNull.gif
new file mode 100644
index 0000000..de6af47
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNull.gif
new file mode 100644
index 0000000..54a8425
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNumericMax.gif
new file mode 100644
index 0000000..be1e90e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNumericMin.gif
new file mode 100644
index 0000000..0585fe2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCPast.gif
new file mode 100644
index 0000000..a4c5e23
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCRegEx.gif
new file mode 100644
index 0000000..655f0eb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCSize.gif
new file mode 100644
index 0000000..54a8425
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLConstraints_constraints_LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLContraints_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLContraints_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..788a4f2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLContraints_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCAssertFalse.gif
new file mode 100644
index 0000000..c59c871
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCAssertTrue.gif
new file mode 100644
index 0000000..de6e628
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDecimalMax.gif
new file mode 100644
index 0000000..de6e628
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDecimalMin.gif
new file mode 100644
index 0000000..dd977db
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDigits.gif
new file mode 100644
index 0000000..5ced28c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCFuture.gif
new file mode 100644
index 0000000..b7adb36
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNotNull.gif
new file mode 100644
index 0000000..8b6df37
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNull.gif
new file mode 100644
index 0000000..be1a550
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNumericMax.gif
new file mode 100644
index 0000000..b9cd878
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNumericMin.gif
new file mode 100644
index 0000000..f66fdd6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCPast.gif
new file mode 100644
index 0000000..9e35a4e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCRegEx.gif
new file mode 100644
index 0000000..0cf27b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCSize.gif
new file mode 100644
index 0000000..be1a550
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_constraints_LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..86d7811
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..fa814dc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..be1a550
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..68ea265
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..88d8844
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..eaf17fa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..09b5568
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..28de654
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..1651076
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_XComputedTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_XComputedTypeReference.gif
new file mode 100644
index 0000000..9144498
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_XComputedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_XFunctionTypeRef.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_XFunctionTypeRef.gif
new file mode 100644
index 0000000..0d55746
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_jvmTypeReference_XFunctionTypeRef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_properties_LKeyAndValue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_properties_LKeyAndValue.gif
new file mode 100644
index 0000000..aff8996
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDataType_properties_LKeyAndValue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..e4f5f22
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCAssertFalse.gif
new file mode 100644
index 0000000..5a705ee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCAssertTrue.gif
new file mode 100644
index 0000000..ed30ca5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDecimalMax.gif
new file mode 100644
index 0000000..ed30ca5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDecimalMin.gif
new file mode 100644
index 0000000..c629548
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDigits.gif
new file mode 100644
index 0000000..3befa64
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCFuture.gif
new file mode 100644
index 0000000..2cbcfe1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNotNull.gif
new file mode 100644
index 0000000..6219c0d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNull.gif
new file mode 100644
index 0000000..85a51d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNumericMax.gif
new file mode 100644
index 0000000..64e6523
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNumericMin.gif
new file mode 100644
index 0000000..48f8111
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCPast.gif
new file mode 100644
index 0000000..a1aa376
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCRegEx.gif
new file mode 100644
index 0000000..282f419
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCSize.gif
new file mode 100644
index 0000000..85a51d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLDatatypeConstraints_constraints_LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLEnum_literals_LEnumLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLEnum_literals_LEnumLiteral.gif
new file mode 100644
index 0000000..bfe4a39
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLEnum_literals_LEnumLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XAnnotation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XAnnotation.gif
new file mode 100644
index 0000000..8fec234
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XAnnotation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XAssignment.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XAssignment.gif
new file mode 100644
index 0000000..881c6d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XAssignment.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBasicForLoopExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBasicForLoopExpression.gif
new file mode 100644
index 0000000..cbc9f8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBasicForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBinaryOperation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBinaryOperation.gif
new file mode 100644
index 0000000..c6407cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBinaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBlockExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBlockExpression.gif
new file mode 100644
index 0000000..11f3aea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBlockExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBooleanLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBooleanLiteral.gif
new file mode 100644
index 0000000..881c6d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XBooleanLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XCastedExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XCastedExpression.gif
new file mode 100644
index 0000000..881c6d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XCastedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XClosure.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XClosure.gif
new file mode 100644
index 0000000..a3d7b11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XClosure.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XConstructorCall.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XConstructorCall.gif
new file mode 100644
index 0000000..a461190
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XConstructorCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XDoWhileExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XDoWhileExpression.gif
new file mode 100644
index 0000000..a461190
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XDoWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XFeatureCall.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XFeatureCall.gif
new file mode 100644
index 0000000..981b787
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XForLoopExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XForLoopExpression.gif
new file mode 100644
index 0000000..40ef08b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XIfExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XIfExpression.gif
new file mode 100644
index 0000000..73b29f9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XIfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XInstanceOfExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XInstanceOfExpression.gif
new file mode 100644
index 0000000..22660ab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XInstanceOfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XListLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XListLiteral.gif
new file mode 100644
index 0000000..278cd8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XListLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XMemberFeatureCall.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XMemberFeatureCall.gif
new file mode 100644
index 0000000..6555fbe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XMemberFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XNullLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XNullLiteral.gif
new file mode 100644
index 0000000..61e5d4d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XNullLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XNumberLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XNumberLiteral.gif
new file mode 100644
index 0000000..7fd40f1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XNumberLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XPostfixOperation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XPostfixOperation.gif
new file mode 100644
index 0000000..c44b7cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XPostfixOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XReturnExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XReturnExpression.gif
new file mode 100644
index 0000000..c6407cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XReturnExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSetLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSetLiteral.gif
new file mode 100644
index 0000000..3bc5937
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSetLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XStringLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XStringLiteral.gif
new file mode 100644
index 0000000..1b76a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XStringLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSwitchExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSwitchExpression.gif
new file mode 100644
index 0000000..de48ec6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSwitchExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSynchronizedExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSynchronizedExpression.gif
new file mode 100644
index 0000000..c3dd920
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XSynchronizedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XThrowExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XThrowExpression.gif
new file mode 100644
index 0000000..3bc5937
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XThrowExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XTryCatchFinallyExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XTryCatchFinallyExpression.gif
new file mode 100644
index 0000000..b55cd92
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XTryCatchFinallyExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XTypeLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XTypeLiteral.gif
new file mode 100644
index 0000000..27a63b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XTypeLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XUnaryOperation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XUnaryOperation.gif
new file mode 100644
index 0000000..4f26f1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XUnaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XVariableDeclaration.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XVariableDeclaration.gif
new file mode 100644
index 0000000..9fe5500
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XVariableDeclaration.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XWhileExpression.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XWhileExpression.gif
new file mode 100644
index 0000000..8fec234
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_body_XWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_modifier_LModifier.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_modifier_LModifier.gif
new file mode 100644
index 0000000..e9813e1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_modifier_LModifier.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_params_JvmFormalParameter.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_params_JvmFormalParameter.gif
new file mode 100644
index 0000000..4f26f1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_params_JvmFormalParameter.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..766d696
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..a258504
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..8fec234
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..1d3b859
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..561bc08
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..27a63b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..1b76a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..2b447c2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..cbc9f8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_XComputedTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_XComputedTypeReference.gif
new file mode 100644
index 0000000..3bc5937
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_XComputedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_XFunctionTypeRef.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_XFunctionTypeRef.gif
new file mode 100644
index 0000000..b55cd92
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLOperation_type_XFunctionTypeRef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLPackage_importSection_XImportSection.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLPackage_importSection_XImportSection.gif
new file mode 100644
index 0000000..637672e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLPackage_importSection_XImportSection.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLPackage_imports_LImport.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLPackage_imports_LImport.gif
new file mode 100644
index 0000000..0650d76
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLPackage_imports_LImport.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..2397f66
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCAssertFalse.gif
new file mode 100644
index 0000000..52da918
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCAssertTrue.gif
new file mode 100644
index 0000000..fe7b106
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDecimalMax.gif
new file mode 100644
index 0000000..fe7b106
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDecimalMin.gif
new file mode 100644
index 0000000..9c2caa0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDigits.gif
new file mode 100644
index 0000000..5d1d944
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCFuture.gif
new file mode 100644
index 0000000..05a82b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNotNull.gif
new file mode 100644
index 0000000..2d4c8b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNull.gif
new file mode 100644
index 0000000..28c88d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNumericMax.gif
new file mode 100644
index 0000000..e75685c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNumericMin.gif
new file mode 100644
index 0000000..4e47629
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCPast.gif
new file mode 100644
index 0000000..cb3d509
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCRegEx.gif
new file mode 100644
index 0000000..d4308a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCSize.gif
new file mode 100644
index 0000000..28c88d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilter_constraints_LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..5d5000a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCAssertFalse.gif
new file mode 100644
index 0000000..448138d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCAssertTrue.gif
new file mode 100644
index 0000000..c05a418
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDecimalMax.gif
new file mode 100644
index 0000000..c05a418
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDecimalMin.gif
new file mode 100644
index 0000000..5a43b3d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDigits.gif
new file mode 100644
index 0000000..64cd1b0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCFuture.gif
new file mode 100644
index 0000000..62bda1f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNotNull.gif
new file mode 100644
index 0000000..eef1935
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNull.gif
new file mode 100644
index 0000000..c2b3c0f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNumericMax.gif
new file mode 100644
index 0000000..61b0302
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNumericMin.gif
new file mode 100644
index 0000000..9c7efc4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCPast.gif
new file mode 100644
index 0000000..75a50e9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCRegEx.gif
new file mode 100644
index 0000000..4ce1821
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCSize.gif
new file mode 100644
index 0000000..c2b3c0f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLReferenceFilters_constraints_LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..85d42e1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCAssertFalse.gif
new file mode 100644
index 0000000..bdc32e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCAssertTrue.gif
new file mode 100644
index 0000000..2fc02f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDecimalMax.gif
new file mode 100644
index 0000000..2fc02f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDecimalMin.gif
new file mode 100644
index 0000000..755e4ca
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDigits.gif
new file mode 100644
index 0000000..54cc4dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCFuture.gif
new file mode 100644
index 0000000..4aaad5a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNotNull.gif
new file mode 100644
index 0000000..8ce82e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNull.gif
new file mode 100644
index 0000000..f22f374
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNumericMax.gif
new file mode 100644
index 0000000..993980b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNumericMin.gif
new file mode 100644
index 0000000..20f19ea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCPast.gif
new file mode 100644
index 0000000..2249611
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCRegEx.gif
new file mode 100644
index 0000000..dea9e2d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCSize.gif
new file mode 100644
index 0000000..f22f374
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_constraints_LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_resultFilters_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_resultFilters_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..85d42e1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLResultFilters_resultFilters_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LAnnotationTarget.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LAnnotationTarget.gif
new file mode 100644
index 0000000..0b23dfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LAnnotationTarget.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LClass.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LClass.gif
new file mode 100644
index 0000000..9422192
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LClass.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDataType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDataType.gif
new file mode 100644
index 0000000..21f8952
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDataType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEnum.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEnum.gif
new file mode 100644
index 0000000..7e51359
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEnum.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif
new file mode 100644
index 0000000..9a956d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LScalarType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LScalarType.gif
new file mode 100644
index 0000000..01247e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LScalarType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LType.gif
new file mode 100644
index 0000000..2de871f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LClass.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LClass.gif
new file mode 100644
index 0000000..1c99c0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LClass.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDataType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDataType.gif
new file mode 100644
index 0000000..054211b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDataType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LEnum.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LEnum.gif
new file mode 100644
index 0000000..efff0c9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LEnum.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LScalarType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LScalarType.gif
new file mode 100644
index 0000000..6f01122
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LScalarType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LType.gif
new file mode 100644
index 0000000..2b15f0c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/AttributeConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/AttributeConstraint.gif
new file mode 100644
index 0000000..30f0c48
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/AttributeConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAnnotationDef.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAnnotationDef.gif
new file mode 100644
index 0000000..338fb8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAnnotationDef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAnnotationTarget.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAnnotationTarget.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAnnotationTarget.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..cb1755a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LClass.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LClass.gif
new file mode 100644
index 0000000..e4bc22d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LClass.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LCommonModel.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LCommonModel.gif
new file mode 100644
index 0000000..739ebbf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LCommonModel.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LCompoundConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LCompoundConstraint.gif
new file mode 100644
index 0000000..94c953e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LCompoundConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LConstraint.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LConstraint.gif
new file mode 100644
index 0000000..c4fb30e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LConstraints.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LConstraints.gif
new file mode 100644
index 0000000..2b69256
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LContraints.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LContraints.gif
new file mode 100644
index 0000000..c4fb30e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LContraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDataType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDataType.gif
new file mode 100644
index 0000000..338fb8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDataType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDatatypeConstraints.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDatatypeConstraints.gif
new file mode 100644
index 0000000..a26660e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDatatypeConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCAssertFalse.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCAssertFalse.gif
new file mode 100644
index 0000000..e4b530e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCAssertFalse.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCAssertTrue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCAssertTrue.gif
new file mode 100644
index 0000000..106881e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCAssertTrue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDecimalMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDecimalMax.gif
new file mode 100644
index 0000000..106881e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDecimalMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDecimalMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDecimalMin.gif
new file mode 100644
index 0000000..b3643da
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDecimalMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDigits.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDigits.gif
new file mode 100644
index 0000000..db7414e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCDigits.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCFuture.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCFuture.gif
new file mode 100644
index 0000000..33a997a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCFuture.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNotNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNotNull.gif
new file mode 100644
index 0000000..e4bc22d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNotNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNull.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNull.gif
new file mode 100644
index 0000000..c8d381f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNull.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNumericMax.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNumericMax.gif
new file mode 100644
index 0000000..c4a8af4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNumericMax.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNumericMin.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNumericMin.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCNumericMin.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCPast.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCPast.gif
new file mode 100644
index 0000000..9041598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCPast.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCRegEx.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCRegEx.gif
new file mode 100644
index 0000000..89ad5da
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCRegEx.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCSize.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCSize.gif
new file mode 100644
index 0000000..c8d381f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LDtCSize.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LEnum.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LEnum.gif
new file mode 100644
index 0000000..98b351f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LEnum.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LEnumLiteral.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LEnumLiteral.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LEnumLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LImport.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LImport.gif
new file mode 100644
index 0000000..90d10f9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LImport.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LKeyAndValue.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LKeyAndValue.gif
new file mode 100644
index 0000000..ed87474
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LKeyAndValue.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LLazyResolver.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LLazyResolver.gif
new file mode 100644
index 0000000..498364f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LLazyResolver.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LModifier.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LModifier.gif
new file mode 100644
index 0000000..4365960
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LModifier.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LMultiplicity.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LMultiplicity.gif
new file mode 100644
index 0000000..5a9bc75
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LMultiplicity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LOperation.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LOperation.gif
new file mode 100644
index 0000000..be22463
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LPackage.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LPackage.gif
new file mode 100644
index 0000000..98b351f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LReferenceFilter.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LReferenceFilter.gif
new file mode 100644
index 0000000..9041598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LReferenceFilter.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LReferenceFilters.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LReferenceFilters.gif
new file mode 100644
index 0000000..739ebbf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LReferenceFilters.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LResultFilters.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LResultFilters.gif
new file mode 100644
index 0000000..e4bc22d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LResultFilters.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LScalarType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LScalarType.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LScalarType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LTupel.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LTupel.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LTupel.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LType.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LType.gif
new file mode 100644
index 0000000..badaab0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LTypedPackage.gif b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LTypedPackage.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/icons/full/obj16/LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
new file mode 100644
index 0000000..3fb016a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.properties
@@ -0,0 +1,504 @@
+# 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 = Types Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_LCommonModel_type = LCommon Model
+_UI_LPackage_type = LPackage
+_UI_LTypedPackage_type = LTyped Package
+_UI_LImport_type = LImport
+_UI_LType_type = LType
+_UI_LAnnotationDef_type = LAnnotation Def
+_UI_LAnnotationTarget_type = LAnnotation Target
+_UI_LScalarType_type = LScalar Type
+_UI_LDataType_type = LData Type
+_UI_LEnum_type = LEnum
+_UI_LEnumLiteral_type = LEnum Literal
+_UI_LClass_type = LClass
+_UI_LFeaturesHolder_type = LFeatures Holder
+_UI_LFeature_type = LFeature
+_UI_LReference_type = LReference
+_UI_LAttribute_type = LAttribute
+_UI_LOperation_type = LOperation
+_UI_LModifier_type = LModifier
+_UI_LMultiplicity_type = LMultiplicity
+_UI_XAnnotation_type = XAnnotation
+_UI_XAnnotationElementValuePair_type = XAnnotation Element Value Pair
+_UI_XExpression_type = XExpression
+_UI_XIfExpression_type = XIf Expression
+_UI_XSwitchExpression_type = XSwitch Expression
+_UI_XCasePart_type = XCase Part
+_UI_XBlockExpression_type = XBlock Expression
+_UI_XVariableDeclaration_type = XVariable Declaration
+_UI_XAbstractFeatureCall_type = XAbstract Feature Call
+_UI_XMemberFeatureCall_type = XMember Feature Call
+_UI_XFeatureCall_type = XFeature Call
+_UI_XConstructorCall_type = XConstructor Call
+_UI_XBooleanLiteral_type = XBoolean Literal
+_UI_XNullLiteral_type = XNull Literal
+_UI_XNumberLiteral_type = XNumber Literal
+_UI_XStringLiteral_type = XString Literal
+_UI_XCollectionLiteral_type = XCollection Literal
+_UI_XListLiteral_type = XList Literal
+_UI_XSetLiteral_type = XSet Literal
+_UI_XClosure_type = XClosure
+_UI_XCastedExpression_type = XCasted Expression
+_UI_XBinaryOperation_type = XBinary Operation
+_UI_XUnaryOperation_type = XUnary Operation
+_UI_XPostfixOperation_type = XPostfix Operation
+_UI_XForLoopExpression_type = XFor Loop Expression
+_UI_XBasicForLoopExpression_type = XBasic For Loop Expression
+_UI_XAbstractWhileExpression_type = XAbstract While Expression
+_UI_XDoWhileExpression_type = XDo While Expression
+_UI_XWhileExpression_type = XWhile Expression
+_UI_XTypeLiteral_type = XType Literal
+_UI_XInstanceOfExpression_type = XInstance Of Expression
+_UI_XThrowExpression_type = XThrow Expression
+_UI_XTryCatchFinallyExpression_type = XTry Catch Finally Expression
+_UI_XCatchClause_type = XCatch Clause
+_UI_XAssignment_type = XAssignment
+_UI_XReturnExpression_type = XReturn Expression
+_UI_XSynchronizedExpression_type = XSynchronized Expression
+_UI_EAttribute_type = EAttribute
+_UI_EAnnotation_type = EAnnotation
+_UI_EClass_type = EClass
+_UI_EClassifier_type = EClassifier
+_UI_EDataType_type = EData Type
+_UI_EEnum_type = EEnum
+_UI_EEnumLiteral_type = EEnum Literal
+_UI_EFactory_type = EFactory
+_UI_EModelElement_type = EModel Element
+_UI_ENamedElement_type = ENamed Element
+_UI_EObject_type = EObject
+_UI_EOperation_type = EOperation
+_UI_EPackage_type = EPackage
+_UI_EParameter_type = EParameter
+_UI_EReference_type = EReference
+_UI_EStructuralFeature_type = EStructural Feature
+_UI_ETypedElement_type = ETyped Element
+_UI_EStringToStringMapEntry_type = EString To String Map Entry
+_UI_EGenericType_type = EGeneric Type
+_UI_ETypeParameter_type = EType Parameter
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_LCommonModel_packages_feature = Packages
+_UI_LPackage_name_feature = Name
+_UI_LPackage_imports_feature = Imports
+_UI_LTypedPackage_types_feature = Types
+_UI_LImport_importedNamespace_feature = Imported Namespace
+_UI_LType_name_feature = Name
+_UI_LType_annotationInfo_feature = Annotation Info
+_UI_LAnnotationDef_exclude_feature = Exclude
+_UI_LAnnotationDef_annotation_feature = Annotation
+_UI_LAnnotationTarget_annotations_feature = Annotations
+_UI_LDataType_jvmTypeReference_feature = Jvm Type Reference
+_UI_LDataType_asPrimitive_feature = As Primitive
+_UI_LDataType_date_feature = Date
+_UI_LDataType_asBlob_feature = As Blob
+_UI_LDataType_length_feature = Length
+_UI_LDataType_dateType_feature = Date Type
+_UI_LDataType_syntheticFlag_feature = Synthetic Flag
+_UI_LDataType_syntheticSelector_feature = Synthetic Selector
+_UI_LDataType_syntheticTypeReference_feature = Synthetic Type Reference
+_UI_LDataType_syntheticType_feature = Synthetic Type
+_UI_LEnum_literals_feature = Literals
+_UI_LEnumLiteral_name_feature = Name
+_UI_LClass_abstract_feature = Abstract
+_UI_LClass_serializable_feature = Serializable
+_UI_LClass_shortName_feature = Short Name
+_UI_LFeature_name_feature = Name
+_UI_LFeature_multiplicity_feature = Multiplicity
+_UI_LFeature_annotationInfo_feature = Annotation Info
+_UI_LReference_lazy_feature = Lazy
+_UI_LReference_cascading_feature = Cascading
+_UI_LAttribute_id_feature = Id
+_UI_LAttribute_uuid_feature = Uuid
+_UI_LAttribute_version_feature = Version
+_UI_LAttribute_lazy_feature = Lazy
+_UI_LAttribute_cascading_feature = Cascading
+_UI_LAttribute_transient_feature = Transient
+_UI_LAttribute_derived_feature = Derived
+_UI_LAttribute_derivedGetterExpression_feature = Derived Getter Expression
+_UI_LAttribute_type_feature = Type
+_UI_LOperation_modifier_feature = Modifier
+_UI_LOperation_type_feature = Type
+_UI_LOperation_params_feature = Params
+_UI_LOperation_body_feature = Body
+_UI_LModifier_final_feature = Final
+_UI_LModifier_static_feature = Static
+_UI_LModifier_visibility_feature = Visibility
+_UI_LMultiplicity_lower_feature = Lower
+_UI_LMultiplicity_upper_feature = Upper
+_UI_XAnnotation_elementValuePairs_feature = Element Value Pairs
+_UI_XAnnotation_annotationType_feature = Annotation Type
+_UI_XAnnotation_value_feature = Value
+_UI_XAnnotationElementValuePair_value_feature = Value
+_UI_XAnnotationElementValuePair_element_feature = Element
+_UI_XIfExpression_if_feature = If
+_UI_XIfExpression_then_feature = Then
+_UI_XIfExpression_else_feature = Else
+_UI_XSwitchExpression_switch_feature = Switch
+_UI_XSwitchExpression_cases_feature = Cases
+_UI_XSwitchExpression_default_feature = Default
+_UI_XSwitchExpression_declaredParam_feature = Declared Param
+_UI_XCasePart_case_feature = Case
+_UI_XCasePart_then_feature = Then
+_UI_XCasePart_typeGuard_feature = Type Guard
+_UI_XBlockExpression_expressions_feature = Expressions
+_UI_XVariableDeclaration_type_feature = Type
+_UI_XVariableDeclaration_name_feature = Name
+_UI_XVariableDeclaration_right_feature = Right
+_UI_XVariableDeclaration_writeable_feature = Writeable
+_UI_XAbstractFeatureCall_feature_feature = Feature
+_UI_XAbstractFeatureCall_typeArguments_feature = Type Arguments
+_UI_XAbstractFeatureCall_implicitReceiver_feature = Implicit Receiver
+_UI_XAbstractFeatureCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XAbstractFeatureCall_validFeature_feature = Valid Feature
+_UI_XAbstractFeatureCall_implicitFirstArgument_feature = Implicit First Argument
+_UI_XMemberFeatureCall_memberCallTarget_feature = Member Call Target
+_UI_XMemberFeatureCall_memberCallArguments_feature = Member Call Arguments
+_UI_XMemberFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XMemberFeatureCall_explicitStatic_feature = Explicit Static
+_UI_XMemberFeatureCall_nullSafe_feature = Null Safe
+_UI_XMemberFeatureCall_typeLiteral_feature = Type Literal
+_UI_XMemberFeatureCall_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XMemberFeatureCall_packageFragment_feature = Package Fragment
+_UI_XFeatureCall_featureCallArguments_feature = Feature Call Arguments
+_UI_XFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XFeatureCall_typeLiteral_feature = Type Literal
+_UI_XFeatureCall_packageFragment_feature = Package Fragment
+_UI_XConstructorCall_constructor_feature = Constructor
+_UI_XConstructorCall_arguments_feature = Arguments
+_UI_XConstructorCall_typeArguments_feature = Type Arguments
+_UI_XConstructorCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XConstructorCall_validFeature_feature = Valid Feature
+_UI_XConstructorCall_explicitConstructorCall_feature = Explicit Constructor Call
+_UI_XConstructorCall_anonymousClassConstructorCall_feature = Anonymous Class Constructor Call
+_UI_XBooleanLiteral_isTrue_feature = Is True
+_UI_XNumberLiteral_value_feature = Value
+_UI_XStringLiteral_value_feature = Value
+_UI_XCollectionLiteral_elements_feature = Elements
+_UI_XClosure_declaredFormalParameters_feature = Declared Formal Parameters
+_UI_XClosure_expression_feature = Expression
+_UI_XClosure_explicitSyntax_feature = Explicit Syntax
+_UI_XClosure_implicitParameter_feature = Implicit Parameter
+_UI_XCastedExpression_type_feature = Type
+_UI_XCastedExpression_target_feature = Target
+_UI_XBinaryOperation_leftOperand_feature = Left Operand
+_UI_XBinaryOperation_rightOperand_feature = Right Operand
+_UI_XBinaryOperation_reassignFirstArgument_feature = Reassign First Argument
+_UI_XUnaryOperation_operand_feature = Operand
+_UI_XPostfixOperation_operand_feature = Operand
+_UI_XForLoopExpression_forExpression_feature = For Expression
+_UI_XForLoopExpression_eachExpression_feature = Each Expression
+_UI_XForLoopExpression_declaredParam_feature = Declared Param
+_UI_XBasicForLoopExpression_expression_feature = Expression
+_UI_XBasicForLoopExpression_eachExpression_feature = Each Expression
+_UI_XBasicForLoopExpression_initExpressions_feature = Init Expressions
+_UI_XBasicForLoopExpression_updateExpressions_feature = Update Expressions
+_UI_XAbstractWhileExpression_predicate_feature = Predicate
+_UI_XAbstractWhileExpression_body_feature = Body
+_UI_XTypeLiteral_type_feature = Type
+_UI_XTypeLiteral_arrayDimensions_feature = Array Dimensions
+_UI_XInstanceOfExpression_type_feature = Type
+_UI_XInstanceOfExpression_expression_feature = Expression
+_UI_XThrowExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_finallyExpression_feature = Finally Expression
+_UI_XTryCatchFinallyExpression_catchClauses_feature = Catch Clauses
+_UI_XCatchClause_expression_feature = Expression
+_UI_XCatchClause_declaredParam_feature = Declared Param
+_UI_XAssignment_assignable_feature = Assignable
+_UI_XAssignment_value_feature = Value
+_UI_XAssignment_explicitStatic_feature = Explicit Static
+_UI_XAssignment_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XReturnExpression_expression_feature = Expression
+_UI_XSynchronizedExpression_param_feature = Param
+_UI_XSynchronizedExpression_expression_feature = Expression
+_UI_EAttribute_iD_feature = ID
+_UI_EAttribute_iD_description = Whether the value of this attribute uniquely identifies an object within its containing resource
+_UI_EAttribute_eAttributeType_feature = EAttribute Type
+_UI_EAttribute_eAttributeType_description = The data type of this attribute
+_UI_EAnnotation_source_feature = Source
+_UI_EAnnotation_source_description = An identifier, typically an absolute URI, that uniquely identifies this kind of annotation
+_UI_EAnnotation_details_feature = Details
+_UI_EAnnotation_eModelElement_feature = EModel Element
+_UI_EAnnotation_contents_feature = Contents
+_UI_EAnnotation_references_feature = References
+_UI_EAnnotation_references_description = Objects referenced by this annotation
+_UI_EClass_abstract_feature = Abstract
+_UI_EClass_abstract_description = Whether instances of this class can be created
+_UI_EClass_interface_feature = Interface
+_UI_EClass_interface_description = Whether no corresponding implementation will be generated for this class
+_UI_EClass_eSuperTypes_feature = ESuper Types
+_UI_EClass_eSuperTypes_description = The immediate super types of this class
+_UI_EClass_eOperations_feature = EOperations
+_UI_EClass_eOperations_description = The operations defined by this class
+_UI_EClass_eAllAttributes_feature = EAll Attributes
+_UI_EClass_eAllReferences_feature = EAll References
+_UI_EClass_eReferences_feature = EReferences
+_UI_EClass_eAttributes_feature = EAttributes
+_UI_EClass_eAllContainments_feature = EAll Containments
+_UI_EClass_eAllOperations_feature = EAll Operations
+_UI_EClass_eAllStructuralFeatures_feature = EAll Structural Features
+_UI_EClass_eAllSuperTypes_feature = EAll Super Types
+_UI_EClass_eIDAttribute_feature = EID Attribute
+_UI_EClass_eStructuralFeatures_feature = EStructural Features
+_UI_EClass_eGenericSuperTypes_feature = EGeneric Super Types
+_UI_EClass_eAllGenericSuperTypes_feature = EAll Generic Super Types
+_UI_EClassifier_instanceClassName_feature = Instance Class Name
+_UI_EClassifier_instanceClassName_description = The erased instance class name denoted by this classifier
+_UI_EClassifier_instanceClass_feature = Instance Class
+_UI_EClassifier_defaultValue_feature = Default Value
+_UI_EClassifier_defaultValue_description = The default value for features of this type
+_UI_EClassifier_instanceTypeName_feature = Instance Type Name
+_UI_EClassifier_instanceTypeName_description = The full instance type name denoted by this classifier
+_UI_EClassifier_ePackage_feature = EPackage
+_UI_EClassifier_eTypeParameters_feature = EType Parameters
+_UI_EDataType_serializable_feature = Serializable
+_UI_EDataType_serializable_description = Whether a value of this data type can be serialized using the factory
+_UI_EEnum_eLiterals_feature = ELiterals
+_UI_EEnumLiteral_value_feature = Value
+_UI_EEnumLiteral_value_description = The integer value associated with this enumerator
+_UI_EEnumLiteral_instance_feature = Instance
+_UI_EEnumLiteral_literal_feature = Literal
+_UI_EEnumLiteral_literal_description = The literal value associated with this enumerator
+_UI_EEnumLiteral_eEnum_feature = EEnum
+_UI_EFactory_ePackage_feature = EPackage
+_UI_EFactory_ePackage_description = The package corresponding to this factory
+_UI_EModelElement_eAnnotations_feature = EAnnotations
+_UI_ENamedElement_name_feature = Name
+_UI_ENamedElement_name_description = The name of this model element
+_UI_EOperation_eContainingClass_feature = EContaining Class
+_UI_EOperation_eTypeParameters_feature = EType Parameters
+_UI_EOperation_eParameters_feature = EParameters
+_UI_EOperation_eExceptions_feature = EExceptions
+_UI_EOperation_eExceptions_description = The exceptions thrown by this operation
+_UI_EOperation_eGenericExceptions_feature = EGeneric Exceptions
+_UI_EPackage_nsURI_feature = Ns URI
+_UI_EPackage_nsURI_description = The universally unique namespace identifier, typically an absolute URI, for this package
+_UI_EPackage_nsPrefix_feature = Ns Prefix
+_UI_EPackage_nsPrefix_description = The namespace prefix used by default when serializing instances of the package's classes
+_UI_EPackage_eFactoryInstance_feature = EFactory Instance
+_UI_EPackage_eFactoryInstance_description = The factory corresponding to this package
+_UI_EPackage_eClassifiers_feature = EClassifiers
+_UI_EPackage_eSubpackages_feature = ESubpackages
+_UI_EPackage_eSuperPackage_feature = ESuper Package
+_UI_EParameter_eOperation_feature = EOperation
+_UI_EReference_containment_feature = Containment
+_UI_EReference_containment_description = Whether this reference represents a composite relationship
+_UI_EReference_container_feature = Container
+_UI_EReference_container_description = Whether this reference has as its opposite a containment reference
+_UI_EReference_resolveProxies_feature = Resolve Proxies
+_UI_EReference_resolveProxies_description = Whether this reference resolves proxies automatically
+_UI_EReference_eOpposite_feature = EOpposite
+_UI_EReference_eOpposite_description = The reference that represents the bidirectional opposite of this reference
+_UI_EReference_eReferenceType_feature = EReference Type
+_UI_EReference_eReferenceType_description = The target class of the reference
+_UI_EReference_eKeys_feature = EKeys
+_UI_EReference_eKeys_description = The attributes of the referenced class that uniquely identify a referenced instance
+_UI_EStructuralFeature_changeable_feature = Changeable
+_UI_EStructuralFeature_changeable_description = Whether the value of this feature can be changed
+_UI_EStructuralFeature_volatile_feature = Volatile
+_UI_EStructuralFeature_volatile_description = Whether no field will be generated for this feature
+_UI_EStructuralFeature_transient_feature = Transient
+_UI_EStructuralFeature_transient_description = Whether the value of this feature will be serialized
+_UI_EStructuralFeature_defaultValueLiteral_feature = Default Value Literal
+_UI_EStructuralFeature_defaultValueLiteral_description = The literal representation of the default value for this feature
+_UI_EStructuralFeature_defaultValue_feature = Default Value
+_UI_EStructuralFeature_defaultValue_description = The default value for this feature
+_UI_EStructuralFeature_unsettable_feature = Unsettable
+_UI_EStructuralFeature_unsettable_description = Whether the value space for this feature includes the state of not being set
+_UI_EStructuralFeature_derived_feature = Derived
+_UI_EStructuralFeature_derived_description = Whether the value of this feature is derived from the values of other features
+_UI_EStructuralFeature_eContainingClass_feature = EContaining Class
+_UI_EStructuralFeature_eContainingClass_description = The class that defines this feature
+_UI_ETypedElement_ordered_feature = Ordered
+_UI_ETypedElement_ordered_description = Whether the order in which values occur is meaningful
+_UI_ETypedElement_unique_feature = Unique
+_UI_ETypedElement_unique_description = Whether the same value may occur more than once
+_UI_ETypedElement_lowerBound_feature = Lower Bound
+_UI_ETypedElement_lowerBound_description = The minimum number of values that must occur
+_UI_ETypedElement_upperBound_feature = Upper Bound
+_UI_ETypedElement_upperBound_description = The maximum number of values that may occur; -1 represents unbounded and -2 represents unspecified
+_UI_ETypedElement_many_feature = Many
+_UI_ETypedElement_many_description = Whether more than one value may occur
+_UI_ETypedElement_required_feature = Required
+_UI_ETypedElement_required_description = Whether at least one value must occur
+_UI_ETypedElement_eType_feature = EType
+_UI_ETypedElement_eType_description = The type of this element
+_UI_ETypedElement_eGenericType_feature = EGeneric Type
+_UI_EStringToStringMapEntry_key_feature = Key
+_UI_EStringToStringMapEntry_key_description = The key of this map entry
+_UI_EStringToStringMapEntry_value_feature = Value
+_UI_EStringToStringMapEntry_value_description = The value of this map entry
+_UI_EGenericType_eUpperBound_feature = EUpper Bound
+_UI_EGenericType_eTypeArguments_feature = EType Arguments
+_UI_EGenericType_eRawType_feature = ERaw Type
+_UI_EGenericType_eRawType_description = The erased type denoted by this generic type
+_UI_EGenericType_eLowerBound_feature = ELower Bound
+_UI_EGenericType_eTypeParameter_feature = EType Parameter
+_UI_EGenericType_eTypeParameter_description = The type parameter denoted by this generic type
+_UI_EGenericType_eClassifier_feature = EClassifier
+_UI_EGenericType_eClassifier_description = The classifier denoted by this generic type
+_UI_ETypeParameter_eBounds_feature = EBounds
+_UI_Unknown_feature = Unspecified
+
+_UI_LDateType_DATE_literal = DATE
+_UI_LDateType_TIME_literal = TIME
+_UI_LDateType_TIMESTAMP_literal = TIMESTAMP
+_UI_LVisibility_PACKAGE_literal = PACKAGE
+_UI_LVisibility_PRIVATE_literal = PRIVATE
+_UI_LVisibility_PROTECTED_literal = PROTECTED
+_UI_LVisibility_PUBLIC_literal = PUBLIC
+_UI_LLowerBound_NULL_literal = NULL
+_UI_LLowerBound_MANY_literal = MANY
+_UI_LLowerBound_OPTIONAL_literal = OPTIONAL
+_UI_LLowerBound_ATLEASTONE_literal = ATLEASTONE
+_UI_LLowerBound_ZERO_literal = ZERO
+_UI_LLowerBound_ONE_literal = ONE
+_UI_LUpperBound_NULL_literal = NULL
+_UI_LUpperBound_MANY_literal = MANY
+_UI_LUpperBound_ONE_literal = ONE
+_UI_LAttribute_domainKey_feature = Domain Key
+_UI_LAttribute_domainDescription_feature = Domain Description
+<<<<<<< HEAD
+_UI_XCasePart_fallThrough_feature = Fall Through
+_UI_XClosure_implicitFormalParameters_feature = Implicit Formal Parameters
+=======
+_UI_LMultiplicity_toString_feature = To String
+_UI_LMultiplicity_toMultiplicityString_feature = To Multiplicity String
+>>>>>>> branch 'development' of git@github.com:osbp/osbp-dsl.git
+_UI_LLazyResolver_type = LLazy Resolver
+_UI_XFunctionTypeRef_type = XFunction Type Ref
+_UI_XComputedTypeReference_type = XComputed Type Reference
+_UI_XImportSection_type = XImport Section
+_UI_XImportDeclaration_type = XImport Declaration
+_UI_LPackage_importSection_feature = Import Section
+_UI_XFunctionTypeRef_paramTypes_feature = Param Types
+_UI_XFunctionTypeRef_returnType_feature = Return Type
+_UI_XFunctionTypeRef_type_feature = Type
+_UI_XFunctionTypeRef_instanceContext_feature = Instance Context
+_UI_XComputedTypeReference_typeProvider_feature = Type Provider
+_UI_XImportSection_importDeclarations_feature = Import Declarations
+_UI_XImportDeclaration_wildcard_feature = Wildcard
+_UI_XImportDeclaration_extension_feature = Extension
+_UI_XImportDeclaration_static_feature = Static
+_UI_XImportDeclaration_importedType_feature = Imported Type
+_UI_XImportDeclaration_memberName_feature = Member Name
+_UI_XImportDeclaration_importedNamespace_feature = Imported Namespace
+_UI_LType_copy_feature = Copy
+_UI_LAttribute_typeJvm_feature = Type Jvm
+_UI_LConstraint_type = LConstraint
+_UI_AttributeConstraint_type = Attribute Constraint
+_UI_AttributeConstraint_attribute_feature = Attribute
+_UI_LComparatorType_EQUALS_literal = ==
+_UI_LComparatorType_GREATER_literal = >
+_UI_LComparatorType_LOWER_literal = <
+_UI_LComparatorType_GREATER_EQ_literal = >=
+_UI_LComparatorType_LOWER_EQ_literal = <=
+_UI_LComparatorType_NOT_EQ_literal = !=
+_UI_LCompoundConstraint_type = LCompound Constraint
+_UI_LAttributeMatchingConstraint_type = LAttribute Matching Constraint
+_UI_LCompoundConstraint_constraints_feature = Constraints
+_UI_LAttributeMatchingConstraint_attribute_feature = Attribute
+_UI_LAttributeMatchingConstraint_comparatorType_feature = Comparator Type
+_UI_LAttributeMatchingConstraint_matchingValue_feature = Matching Value
+_UI_LAttributeMatchingConstraint_matchingLiteral_feature = Matching Literal
+_UI_LContraints_type = LContraints
+_UI_LContraints_constraints_feature = Constraints
+_UI_LConstraints_type = LConstraints
+_UI_LConstraints_constraints_feature = Constraints
+_UI_LAttribute_dirty_feature = Dirty
+_UI_LEnumLiteral_default_feature = Default
+_UI_LEnumLiteral_null_feature = Null
+_UI_LEnumLiteral_value_feature = Value
+_UI_LKeyAndValue_type = LKey And Value
+_UI_LKeyAndValue_key_feature = Key
+_UI_LKeyAndValue_value_feature = Value
+_UI_LTupel_type = LTupel
+_UI_LTupel_key_feature = Key
+_UI_LTupel_value_feature = Value
+_UI_LAttribute_properties_feature = Properties
+_UI_LAttribute_keyAndValues_feature = Key And Values
+_UI_LReference_properties_feature = Properties
+_UI_LDatatypeConstraint_type = LDatatype Constraint
+_UI_LDtCAssertFalse_type = LDt CAssert False
+_UI_LDtCAsserTrue_type = LDt CAsser True
+_UI_LDtCAssertTrue_type = LDt CAssert True
+_UI_LDtCDecimalMax_type = LDt CDecimal Max
+_UI_LDtCDecimalMin_type = LDt CDecimal Min
+_UI_LDtCDecimalMax_max_feature = Max
+_UI_LDtCDecimalMin_min_feature = Min
+_UI_LDtCDigits_type = LDt CDigits
+_UI_LDtCDigits_intDigits_feature = Int Digits
+_UI_LDtCDigits_fractionDigits_feature = Fraction Digits
+_UI_LDtCFuture_type = LDt CFuture
+_UI_LDtCNumericMax_type = LDt CNumeric Max
+_UI_LDtCNumericMin_type = LDt CNumeric Min
+_UI_LDtCNumericMax_max_feature = Max
+_UI_LDtCNumericMin_min_feature = Min
+_UI_LDtCNotNull_type = LDt CNot Null
+_UI_LDtCNull_type = LDt CNull
+_UI_LDtCPast_type = LDt CPast
+_UI_LDtCRegEx_type = LDt CReg Ex
+_UI_LDtCSize_type = LDt CSize
+_UI_LDtCRegEx_pattern_feature = Pattern
+_UI_LDtCSize_min_feature = Min
+_UI_LDtCSize_max_feature = Max
+_UI_LDataType_constraints_feature = Constraints
+_UI_LDateConstraint_type = LDate Constraint
+_UI_LAttribute_constraints_feature = Constraints
+_UI_LReference_constraints_feature = Constraints
+_UI_LReferenceFilter_type = LReference Filter
+_UI_LReferenceFilter_constraints_feature = Constraints
+_UI_LReferenceFilters_type = LReference Filters
+_UI_LReferenceFilters_constraints_feature = Constraints
+_UI_LResultFilter_type = LResult Filter
+_UI_LResultFilters_type = LResult Filters
+_UI_LResultFilters_constraints_feature = Constraints
+_UI_LResultFilters_resultFilters_feature = Result Filters
+_UI_LDatatypeConstraints_type = LDatatype Constraints
+_UI_LDatatypeConstraints_constraints_feature = Constraints
+_UI_LDateConstraints_type = LDate Constraints
+_UI_LBlobConstraints_type = LBlob Constraints
+_UI_LNumericConstraints_type = LNumeric Constraints
+_UI_LDecimalConstraints_type = LDecimal Constraints
+_UI_LNumericConstraint_type = LNumeric Constraint
+_UI_LDecimalConstraint_type = LDecimal Constraint
+_UI_LBlobConstraint_type = LBlob Constraint
+_UI_LBooleanConstraint_type = LBoolean Constraint
+_UI_LStringConstraint_type = LString Constraint
+_UI_LDataType_properties_feature = Properties
+_UI_LDatatypeConstraint_msgCode_feature = Msg Code
+_UI_LDatatypeConstraint_msgI18nKey_feature = Msg I1 8n Key
+_UI_Severity_WARNING_literal = WARNING
+_UI_Severity_ERROR_literal = ERROR
+_UI_ConstraintSeverity_WARNING_literal = WARNING
+_UI_ConstraintSeverity_ERROR_literal = ERROR
+_UI_LDatatypeConstraint_severity_feature = Severity
+_UI_LConstraintSeverity_WARNING_literal = WARNING
+_UI_LConstraintSeverity_ERROR_literal = ERROR
+_UI_LConstraintSeverity_INFO_literal = INFO
+_UI_LReference_externalColumnName_feature = External Column Name
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml
new file mode 100644
index 0000000..555b725
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/plugin.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ 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 
+  
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated types -->
+      <factory
+            uri="http://osbp.eclipse.org/dsl/common/types/v1"
+            class="org.eclipse.osbp.dsl.semantic.common.types.provider.OSBPTypesItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml
new file mode 100644
index 0000000..678a13b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.common.xtext.edit</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<plugins>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAnnotationDefItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAnnotationDefItemProvider.java
new file mode 100644
index 0000000..04d57ba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAnnotationDefItemProvider.java
@@ -0,0 +1,177 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LAnnotationDefItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationDefItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addExcludePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Exclude feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addExcludePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAnnotationDef_exclude_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAnnotationDef_exclude_feature", "_UI_LAnnotationDef_type"),
+				 OSBPTypesPackage.Literals.LANNOTATION_DEF__EXCLUDE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LANNOTATION_DEF__ANNOTATION);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LAnnotationDef.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LAnnotationDef"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		LAnnotationDef lAnnotationDef = (LAnnotationDef)object;
+		return getString("_UI_LAnnotationDef_type") + " " + lAnnotationDef.isExclude();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LAnnotationDef.class)) {
+			case OSBPTypesPackage.LANNOTATION_DEF__EXCLUDE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LANNOTATION_DEF__ANNOTATION,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAnnotationTargetItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAnnotationTargetItemProvider.java
new file mode 100644
index 0000000..9cc87e0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAnnotationTargetItemProvider.java
@@ -0,0 +1,159 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposedImage;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LAnnotationTargetItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTargetItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LAnnotationTarget.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LAnnotationTarget"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LAnnotationTarget_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LAnnotationTarget.class)) {
+			case OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationDef()));
+	}
+
+	protected Object composeImage(Object image, Object overlayImage) {
+		List<Object> images = new ArrayList<>(2);
+		images.add(image);
+		if (overlayImage != null) {
+			images.add(overlayImage);
+		}
+		return new ComposedImage(images);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAttributeMatchingConstraintItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAttributeMatchingConstraintItemProvider.java
new file mode 100644
index 0000000..5d2583b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LAttributeMatchingConstraintItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LComparatorType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LAttributeMatchingConstraintItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAttributeMatchingConstraintItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addAttributePropertyDescriptor(object);
+			addComparatorTypePropertyDescriptor(object);
+			addMatchingValuePropertyDescriptor(object);
+			addMatchingLiteralPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Attribute feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAttributePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttributeMatchingConstraint_attribute_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttributeMatchingConstraint_attribute_feature", "_UI_LAttributeMatchingConstraint_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Comparator Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addComparatorTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttributeMatchingConstraint_comparatorType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttributeMatchingConstraint_comparatorType_feature", "_UI_LAttributeMatchingConstraint_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Matching Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMatchingValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttributeMatchingConstraint_matchingValue_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttributeMatchingConstraint_matchingValue_feature", "_UI_LAttributeMatchingConstraint_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Matching Literal feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMatchingLiteralPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttributeMatchingConstraint_matchingLiteral_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttributeMatchingConstraint_matchingLiteral_feature", "_UI_LAttributeMatchingConstraint_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LAttributeMatchingConstraint.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LAttributeMatchingConstraint"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		LComparatorType labelValue = ((LAttributeMatchingConstraint)object).getComparatorType();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LAttributeMatchingConstraint_type") :
+			getString("_UI_LAttributeMatchingConstraint_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LAttributeMatchingConstraint.class)) {
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE:
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LClassItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LClassItemProvider.java
new file mode 100644
index 0000000..4d2560b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LClassItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LClass} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LClassItemProvider extends LTypeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LClassItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addAbstractPropertyDescriptor(object);
+			addSerializablePropertyDescriptor(object);
+			addShortNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Abstract feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAbstractPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LClass_abstract_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LClass_abstract_feature", "_UI_LClass_type"),
+				 OSBPTypesPackage.Literals.LCLASS__ABSTRACT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Serializable feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSerializablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LClass_serializable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LClass_serializable_feature", "_UI_LClass_type"),
+				 OSBPTypesPackage.Literals.LCLASS__SERIALIZABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Short Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addShortNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LClass_shortName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LClass_shortName_feature", "_UI_LClass_type"),
+				 OSBPTypesPackage.Literals.LCLASS__SHORT_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LClass.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LClass"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LClass)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LClass_type") :
+			getString("_UI_LClass_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LClass.class)) {
+			case OSBPTypesPackage.LCLASS__ABSTRACT:
+			case OSBPTypesPackage.LCLASS__SERIALIZABLE:
+			case OSBPTypesPackage.LCLASS__SHORT_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LCommonModelItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LCommonModelItemProvider.java
new file mode 100644
index 0000000..ea44868
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LCommonModelItemProvider.java
@@ -0,0 +1,151 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LCommonModel;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LCommonModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LCommonModelItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LCommonModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LCOMMON_MODEL__PACKAGES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LCommonModel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LCommonModel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LCommonModel_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LCommonModel.class)) {
+			case OSBPTypesPackage.LCOMMON_MODEL__PACKAGES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LCOMMON_MODEL__PACKAGES,
+				 OSBPTypesFactory.eINSTANCE.createLTypedPackage()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LConstraintItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LConstraintItemProvider.java
new file mode 100644
index 0000000..92e054d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LConstraintItemProvider.java
@@ -0,0 +1,104 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LConstraint} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LConstraintItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LConstraint.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LConstraint"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LConstraint_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDataTypeItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDataTypeItemProvider.java
new file mode 100644
index 0000000..19aa00c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDataTypeItemProvider.java
@@ -0,0 +1,486 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDataType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDataTypeItemProvider extends LScalarTypeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDataTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addAsPrimitivePropertyDescriptor(object);
+			addDatePropertyDescriptor(object);
+			addAsBlobPropertyDescriptor(object);
+			addLengthPropertyDescriptor(object);
+			addDateTypePropertyDescriptor(object);
+			addSyntheticFlagPropertyDescriptor(object);
+			addSyntheticSelectorPropertyDescriptor(object);
+			addSyntheticTypeReferencePropertyDescriptor(object);
+			addSyntheticTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the As Primitive feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsPrimitivePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_asPrimitive_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_asPrimitive_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__AS_PRIMITIVE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Date feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDatePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_date_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_date_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__DATE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the As Blob feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAsBlobPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_asBlob_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_asBlob_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__AS_BLOB,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Length feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLengthPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_length_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_length_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__LENGTH,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Date Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDateTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_dateType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_dateType_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__DATE_TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Synthetic Flag feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSyntheticFlagPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_syntheticFlag_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_syntheticFlag_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__SYNTHETIC_FLAG,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Synthetic Selector feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSyntheticSelectorPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_syntheticSelector_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_syntheticSelector_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__SYNTHETIC_SELECTOR,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Synthetic Type Reference feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSyntheticTypeReferencePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_syntheticTypeReference_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_syntheticTypeReference_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Synthetic Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSyntheticTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDataType_syntheticType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDataType_syntheticType_feature", "_UI_LDataType_type"),
+				 OSBPTypesPackage.Literals.LDATA_TYPE__SYNTHETIC_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LDATA_TYPE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override // NOSONAR
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDataType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDataType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDataType)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDataType_type") :
+			getString("_UI_LDataType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDataType.class)) {
+			case OSBPTypesPackage.LDATA_TYPE__AS_PRIMITIVE:
+			case OSBPTypesPackage.LDATA_TYPE__DATE:
+			case OSBPTypesPackage.LDATA_TYPE__AS_BLOB:
+			case OSBPTypesPackage.LDATA_TYPE__LENGTH:
+			case OSBPTypesPackage.LDATA_TYPE__DATE_TYPE:
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_FLAG:
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_SELECTOR:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE:
+			case OSBPTypesPackage.LDATA_TYPE__PROPERTIES:
+			case OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__JVM_TYPE_REFERENCE,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LDATA_TYPE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCAssertFalseItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCAssertFalseItemProvider.java
new file mode 100644
index 0000000..fa790a2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCAssertFalseItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCAssertFalseItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCAssertFalseItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCAssertFalse.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCAssertFalse"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCAssertFalse)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCAssertFalse_type") :
+			getString("_UI_LDtCAssertFalse_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCAssertFalse.class)) {
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_CODE:
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__SEVERITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCAssertTrueItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCAssertTrueItemProvider.java
new file mode 100644
index 0000000..2c897c5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCAssertTrueItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCAssertTrueItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCAssertTrueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCAssertTrue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCAssertTrue"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCAssertTrue)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCAssertTrue_type") :
+			getString("_UI_LDtCAssertTrue_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCAssertTrue.class)) {
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_CODE:
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__SEVERITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDecimalMaxItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDecimalMaxItemProvider.java
new file mode 100644
index 0000000..e5db57c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDecimalMaxItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCDecimalMaxItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCDecimalMaxItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addMaxPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCDecimalMax_max_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCDecimalMax_max_feature", "_UI_LDtCDecimalMax_type"),
+				 OSBPTypesPackage.Literals.LDT_CDECIMAL_MAX__MAX,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCDecimalMax.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCDecimalMax"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCDecimalMax)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCDecimalMax_type") :
+			getString("_UI_LDtCDecimalMax_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCDecimalMax.class)) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_CODE:
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__SEVERITY:
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MAX:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDecimalMinItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDecimalMinItemProvider.java
new file mode 100644
index 0000000..cb9c848
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDecimalMinItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCDecimalMinItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCDecimalMinItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addMinPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Min feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMinPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCDecimalMin_min_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCDecimalMin_min_feature", "_UI_LDtCDecimalMin_type"),
+				 OSBPTypesPackage.Literals.LDT_CDECIMAL_MIN__MIN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.REAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCDecimalMin.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCDecimalMin"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCDecimalMin)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCDecimalMin_type") :
+			getString("_UI_LDtCDecimalMin_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCDecimalMin.class)) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_CODE:
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__SEVERITY:
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MIN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDigitsItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDigitsItemProvider.java
new file mode 100644
index 0000000..409151e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCDigitsItemProvider.java
@@ -0,0 +1,237 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCDigitsItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCDigitsItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addIntDigitsPropertyDescriptor(object);
+			addFractionDigitsPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Int Digits feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIntDigitsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCDigits_intDigits_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCDigits_intDigits_feature", "_UI_LDtCDigits_type"),
+				 OSBPTypesPackage.Literals.LDT_CDIGITS__INT_DIGITS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Fraction Digits feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFractionDigitsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCDigits_fractionDigits_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCDigits_fractionDigits_feature", "_UI_LDtCDigits_type"),
+				 OSBPTypesPackage.Literals.LDT_CDIGITS__FRACTION_DIGITS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCDigits.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCDigits"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCDigits)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCDigits_type") :
+			getString("_UI_LDtCDigits_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCDigits.class)) {
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_CODE:
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CDIGITS__SEVERITY:
+			case OSBPTypesPackage.LDT_CDIGITS__INT_DIGITS:
+			case OSBPTypesPackage.LDT_CDIGITS__FRACTION_DIGITS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCFutureItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCFutureItemProvider.java
new file mode 100644
index 0000000..56824fe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCFutureItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCFutureItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCFutureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCFuture.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCFuture"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCFuture)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCFuture_type") :
+			getString("_UI_LDtCFuture_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCFuture.class)) {
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_CODE:
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CFUTURE__SEVERITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNotNullItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNotNullItemProvider.java
new file mode 100644
index 0000000..5f40240
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNotNullItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCNotNullItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNotNullItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCNotNull.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCNotNull"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCNotNull)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCNotNull_type") :
+			getString("_UI_LDtCNotNull_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCNotNull.class)) {
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_CODE:
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CNOT_NULL__SEVERITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNullItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNullItemProvider.java
new file mode 100644
index 0000000..4549acf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNullItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNull} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCNullItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNullItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCNull.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCNull"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCNull)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCNull_type") :
+			getString("_UI_LDtCNull_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCNull.class)) {
+			case OSBPTypesPackage.LDT_CNULL__MSG_CODE:
+			case OSBPTypesPackage.LDT_CNULL__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CNULL__SEVERITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNumericMaxItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNumericMaxItemProvider.java
new file mode 100644
index 0000000..ac56f0c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNumericMaxItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCNumericMaxItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNumericMaxItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addMaxPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCNumericMax_max_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCNumericMax_max_feature", "_UI_LDtCNumericMax_type"),
+				 OSBPTypesPackage.Literals.LDT_CNUMERIC_MAX__MAX,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCNumericMax.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCNumericMax"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCNumericMax)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCNumericMax_type") :
+			getString("_UI_LDtCNumericMax_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCNumericMax.class)) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_CODE:
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__SEVERITY:
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MAX:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNumericMinItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNumericMinItemProvider.java
new file mode 100644
index 0000000..a082ce1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCNumericMinItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCNumericMinItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNumericMinItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addMinPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Min feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMinPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCNumericMin_min_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCNumericMin_min_feature", "_UI_LDtCNumericMin_type"),
+				 OSBPTypesPackage.Literals.LDT_CNUMERIC_MIN__MIN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCNumericMin.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCNumericMin"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCNumericMin)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCNumericMin_type") :
+			getString("_UI_LDtCNumericMin_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCNumericMin.class)) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_CODE:
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__SEVERITY:
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MIN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCPastItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCPastItemProvider.java
new file mode 100644
index 0000000..080916b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCPastItemProvider.java
@@ -0,0 +1,189 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCPast} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCPastItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCPastItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCPast.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCPast"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCPast)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCPast_type") :
+			getString("_UI_LDtCPast_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCPast.class)) {
+			case OSBPTypesPackage.LDT_CPAST__MSG_CODE:
+			case OSBPTypesPackage.LDT_CPAST__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CPAST__SEVERITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCRegExItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCRegExItemProvider.java
new file mode 100644
index 0000000..9f8c147
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCRegExItemProvider.java
@@ -0,0 +1,213 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCRegExItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCRegExItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addPatternPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Pattern feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPatternPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCRegEx_pattern_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCRegEx_pattern_feature", "_UI_LDtCRegEx_type"),
+				 OSBPTypesPackage.Literals.LDT_CREG_EX__PATTERN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCRegEx.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCRegEx"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCRegEx)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCRegEx_type") :
+			getString("_UI_LDtCRegEx_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCRegEx.class)) {
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_CODE:
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CREG_EX__SEVERITY:
+			case OSBPTypesPackage.LDT_CREG_EX__PATTERN:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCSizeItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCSizeItemProvider.java
new file mode 100644
index 0000000..548dcc8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LDtCSizeItemProvider.java
@@ -0,0 +1,237 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtCSizeItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCSizeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addMsgCodePropertyDescriptor(object);
+			addMsgI18nKeyPropertyDescriptor(object);
+			addSeverityPropertyDescriptor(object);
+			addMinPropertyDescriptor(object);
+			addMaxPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg Code feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgCodePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgCode_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgCode_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_CODE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Msg I1 8n Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMsgI18nKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_msgI18nKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_msgI18nKey_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Severity feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSeverityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDatatypeConstraint_severity_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDatatypeConstraint_severity_feature", "_UI_LDatatypeConstraint_type"),
+				 OSBPTypesPackage.Literals.LDATATYPE_CONSTRAINT__SEVERITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Min feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMinPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCSize_min_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCSize_min_feature", "_UI_LDtCSize_type"),
+				 OSBPTypesPackage.Literals.LDT_CSIZE__MIN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Max feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMaxPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtCSize_max_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtCSize_max_feature", "_UI_LDtCSize_type"),
+				 OSBPTypesPackage.Literals.LDT_CSIZE__MAX,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtCSize.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtCSize"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtCSize)object).getMsgCode();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtCSize_type") :
+			getString("_UI_LDtCSize_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtCSize.class)) {
+			case OSBPTypesPackage.LDT_CSIZE__MSG_CODE:
+			case OSBPTypesPackage.LDT_CSIZE__MSG_I1_8N_KEY:
+			case OSBPTypesPackage.LDT_CSIZE__SEVERITY:
+			case OSBPTypesPackage.LDT_CSIZE__MIN:
+			case OSBPTypesPackage.LDT_CSIZE__MAX:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LEnumItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LEnumItemProvider.java
new file mode 100644
index 0000000..db3e964
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LEnumItemProvider.java
@@ -0,0 +1,153 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LEnum} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEnumItemProvider extends LScalarTypeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEnumItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LENUM__LITERALS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override // NOSONAR
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LEnum.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEnum"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEnum)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEnum_type") :
+			getString("_UI_LEnum_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEnum.class)) {
+			case OSBPTypesPackage.LENUM__LITERALS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LENUM__LITERALS,
+				 OSBPTypesFactory.eINSTANCE.createLEnumLiteral()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LEnumLiteralItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LEnumLiteralItemProvider.java
new file mode 100644
index 0000000..1499bee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LEnumLiteralItemProvider.java
@@ -0,0 +1,214 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEnumLiteralItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEnumLiteralItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+			addDefaultPropertyDescriptor(object);
+			addNullPropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEnumLiteral_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEnumLiteral_name_feature", "_UI_LEnumLiteral_type"),
+				 OSBPTypesPackage.Literals.LENUM_LITERAL__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Default feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDefaultPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEnumLiteral_default_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEnumLiteral_default_feature", "_UI_LEnumLiteral_type"),
+				 OSBPTypesPackage.Literals.LENUM_LITERAL__DEFAULT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Null feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNullPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEnumLiteral_null_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEnumLiteral_null_feature", "_UI_LEnumLiteral_type"),
+				 OSBPTypesPackage.Literals.LENUM_LITERAL__NULL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEnumLiteral_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEnumLiteral_value_feature", "_UI_LEnumLiteral_type"),
+				 OSBPTypesPackage.Literals.LENUM_LITERAL__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LEnumLiteral.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEnumLiteral"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEnumLiteral)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEnumLiteral_type") :
+			getString("_UI_LEnumLiteral_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEnumLiteral.class)) {
+			case OSBPTypesPackage.LENUM_LITERAL__NAME:
+			case OSBPTypesPackage.LENUM_LITERAL__DEFAULT:
+			case OSBPTypesPackage.LENUM_LITERAL__NULL:
+			case OSBPTypesPackage.LENUM_LITERAL__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LImportItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LImportItemProvider.java
new file mode 100644
index 0000000..923d5d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LImportItemProvider.java
@@ -0,0 +1,161 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LImport} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LImportItemProvider 
+	extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LImportItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addImportedNamespacePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Imported Namespace feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addImportedNamespacePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LImport_importedNamespace_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LImport_importedNamespace_feature", "_UI_LImport_type"),
+				 OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LImport.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LImport"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LImport)object).getImportedNamespace();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LImport_type") :
+			getString("_UI_LImport_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LImport.class)) {
+			case OSBPTypesPackage.LIMPORT__IMPORTED_NAMESPACE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LKeyAndValueItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LKeyAndValueItemProvider.java
new file mode 100644
index 0000000..c2e75d2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LKeyAndValueItemProvider.java
@@ -0,0 +1,191 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LKeyAndValueItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LKeyAndValueItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addKeyPropertyDescriptor(object);
+			addValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LKeyAndValue_key_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LKeyAndValue_key_feature", "_UI_LKeyAndValue_type"),
+				 OSBPTypesPackage.Literals.LKEY_AND_VALUE__KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LKeyAndValue_value_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LKeyAndValue_value_feature", "_UI_LKeyAndValue_type"),
+				 OSBPTypesPackage.Literals.LKEY_AND_VALUE__VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LKeyAndValue.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LKeyAndValue"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LKeyAndValue)object).getKey();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LKeyAndValue_type") :
+			getString("_UI_LKeyAndValue_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LKeyAndValue.class)) {
+			case OSBPTypesPackage.LKEY_AND_VALUE__KEY:
+			case OSBPTypesPackage.LKEY_AND_VALUE__VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LLazyResolverItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LLazyResolverItemProvider.java
new file mode 100644
index 0000000..722c735
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LLazyResolverItemProvider.java
@@ -0,0 +1,130 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LLazyResolverItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LLazyResolverItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LLazyResolver.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LLazyResolver"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LLazyResolver_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LModifierItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LModifierItemProvider.java
new file mode 100644
index 0000000..3aa2304
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LModifierItemProvider.java
@@ -0,0 +1,188 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LModifier} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LModifierItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LModifierItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addFinalPropertyDescriptor(object);
+			addStaticPropertyDescriptor(object);
+			addVisibilityPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Final feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFinalPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LModifier_final_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LModifier_final_feature", "_UI_LModifier_type"),
+				 OSBPTypesPackage.Literals.LMODIFIER__FINAL,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Static feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addStaticPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LModifier_static_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LModifier_static_feature", "_UI_LModifier_type"),
+				 OSBPTypesPackage.Literals.LMODIFIER__STATIC,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Visibility feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVisibilityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LModifier_visibility_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LModifier_visibility_feature", "_UI_LModifier_type"),
+				 OSBPTypesPackage.Literals.LMODIFIER__VISIBILITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LModifier.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LModifier"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		LModifier lModifier = (LModifier)object;
+		return getString("_UI_LModifier_type") + " " + lModifier.isFinal();
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LModifier.class)) {
+			case OSBPTypesPackage.LMODIFIER__FINAL:
+			case OSBPTypesPackage.LMODIFIER__STATIC:
+			case OSBPTypesPackage.LMODIFIER__VISIBILITY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LMultiplicityItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LMultiplicityItemProvider.java
new file mode 100644
index 0000000..5de8e53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LMultiplicityItemProvider.java
@@ -0,0 +1,217 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LLowerBound;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LMultiplicityItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLowerPropertyDescriptor(object);
+			addUpperPropertyDescriptor(object);
+			addToMultiplicityStringPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Lower feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLowerPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LMultiplicity_lower_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LMultiplicity_lower_feature", "_UI_LMultiplicity_type"),
+				 OSBPTypesPackage.Literals.LMULTIPLICITY__LOWER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Upper feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUpperPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LMultiplicity_upper_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LMultiplicity_upper_feature", "_UI_LMultiplicity_type"),
+				 OSBPTypesPackage.Literals.LMULTIPLICITY__UPPER,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the To Multiplicity String feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addToMultiplicityStringPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LMultiplicity_toMultiplicityString_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LMultiplicity_toMultiplicityString_feature", "_UI_LMultiplicity_type"),
+				 OSBPTypesPackage.Literals.LMULTIPLICITY__TO_MULTIPLICITY_STRING,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LMultiplicity.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LMultiplicity"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		LLowerBound labelValue = ((LMultiplicity)object).getLower();
+		String label = labelValue == null ? null : labelValue.toString();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LMultiplicity_type") :
+			getString("_UI_LMultiplicity_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LMultiplicity.class)) {
+			case OSBPTypesPackage.LMULTIPLICITY__LOWER:
+			case OSBPTypesPackage.LMULTIPLICITY__UPPER:
+			case OSBPTypesPackage.LMULTIPLICITY__TO_MULTIPLICITY_STRING:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */ 
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ((IChildCreationExtender)adapterFactory).getResourceLocator();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LOperationItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LOperationItemProvider.java
new file mode 100644
index 0000000..a9bd105
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LOperationItemProvider.java
@@ -0,0 +1,359 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.xbase.XbaseFactory;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LOperation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LOperationItemProvider extends LAnnotationTargetItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LOperationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LOPERATION__MODIFIER);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LOPERATION__TYPE);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LOPERATION__PARAMS);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LOPERATION__BODY);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LOperation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LOperation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LOperation_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LOperation.class)) {
+			case OSBPTypesPackage.LOPERATION__MODIFIER:
+			case OSBPTypesPackage.LOPERATION__TYPE:
+			case OSBPTypesPackage.LOPERATION__PARAMS:
+			case OSBPTypesPackage.LOPERATION__BODY:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__MODIFIER,
+				 OSBPTypesFactory.eINSTANCE.createLModifier()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__PARAMS,
+				 TypesFactory.eINSTANCE.createJvmFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXIfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXSwitchExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXBlockExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXVariableDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXMemberFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXConstructorCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXNullLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXNumberLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXStringLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXListLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXSetLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXClosure()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXCastedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXBinaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXUnaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXPostfixOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXBasicForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXDoWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXTypeLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXInstanceOfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXThrowExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXTryCatchFinallyExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXAssignment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXReturnExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XbaseFactory.eINSTANCE.createXSynchronizedExpression()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LPackageItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LPackageItemProvider.java
new file mode 100644
index 0000000..7bbaaf6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LPackageItemProvider.java
@@ -0,0 +1,182 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LPackage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LPackageItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LPackageItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LPackage_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LPackage_name_feature", "_UI_LPackage_type"),
+				 OSBPTypesPackage.Literals.LPACKAGE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LPACKAGE__IMPORTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LPackage.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LPackage"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LPackage)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LPackage_type") :
+			getString("_UI_LPackage_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LPackage.class)) {
+			case OSBPTypesPackage.LPACKAGE__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPTypesPackage.LPACKAGE__IMPORTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LPACKAGE__IMPORTS,
+				 OSBPTypesFactory.eINSTANCE.createLImport()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LResultFiltersItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LResultFiltersItemProvider.java
new file mode 100644
index 0000000..d743576
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LResultFiltersItemProvider.java
@@ -0,0 +1,153 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LResultFiltersItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LResultFiltersItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LRESULT_FILTERS__RESULT_FILTERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LResultFilters.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LResultFilters"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LResultFilters_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LResultFilters.class)) {
+			case OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LRESULT_FILTERS__RESULT_FILTERS,
+				 OSBPTypesFactory.eINSTANCE.createLAttributeMatchingConstraint()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LScalarTypeItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LScalarTypeItemProvider.java
new file mode 100644
index 0000000..9338fe2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LScalarTypeItemProvider.java
@@ -0,0 +1,108 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LScalarTypeItemProvider extends LTypeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LScalarType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LScalarType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LScalarType)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LScalarType_type") :
+			getString("_UI_LScalarType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LTypeItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LTypeItemProvider.java
new file mode 100644
index 0000000..c870298
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LTypeItemProvider.java
@@ -0,0 +1,211 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LType} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LTypeItemProvider extends LAnnotationTargetItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTypeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LType_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LType_name_feature", "_UI_LType_type"),
+				 OSBPTypesPackage.Literals.LTYPE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LType.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LType"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LType)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LType_type") :
+			getString("_UI_LType_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LType.class)) {
+			case OSBPTypesPackage.LTYPE__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPTypesPackage.LTYPE__ANNOTATION_INFO:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LTypedPackageItemProvider.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LTypedPackageItemProvider.java
new file mode 100644
index 0000000..df9b05f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/LTypedPackageItemProvider.java
@@ -0,0 +1,173 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LTypedPackageItemProvider extends LPackageItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTypedPackageItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LTypedPackage.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LTypedPackage"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LTypedPackage)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LTypedPackage_type") :
+			getString("_UI_LTypedPackage_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LTypedPackage.class)) {
+			case OSBPTypesPackage.LTYPED_PACKAGE__TYPES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/OSBPTypesItemProviderAdapterFactory.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/OSBPTypesItemProviderAdapterFactory.java
new file mode 100644
index 0000000..70eb25a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/OSBPTypesItemProviderAdapterFactory.java
@@ -0,0 +1,993 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.util.OSBPTypesAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPTypesItemProviderAdapterFactory extends OSBPTypesAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This helps manage the child creation extenders.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(TypesEditPlugin.INSTANCE, OSBPTypesPackage.eNS_URI);
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPTypesItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LCommonModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LCommonModelItemProvider lCommonModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LCommonModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLCommonModelAdapter() {
+		if (lCommonModelItemProvider == null) {
+			lCommonModelItemProvider = new LCommonModelItemProvider(this);
+		}
+
+		return lCommonModelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LLazyResolverItemProvider lLazyResolverItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLLazyResolverAdapter() {
+		if (lLazyResolverItemProvider == null) {
+			lLazyResolverItemProvider = new LLazyResolverItemProvider(this);
+		}
+
+		return lLazyResolverItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LPackage} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LPackageItemProvider lPackageItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LPackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLPackageAdapter() {
+		if (lPackageItemProvider == null) {
+			lPackageItemProvider = new LPackageItemProvider(this);
+		}
+
+		return lPackageItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTypedPackageItemProvider lTypedPackageItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLTypedPackageAdapter() {
+		if (lTypedPackageItemProvider == null) {
+			lTypedPackageItemProvider = new LTypedPackageItemProvider(this);
+		}
+
+		return lTypedPackageItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LImport} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LImportItemProvider lImportItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LImport}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLImportAdapter() {
+		if (lImportItemProvider == null) {
+			lImportItemProvider = new LImportItemProvider(this);
+		}
+
+		return lImportItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTypeItemProvider lTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLTypeAdapter() {
+		if (lTypeItemProvider == null) {
+			lTypeItemProvider = new LTypeItemProvider(this);
+		}
+
+		return lTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAnnotationDefItemProvider lAnnotationDefItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLAnnotationDefAdapter() {
+		if (lAnnotationDefItemProvider == null) {
+			lAnnotationDefItemProvider = new LAnnotationDefItemProvider(this);
+		}
+
+		return lAnnotationDefItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAnnotationTargetItemProvider lAnnotationTargetItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLAnnotationTargetAdapter() {
+		if (lAnnotationTargetItemProvider == null) {
+			lAnnotationTargetItemProvider = new LAnnotationTargetItemProvider(this);
+		}
+
+		return lAnnotationTargetItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LScalarTypeItemProvider lScalarTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLScalarTypeAdapter() {
+		if (lScalarTypeItemProvider == null) {
+			lScalarTypeItemProvider = new LScalarTypeItemProvider(this);
+		}
+
+		return lScalarTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDataType} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDataTypeItemProvider lDataTypeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDataType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDataTypeAdapter() {
+		if (lDataTypeItemProvider == null) {
+			lDataTypeItemProvider = new LDataTypeItemProvider(this);
+		}
+
+		return lDataTypeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LEnum} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEnumItemProvider lEnumItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LEnum}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEnumAdapter() {
+		if (lEnumItemProvider == null) {
+			lEnumItemProvider = new LEnumItemProvider(this);
+		}
+
+		return lEnumItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEnumLiteralItemProvider lEnumLiteralItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEnumLiteralAdapter() {
+		if (lEnumLiteralItemProvider == null) {
+			lEnumLiteralItemProvider = new LEnumLiteralItemProvider(this);
+		}
+
+		return lEnumLiteralItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LClass} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LClassItemProvider lClassItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LClass}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLClassAdapter() {
+		if (lClassItemProvider == null) {
+			lClassItemProvider = new LClassItemProvider(this);
+		}
+
+		return lClassItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LKeyAndValueItemProvider lKeyAndValueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLKeyAndValueAdapter() {
+		if (lKeyAndValueItemProvider == null) {
+			lKeyAndValueItemProvider = new LKeyAndValueItemProvider(this);
+		}
+
+		return lKeyAndValueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LOperation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LOperationItemProvider lOperationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LOperation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLOperationAdapter() {
+		if (lOperationItemProvider == null) {
+			lOperationItemProvider = new LOperationItemProvider(this);
+		}
+
+		return lOperationItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LModifier} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LModifierItemProvider lModifierItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LModifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLModifierAdapter() {
+		if (lModifierItemProvider == null) {
+			lModifierItemProvider = new LModifierItemProvider(this);
+		}
+
+		return lModifierItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LMultiplicityItemProvider lMultiplicityItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLMultiplicityAdapter() {
+		if (lMultiplicityItemProvider == null) {
+			lMultiplicityItemProvider = new LMultiplicityItemProvider(this);
+		}
+
+		return lMultiplicityItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LResultFiltersItemProvider lResultFiltersItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLResultFiltersAdapter() {
+		if (lResultFiltersItemProvider == null) {
+			lResultFiltersItemProvider = new LResultFiltersItemProvider(this);
+		}
+
+		return lResultFiltersItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAttributeMatchingConstraintItemProvider lAttributeMatchingConstraintItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLAttributeMatchingConstraintAdapter() {
+		if (lAttributeMatchingConstraintItemProvider == null) {
+			lAttributeMatchingConstraintItemProvider = new LAttributeMatchingConstraintItemProvider(this);
+		}
+
+		return lAttributeMatchingConstraintItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCAssertFalseItemProvider lDtCAssertFalseItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCAssertFalseAdapter() {
+		if (lDtCAssertFalseItemProvider == null) {
+			lDtCAssertFalseItemProvider = new LDtCAssertFalseItemProvider(this);
+		}
+
+		return lDtCAssertFalseItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCAssertTrueItemProvider lDtCAssertTrueItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCAssertTrueAdapter() {
+		if (lDtCAssertTrueItemProvider == null) {
+			lDtCAssertTrueItemProvider = new LDtCAssertTrueItemProvider(this);
+		}
+
+		return lDtCAssertTrueItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCDecimalMaxItemProvider lDtCDecimalMaxItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCDecimalMaxAdapter() {
+		if (lDtCDecimalMaxItemProvider == null) {
+			lDtCDecimalMaxItemProvider = new LDtCDecimalMaxItemProvider(this);
+		}
+
+		return lDtCDecimalMaxItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCDecimalMinItemProvider lDtCDecimalMinItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCDecimalMinAdapter() {
+		if (lDtCDecimalMinItemProvider == null) {
+			lDtCDecimalMinItemProvider = new LDtCDecimalMinItemProvider(this);
+		}
+
+		return lDtCDecimalMinItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCDigitsItemProvider lDtCDigitsItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCDigitsAdapter() {
+		if (lDtCDigitsItemProvider == null) {
+			lDtCDigitsItemProvider = new LDtCDigitsItemProvider(this);
+		}
+
+		return lDtCDigitsItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCFutureItemProvider lDtCFutureItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCFutureAdapter() {
+		if (lDtCFutureItemProvider == null) {
+			lDtCFutureItemProvider = new LDtCFutureItemProvider(this);
+		}
+
+		return lDtCFutureItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCPast} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCPastItemProvider lDtCPastItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCPast}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCPastAdapter() {
+		if (lDtCPastItemProvider == null) {
+			lDtCPastItemProvider = new LDtCPastItemProvider(this);
+		}
+
+		return lDtCPastItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNumericMaxItemProvider lDtCNumericMaxItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCNumericMaxAdapter() {
+		if (lDtCNumericMaxItemProvider == null) {
+			lDtCNumericMaxItemProvider = new LDtCNumericMaxItemProvider(this);
+		}
+
+		return lDtCNumericMaxItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNumericMinItemProvider lDtCNumericMinItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCNumericMinAdapter() {
+		if (lDtCNumericMinItemProvider == null) {
+			lDtCNumericMinItemProvider = new LDtCNumericMinItemProvider(this);
+		}
+
+		return lDtCNumericMinItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNotNullItemProvider lDtCNotNullItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCNotNullAdapter() {
+		if (lDtCNotNullItemProvider == null) {
+			lDtCNotNullItemProvider = new LDtCNotNullItemProvider(this);
+		}
+
+		return lDtCNotNullItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNull} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNullItemProvider lDtCNullItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNull}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCNullAdapter() {
+		if (lDtCNullItemProvider == null) {
+			lDtCNullItemProvider = new LDtCNullItemProvider(this);
+		}
+
+		return lDtCNullItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCRegExItemProvider lDtCRegExItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCRegExAdapter() {
+		if (lDtCRegExItemProvider == null) {
+			lDtCRegExItemProvider = new LDtCRegExItemProvider(this);
+		}
+
+		return lDtCRegExItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCSizeItemProvider lDtCSizeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtCSizeAdapter() {
+		if (lDtCSizeItemProvider == null) {
+			lDtCSizeItemProvider = new LDtCSizeItemProvider(this);
+		}
+
+		return lDtCSizeItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<IChildCreationExtender> getChildCreationExtenders() {
+		return childCreationExtenderManager.getChildCreationExtenders();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+		return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ResourceLocator getResourceLocator() {
+		return childCreationExtenderManager;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (lCommonModelItemProvider != null) lCommonModelItemProvider.dispose();
+		if (lLazyResolverItemProvider != null) lLazyResolverItemProvider.dispose();
+		if (lPackageItemProvider != null) lPackageItemProvider.dispose();
+		if (lTypedPackageItemProvider != null) lTypedPackageItemProvider.dispose();
+		if (lImportItemProvider != null) lImportItemProvider.dispose();
+		if (lTypeItemProvider != null) lTypeItemProvider.dispose();
+		if (lAnnotationDefItemProvider != null) lAnnotationDefItemProvider.dispose();
+		if (lAnnotationTargetItemProvider != null) lAnnotationTargetItemProvider.dispose();
+		if (lScalarTypeItemProvider != null) lScalarTypeItemProvider.dispose();
+		if (lDataTypeItemProvider != null) lDataTypeItemProvider.dispose();
+		if (lEnumItemProvider != null) lEnumItemProvider.dispose();
+		if (lEnumLiteralItemProvider != null) lEnumLiteralItemProvider.dispose();
+		if (lClassItemProvider != null) lClassItemProvider.dispose();
+		if (lKeyAndValueItemProvider != null) lKeyAndValueItemProvider.dispose();
+		if (lOperationItemProvider != null) lOperationItemProvider.dispose();
+		if (lModifierItemProvider != null) lModifierItemProvider.dispose();
+		if (lMultiplicityItemProvider != null) lMultiplicityItemProvider.dispose();
+		if (lResultFiltersItemProvider != null) lResultFiltersItemProvider.dispose();
+		if (lAttributeMatchingConstraintItemProvider != null) lAttributeMatchingConstraintItemProvider.dispose();
+		if (lDtCAssertFalseItemProvider != null) lDtCAssertFalseItemProvider.dispose();
+		if (lDtCAssertTrueItemProvider != null) lDtCAssertTrueItemProvider.dispose();
+		if (lDtCDecimalMaxItemProvider != null) lDtCDecimalMaxItemProvider.dispose();
+		if (lDtCDecimalMinItemProvider != null) lDtCDecimalMinItemProvider.dispose();
+		if (lDtCDigitsItemProvider != null) lDtCDigitsItemProvider.dispose();
+		if (lDtCFutureItemProvider != null) lDtCFutureItemProvider.dispose();
+		if (lDtCPastItemProvider != null) lDtCPastItemProvider.dispose();
+		if (lDtCNumericMaxItemProvider != null) lDtCNumericMaxItemProvider.dispose();
+		if (lDtCNumericMinItemProvider != null) lDtCNumericMinItemProvider.dispose();
+		if (lDtCNotNullItemProvider != null) lDtCNotNullItemProvider.dispose();
+		if (lDtCNullItemProvider != null) lDtCNullItemProvider.dispose();
+		if (lDtCRegExItemProvider != null) lDtCRegExItemProvider.dispose();
+		if (lDtCSizeItemProvider != null) lDtCSizeItemProvider.dispose();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/TypesEditPlugin.java b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/TypesEditPlugin.java
new file mode 100644
index 0000000..9a6596e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.edit/src/org/eclipse/osbp/dsl/semantic/common/types/provider/TypesEditPlugin.java
@@ -0,0 +1,100 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the Types edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class TypesEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final TypesEditPlugin INSTANCE = new TypesEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TypesEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     org.eclipse.xtext.common.types.provider.TypesEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.common.xtext.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0e8cec4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.common.xtext.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.common.xtext.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
diff --git a/org.eclipse.osbp.dsl.common.xtext.tests/build.properties b/org.eclipse.osbp.dsl.common.xtext.tests/build.properties
new file mode 100644
index 0000000..c22eebe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+       .
diff --git a/org.eclipse.osbp.dsl.common.xtext.tests/org.eclipse.osbp.dsl.common.xtext.tests.launch b/org.eclipse.osbp.dsl.common.xtext.tests/org.eclipse.osbp.dsl.common.xtext.tests.launch
new file mode 100644
index 0000000..51afafc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.tests/org.eclipse.osbp.dsl.common.xtext.tests.launch
@@ -0,0 +1,13 @@
+<?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.dsl.common.xtext.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.dsl.common.xtext.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.PROJECT_ATTR" value="org.eclipse.osbp.dsl.common.xtext.tests"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml
new file mode 100644
index 0000000..714ec87
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.tests/pom.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.common.xtext.tests</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<excludes>
+						<exclude>**/JPATests.java</exclude>
+					</excludes>
+					<failIfNoTests>true</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/.project b/org.eclipse.osbp.dsl.common.xtext.ui/.project
new file mode 100644
index 0000000..cb4792a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.common.xtext.ui</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.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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.common.xtext.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.common.xtext.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d188f35
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,39 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.common.xtext.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.common.xtext.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ 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.jdt.debug.ui,
+ org.eclipse.jface,
+ org.eclipse.osbp.xtext.basic.ui
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.common.xtext.ui.contentassist;
+  uses:="org.eclipse.xtext.xbase.annotations.ui.contentassist,
+   org.eclipse.xtext,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.ui.editor.contentassist";version="0.9.0",
+ org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr;
+  uses:="org.eclipse.xtext,
+   org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal,
+   org.eclipse.osbp.dsl.common.xtext.services,
+   org.eclipse.xtext.ui.editor.contentassist.antlr.internal,
+   org.eclipse.xtext.ui.codetemplates.ui.partialEditing,
+   org.eclipse.xtext.ui.editor.contentassist.antlr";version="0.9.0",
+ org.eclipse.osbp.dsl.common.xtext.ui.quickfix;
+  uses:="org.eclipse.xtext.xbase.annotations.ui.quickfix";version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.dsl.common.xtext.ui.internal.CommonGrammarActivator
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/about.html b/org.eclipse.osbp.dsl.common.xtext.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.ui/about.ini b/org.eclipse.osbp.dsl.common.xtext.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.ui/about.mappings b/org.eclipse.osbp.dsl.common.xtext.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.ui/about.properties b/org.eclipse.osbp.dsl.common.xtext.ui/about.properties
new file mode 100644
index 0000000..b85f0c2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.common.xtext.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/build.properties b/org.eclipse.osbp.dsl.common.xtext.ui/build.properties
new file mode 100644
index 0000000..df764e0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               epl-v10.html,\
+               license.html
+
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.common.xtext.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.ui/license.html b/org.eclipse.osbp.dsl.common.xtext.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.ui/plugin.xml b/org.eclipse.osbp.dsl.common.xtext.ui/plugin.xml
new file mode 100644
index 0000000..9cc7f97
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/plugin.xml
@@ -0,0 +1,524 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="type"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            matchingStrategy="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="OSBP CommonGrammar Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.common.xtext.CommonGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.common.xtext.CommonGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            name="OSBP CommonGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            name="OSBP CommonGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+            <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.dsl.common.xtext.ui.keyword_CommonGrammar"
+            label="CommonGrammar"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="type">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="type">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.eclipse.osbp.dsl.common.xtext.CommonGrammar -->
+    <extension
+            id="commongrammar.check.fast"
+            name="CommonGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="commongrammar.check.normal"
+            name="CommonGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="commongrammar.check.expensive"
+            name="CommonGrammar 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.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.compiler.preferencePage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.dsl.common.xtext.CommonGrammar -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.common.xtext.ui.commongrammar.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.common.xtext.ui.commongrammar.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.common.xtext.ui.commongrammar.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.compare.contentViewers"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="type">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.compare.contentMergeViewers"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="type" label="CommonGrammar Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.editors.documentProviders"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="type">
+    </provider>
+  </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
+	        class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.dsl.common.xtext.ui.keyword_CommonGrammar"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory: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.dsl.common.xtext.CommonGrammar" 
+                          id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.ide.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="example.rulerContextMenuId"
+         id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.ide.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="additions"
+            id="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.ide.rulerContextMenu.toggleBreakpointAction">
+         </action>
+      </viewerContribution>
+   </extension>
+   
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.common.xtext.CommonGrammar.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.dsl.common.xtext.CommonGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml
new file mode 100644
index 0000000..2969a8b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.common.xtext.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/AbstractCommonGrammarUiModule.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/AbstractCommonGrammarUiModule.java
new file mode 100644
index 0000000..cbf61a6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/AbstractCommonGrammarUiModule.java
@@ -0,0 +1,371 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractCommonGrammarUiModule extends DefaultUiModule {
+	
+	public AbstractCommonGrammarUiModule(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.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarLexer.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.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.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.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.dsl.common.xtext.ui.quickfix.CommonGrammarQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider.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.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider.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.dsl.common.xtext.ui.outline.CommonGrammarOutlineTreeProvider.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.dsl.common.xtext.ui.outline.CommonGrammarOutlineTreeProvider.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;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider.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.dsl.common.xtext.ui.contentassist.antlr.CommonGrammarParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarLexer.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.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarLexer.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.dsl.common.xtext.ui.contentassist.antlr.PartialCommonGrammarContentAssistParser.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/CommonGrammarExecutableExtensionFactory.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/CommonGrammarExecutableExtensionFactory.java
new file mode 100644
index 0000000..2f8ec9f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/CommonGrammarExecutableExtensionFactory.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.dsl.common.xtext.ui.internal.CommonGrammarActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class CommonGrammarExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return CommonGrammarActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return CommonGrammarActivator.getInstance().getInjector(CommonGrammarActivator.ORG_ECLIPSE_OSBP_DSL_COMMON_XTEXT_COMMONGRAMMAR);
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/AbstractCommonGrammarProposalProvider.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/AbstractCommonGrammarProposalProvider.java
new file mode 100644
index 0000000..9c64ae8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/AbstractCommonGrammarProposalProvider.java
@@ -0,0 +1,402 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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 AbstractCommonGrammarProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
+		
+	public void completeTypedPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTypedPackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTypedPackage_Types(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataType_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataType_JvmTypeReference(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataType_AsPrimitive(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDataType_Constraints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataType_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataType_Date(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDataType_DateType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDataType_AsBlob(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtCAssertFalse_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCAssertFalse_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCAssertFalse_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCAssertTrue_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCAssertTrue_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCAssertTrue_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMax_Max(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMax_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMax_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMax_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMin_Min(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMin_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMin_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDecimalMin_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDigits_IntDigits(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDigits_FractionDigits(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDigits_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDigits_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCDigits_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCFuture_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCFuture_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCFuture_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCPast_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCPast_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCPast_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMax_Max(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMax_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMax_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMax_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMin_Min(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMin_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMin_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNumericMin_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNotNull_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNotNull_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNotNull_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNull_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNull_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCNull_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCRegEx_Pattern(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCRegEx_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCRegEx_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCRegEx_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCSize_Min(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCSize_Max(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCSize_MsgCode(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCSize_MsgI18nKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtCSize_Severity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeModifier_Final(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeModifier_Static(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeModifier_Visibility(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEnum_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEnum_Literals(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEnumLiteral_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEnumLiteral_Default(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEnumLiteral_Null(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEnumLiteral_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAnnotationDef_Annotation(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeResultFilters_ResultFilters(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAttributeMatchingConstraint_Attribute(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAttributeMatchingConstraint_ComparatorType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAttributeMatchingConstraint_MatchingValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeAttributeMatchingConstraint_MatchingLiteral(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeKeyAndValue_Key(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeKeyAndValue_Value(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMultiplicity_Lower(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeMultiplicity_Upper(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_TypedPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Type(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Class(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Import(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DataType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_AllConstraints(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DataTypeConstraint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DateConstraint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BlobTypeConstraint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ConstraintSeverity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCAssertFalse(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCAssertTrue(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCDecimalMax(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCDecimalMin(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCDigits(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCFuture(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCPast(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCNumericMax(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCNumericMin(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCNotNull(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCNull(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCRegEx(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtCSize(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DateType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ScalarType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Modifier(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Enum(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EnumLiteral(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_AnnotationDef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LVisibility(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ResultFilters(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ResultFilter(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_AttributeMatchingConstraint(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_KeyAndValue(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LComparatorType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LFQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TYPE_CROSS_REFERENCE(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ValidIDWithKeywords(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ValidLFQNWithKeywords(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Multiplicity(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LowerBound(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_UpperBound(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LInt(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LDecimal(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/CommonGrammarParser.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/CommonGrammarParser.java
new file mode 100644
index 0000000..6770f59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/CommonGrammarParser.java
@@ -0,0 +1,706 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+public class CommonGrammarParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private CommonGrammarGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarParser createParser() {
+		org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarParser result = new org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarParser(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.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
+					put(grammarAccess.getDataTypeAccess().getAlternatives_2(), "rule__DataType__Alternatives_2");
+					put(grammarAccess.getAllConstraintsAccess().getAlternatives(), "rule__AllConstraints__Alternatives");
+					put(grammarAccess.getDataTypeConstraintAccess().getAlternatives(), "rule__DataTypeConstraint__Alternatives");
+					put(grammarAccess.getDateConstraintAccess().getAlternatives(), "rule__DateConstraint__Alternatives");
+					put(grammarAccess.getBlobTypeConstraintAccess().getAlternatives(), "rule__BlobTypeConstraint__Alternatives");
+					put(grammarAccess.getScalarTypeAccess().getAlternatives(), "rule__ScalarType__Alternatives");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAlternatives_2(), "rule__AttributeMatchingConstraint__Alternatives_2");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives(), "rule__ValidIDWithKeywords__Alternatives");
+					put(grammarAccess.getLIntAccess().getAlternatives_0(), "rule__LInt__Alternatives_0");
+					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.getConstraintSeverityAccess().getAlternatives(), "rule__ConstraintSeverity__Alternatives");
+					put(grammarAccess.getDateTypeAccess().getAlternatives(), "rule__DateType__Alternatives");
+					put(grammarAccess.getLVisibilityAccess().getAlternatives(), "rule__LVisibility__Alternatives");
+					put(grammarAccess.getLComparatorTypeAccess().getAlternatives(), "rule__LComparatorType__Alternatives");
+					put(grammarAccess.getLowerBoundAccess().getAlternatives(), "rule__LowerBound__Alternatives");
+					put(grammarAccess.getUpperBoundAccess().getAlternatives(), "rule__UpperBound__Alternatives");
+					put(grammarAccess.getTypedPackageAccess().getGroup(), "rule__TypedPackage__Group__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup_3(), "rule__TypedPackage__Group_3__0");
+					put(grammarAccess.getClassAccess().getGroup(), "rule__Class__Group__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup(), "rule__DataType__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0(), "rule__DataType__Group_2_0__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4(), "rule__DataType__Group_2_0_4__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3(), "rule__DataType__Group_2_0_4_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1(), "rule__DataType__Group_2_1__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3(), "rule__DataType__Group_2_1_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3(), "rule__DataType__Group_2_1_3_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2(), "rule__DataType__Group_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2(), "rule__DataType__Group_2_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3(), "rule__DataType__Group_2_2_2_3__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup(), "rule__DtCAssertFalse__Group__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0(), "rule__DtCAssertFalse__Group_2_0__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1(), "rule__DtCAssertFalse__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_1(), "rule__DtCAssertFalse__Group_2_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2(), "rule__DtCAssertFalse__Group_2_2__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0(), "rule__DtCAssertFalse__Group_2_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup(), "rule__DtCAssertTrue__Group__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0(), "rule__DtCAssertTrue__Group_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1(), "rule__DtCAssertTrue__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_1(), "rule__DtCAssertTrue__Group_2_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2(), "rule__DtCAssertTrue__Group_2_2__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0(), "rule__DtCAssertTrue__Group_2_2_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup(), "rule__DtCDecimalMax__Group__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0(), "rule__DtCDecimalMax__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1(), "rule__DtCDecimalMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_1(), "rule__DtCDecimalMax__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2(), "rule__DtCDecimalMax__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0(), "rule__DtCDecimalMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup(), "rule__DtCDecimalMin__Group__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0(), "rule__DtCDecimalMin__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1(), "rule__DtCDecimalMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_1(), "rule__DtCDecimalMin__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2(), "rule__DtCDecimalMin__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0(), "rule__DtCDecimalMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup(), "rule__DtCDigits__Group__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0(), "rule__DtCDigits__Group_6_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1(), "rule__DtCDigits__Group_6_0_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_1(), "rule__DtCDigits__Group_6_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2(), "rule__DtCDigits__Group_6_2__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0(), "rule__DtCDigits__Group_6_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup(), "rule__DtCFuture__Group__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0(), "rule__DtCFuture__Group_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0_1(), "rule__DtCFuture__Group_2_0_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_1(), "rule__DtCFuture__Group_2_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2(), "rule__DtCFuture__Group_2_2__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2_0(), "rule__DtCFuture__Group_2_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup(), "rule__DtCPast__Group__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0(), "rule__DtCPast__Group_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0_1(), "rule__DtCPast__Group_2_0_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_1(), "rule__DtCPast__Group_2_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2(), "rule__DtCPast__Group_2_2__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2_0(), "rule__DtCPast__Group_2_2_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup(), "rule__DtCNumericMax__Group__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0(), "rule__DtCNumericMax__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0_1(), "rule__DtCNumericMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_1(), "rule__DtCNumericMax__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2(), "rule__DtCNumericMax__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2_0(), "rule__DtCNumericMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup(), "rule__DtCNumericMin__Group__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0(), "rule__DtCNumericMin__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0_1(), "rule__DtCNumericMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_1(), "rule__DtCNumericMin__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2(), "rule__DtCNumericMin__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2_0(), "rule__DtCNumericMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup(), "rule__DtCNotNull__Group__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0(), "rule__DtCNotNull__Group_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0_1(), "rule__DtCNotNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_1(), "rule__DtCNotNull__Group_2_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2(), "rule__DtCNotNull__Group_2_2__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2_0(), "rule__DtCNotNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup(), "rule__DtCNull__Group__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0(), "rule__DtCNull__Group_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0_1(), "rule__DtCNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_1(), "rule__DtCNull__Group_2_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2(), "rule__DtCNull__Group_2_2__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2_0(), "rule__DtCNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup(), "rule__DtCRegEx__Group__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0(), "rule__DtCRegEx__Group_4_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0_1(), "rule__DtCRegEx__Group_4_0_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_1(), "rule__DtCRegEx__Group_4_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2(), "rule__DtCRegEx__Group_4_2__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2_0(), "rule__DtCRegEx__Group_4_2_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup(), "rule__DtCSize__Group__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0(), "rule__DtCSize__Group_6_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0_1(), "rule__DtCSize__Group_6_0_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_1(), "rule__DtCSize__Group_6_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2(), "rule__DtCSize__Group_6_2__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2_0(), "rule__DtCSize__Group_6_2_0__0");
+					put(grammarAccess.getEnumAccess().getGroup(), "rule__Enum__Group__0");
+					put(grammarAccess.getEnumAccess().getGroup_4(), "rule__Enum__Group_4__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup(), "rule__EnumLiteral__Group__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_0(), "rule__EnumLiteral__Group_1_0__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1(), "rule__EnumLiteral__Group_1_1__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1_2(), "rule__EnumLiteral__Group_1_1_2__0");
+					put(grammarAccess.getAnnotationDefAccess().getGroup(), "rule__AnnotationDef__Group__0");
+					put(grammarAccess.getResultFiltersAccess().getGroup(), "rule__ResultFilters__Group__0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getGroup(), "rule__AttributeMatchingConstraint__Group__0");
+					put(grammarAccess.getKeyAndValueAccess().getGroup(), "rule__KeyAndValue__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup(), "rule__LQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup_1(), "rule__LQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__0");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5(), "rule__ValidIDWithKeywords__Group_5__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup(), "rule__ValidLFQNWithKeywords__Group__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup_1(), "rule__ValidLFQNWithKeywords__Group_1__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup(), "rule__Multiplicity__Group__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup_2(), "rule__Multiplicity__Group_2__0");
+					put(grammarAccess.getLIntAccess().getGroup(), "rule__LInt__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup(), "rule__LDecimal__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup_1(), "rule__LDecimal__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__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.getTypedPackageAccess().getNameAssignment_2(), "rule__TypedPackage__NameAssignment_2");
+					put(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1(), "rule__TypedPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2(), "rule__TypedPackage__TypesAssignment_3_2");
+					put(grammarAccess.getClassAccess().getAnnotationsAssignment_1(), "rule__Class__AnnotationsAssignment_1");
+					put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getNameAssignment_1(), "rule__DataType__NameAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1(), "rule__DataType__JvmTypeReferenceAssignment_2_0_1");
+					put(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2(), "rule__DataType__AsPrimitiveAssignment_2_0_2");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3(), "rule__DataType__ConstraintsAssignment_2_0_3");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2(), "rule__DataType__PropertiesAssignment_2_0_4_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1(), "rule__DataType__PropertiesAssignment_2_0_4_3_1");
+					put(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0(), "rule__DataType__DateAssignment_2_1_0");
+					put(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1(), "rule__DataType__DateTypeAssignment_2_1_1");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2(), "rule__DataType__ConstraintsAssignment_2_1_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2(), "rule__DataType__PropertiesAssignment_2_1_3_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1(), "rule__DataType__PropertiesAssignment_2_1_3_3_1");
+					put(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0(), "rule__DataType__AsBlobAssignment_2_2_0");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1(), "rule__DataType__ConstraintsAssignment_2_2_1");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2(), "rule__DataType__PropertiesAssignment_2_2_2_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1(), "rule__DataType__PropertiesAssignment_2_2_2_3_1");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertFalse__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertTrue__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3(), "rule__DtCDecimalMax__MaxAssignment_3");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3(), "rule__DtCDecimalMin__MinAssignment_3");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3(), "rule__DtCDigits__IntDigitsAssignment_3");
+					put(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5(), "rule__DtCDigits__FractionDigitsAssignment_5");
+					put(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCDigits__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCDigits__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCDigits__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCFuture__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCFuture__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCFutureAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCFuture__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCPastAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCPast__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCPastAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCPast__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCPastAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCPast__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMaxAssignment_3(), "rule__DtCNumericMax__MaxAssignment_3");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMinAssignment_3(), "rule__DtCNumericMin__MinAssignment_3");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNotNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNotNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCRegExAccess().getPatternAssignment_3(), "rule__DtCRegEx__PatternAssignment_3");
+					put(grammarAccess.getDtCRegExAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCRegEx__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCRegExAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCRegExAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCRegEx__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCSizeAccess().getMinAssignment_3(), "rule__DtCSize__MinAssignment_3");
+					put(grammarAccess.getDtCSizeAccess().getMaxAssignment_5(), "rule__DtCSize__MaxAssignment_5");
+					put(grammarAccess.getDtCSizeAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCSize__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCSizeAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCSize__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCSizeAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCSize__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getModifierAccess().getFinalAssignment_0(), "rule__Modifier__FinalAssignment_0");
+					put(grammarAccess.getModifierAccess().getStaticAssignment_1(), "rule__Modifier__StaticAssignment_1");
+					put(grammarAccess.getModifierAccess().getVisibilityAssignment_2(), "rule__Modifier__VisibilityAssignment_2");
+					put(grammarAccess.getEnumAccess().getNameAssignment_1(), "rule__Enum__NameAssignment_1");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_3(), "rule__Enum__LiteralsAssignment_3");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_4_1(), "rule__Enum__LiteralsAssignment_4_1");
+					put(grammarAccess.getEnumLiteralAccess().getNameAssignment_0(), "rule__EnumLiteral__NameAssignment_0");
+					put(grammarAccess.getEnumLiteralAccess().getDefaultAssignment_1_0_1(), "rule__EnumLiteral__DefaultAssignment_1_0_1");
+					put(grammarAccess.getEnumLiteralAccess().getNullAssignment_1_1_0(), "rule__EnumLiteral__NullAssignment_1_1_0");
+					put(grammarAccess.getEnumLiteralAccess().getValueAssignment_1_1_2_1(), "rule__EnumLiteral__ValueAssignment_1_1_2_1");
+					put(grammarAccess.getAnnotationDefAccess().getAnnotationAssignment_0(), "rule__AnnotationDef__AnnotationAssignment_0");
+					put(grammarAccess.getResultFiltersAccess().getResultFiltersAssignment_3(), "rule__ResultFilters__ResultFiltersAssignment_3");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAttributeAssignment_0(), "rule__AttributeMatchingConstraint__AttributeAssignment_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeAssignment_1(), "rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0(), "rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1(), "rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1");
+					put(grammarAccess.getKeyAndValueAccess().getKeyAssignment_2(), "rule__KeyAndValue__KeyAssignment_2");
+					put(grammarAccess.getKeyAndValueAccess().getValueAssignment_5(), "rule__KeyAndValue__ValueAssignment_5");
+					put(grammarAccess.getMultiplicityAccess().getLowerAssignment_1(), "rule__Multiplicity__LowerAssignment_1");
+					put(grammarAccess.getMultiplicityAccess().getUpperAssignment_2_1(), "rule__Multiplicity__UpperAssignment_2_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), "rule__DtCAssertFalse__UnorderedGroup_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), "rule__DtCAssertTrue__UnorderedGroup_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), "rule__DtCDecimalMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), "rule__DtCDecimalMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), "rule__DtCDigits__UnorderedGroup_6");
+					put(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), "rule__DtCFuture__UnorderedGroup_2");
+					put(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), "rule__DtCPast__UnorderedGroup_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), "rule__DtCNumericMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), "rule__DtCNumericMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), "rule__DtCNotNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), "rule__DtCNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), "rule__DtCRegEx__UnorderedGroup_4");
+					put(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), "rule__DtCSize__UnorderedGroup_6");
+					put(grammarAccess.getModifierAccess().getUnorderedGroup(), "rule__Modifier__UnorderedGroup");
+					put(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), "rule__EnumLiteral__UnorderedGroup_1");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarParser typedParser = (org.eclipse.osbp.dsl.common.xtext.ui.contentassist.antlr.internal.InternalCommonGrammarParser) parser;
+			typedParser.entryRuleTypedPackage();
+			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 CommonGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(CommonGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/PartialCommonGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/PartialCommonGrammarContentAssistParser.java
new file mode 100644
index 0000000..85af344
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/PartialCommonGrammarContentAssistParser.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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 PartialCommonGrammarContentAssistParser extends CommonGrammarParser 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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g
new file mode 100644
index 0000000..b455634
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalCommonGrammar;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.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.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private CommonGrammarGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(CommonGrammarGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage 
+:
+{ before(grammarAccess.getTypedPackageRule()); }
+	 ruleTypedPackage
+{ after(grammarAccess.getTypedPackageRule()); } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup()); }
+(rule__TypedPackage__Group__0)
+{ after(grammarAccess.getTypedPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleType
+entryRuleType 
+:
+{ before(grammarAccess.getTypeRule()); }
+	 ruleType
+{ after(grammarAccess.getTypeRule()); } 
+	 EOF 
+;
+
+// Rule Type
+ruleType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeAccess().getAlternatives()); }
+(rule__Type__Alternatives)
+{ after(grammarAccess.getTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass 
+:
+{ before(grammarAccess.getClassRule()); }
+	 ruleClass
+{ after(grammarAccess.getClassRule()); } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassAccess().getGroup()); }
+(rule__Class__Group__0)
+{ after(grammarAccess.getClassAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType 
+:
+{ before(grammarAccess.getDataTypeRule()); }
+	 ruleDataType
+{ after(grammarAccess.getDataTypeRule()); } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup()); }
+(rule__DataType__Group__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint 
+:
+{ before(grammarAccess.getDataTypeConstraintRule()); }
+	 ruleDataTypeConstraint
+{ after(grammarAccess.getDataTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+(rule__DataTypeConstraint__Alternatives)
+{ after(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint 
+:
+{ before(grammarAccess.getDateConstraintRule()); }
+	 ruleDateConstraint
+{ after(grammarAccess.getDateConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+(rule__DateConstraint__Alternatives)
+{ after(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint 
+:
+{ before(grammarAccess.getBlobTypeConstraintRule()); }
+	 ruleBlobTypeConstraint
+{ after(grammarAccess.getBlobTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+(rule__BlobTypeConstraint__Alternatives)
+{ after(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse 
+:
+{ before(grammarAccess.getDtCAssertFalseRule()); }
+	 ruleDtCAssertFalse
+{ after(grammarAccess.getDtCAssertFalseRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+(rule__DtCAssertFalse__Group__0)
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue 
+:
+{ before(grammarAccess.getDtCAssertTrueRule()); }
+	 ruleDtCAssertTrue
+{ after(grammarAccess.getDtCAssertTrueRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+(rule__DtCAssertTrue__Group__0)
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax 
+:
+{ before(grammarAccess.getDtCDecimalMaxRule()); }
+	 ruleDtCDecimalMax
+{ after(grammarAccess.getDtCDecimalMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+(rule__DtCDecimalMax__Group__0)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin 
+:
+{ before(grammarAccess.getDtCDecimalMinRule()); }
+	 ruleDtCDecimalMin
+{ after(grammarAccess.getDtCDecimalMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+(rule__DtCDecimalMin__Group__0)
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits 
+:
+{ before(grammarAccess.getDtCDigitsRule()); }
+	 ruleDtCDigits
+{ after(grammarAccess.getDtCDigitsRule()); } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup()); }
+(rule__DtCDigits__Group__0)
+{ after(grammarAccess.getDtCDigitsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture 
+:
+{ before(grammarAccess.getDtCFutureRule()); }
+	 ruleDtCFuture
+{ after(grammarAccess.getDtCFutureRule()); } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup()); }
+(rule__DtCFuture__Group__0)
+{ after(grammarAccess.getDtCFutureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast 
+:
+{ before(grammarAccess.getDtCPastRule()); }
+	 ruleDtCPast
+{ after(grammarAccess.getDtCPastRule()); } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCPastAccess().getGroup()); }
+(rule__DtCPast__Group__0)
+{ after(grammarAccess.getDtCPastAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax 
+:
+{ before(grammarAccess.getDtCNumericMaxRule()); }
+	 ruleDtCNumericMax
+{ after(grammarAccess.getDtCNumericMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+(rule__DtCNumericMax__Group__0)
+{ after(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin 
+:
+{ before(grammarAccess.getDtCNumericMinRule()); }
+	 ruleDtCNumericMin
+{ after(grammarAccess.getDtCNumericMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+(rule__DtCNumericMin__Group__0)
+{ after(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull 
+:
+{ before(grammarAccess.getDtCNotNullRule()); }
+	 ruleDtCNotNull
+{ after(grammarAccess.getDtCNotNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNotNullAccess().getGroup()); }
+(rule__DtCNotNull__Group__0)
+{ after(grammarAccess.getDtCNotNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull 
+:
+{ before(grammarAccess.getDtCNullRule()); }
+	 ruleDtCNull
+{ after(grammarAccess.getDtCNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNullAccess().getGroup()); }
+(rule__DtCNull__Group__0)
+{ after(grammarAccess.getDtCNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx 
+:
+{ before(grammarAccess.getDtCRegExRule()); }
+	 ruleDtCRegEx
+{ after(grammarAccess.getDtCRegExRule()); } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCRegExAccess().getGroup()); }
+(rule__DtCRegEx__Group__0)
+{ after(grammarAccess.getDtCRegExAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize 
+:
+{ before(grammarAccess.getDtCSizeRule()); }
+	 ruleDtCSize
+{ after(grammarAccess.getDtCSizeRule()); } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCSizeAccess().getGroup()); }
+(rule__DtCSize__Group__0)
+{ after(grammarAccess.getDtCSizeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType 
+:
+{ before(grammarAccess.getScalarTypeRule()); }
+	 ruleScalarType
+{ after(grammarAccess.getScalarTypeRule()); } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+(rule__ScalarType__Alternatives)
+{ after(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum 
+:
+{ before(grammarAccess.getEnumRule()); }
+	 ruleEnum
+{ after(grammarAccess.getEnumRule()); } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumAccess().getGroup()); }
+(rule__Enum__Group__0)
+{ after(grammarAccess.getEnumAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral 
+:
+{ before(grammarAccess.getEnumLiteralRule()); }
+	 ruleEnumLiteral
+{ after(grammarAccess.getEnumLiteralRule()); } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumLiteralAccess().getGroup()); }
+(rule__EnumLiteral__Group__0)
+{ after(grammarAccess.getEnumLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef 
+:
+{ before(grammarAccess.getAnnotationDefRule()); }
+	 ruleAnnotationDef
+{ after(grammarAccess.getAnnotationDefRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationDefAccess().getGroup()); }
+(rule__AnnotationDef__Group__0)
+{ after(grammarAccess.getAnnotationDefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter 
+:
+{ before(grammarAccess.getResultFilterRule()); }
+	 ruleResultFilter
+{ after(grammarAccess.getResultFilterRule()); } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+	ruleAttributeMatchingConstraint
+{ after(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint 
+:
+{ before(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 ruleAttributeMatchingConstraint
+{ after(grammarAccess.getAttributeMatchingConstraintRule()); } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+(rule__AttributeMatchingConstraint__Group__0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue 
+:
+{ before(grammarAccess.getKeyAndValueRule()); }
+	 ruleKeyAndValue
+{ after(grammarAccess.getKeyAndValueRule()); } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getKeyAndValueAccess().getGroup()); }
+(rule__KeyAndValue__Group__0)
+{ after(grammarAccess.getKeyAndValueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getLQualifiedNameWithWildCardRule()); }
+	 ruleLQualifiedNameWithWildCard
+{ after(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__LQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords 
+:
+{ before(grammarAccess.getValidIDWithKeywordsRule()); }
+	 ruleValidIDWithKeywords
+{ after(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+(rule__ValidIDWithKeywords__Alternatives)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt 
+:
+{ before(grammarAccess.getLIntRule()); }
+	 ruleLInt
+{ after(grammarAccess.getLIntRule()); } 
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLIntAccess().getGroup()); }
+(rule__LInt__Group__0)
+{ after(grammarAccess.getLIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal 
+:
+{ before(grammarAccess.getLDecimalRule()); }
+	 ruleLDecimal
+{ after(grammarAccess.getLDecimalRule()); } 
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLDecimalAccess().getGroup()); }
+(rule__LDecimal__Group__0)
+{ after(grammarAccess.getLDecimalAccess().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 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 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 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 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 ConstraintSeverity
+ruleConstraintSeverity
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+(rule__ConstraintSeverity__Alternatives)
+{ after(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule DateType
+ruleDateType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getAlternatives()); }
+(rule__DateType__Alternatives)
+{ after(grammarAccess.getDateTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LVisibility
+ruleLVisibility
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+(rule__LVisibility__Alternatives)
+{ after(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LComparatorType
+ruleLComparatorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+(rule__LComparatorType__Alternatives)
+{ after(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LowerBound
+ruleLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+(rule__LowerBound__Alternatives)
+{ after(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule UpperBound
+ruleUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+(rule__UpperBound__Alternatives)
+{ after(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Type__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+	ruleScalarType
+{ after(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+	ruleClass
+{ after(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+(rule__DataType__Group_2_0__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+(rule__DataType__Group_2_1__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+(rule__DataType__Group_2_2__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+	ruleDtCFuture
+{ after(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+	ruleDtCPast
+{ after(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+	ruleDtCNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BlobTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+	ruleDtCNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ScalarType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+	ruleDataType
+{ after(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+	ruleEnum
+{ after(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeMatchingConstraint__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+(rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+(rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValidIDWithKeywords__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+
+	'cachable' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+
+	'id' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+
+	'uuid' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+
+	'transient' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+
+	'version' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+(rule__ValidIDWithKeywords__Group_5__0)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+
+	'refers' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+
+	'settings' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+
+	'lazy' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+
+	'notnull' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+
+	'dto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+
+	'date' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+
+	'ref' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+
+	'cascade' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+
+	'var' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LInt__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_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__ConstraintSeverity__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+(	'info' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+(	'warn' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+(	'error' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+(	'date' 
+)
+{ after(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+(	'time' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+(	'timestamp' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LVisibility__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+(	'package' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+(	'private' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+(	'protected' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+(	'public' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LComparatorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+(	'==' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+(	'>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+(	'<' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+(	'>=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+(	'<=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+(	'<>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LowerBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+(	'0' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+(	'?' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+(	'+' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+(	'1' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UpperBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+(	'1' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__TypedPackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__0__Impl
+	rule__TypedPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0()); }
+(
+
+)
+{ after(grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__1__Impl
+	rule__TypedPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getPackageKeyword_1()); }
+
+	'package' 
+
+{ after(grammarAccess.getTypedPackageAccess().getPackageKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__2__Impl
+	rule__TypedPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getNameAssignment_2()); }
+(rule__TypedPackage__NameAssignment_2)
+{ after(grammarAccess.getTypedPackageAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup_3()); }
+(rule__TypedPackage__Group_3__0)?
+{ after(grammarAccess.getTypedPackageAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TypedPackage__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__0__Impl
+	rule__TypedPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__1__Impl
+	rule__TypedPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1()); }
+(rule__TypedPackage__ImportsAssignment_3_1)*
+{ after(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__2__Impl
+	rule__TypedPackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2()); }
+(rule__TypedPackage__TypesAssignment_3_2)*
+{ after(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__0__Impl
+	rule__Class__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLClassAction_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLClassAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__1__Impl
+	rule__Class__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+(rule__Class__AnnotationsAssignment_1)*
+{ after(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__2__Impl
+	rule__Class__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getClassKeyword_3()); }
+
+	'class' 
+
+{ after(grammarAccess.getClassAccess().getClassKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Import__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__0__Impl
+	rule__Import__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__1__Impl
+	rule__Import__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+(rule__Import__ImportedNamespaceAssignment_1)
+{ after(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataType__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__0__Impl
+	rule__DataType__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDatatypeKeyword_0()); }
+
+	'datatype' 
+
+{ after(grammarAccess.getDataTypeAccess().getDatatypeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__1__Impl
+	rule__DataType__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getNameAssignment_1()); }
+(rule__DataType__NameAssignment_1)
+{ after(grammarAccess.getDataTypeAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__2__Impl
+	rule__DataType__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAlternatives_2()); }
+(rule__DataType__Alternatives_2)
+{ after(grammarAccess.getDataTypeAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getSemicolonKeyword_3()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDataTypeAccess().getSemicolonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__0__Impl
+	rule__DataType__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0()); }
+
+	'jvmType' 
+
+{ after(grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__1__Impl
+	rule__DataType__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1()); }
+(rule__DataType__JvmTypeReferenceAssignment_2_0_1)
+{ after(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__2__Impl
+	rule__DataType__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2()); }
+(rule__DataType__AsPrimitiveAssignment_2_0_2)?
+{ after(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__3__Impl
+	rule__DataType__Group_2_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3()); }
+(rule__DataType__ConstraintsAssignment_2_0_3)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0_4()); }
+(rule__DataType__Group_2_0_4__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__0__Impl
+	rule__DataType__Group_2_0_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__1__Impl
+	rule__DataType__Group_2_0_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__2__Impl
+	rule__DataType__Group_2_0_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2()); }
+(rule__DataType__PropertiesAssignment_2_0_4_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__3__Impl
+	rule__DataType__Group_2_0_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3()); }
+(rule__DataType__Group_2_0_4_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4_3__0__Impl
+	rule__DataType__Group_2_0_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1()); }
+(rule__DataType__PropertiesAssignment_2_0_4_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataType__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__0__Impl
+	rule__DataType__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0()); }
+(rule__DataType__DateAssignment_2_1_0)
+{ after(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__1__Impl
+	rule__DataType__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1()); }
+(rule__DataType__DateTypeAssignment_2_1_1)
+{ after(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__2__Impl
+	rule__DataType__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2()); }
+(rule__DataType__ConstraintsAssignment_2_1_2)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1_3()); }
+(rule__DataType__Group_2_1_3__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_1_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__0__Impl
+	rule__DataType__Group_2_1_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__1__Impl
+	rule__DataType__Group_2_1_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__2__Impl
+	rule__DataType__Group_2_1_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2()); }
+(rule__DataType__PropertiesAssignment_2_1_3_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__3__Impl
+	rule__DataType__Group_2_1_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3()); }
+(rule__DataType__Group_2_1_3_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_1_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3_3__0__Impl
+	rule__DataType__Group_2_1_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1()); }
+(rule__DataType__PropertiesAssignment_2_1_3_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataType__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__0__Impl
+	rule__DataType__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0()); }
+(rule__DataType__AsBlobAssignment_2_2_0)
+{ after(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__1__Impl
+	rule__DataType__Group_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1()); }
+(rule__DataType__ConstraintsAssignment_2_2_1)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2_2()); }
+(rule__DataType__Group_2_2_2__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__0__Impl
+	rule__DataType__Group_2_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__1__Impl
+	rule__DataType__Group_2_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__2__Impl
+	rule__DataType__Group_2_2_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2()); }
+(rule__DataType__PropertiesAssignment_2_2_2_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__3__Impl
+	rule__DataType__Group_2_2_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3()); }
+(rule__DataType__Group_2_2_2_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_2_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2_3__0__Impl
+	rule__DataType__Group_2_2_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1()); }
+(rule__DataType__PropertiesAssignment_2_2_2_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__0__Impl
+	rule__DtCAssertFalse__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__1__Impl
+	rule__DtCAssertFalse__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1()); }
+
+	'isFalse' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()); }
+(rule__DtCAssertFalse__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0__0__Impl
+	rule__DtCAssertFalse__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1()); }
+(rule__DtCAssertFalse__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__0__Impl
+	rule__DtCAssertFalse__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__1__Impl
+	rule__DtCAssertFalse__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2()); }
+(rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__0__Impl
+	rule__DtCAssertFalse__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__1__Impl
+	rule__DtCAssertFalse__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2()); }
+(rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2__0__Impl
+	rule__DtCAssertFalse__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0()); }
+(rule__DtCAssertFalse__Group_2_2_0__0)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__0__Impl
+	rule__DtCAssertFalse__Group_2_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__1__Impl
+	rule__DtCAssertFalse__Group_2_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2()); }
+(rule__DtCAssertFalse__SeverityAssignment_2_2_0_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__0__Impl
+	rule__DtCAssertTrue__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__1__Impl
+	rule__DtCAssertTrue__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1()); }
+
+	'isTrue' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()); }
+(rule__DtCAssertTrue__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0__0__Impl
+	rule__DtCAssertTrue__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1()); }
+(rule__DtCAssertTrue__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__0__Impl
+	rule__DtCAssertTrue__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__1__Impl
+	rule__DtCAssertTrue__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2()); }
+(rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__0__Impl
+	rule__DtCAssertTrue__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__1__Impl
+	rule__DtCAssertTrue__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2()); }
+(rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2__0__Impl
+	rule__DtCAssertTrue__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0()); }
+(rule__DtCAssertTrue__Group_2_2_0__0)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__0__Impl
+	rule__DtCAssertTrue__Group_2_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__1__Impl
+	rule__DtCAssertTrue__Group_2_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2()); }
+(rule__DtCAssertTrue__SeverityAssignment_2_2_0_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__0__Impl
+	rule__DtCDecimalMax__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__1__Impl
+	rule__DtCDecimalMax__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1()); }
+
+	'maxDecimal' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__2__Impl
+	rule__DtCDecimalMax__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__3__Impl
+	rule__DtCDecimalMax__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3()); }
+(rule__DtCDecimalMax__MaxAssignment_3)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__4__Impl
+	rule__DtCDecimalMax__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()); }
+(rule__DtCDecimalMax__UnorderedGroup_4)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0__0__Impl
+	rule__DtCDecimalMax__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1()); }
+(rule__DtCDecimalMax__Group_4_0_1__0)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__0__Impl
+	rule__DtCDecimalMax__Group_4_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__1__Impl
+	rule__DtCDecimalMax__Group_4_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2()); }
+(rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__0__Impl
+	rule__DtCDecimalMax__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__1__Impl
+	rule__DtCDecimalMax__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2()); }
+(rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2__0__Impl
+	rule__DtCDecimalMax__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0()); }
+(rule__DtCDecimalMax__Group_4_2_0__0)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2_0__0__Impl
+	rule__DtCDecimalMax__Group_4_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2_0__1__Impl
+	rule__DtCDecimalMax__Group_4_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2()); }
+(rule__DtCDecimalMax__SeverityAssignment_4_2_0_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__0__Impl
+	rule__DtCDecimalMin__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__1__Impl
+	rule__DtCDecimalMin__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1()); }
+
+	'minDecimal' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__2__Impl
+	rule__DtCDecimalMin__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__3__Impl
+	rule__DtCDecimalMin__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3()); }
+(rule__DtCDecimalMin__MinAssignment_3)
+{ after(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__4__Impl
+	rule__DtCDecimalMin__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()); }
+(rule__DtCDecimalMin__UnorderedGroup_4)?
+{ after(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0__0__Impl
+	rule__DtCDecimalMin__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1()); }
+(rule__DtCDecimalMin__Group_4_0_1__0)?
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0_1__0__Impl
+	rule__DtCDecimalMin__Group_4_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0_1__1__Impl
+	rule__DtCDecimalMin__Group_4_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2()); }
+(rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2)
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_1__0__Impl
+	rule__DtCDecimalMin__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_1__1__Impl
+	rule__DtCDecimalMin__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2()); }
+(rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2)
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2__0__Impl
+	rule__DtCDecimalMin__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0()); }
+(rule__DtCDecimalMin__Group_4_2_0__0)?
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2_0__0__Impl
+	rule__DtCDecimalMin__Group_4_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2_0__1__Impl
+	rule__DtCDecimalMin__Group_4_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2()); }
+(rule__DtCDecimalMin__SeverityAssignment_4_2_0_2)
+{ after(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__0__Impl
+	rule__DtCDigits__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__1__Impl
+	rule__DtCDigits__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1()); }
+
+	'digits' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__2__Impl
+	rule__DtCDigits__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__3__Impl
+	rule__DtCDigits__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3()); }
+(rule__DtCDigits__IntDigitsAssignment_3)
+{ after(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__4__Impl
+	rule__DtCDigits__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__5__Impl
+	rule__DtCDigits__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5()); }
+(rule__DtCDigits__FractionDigitsAssignment_5)
+{ after(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__6__Impl
+	rule__DtCDigits__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()); }
+(rule__DtCDigits__UnorderedGroup_6)?
+{ after(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group_6_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0__0__Impl
+	rule__DtCDigits__Group_6_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1()); }
+(rule__DtCDigits__Group_6_0_1__0)?
+{ after(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDigits__Group_6_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0_1__0__Impl
+	rule__DtCDigits__Group_6_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0_1__1__Impl
+	rule__DtCDigits__Group_6_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2()); }
+(rule__DtCDigits__MsgCodeAssignment_6_0_1_2)
+{ after(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group_6_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_1__0__Impl
+	rule__DtCDigits__Group_6_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_1__1__Impl
+	rule__DtCDigits__Group_6_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2()); }
+(rule__DtCDigits__MsgI18nKeyAssignment_6_1_2)
+{ after(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group_6_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2__0__Impl
+	rule__DtCDigits__Group_6_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0()); }
+(rule__DtCDigits__Group_6_2_0__0)?
+{ after(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDigits__Group_6_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2_0__0__Impl
+	rule__DtCDigits__Group_6_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2_0__1__Impl
+	rule__DtCDigits__Group_6_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2()); }
+(rule__DtCDigits__SeverityAssignment_6_2_0_2)
+{ after(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCFuture__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group__0__Impl
+	rule__DtCFuture__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group__1__Impl
+	rule__DtCFuture__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1()); }
+
+	'isFuture' 
+
+{ after(grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()); }
+(rule__DtCFuture__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCFuture__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0__0__Impl
+	rule__DtCFuture__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup_2_0_1()); }
+(rule__DtCFuture__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCFutureAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCFuture__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0_1__0__Impl
+	rule__DtCFuture__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0_1__1__Impl
+	rule__DtCFuture__Group_2_0_1__2
+;
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.tokens b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.tokens
new file mode 100644
index 0000000..9a2f587
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.tokens
@@ -0,0 +1,273 @@
+'!'=55
+'!='=39
+'!=='=41
+'#'=114
+'%'=54
+'%='=37
+'&&'=15
+'&'=135
+'('=86
+')'=87
+'*'=51
+'**'=52
+'*='=35
+'+'=31
+'++'=56
+'+='=33
+', '=88
+','=113
+'-'=32
+'--'=57
+'-='=34
+'->'=45
+'.'=58
+'..'=47
+'..<'=46
+'/'=53
+'/='=36
+'0'=76
+'1'=78
+':'=120
+'::'=141
+';'=82
+'<'=44
+'<='=75
+'<>'=49
+'='=13
+'=='=38
+'==='=40
+'=>'=48
+'>'=43
+'>='=42
+'?'=77
+'?.'=142
+'?:'=50
+'@'=112
+'['=90
+']'=93
+'as blob'=138
+'as primitive'=136
+'as'=116
+'asDefault'=139
+'cachable'=16
+'cascade'=29
+'case'=122
+'catch'=134
+'class'=81
+'collection'=111
+'datatype'=83
+'date'=26
+'dateType'=137
+'default'=121
+'derived'=110
+'digits'=98
+'do'=125
+'dto'=25
+'else'=118
+'enum'=107
+'error'=68
+'extends'=60
+'extension'=63
+'false'=65
+'finally'=132
+'for'=123
+'forNull'=140
+'id'=17
+'if'=117
+'import'=62
+'info'=66
+'instanceof'=115
+'isFalse'=89
+'isFuture'=99
+'isNotNull'=103
+'isNull'=104
+'isPast'=100
+'isTrue'=95
+'jvmType'=84
+'key'=108
+'lazy'=23
+'mapto'=27
+'maxDecimal'=96
+'maxNumber'=101
+'minDecimal'=97
+'minMaxSize'=106
+'minNumber'=102
+'msgCode'=91
+'msgI18nKey'=92
+'new'=126
+'notnull'=24
+'null'=127
+'package'=71
+'private'=72
+'properties'=85
+'protected'=73
+'public'=74
+'ref'=28
+'refers'=21
+'regex'=105
+'return'=130
+'settings'=22
+'severity'=94
+'static'=61
+'super'=64
+'switch'=119
+'synchronized'=133
+'throw'=129
+'time'=69
+'timestamp'=70
+'transient'=19
+'true'=144
+'try'=131
+'typeof'=128
+'uuid'=18
+'val'=59
+'value'=109
+'var'=30
+'version'=20
+'warn'=67
+'while'=124
+'{'=79
+'|'=143
+'||'=14
+'}'=80
+RULE_ANY_OTHER=12
+RULE_DECIMAL=7
+RULE_HEX=5
+RULE_ID=4
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=8
+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__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammarLexer.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammarLexer.java
new file mode 100644
index 0000000..79264c9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammarLexer.java
@@ -0,0 +1,5489 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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 InternalCommonGrammarLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=5;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalCommonGrammarLexer() {;} 
+    public InternalCommonGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalCommonGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:14:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:14:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:15:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:15:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:16:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:16:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:17:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:17:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:18:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:18:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:19:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:19:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:20:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:20:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:21:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:21:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:22:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:22:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:23:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:23:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:24:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:24:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:25:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:25:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:26:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:26:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:27:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:27:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:28:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:28:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:29:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:30:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:31:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:32:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:33:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:34:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:35:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:37:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:38:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:39:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:40:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:41:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:42:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:42:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:43:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:43:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:44:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:45:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:46:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:46:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:47:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:47:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:48:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:48:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:49:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:49:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:50:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:50:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:51:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:52:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:53:7: ( '!' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:54:7: ( '++' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:55:7: ( '--' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:55:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:56:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:56:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:57:7: ( 'val' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:57:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:58:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:58:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:59:7: ( 'static' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:59:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:60:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:60:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:61:7: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:61:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:62:7: ( 'super' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:62:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:63:7: ( 'false' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:63:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:64:7: ( 'info' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:64:9: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:65:7: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:65:9: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:66:7: ( 'error' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:66:9: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:67:7: ( 'time' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:67:9: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:68:7: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:68:9: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:69:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:69:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:70:7: ( 'private' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:70:9: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:71:7: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:71:9: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:72:7: ( 'public' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:72:9: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:73:7: ( '<=' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:73:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:74:7: ( '0' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:74:9: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:75:7: ( '?' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:76:7: ( '1' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:76:9: '1'
+            {
+            match('1'); 
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:77:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:77:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:78:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:78:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:79:7: ( 'class' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:79:9: 'class'
+            {
+            match("class"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:80:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:80:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:81:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:81:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:82:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:82:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:83:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:83:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:84:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:84:9: '('
+            {
+            match('('); 
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:85:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:85:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:86:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:86:9: ', '
+            {
+            match(", "); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:87:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:87:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:88:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:88:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:89:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:89:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:90:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:90:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:91:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:91:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:92:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:92:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:93:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:93:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:94:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:94:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:95:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:95:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:96:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:96:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:97:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:97:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:98:8: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:98:10: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:99:8: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:99:10: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:100:8: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:100:10: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:101:8: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:101:10: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:102:8: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:102:10: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:103:8: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:103:10: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:104:8: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:104:10: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:105:8: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:105:10: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:106:8: ( 'key' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:106:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:107:8: ( 'value' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:107:10: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:108:8: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:108:10: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:109:8: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:109:10: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:110:8: ( '@' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:111:8: ( ',' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:112:8: ( '#' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:113:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:114:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:114:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:115:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:115:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:116:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:116:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:117:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:117:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:118:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:119:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:119:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:120:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:120:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:121:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:121:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:122:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:122:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:123:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:123:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:124:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:124:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:125:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:125:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:126:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:126:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:127:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:127:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:128:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:128:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:129:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:129:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:130:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:130:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:131:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:131:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:132:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:132:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:133:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:134:8: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:134:10: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:135:8: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:135:10: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:136:8: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:136:10: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:137:8: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:137:10: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:138:8: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:138:10: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:139:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:139:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:140:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:140:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:141:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:141:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:142:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:142:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36055: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36057:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36057:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36057: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36059: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36061:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36061:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36061:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36061: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36061: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36063: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36065:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36065:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36065: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36065: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36067: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36069:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36069: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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36071:16: ( . )
+            // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:36071:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=141;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:847: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:856: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:865: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:878: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:886: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:898: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:914: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:930: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g:1:938: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\66\1\70\1\72\13\76\1\137\1\143\1\146\1\152\1\154\1\156\1\160\1\163\1\165\1\170\4\76\1\u0087\1\u0089\3\uffff\1\76\2\uffff\1\u0091\2\uffff\1\76\2\uffff\1\76\1\u0099\1\u009a\1\63\5\uffff\1\u009e\6\uffff\3\76\1\uffff\1\u00a4\3\76\1\u00ac\25\76\1\u00c9\3\76\20\uffff\1\u00cf\6\uffff\1\u00d1\4\uffff\14\76\1\uffff\1\u009a\6\uffff\1\76\6\uffff\1\76\2\uffff\1\u00e3\7\uffff\5\76\1\uffff\7\76\1\uffff\2\76\1\u00f5\5\76\1\u00fb\1\u00fd\1\u00ff\12\76\1\u010a\1\76\1\u010c\4\76\1\uffff\4\76\4\uffff\5\76\1\u0120\10\76\1\u012a\1\uffff\1\76\1\uffff\2\76\1\u0130\4\76\1\u0135\7\76\1\u013d\1\76\1\uffff\1\u013f\1\u0141\3\76\1\uffff\1\76\1\uffff\1\76\1\uffff\10\76\1\u014f\1\76\1\uffff\1\u0151\1\uffff\1\u0153\16\76\1\u0162\1\u0163\2\76\1\uffff\1\76\1\u0167\7\76\3\uffff\3\76\1\uffff\1\u0172\1\u0173\2\76\1\uffff\7\76\1\uffff\1\76\1\uffff\1\76\1\uffff\1\76\1\u0180\1\76\1\u0182\1\76\1\u0184\4\76\1\u0189\2\76\1\uffff\1\76\1\uffff\1\76\1\uffff\4\76\1\u0192\10\76\1\u019c\2\uffff\1\u019d\2\76\1\uffff\1\u01a0\11\76\2\uffff\1\76\1\u01ab\3\76\1\u01af\1\u01b0\1\76\1\u01b2\2\76\1\u01b5\1\uffff\1\76\1\uffff\1\u01b7\1\uffff\1\u01b8\2\76\1\u01bb\1\uffff\1\u01bc\4\76\1\u01c1\2\76\1\uffff\11\76\2\uffff\2\76\1\uffff\4\76\1\u01d3\3\76\1\u01d7\1\76\1\uffff\1\76\1\u01da\1\76\2\uffff\1\76\1\uffff\2\76\1\uffff\1\u01df\2\uffff\2\76\2\uffff\1\76\1\u01e3\2\76\1\uffff\1\u01e6\1\u01e7\2\76\1\u01ea\4\76\1\u01ef\1\76\1\u01f1\1\u01f2\1\u01f3\1\u01f4\2\76\1\uffff\1\u01f7\1\76\1\u01f9\1\uffff\2\76\1\uffff\1\u01fc\3\76\1\uffff\1\u0200\1\u0201\1\76\1\uffff\1\u0203\1\u0204\2\uffff\2\76\1\uffff\4\76\1\uffff\1\76\4\uffff\2\76\1\uffff\1\76\1\uffff\2\76\1\uffff\1\u0211\1\u0212\1\u0213\2\uffff\1\76\2\uffff\1\76\1\u0216\2\76\1\u0219\1\76\1\u021b\1\u021c\1\76\1\u021e\1\u021f\1\u0220\3\uffff\1\76\1\u0222\1\uffff\1\u0223\1\u0224\1\uffff\1\u0225\2\uffff\1\u0226\3\uffff\1\76\5\uffff\1\u0228\1\uffff";
+    static final String DFA21_eofS =
+        "\u0229\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\141\1\144\1\165\1\150\1\141\2\145\1\141\1\145\2\141\1\53\1\55\2\52\4\75\2\56\1\154\3\141\2\60\3\uffff\1\166\2\uffff\1\40\2\uffff\1\145\2\uffff\1\163\1\72\1\60\1\44\5\uffff\1\75\6\uffff\1\143\1\141\1\154\1\uffff\1\44\1\160\1\146\1\106\1\44\1\151\1\141\1\155\1\160\2\162\1\154\1\146\1\164\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\147\1\146\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\162\1\151\1\143\1\151\1\142\1\uffff\1\60\6\uffff\1\155\6\uffff\1\171\2\uffff\1\40\7\uffff\1\150\2\143\1\163\1\154\1\uffff\2\157\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\156\1\44\3\145\1\157\1\163\3\44\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\44\1\154\1\44\1\141\2\151\1\141\1\uffff\1\164\1\104\1\103\1\104\4\uffff\1\145\1\157\1\155\1\145\1\163\1\44\1\141\1\156\1\154\1\153\1\166\1\160\1\154\1\124\1\44\1\142\1\145\1\uffff\2\141\1\44\1\150\1\163\1\145\1\162\1\44\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\163\1\uffff\2\44\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\44\1\165\1\uffff\1\44\1\uffff\1\44\2\164\1\166\1\165\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\44\1\145\1\165\1\uffff\1\154\1\44\1\145\2\141\2\145\1\151\1\171\3\uffff\1\146\1\142\1\144\1\uffff\2\44\1\143\1\164\1\uffff\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\146\1\44\1\157\1\44\1\163\1\44\2\156\1\151\1\143\1\44\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\163\1\145\1\154\1\44\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\44\2\uffff\1\44\2\154\1\uffff\1\44\1\147\1\164\1\143\1\162\1\143\1\160\1\141\1\154\1\145\2\uffff\1\164\1\44\1\143\1\145\1\162\2\44\1\165\1\44\1\145\1\141\1\44\1\uffff\1\156\1\uffff\1\44\1\uffff\1\44\1\147\1\164\1\44\1\uffff\1\44\1\157\1\154\2\160\1\44\1\144\1\164\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\154\1\171\1\uffff\2\145\2\164\1\44\1\145\1\165\1\145\1\44\1\151\1\uffff\1\145\1\44\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\44\2\uffff\1\163\1\171\2\uffff\1\156\1\44\2\145\1\uffff\2\44\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\4\44\1\145\1\151\1\uffff\1\44\1\154\1\44\1\uffff\2\157\1\uffff\1\44\1\154\1\164\1\160\1\uffff\2\44\1\151\1\uffff\2\44\2\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\4\uffff\1\144\1\145\1\uffff\1\164\1\uffff\1\156\1\146\1\uffff\3\44\2\uffff\1\172\2\uffff\1\154\1\44\1\171\1\154\1\44\1\145\2\44\1\163\3\44\3\uffff\1\145\1\44\1\uffff\2\44\1\uffff\1\44\2\uffff\1\44\3\uffff\1\144\5\uffff\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\157\1\163\1\165\1\171\2\145\1\171\1\141\1\165\1\164\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\1\157\1\150\1\165\1\170\1\154\3\uffff\1\166\2\uffff\1\40\2\uffff\1\145\2\uffff\1\163\1\72\1\154\1\172\5\uffff\1\75\6\uffff\1\164\1\141\1\154\1\uffff\1\172\1\160\1\163\1\124\1\172\1\151\1\171\1\155\1\160\3\162\1\164\1\166\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\147\1\162\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\162\1\151\1\143\1\157\1\142\1\uffff\1\154\6\uffff\1\155\6\uffff\1\171\2\uffff\1\172\7\uffff\1\150\1\145\1\143\1\163\1\154\1\uffff\2\157\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\156\1\172\3\145\1\157\1\163\3\172\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\172\1\154\1\172\1\145\2\151\1\141\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\145\1\157\1\155\1\145\1\163\1\172\1\141\1\156\1\154\1\153\1\166\1\164\1\154\1\124\1\172\1\160\1\145\1\uffff\2\141\1\172\1\150\1\163\1\145\1\162\1\172\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\163\1\uffff\2\172\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\172\1\165\1\uffff\1\172\1\uffff\1\172\2\164\1\166\1\165\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\172\1\145\1\165\1\uffff\1\154\1\172\1\145\2\141\2\145\1\151\1\171\3\uffff\1\146\1\142\1\144\1\uffff\2\172\1\143\1\164\1\uffff\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\146\1\172\1\157\1\172\1\163\1\172\2\156\1\151\1\143\1\172\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\163\1\145\1\154\1\172\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\172\2\uffff\1\172\2\154\1\uffff\1\172\1\147\1\164\1\143\1\162\1\143\1\160\1\141\1\154\1\145\2\uffff\1\164\1\172\1\143\1\145\1\162\2\172\1\165\1\172\1\145\1\141\1\172\1\uffff\1\156\1\uffff\1\172\1\uffff\1\172\1\147\1\164\1\172\1\uffff\1\172\1\157\1\154\2\160\1\172\1\144\1\164\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\154\1\171\1\uffff\2\145\2\164\1\172\1\145\1\165\1\145\1\172\1\151\1\uffff\1\145\1\172\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\172\2\uffff\1\163\1\171\2\uffff\1\156\1\172\2\145\1\uffff\2\172\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\4\172\1\145\1\151\1\uffff\1\172\1\154\1\172\1\uffff\2\157\1\uffff\1\172\1\154\1\164\1\160\1\uffff\2\172\1\151\1\uffff\2\172\2\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\4\uffff\1\144\1\145\1\uffff\1\164\1\uffff\1\156\1\146\1\uffff\3\172\2\uffff\1\172\2\uffff\1\154\1\172\1\171\1\154\1\172\1\145\2\172\1\163\3\172\3\uffff\1\145\1\172\1\uffff\2\172\1\uffff\1\172\2\uffff\1\172\3\uffff\1\144\5\uffff\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\37\uffff\1\103\1\104\1\106\1\uffff\1\112\1\113\1\uffff\1\116\1\121\1\uffff\1\144\1\146\4\uffff\1\u0088\2\u0089\1\u008c\1\u008d\1\uffff\1\44\1\1\1\2\1\u0083\1\3\1\173\3\uffff\1\u0088\36\uffff\1\25\1\54\1\23\1\26\1\41\1\55\1\24\1\27\1\50\1\47\1\30\1\u008a\1\u008b\1\51\1\31\1\52\1\uffff\1\53\1\36\1\37\1\45\1\77\1\40\1\uffff\1\56\1\46\1\u0082\1\101\14\uffff\1\u0085\1\uffff\1\100\1\u0087\1\102\1\103\1\104\1\106\1\uffff\1\112\1\113\1\114\1\145\1\116\1\121\1\uffff\1\144\1\146\1\uffff\1\u0081\1\154\1\u0086\1\u0089\1\u008c\1\34\1\32\5\uffff\1\5\7\uffff\1\151\34\uffff\1\161\4\uffff\1\35\1\33\1\42\1\43\21\uffff\1\150\21\uffff\1\167\5\uffff\1\22\1\uffff\1\57\1\uffff\1\20\12\uffff\1\162\1\uffff\1\15\23\uffff\1\157\11\uffff\1\140\1\174\1\176\3\uffff\1\156\4\uffff\1\66\7\uffff\1\6\1\uffff\1\u0084\1\uffff\1\71\15\uffff\1\13\1\uffff\1\163\1\uffff\1\16\16\uffff\1\137\1\152\3\uffff\1\67\12\uffff\1\172\1\105\14\uffff\1\165\1\uffff\1\141\1\uffff\1\135\4\uffff\1\64\10\uffff\1\17\11\uffff\1\70\1\65\2\uffff\1\160\12\uffff\1\62\3\uffff\1\123\1\130\1\uffff\1\134\2\uffff\1\164\1\uffff\1\11\1\166\2\uffff\1\61\1\153\4\uffff\1\126\21\uffff\1\76\3\uffff\1\21\2\uffff\1\115\4\uffff\1\10\3\uffff\1\14\2\uffff\1\142\1\155\2\uffff\1\117\4\uffff\1\60\1\uffff\1\u0080\1\170\1\73\1\74\2\uffff\1\110\1\uffff\1\4\2\uffff\1\127\3\uffff\1\12\1\122\1\uffff\1\175\1\107\14\uffff\1\133\1\7\1\72\2\uffff\1\131\2\uffff\1\132\1\uffff\1\63\1\75\1\uffff\1\177\1\143\1\147\1\uffff\1\124\1\120\1\125\1\136\1\111\1\uffff\1\171";
+    static final String DFA21_specialS =
+        "\1\0\u0228\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\63\2\62\2\63\1\62\22\63\1\62\1\24\1\60\1\52\1\57\1\23\1\3\1\61\1\43\1\44\1\21\1\17\1\45\1\20\1\27\1\22\1\35\1\36\10\55\1\54\1\41\1\26\1\1\1\25\1\30\1\51\32\57\1\46\1\63\1\47\1\56\1\57\1\63\1\53\1\57\1\4\1\15\1\31\1\32\2\57\1\5\1\42\1\50\1\13\1\16\1\14\1\57\1\34\1\57\1\11\1\12\1\7\1\6\1\10\1\33\3\57\1\37\1\2\1\40\uff82\63",
+            "\1\64\1\65",
+            "\1\67",
+            "\1\71",
+            "\1\73\12\uffff\1\74\2\uffff\1\75",
+            "\1\77\1\uffff\1\103\6\uffff\1\100\1\101\4\uffff\1\102",
+            "\1\104",
+            "\1\110\1\106\10\uffff\1\105\6\uffff\1\107",
+            "\1\112\3\uffff\1\111",
+            "\1\113",
+            "\1\114\16\uffff\1\115\1\116\1\uffff\1\117\1\uffff\1\120",
+            "\1\121",
+            "\1\123\11\uffff\1\122\5\uffff\1\124",
+            "\1\126\3\uffff\1\130\3\uffff\1\127\5\uffff\1\131\4\uffff\1\125",
+            "\1\132\7\uffff\1\134\11\uffff\1\133",
+            "\1\136\21\uffff\1\135",
+            "\1\142\17\uffff\1\140\1\141",
+            "\1\145\22\uffff\1\144",
+            "\1\150\4\uffff\1\151\15\uffff\1\147",
+            "\1\153",
+            "\1\155",
+            "\1\157",
+            "\1\162\1\161",
+            "\1\164",
+            "\1\167\13\uffff\1\166",
+            "\1\174\1\uffff\1\173\3\uffff\1\172\5\uffff\1\171",
+            "\1\175\7\uffff\1\177\5\uffff\1\176",
+            "\1\u0080\6\uffff\1\u0081",
+            "\1\u0082\20\uffff\1\u0083\2\uffff\1\u0084",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\13\uffff\1\u0085\6\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\13\uffff\1\u0085",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088",
+            "",
+            "",
+            "",
+            "\1\u008d",
+            "",
+            "",
+            "\1\u0090",
+            "",
+            "",
+            "\1\u0094",
+            "",
+            "",
+            "\1\u0097",
+            "\1\u0098",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088",
+            "\1\76\34\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009d",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009f\17\uffff\1\u00a0\1\u00a1",
+            "\1\u00a2",
+            "\1\u00a3",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00a5",
+            "\1\u00a6\14\uffff\1\u00a7",
+            "\1\u00a8\7\uffff\1\u00ab\1\uffff\1\u00aa\3\uffff\1\u00a9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00ad",
+            "\1\u00ae\23\uffff\1\u00b0\3\uffff\1\u00af",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b6\5\uffff\1\u00b5",
+            "\1\u00b7\1\u00b8\14\uffff\1\u00b9",
+            "\1\u00ba\1\uffff\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c8\13\uffff\1\u00c7",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00ca\7\uffff\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ce",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d0",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc\5\uffff\1\u00dd",
+            "\1\u00de",
+            "",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00df",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e0",
+            "",
+            "",
+            "\1\u00e1\3\uffff\1\76\13\uffff\12\76\7\uffff\3\76\1\u00e2\26\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e4",
+            "\1\u00e5\1\uffff\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed\23\uffff\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1\5\uffff\1\u00f2",
+            "",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\24\76\1\u00fc\5\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\4\76\1\u00fe\25\76",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u010b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u010e\3\uffff\1\u010d",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "",
+            "\1\u0112",
+            "\1\u0113\11\uffff\1\u0114",
+            "\1\u0115\5\uffff\1\u0116",
+            "\1\u0117\10\uffff\1\u0119\1\u0118",
+            "",
+            "",
+            "",
+            "",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\76\13\uffff\12\76\7\uffff\15\76\1\u011f\14\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0127\3\uffff\1\u0126",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u012c\15\uffff\1\u012b",
+            "\1\u012d",
+            "",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u013e",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22\76\1\u0140\7\76",
+            "\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\u014e",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0150",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\23\76\1\u0152\6\76\4\uffff\1\76\1\uffff\32\76",
+            "\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\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0164",
+            "\1\u0165",
+            "",
+            "\1\u0166",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "",
+            "",
+            "",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0174",
+            "\1\u0175",
+            "",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "",
+            "\1\u017d",
+            "",
+            "\1\u017e",
+            "",
+            "\1\u017f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0181",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0183",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u018a",
+            "\1\u018b",
+            "",
+            "\1\u018c",
+            "",
+            "\1\u018d",
+            "",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a\16\uffff\1\u019b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u019e",
+            "\1\u019f",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "",
+            "",
+            "\1\u01aa",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b1",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u01b6",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01c2",
+            "\1\u01c3",
+            "",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "",
+            "",
+            "\1\u01cd",
+            "\1\u01ce",
+            "",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01d8",
+            "",
+            "\1\u01d9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01db",
+            "",
+            "",
+            "\1\u01dc",
+            "",
+            "\1\u01dd",
+            "\1\u01de",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u01e0",
+            "\1\u01e1",
+            "",
+            "",
+            "\1\u01e2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01e4",
+            "\1\u01e5",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f0",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f5",
+            "\1\u01f6",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f8",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u01fa",
+            "\1\u01fb",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0202",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u0205",
+            "\1\u0206",
+            "",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "\1\u020a",
+            "",
+            "\1\u020b",
+            "",
+            "",
+            "",
+            "",
+            "\1\u020c",
+            "\1\u020d",
+            "",
+            "\1\u020e",
+            "",
+            "\1\u020f",
+            "\1\u0210",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u0214",
+            "",
+            "",
+            "\1\u0215",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u021a",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u021d",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "\1\u0221",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "\1\u0227",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            ""
+    };
+
+    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 | 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=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='i') ) {s = 5;}
+
+                        else if ( (LA21_0=='u') ) {s = 6;}
+
+                        else if ( (LA21_0=='t') ) {s = 7;}
+
+                        else if ( (LA21_0=='v') ) {s = 8;}
+
+                        else if ( (LA21_0=='r') ) {s = 9;}
+
+                        else if ( (LA21_0=='s') ) {s = 10;}
+
+                        else if ( (LA21_0=='l') ) {s = 11;}
+
+                        else if ( (LA21_0=='n') ) {s = 12;}
+
+                        else if ( (LA21_0=='d') ) {s = 13;}
+
+                        else if ( (LA21_0=='m') ) {s = 14;}
+
+                        else if ( (LA21_0=='+') ) {s = 15;}
+
+                        else if ( (LA21_0=='-') ) {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=='.') ) {s = 23;}
+
+                        else if ( (LA21_0=='?') ) {s = 24;}
+
+                        else if ( (LA21_0=='e') ) {s = 25;}
+
+                        else if ( (LA21_0=='f') ) {s = 26;}
+
+                        else if ( (LA21_0=='w') ) {s = 27;}
+
+                        else if ( (LA21_0=='p') ) {s = 28;}
+
+                        else if ( (LA21_0=='0') ) {s = 29;}
+
+                        else if ( (LA21_0=='1') ) {s = 30;}
+
+                        else if ( (LA21_0=='{') ) {s = 31;}
+
+                        else if ( (LA21_0=='}') ) {s = 32;}
+
+                        else if ( (LA21_0==';') ) {s = 33;}
+
+                        else if ( (LA21_0=='j') ) {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=='k') ) {s = 40;}
+
+                        else if ( (LA21_0=='@') ) {s = 41;}
+
+                        else if ( (LA21_0=='#') ) {s = 42;}
+
+                        else if ( (LA21_0=='a') ) {s = 43;}
+
+                        else if ( (LA21_0==':') ) {s = 44;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 45;}
+
+                        else if ( (LA21_0=='^') ) {s = 46;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='o'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+
+                        else if ( (LA21_0=='\"') ) {s = 48;}
+
+                        else if ( (LA21_0=='\'') ) {s = 49;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 51;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammarParser.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammarParser.java
new file mode 100644
index 0000000..4f037a9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+
+
+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 InternalCommonGrammarParserSignatures {
+     void entryRuleTypedPackage() throws RecognitionException;
+     void ruleTypedPackage() throws RecognitionException;
+     void entryRuleType() throws RecognitionException;
+     void ruleType() throws RecognitionException;
+     void entryRuleClass() throws RecognitionException;
+     void ruleClass() throws RecognitionException;
+     void entryRuleImport() throws RecognitionException;
+     void ruleImport() throws RecognitionException;
+     void entryRuleDataType() throws RecognitionException;
+     void ruleDataType() throws RecognitionException;
+     void entryRuleDataTypeConstraint() throws RecognitionException;
+     void ruleDataTypeConstraint() throws RecognitionException;
+     void entryRuleDateConstraint() throws RecognitionException;
+     void ruleDateConstraint() throws RecognitionException;
+     void entryRuleBlobTypeConstraint() throws RecognitionException;
+     void ruleBlobTypeConstraint() throws RecognitionException;
+     void entryRuleDtCAssertFalse() throws RecognitionException;
+     void ruleDtCAssertFalse() throws RecognitionException;
+     void entryRuleDtCAssertTrue() throws RecognitionException;
+     void ruleDtCAssertTrue() throws RecognitionException;
+     void entryRuleDtCDecimalMax() throws RecognitionException;
+     void ruleDtCDecimalMax() throws RecognitionException;
+     void entryRuleDtCDecimalMin() throws RecognitionException;
+     void ruleDtCDecimalMin() throws RecognitionException;
+     void entryRuleDtCDigits() throws RecognitionException;
+     void ruleDtCDigits() throws RecognitionException;
+     void entryRuleDtCFuture() throws RecognitionException;
+     void ruleDtCFuture() throws RecognitionException;
+     void entryRuleDtCPast() throws RecognitionException;
+     void ruleDtCPast() throws RecognitionException;
+     void entryRuleDtCNumericMax() throws RecognitionException;
+     void ruleDtCNumericMax() throws RecognitionException;
+     void entryRuleDtCNumericMin() throws RecognitionException;
+     void ruleDtCNumericMin() throws RecognitionException;
+     void entryRuleDtCNotNull() throws RecognitionException;
+     void ruleDtCNotNull() throws RecognitionException;
+     void entryRuleDtCNull() throws RecognitionException;
+     void ruleDtCNull() throws RecognitionException;
+     void entryRuleDtCRegEx() throws RecognitionException;
+     void ruleDtCRegEx() throws RecognitionException;
+     void entryRuleDtCSize() throws RecognitionException;
+     void ruleDtCSize() throws RecognitionException;
+     void entryRuleScalarType() throws RecognitionException;
+     void ruleScalarType() throws RecognitionException;
+     void entryRuleEnum() throws RecognitionException;
+     void ruleEnum() throws RecognitionException;
+     void entryRuleEnumLiteral() throws RecognitionException;
+     void ruleEnumLiteral() throws RecognitionException;
+     void entryRuleAnnotationDef() throws RecognitionException;
+     void ruleAnnotationDef() throws RecognitionException;
+     void entryRuleResultFilter() throws RecognitionException;
+     void ruleResultFilter() throws RecognitionException;
+     void entryRuleAttributeMatchingConstraint() throws RecognitionException;
+     void ruleAttributeMatchingConstraint() throws RecognitionException;
+     void entryRuleKeyAndValue() throws RecognitionException;
+     void ruleKeyAndValue() throws RecognitionException;
+     void entryRuleLQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleLQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleValidIDWithKeywords() throws RecognitionException;
+     void ruleValidIDWithKeywords() throws RecognitionException;
+     void entryRuleLInt() throws RecognitionException;
+     void ruleLInt() throws RecognitionException;
+     void entryRuleLDecimal() throws RecognitionException;
+     void ruleLDecimal() 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 entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() 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 entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleConstraintSeverity() throws RecognitionException;
+     void ruleDateType() throws RecognitionException;
+     void ruleLVisibility() throws RecognitionException;
+     void ruleLComparatorType() throws RecognitionException;
+     void ruleLowerBound() throws RecognitionException;
+     void ruleUpperBound() throws RecognitionException;
+     void rule__Type__Alternatives() throws RecognitionException;
+     void rule__DataType__Alternatives_2() throws RecognitionException;
+     void rule__DataTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__DateConstraint__Alternatives() throws RecognitionException;
+     void rule__BlobTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__ScalarType__Alternatives() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException;
+     void rule__LInt__Alternatives_0() 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__ConstraintSeverity__Alternatives() throws RecognitionException;
+     void rule__DateType__Alternatives() throws RecognitionException;
+     void rule__LVisibility__Alternatives() throws RecognitionException;
+     void rule__LComparatorType__Alternatives() throws RecognitionException;
+     void rule__LowerBound__Alternatives() throws RecognitionException;
+     void rule__UpperBound__Alternatives() throws RecognitionException;
+     void rule__TypedPackage__Group__0() throws RecognitionException;
+     void rule__TypedPackage__Group__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__1() throws RecognitionException;
+     void rule__TypedPackage__Group__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__2() throws RecognitionException;
+     void rule__TypedPackage__Group__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__3() throws RecognitionException;
+     void rule__TypedPackage__Group__3__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__Class__Group__0() throws RecognitionException;
+     void rule__Class__Group__0__Impl() throws RecognitionException;
+     void rule__Class__Group__1() throws RecognitionException;
+     void rule__Class__Group__1__Impl() throws RecognitionException;
+     void rule__Class__Group__2() throws RecognitionException;
+     void rule__Class__Group__2__Impl() throws RecognitionException;
+     void rule__Class__Group__3() throws RecognitionException;
+     void rule__Class__Group__3__Impl() throws RecognitionException;
+     void rule__Import__Group__0() throws RecognitionException;
+     void rule__Import__Group__0__Impl() throws RecognitionException;
+     void rule__Import__Group__1() throws RecognitionException;
+     void rule__Import__Group__1__Impl() throws RecognitionException;
+     void rule__Import__Group__2() throws RecognitionException;
+     void rule__Import__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__0() throws RecognitionException;
+     void rule__DataType__Group__0__Impl() throws RecognitionException;
+     void rule__DataType__Group__1() throws RecognitionException;
+     void rule__DataType__Group__1__Impl() throws RecognitionException;
+     void rule__DataType__Group__2() throws RecognitionException;
+     void rule__DataType__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__3() throws RecognitionException;
+     void rule__DataType__Group__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__0() throws RecognitionException;
+     void rule__DataType__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__1() throws RecognitionException;
+     void rule__DataType__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__2() throws RecognitionException;
+     void rule__DataType__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__3() throws RecognitionException;
+     void rule__DataType__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__4() throws RecognitionException;
+     void rule__DataType__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__0() throws RecognitionException;
+     void rule__DataType__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__1() throws RecognitionException;
+     void rule__DataType__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__2() throws RecognitionException;
+     void rule__DataType__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__3() throws RecognitionException;
+     void rule__DataType__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__0() throws RecognitionException;
+     void rule__DtCDigits__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__1() throws RecognitionException;
+     void rule__DtCDigits__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__2() throws RecognitionException;
+     void rule__DtCDigits__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__3() throws RecognitionException;
+     void rule__DtCDigits__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__4() throws RecognitionException;
+     void rule__DtCDigits__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__5() throws RecognitionException;
+     void rule__DtCDigits__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__6() throws RecognitionException;
+     void rule__DtCDigits__Group__6__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__7() throws RecognitionException;
+     void rule__DtCDigits__Group__7__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__0() throws RecognitionException;
+     void rule__DtCFuture__Group__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__1() throws RecognitionException;
+     void rule__DtCFuture__Group__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__2() throws RecognitionException;
+     void rule__DtCFuture__Group__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__0() throws RecognitionException;
+     void rule__DtCPast__Group__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__1() throws RecognitionException;
+     void rule__DtCPast__Group__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__2() throws RecognitionException;
+     void rule__DtCPast__Group__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__0() throws RecognitionException;
+     void rule__DtCNotNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__1() throws RecognitionException;
+     void rule__DtCNotNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__2() throws RecognitionException;
+     void rule__DtCNotNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__0() throws RecognitionException;
+     void rule__DtCNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__1() throws RecognitionException;
+     void rule__DtCNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__2() throws RecognitionException;
+     void rule__DtCNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__0() throws RecognitionException;
+     void rule__DtCRegEx__Group__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__1() throws RecognitionException;
+     void rule__DtCRegEx__Group__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__2() throws RecognitionException;
+     void rule__DtCRegEx__Group__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__3() throws RecognitionException;
+     void rule__DtCRegEx__Group__3__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__4() throws RecognitionException;
+     void rule__DtCRegEx__Group__4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__5() throws RecognitionException;
+     void rule__DtCRegEx__Group__5__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__0() throws RecognitionException;
+     void rule__DtCSize__Group__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__1() throws RecognitionException;
+     void rule__DtCSize__Group__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__2() throws RecognitionException;
+     void rule__DtCSize__Group__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__3() throws RecognitionException;
+     void rule__DtCSize__Group__3__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__4() throws RecognitionException;
+     void rule__DtCSize__Group__4__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__5() throws RecognitionException;
+     void rule__DtCSize__Group__5__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__6() throws RecognitionException;
+     void rule__DtCSize__Group__6__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__7() throws RecognitionException;
+     void rule__DtCSize__Group__7__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__0() throws RecognitionException;
+     void rule__Enum__Group__0__Impl() throws RecognitionException;
+     void rule__Enum__Group__1() throws RecognitionException;
+     void rule__Enum__Group__1__Impl() throws RecognitionException;
+     void rule__Enum__Group__2() throws RecognitionException;
+     void rule__Enum__Group__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__3() throws RecognitionException;
+     void rule__Enum__Group__3__Impl() throws RecognitionException;
+     void rule__Enum__Group__4() throws RecognitionException;
+     void rule__Enum__Group__4__Impl() throws RecognitionException;
+     void rule__Enum__Group__5() throws RecognitionException;
+     void rule__Enum__Group__5__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__0() throws RecognitionException;
+     void rule__Enum__Group_4__0__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__1() throws RecognitionException;
+     void rule__Enum__Group_4__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__0() throws RecognitionException;
+     void rule__EnumLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__1() throws RecognitionException;
+     void rule__EnumLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1__Impl() throws RecognitionException;
+     void rule__AnnotationDef__Group__0() throws RecognitionException;
+     void rule__AnnotationDef__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__0() throws RecognitionException;
+     void rule__KeyAndValue__Group__0__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__1() throws RecognitionException;
+     void rule__KeyAndValue__Group__1__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__2() throws RecognitionException;
+     void rule__KeyAndValue__Group__2__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__3() throws RecognitionException;
+     void rule__KeyAndValue__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__4() throws RecognitionException;
+     void rule__KeyAndValue__Group__4__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__5() throws RecognitionException;
+     void rule__KeyAndValue__Group__5__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1__Impl() throws RecognitionException;
+     void rule__LInt__Group__0() throws RecognitionException;
+     void rule__LInt__Group__0__Impl() throws RecognitionException;
+     void rule__LInt__Group__1() throws RecognitionException;
+     void rule__LInt__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__0() throws RecognitionException;
+     void rule__LDecimal__Group__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__1() throws RecognitionException;
+     void rule__LDecimal__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__0() throws RecognitionException;
+     void rule__LDecimal__Group_1__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__1() throws RecognitionException;
+     void rule__LDecimal__Group_1__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__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__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__DtCAssertFalse__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__0() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__1() throws RecognitionException;
+     void rule__TypedPackage__NameAssignment_2() throws RecognitionException;
+     void rule__TypedPackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__TypedPackage__TypesAssignment_3_2() throws RecognitionException;
+     void rule__Class__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__Import__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__DataType__NameAssignment_1() throws RecognitionException;
+     void rule__DataType__JvmTypeReferenceAssignment_2_0_1() throws RecognitionException;
+     void rule__DataType__AsPrimitiveAssignment_2_0_2() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_0_3() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_3_1() throws RecognitionException;
+     void rule__DataType__DateAssignment_2_1_0() throws RecognitionException;
+     void rule__DataType__DateTypeAssignment_2_1_1() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_1_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_3_1() throws RecognitionException;
+     void rule__DataType__AsBlobAssignment_2_2_0() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_2_1() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_3_1() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDigits__IntDigitsAssignment_3() throws RecognitionException;
+     void rule__DtCDigits__FractionDigitsAssignment_5() throws RecognitionException;
+     void rule__DtCDigits__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCDigits__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCDigits__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__DtCFuture__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCFuture__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCFuture__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCPast__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCPast__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCPast__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNotNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCRegEx__PatternAssignment_3() throws RecognitionException;
+     void rule__DtCRegEx__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCRegEx__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCSize__MinAssignment_3() throws RecognitionException;
+     void rule__DtCSize__MaxAssignment_5() throws RecognitionException;
+     void rule__DtCSize__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCSize__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCSize__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__Enum__NameAssignment_1() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_3() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_4_1() throws RecognitionException;
+     void rule__EnumLiteral__NameAssignment_0() throws RecognitionException;
+     void rule__EnumLiteral__DefaultAssignment_1_0_1() throws RecognitionException;
+     void rule__EnumLiteral__NullAssignment_1_1_0() throws RecognitionException;
+     void rule__EnumLiteral__ValueAssignment_1_1_2_1() throws RecognitionException;
+     void rule__AnnotationDef__AnnotationAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__AttributeAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1() throws RecognitionException;
+     void rule__KeyAndValue__KeyAssignment_2() throws RecognitionException;
+     void rule__KeyAndValue__ValueAssignment_5() 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 synpred38_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred39_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred40_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred65_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred66_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred79_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred87_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred88_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred101_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred105_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred106_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred112_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred157_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred160_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred163_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred166_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred169_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred172_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred175_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred178_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred181_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred184_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred187_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred190_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred193_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred197_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred214_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred216_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred217_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred218_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred219_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred220_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred221_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred222_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred223_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred224_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred225_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred227_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred228_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred236_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred243_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred246_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred259_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred260_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred264_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred265_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred266_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred271_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred272_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred273_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred274_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred276_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred280_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred282_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred283_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred290_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred291_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred292_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred293_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred294_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred295_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred296_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred297_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred298_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred299_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred300_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred301_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred302_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred303_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred304_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred305_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred306_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred307_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred308_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred309_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred310_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred311_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred312_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred313_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred314_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred315_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred316_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred317_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred318_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred319_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred320_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred321_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred322_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred323_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred324_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred325_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred326_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred327_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred328_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred329_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred330_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred331_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred332_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred333_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred334_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred335_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred336_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred337_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred338_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred339_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred340_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred341_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred342_InternalCommonGrammar_fragment() throws RecognitionException;   
+     void synpred343_InternalCommonGrammar_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalCommonGrammarParser1 extends AbstractInternalContentAssistParser implements InternalCommonGrammarParserSignatures {
+
+        InternalCommonGrammarParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalCommonGrammarParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'{'", "'}'", "'class'", "';'", "'datatype'", "'jvmType'", "'properties'", "'('", "')'", "', '", "'isFalse'", "'['", "'msgCode'", "'msgI18nKey'", "']'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'key'", "'value'", "'derived'", "'collection'", "'@'", "','", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'as primitive'", "'dateType'", "'as blob'", "'asDefault'", "'forNull'", "'::'", "'?.'", "'|'", "'true'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=5;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+
+    public String[] getTokenNames() { return InternalCommonGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/antlr/internal/InternalCommonGrammar.g"; }
+
+
+     
+     	protected CommonGrammarGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(CommonGrammarGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred157_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred157_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred280_InternalCommonGrammar_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 synpred314_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred314_InternalCommonGrammar_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 synpred169_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred169_InternalCommonGrammar_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 synpred223_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred223_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred302_InternalCommonGrammar_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 synpred236_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred236_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred327_InternalCommonGrammar_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 synpred190_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred190_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred292_InternalCommonGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred224_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred224_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred315_InternalCommonGrammar_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 synpred259_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred259_InternalCommonGrammar_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 synpred301_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred301_InternalCommonGrammar_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 synpred313_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred313_InternalCommonGrammar_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 synpred222_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred222_InternalCommonGrammar_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 synpred291_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred291_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred338_InternalCommonGrammar_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 synpred326_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred326_InternalCommonGrammar_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 synpred339_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred339_InternalCommonGrammar_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 synpred221_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred221_InternalCommonGrammar_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 synpred246_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred246_InternalCommonGrammar_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 synpred300_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred300_InternalCommonGrammar_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 synpred294_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred294_InternalCommonGrammar_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 synpred325_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred325_InternalCommonGrammar_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 synpred166_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred166_InternalCommonGrammar_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 synpred317_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred317_InternalCommonGrammar_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 synpred323_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred323_InternalCommonGrammar_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 synpred293_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred293_InternalCommonGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred220_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred220_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred316_InternalCommonGrammar_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 synpred324_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred324_InternalCommonGrammar_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 synpred310_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred310_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred272_InternalCommonGrammar_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 synpred306_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred306_InternalCommonGrammar_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 synpred79_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred79_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred322_InternalCommonGrammar_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 synpred297_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred297_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred335_InternalCommonGrammar_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 synpred193_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred193_InternalCommonGrammar_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 synpred66_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred66_InternalCommonGrammar_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 synpred319_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred319_InternalCommonGrammar_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 synpred295_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred295_InternalCommonGrammar_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 synpred38_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalCommonGrammar_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 synpred243_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred243_InternalCommonGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred227_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred227_InternalCommonGrammar_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 synpred304_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred304_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred320_InternalCommonGrammar_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 synpred266_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred266_InternalCommonGrammar_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 synpred282_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred282_InternalCommonGrammar_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 synpred290_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred290_InternalCommonGrammar_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 synpred312_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred312_InternalCommonGrammar_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 synpred187_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred187_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred337_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred299_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred274_InternalCommonGrammar_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 synpred105_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred105_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred329_InternalCommonGrammar_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 synpred217_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred217_InternalCommonGrammar_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 synpred225_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred225_InternalCommonGrammar_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 synpred264_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred264_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred276_InternalCommonGrammar_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 synpred87_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred87_InternalCommonGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred219_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred219_InternalCommonGrammar_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 synpred330_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred330_InternalCommonGrammar_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 synpred343_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred343_InternalCommonGrammar_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 synpred160_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred160_InternalCommonGrammar_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 synpred172_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred172_InternalCommonGrammar_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 synpred197_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred197_InternalCommonGrammar_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 synpred341_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred341_InternalCommonGrammar_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 synpred342_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred342_InternalCommonGrammar_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 synpred184_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred184_InternalCommonGrammar_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 synpred308_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred308_InternalCommonGrammar_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 synpred332_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred332_InternalCommonGrammar_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 synpred340_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred340_InternalCommonGrammar_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 synpred333_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred333_InternalCommonGrammar_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 synpred175_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred175_InternalCommonGrammar_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 synpred101_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred101_InternalCommonGrammar_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 synpred309_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred309_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred331_InternalCommonGrammar_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 synpred112_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred112_InternalCommonGrammar_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 synpred260_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred260_InternalCommonGrammar_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 synpred181_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred181_InternalCommonGrammar_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 synpred39_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalCommonGrammar_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 synpred318_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred318_InternalCommonGrammar_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 synpred228_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred228_InternalCommonGrammar_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 synpred296_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred296_InternalCommonGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred216_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred216_InternalCommonGrammar_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 synpred271_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred271_InternalCommonGrammar_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 synpred305_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred305_InternalCommonGrammar_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 synpred214_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred214_InternalCommonGrammar_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 synpred307_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred307_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred321_InternalCommonGrammar_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 synpred334_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred334_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred283_InternalCommonGrammar_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 synpred163_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred163_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred328_InternalCommonGrammar_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 synpred40_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalCommonGrammar_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 synpred65_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred65_InternalCommonGrammar_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 synpred265_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred265_InternalCommonGrammar_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 synpred311_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred311_InternalCommonGrammar_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 synpred303_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred303_InternalCommonGrammar_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_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred273_InternalCommonGrammar_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 synpred218_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred218_InternalCommonGrammar_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 synpred88_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred88_InternalCommonGrammar_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 synpred178_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalCommonGrammar_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 synpred298_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred298_InternalCommonGrammar_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 synpred336_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred336_InternalCommonGrammar_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 synpred106_InternalCommonGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred106_InternalCommonGrammar_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 DFA11 dfa11 = new DFA11(this);
+    protected DFA12 dfa12 = new DFA12(this);
+    protected DFA13 dfa13 = new DFA13(this);
+    protected DFA20 dfa20 = new DFA20(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA32 dfa32 = new DFA32(this);
+    protected DFA35 dfa35 = new DFA35(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA43 dfa43 = new DFA43(this);
+    protected DFA52 dfa52 = new DFA52(this);
+    protected DFA133 dfa133 = new DFA133(this);
+    protected DFA139 dfa139 = new DFA139(this);
+    protected DFA146 dfa146 = new DFA146(this);
+    protected DFA147 dfa147 = new DFA147(this);
+    protected DFA155 dfa155 = new DFA155(this);
+    protected DFA165 dfa165 = new DFA165(this);
+    protected DFA178 dfa178 = new DFA178(this);
+    protected DFA179 dfa179 = new DFA179(this);
+    protected DFA183 dfa183 = new DFA183(this);
+    protected DFA184 dfa184 = new DFA184(this);
+    protected DFA185 dfa185 = new DFA185(this);
+    protected DFA190 dfa190 = new DFA190(this);
+    protected DFA199 dfa199 = new DFA199(this);
+    protected DFA202 dfa202 = new DFA202(this);
+    static final String DFA11_eotS =
+        "\43\uffff";
+    static final String DFA11_eofS =
+        "\43\uffff";
+    static final String DFA11_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA11_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA11_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA11_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA11_transitionS = {
+            "\1\1\4\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\2\3\uffff\1\2\25\uffff\1\2\1\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS);
+    static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS);
+    static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS);
+    static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS);
+    static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS);
+    static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS);
+    static final short[][] DFA11_transition;
+
+    static {
+        int numStates = DFA11_transitionS.length;
+        DFA11_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA11_transition[i] = DFA.unpackEncodedString(DFA11_transitionS[i]);
+        }
+    }
+
+    class DFA11 extends DFA {
+
+        public DFA11(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 11;
+            this.eot = DFA11_eot;
+            this.eof = DFA11_eof;
+            this.min = DFA11_min;
+            this.max = DFA11_max;
+            this.accept = DFA11_accept;
+            this.special = DFA11_special;
+            this.transition = DFA11_transition;
+        }
+        public String getDescription() {
+            return "3747: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 LA11_1 = input.LA(1);
+
+                         
+                        int index11_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalCommonGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index11_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 11, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA12_eotS =
+        "\43\uffff";
+    static final String DFA12_eofS =
+        "\43\uffff";
+    static final String DFA12_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA12_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA12_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA12_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\2\3\uffff\1\2\25\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "3769: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 LA12_1 = input.LA(1);
+
+                         
+                        int index12_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalCommonGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index12_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA13_eotS =
+        "\43\uffff";
+    static final String DFA13_eofS =
+        "\43\uffff";
+    static final String DFA13_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA13_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA13_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA13_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA13_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\2\3\uffff\1\2\25\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
+    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
+    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
+    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
+    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
+    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
+    static final short[][] DFA13_transition;
+
+    static {
+        int numStates = DFA13_transitionS.length;
+        DFA13_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
+        }
+    }
+
+    class DFA13 extends DFA {
+
+        public DFA13(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 13;
+            this.eot = DFA13_eot;
+            this.eof = DFA13_eof;
+            this.min = DFA13_min;
+            this.max = DFA13_max;
+            this.accept = DFA13_accept;
+            this.special = DFA13_special;
+            this.transition = DFA13_transition;
+        }
+        public String getDescription() {
+            return "3791: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 LA13_1 = input.LA(1);
+
+                         
+                        int index13_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalCommonGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index13_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 13, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA20_eotS =
+        "\13\uffff";
+    static final String DFA20_eofS =
+        "\13\uffff";
+    static final String DFA20_minS =
+        "\1\53\2\uffff\1\53\7\uffff";
+    static final String DFA20_maxS =
+        "\1\62\2\uffff\1\57\7\uffff";
+    static final String DFA20_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 DFA20_specialS =
+        "\13\uffff}>";
+    static final String[] DFA20_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[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
+    static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
+    static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
+    static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
+    static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
+    static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
+    static final short[][] DFA20_transition;
+
+    static {
+        int numStates = DFA20_transitionS.length;
+        DFA20_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
+        }
+    }
+
+    class DFA20 extends DFA {
+
+        public DFA20(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 20;
+            this.eot = DFA20_eot;
+            this.eof = DFA20_eof;
+            this.min = DFA20_min;
+            this.max = DFA20_max;
+            this.accept = DFA20_accept;
+            this.special = DFA20_special;
+            this.transition = DFA20_transition;
+        }
+        public String getDescription() {
+            return "4023:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA28_eotS =
+        "\12\uffff";
+    static final String DFA28_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA28_minS =
+        "\1\72\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA28_maxS =
+        "\1\u008e\2\100\1\uffff\5\u0090\1\uffff";
+    static final String DFA28_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA28_specialS =
+        "\12\uffff}>";
+    static final String[] DFA28_transitionS = {
+            "\1\1\122\uffff\1\2\1\3",
+            "\1\4\47\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\47\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            ""
+    };
+
+    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
+    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
+    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
+    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
+    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
+    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
+    static final short[][] DFA28_transition;
+
+    static {
+        int numStates = DFA28_transitionS.length;
+        DFA28_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
+        }
+    }
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            this.eot = DFA28_eot;
+            this.eof = DFA28_eof;
+            this.min = DFA28_min;
+            this.max = DFA28_max;
+            this.accept = DFA28_accept;
+            this.special = DFA28_special;
+            this.transition = DFA28_transition;
+        }
+        public String getDescription() {
+            return "4305:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA31_eotS =
+        "\43\uffff";
+    static final String DFA31_eofS =
+        "\43\uffff";
+    static final String DFA31_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA31_maxS =
+        "\1\u0090\2\0\40\uffff";
+    static final String DFA31_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA31_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA31_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\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 "4381: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 LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred79_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index31_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA31_2 = input.LA(1);
+
+                         
+                        int index31_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred79_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index31_2);
+                        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 DFA32_eotS =
+        "\40\uffff";
+    static final String DFA32_eofS =
+        "\40\uffff";
+    static final String DFA32_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA32_maxS =
+        "\1\u0090\26\uffff\1\0\10\uffff";
+    static final String DFA32_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 DFA32_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA32_transitionS = {
+            "\1\5\4\14\43\uffff\1\5\17\uffff\5\5\1\14\15\uffff\1\2\6\uffff\1\35\3\uffff\1\14\27\uffff\1\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA32_eot = DFA.unpackEncodedString(DFA32_eotS);
+    static final short[] DFA32_eof = DFA.unpackEncodedString(DFA32_eofS);
+    static final char[] DFA32_min = DFA.unpackEncodedStringToUnsignedChars(DFA32_minS);
+    static final char[] DFA32_max = DFA.unpackEncodedStringToUnsignedChars(DFA32_maxS);
+    static final short[] DFA32_accept = DFA.unpackEncodedString(DFA32_acceptS);
+    static final short[] DFA32_special = DFA.unpackEncodedString(DFA32_specialS);
+    static final short[][] DFA32_transition;
+
+    static {
+        int numStates = DFA32_transitionS.length;
+        DFA32_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA32_transition[i] = DFA.unpackEncodedString(DFA32_transitionS[i]);
+        }
+    }
+
+    class DFA32 extends DFA {
+
+        public DFA32(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 32;
+            this.eot = DFA32_eot;
+            this.eof = DFA32_eof;
+            this.min = DFA32_min;
+            this.max = DFA32_max;
+            this.accept = DFA32_accept;
+            this.special = DFA32_special;
+            this.transition = DFA32_transition;
+        }
+        public String getDescription() {
+            return "4403: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 LA32_23 = input.LA(1);
+
+                         
+                        int index32_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred87_InternalCommonGrammar()) ) {s = 30;}
+
+                        else if ( (synpred88_InternalCommonGrammar()) ) {s = 31;}
+
+                         
+                        input.seek(index32_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 32, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA35_eotS =
+        "\43\uffff";
+    static final String DFA35_eofS =
+        "\43\uffff";
+    static final String DFA35_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA35_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA35_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA35_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA35_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\3\uffff\1\2\6\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\1\3\uffff\1\2\27\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA35_eot = DFA.unpackEncodedString(DFA35_eotS);
+    static final short[] DFA35_eof = DFA.unpackEncodedString(DFA35_eofS);
+    static final char[] DFA35_min = DFA.unpackEncodedStringToUnsignedChars(DFA35_minS);
+    static final char[] DFA35_max = DFA.unpackEncodedStringToUnsignedChars(DFA35_maxS);
+    static final short[] DFA35_accept = DFA.unpackEncodedString(DFA35_acceptS);
+    static final short[] DFA35_special = DFA.unpackEncodedString(DFA35_specialS);
+    static final short[][] DFA35_transition;
+
+    static {
+        int numStates = DFA35_transitionS.length;
+        DFA35_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA35_transition[i] = DFA.unpackEncodedString(DFA35_transitionS[i]);
+        }
+    }
+
+    class DFA35 extends DFA {
+
+        public DFA35(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 35;
+            this.eot = DFA35_eot;
+            this.eof = DFA35_eof;
+            this.min = DFA35_min;
+            this.max = DFA35_max;
+            this.accept = DFA35_accept;
+            this.special = DFA35_special;
+            this.transition = DFA35_transition;
+        }
+        public String getDescription() {
+            return "4577: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 LA35_1 = input.LA(1);
+
+                         
+                        int index35_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred101_InternalCommonGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index35_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 35, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA40_eotS =
+        "\43\uffff";
+    static final String DFA40_eofS =
+        "\43\uffff";
+    static final String DFA40_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA40_maxS =
+        "\1\u0090\2\0\40\uffff";
+    static final String DFA40_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA40_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA40_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
+    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
+    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
+    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
+    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
+    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
+    static final short[][] DFA40_transition;
+
+    static {
+        int numStates = DFA40_transitionS.length;
+        DFA40_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
+        }
+    }
+
+    class DFA40 extends DFA {
+
+        public DFA40(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 40;
+            this.eot = DFA40_eot;
+            this.eof = DFA40_eof;
+            this.min = DFA40_min;
+            this.max = DFA40_max;
+            this.accept = DFA40_accept;
+            this.special = DFA40_special;
+            this.transition = DFA40_transition;
+        }
+        public String getDescription() {
+            return "4689: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 LA40_1 = input.LA(1);
+
+                         
+                        int index40_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred106_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index40_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA40_2 = input.LA(1);
+
+                         
+                        int index40_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred106_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index40_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 40, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA43_eotS =
+        "\43\uffff";
+    static final String DFA43_eofS =
+        "\43\uffff";
+    static final String DFA43_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA43_maxS =
+        "\1\u0090\2\0\40\uffff";
+    static final String DFA43_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA43_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA43_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA43_eot = DFA.unpackEncodedString(DFA43_eotS);
+    static final short[] DFA43_eof = DFA.unpackEncodedString(DFA43_eofS);
+    static final char[] DFA43_min = DFA.unpackEncodedStringToUnsignedChars(DFA43_minS);
+    static final char[] DFA43_max = DFA.unpackEncodedStringToUnsignedChars(DFA43_maxS);
+    static final short[] DFA43_accept = DFA.unpackEncodedString(DFA43_acceptS);
+    static final short[] DFA43_special = DFA.unpackEncodedString(DFA43_specialS);
+    static final short[][] DFA43_transition;
+
+    static {
+        int numStates = DFA43_transitionS.length;
+        DFA43_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA43_transition[i] = DFA.unpackEncodedString(DFA43_transitionS[i]);
+        }
+    }
+
+    class DFA43 extends DFA {
+
+        public DFA43(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 43;
+            this.eot = DFA43_eot;
+            this.eof = DFA43_eof;
+            this.min = DFA43_min;
+            this.max = DFA43_max;
+            this.accept = DFA43_accept;
+            this.special = DFA43_special;
+            this.transition = DFA43_transition;
+        }
+        public String getDescription() {
+            return "4783: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 LA43_1 = input.LA(1);
+
+                         
+                        int index43_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred112_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index43_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA43_2 = input.LA(1);
+
+                         
+                        int index43_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred112_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index43_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 43, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA52_eotS =
+        "\7\uffff";
+    static final String DFA52_eofS =
+        "\2\uffff\1\4\2\uffff\1\4\1\uffff";
+    static final String DFA52_minS =
+        "\1\4\1\uffff\1\72\1\4\1\uffff\1\72\1\uffff";
+    static final String DFA52_maxS =
+        "\1\75\1\uffff\1\122\1\63\1\uffff\1\122\1\uffff";
+    static final String DFA52_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\uffff\1\3";
+    static final String DFA52_specialS =
+        "\7\uffff}>";
+    static final String[] DFA52_transitionS = {
+            "\1\2\70\uffff\1\1",
+            "",
+            "\1\3\27\uffff\1\4",
+            "\1\5\56\uffff\1\6",
+            "",
+            "\1\3\27\uffff\1\4",
+            ""
+    };
+
+    static final short[] DFA52_eot = DFA.unpackEncodedString(DFA52_eotS);
+    static final short[] DFA52_eof = DFA.unpackEncodedString(DFA52_eofS);
+    static final char[] DFA52_min = DFA.unpackEncodedStringToUnsignedChars(DFA52_minS);
+    static final char[] DFA52_max = DFA.unpackEncodedStringToUnsignedChars(DFA52_maxS);
+    static final short[] DFA52_accept = DFA.unpackEncodedString(DFA52_acceptS);
+    static final short[] DFA52_special = DFA.unpackEncodedString(DFA52_specialS);
+    static final short[][] DFA52_transition;
+
+    static {
+        int numStates = DFA52_transitionS.length;
+        DFA52_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA52_transition[i] = DFA.unpackEncodedString(DFA52_transitionS[i]);
+        }
+    }
+
+    class DFA52 extends DFA {
+
+        public DFA52(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 52;
+            this.eot = DFA52_eot;
+            this.eof = DFA52_eof;
+            this.min = DFA52_min;
+            this.max = DFA52_max;
+            this.accept = DFA52_accept;
+            this.special = DFA52_special;
+            this.transition = DFA52_transition;
+        }
+        public String getDescription() {
+            return "4983:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
+        }
+    }
+    static final String DFA133_eotS =
+        "\12\uffff";
+    static final String DFA133_eofS =
+        "\1\10\11\uffff";
+    static final String DFA133_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA133_maxS =
+        "\1\u0090\7\0\2\uffff";
+    static final String DFA133_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA133_specialS =
+        "\1\uffff\1\4\1\3\1\0\1\6\1\5\1\2\1\1\2\uffff}>";
+    static final String[] DFA133_transitionS = {
+            "\5\10\5\uffff\2\10\16\uffff\3\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\25\10\15\uffff\2\10\1\uffff\1\10\3\uffff\2\10\2\uffff\1\10\2\uffff\1\10\23\uffff\26\10\6\uffff\2\10\1\uffff\1\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA133_eot = DFA.unpackEncodedString(DFA133_eotS);
+    static final short[] DFA133_eof = DFA.unpackEncodedString(DFA133_eofS);
+    static final char[] DFA133_min = DFA.unpackEncodedStringToUnsignedChars(DFA133_minS);
+    static final char[] DFA133_max = DFA.unpackEncodedStringToUnsignedChars(DFA133_maxS);
+    static final short[] DFA133_accept = DFA.unpackEncodedString(DFA133_acceptS);
+    static final short[] DFA133_special = DFA.unpackEncodedString(DFA133_specialS);
+    static final short[][] DFA133_transition;
+
+    static {
+        int numStates = DFA133_transitionS.length;
+        DFA133_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA133_transition[i] = DFA.unpackEncodedString(DFA133_transitionS[i]);
+        }
+    }
+
+    class DFA133 extends DFA {
+
+        public DFA133(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 133;
+            this.eot = DFA133_eot;
+            this.eof = DFA133_eof;
+            this.min = DFA133_min;
+            this.max = DFA133_max;
+            this.accept = DFA133_accept;
+            this.special = DFA133_special;
+            this.transition = DFA133_transition;
+        }
+        public String getDescription() {
+            return "17164: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 LA133_3 = input.LA(1);
+
+                         
+                        int index133_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA133_7 = input.LA(1);
+
+                         
+                        int index133_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA133_6 = input.LA(1);
+
+                         
+                        int index133_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA133_2 = input.LA(1);
+
+                         
+                        int index133_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA133_1 = input.LA(1);
+
+                         
+                        int index133_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA133_5 = input.LA(1);
+
+                         
+                        int index133_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA133_4 = input.LA(1);
+
+                         
+                        int index133_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred214_InternalCommonGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index133_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 133, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA139_eotS =
+        "\13\uffff";
+    static final String DFA139_eofS =
+        "\1\1\12\uffff";
+    static final String DFA139_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA139_maxS =
+        "\1\u0090\1\uffff\10\0\1\uffff";
+    static final String DFA139_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA139_specialS =
+        "\2\uffff\1\4\1\3\1\0\1\6\1\2\1\5\1\1\1\7\1\uffff}>";
+    static final String[] DFA139_transitionS = {
+            "\5\1\5\uffff\2\1\16\uffff\15\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\17\1\15\uffff\2\1\1\uffff\1\1\3\uffff\2\1\2\uffff\1\1\2\uffff\1\1\23\uffff\26\1\6\uffff\2\1\1\uffff\1\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA139_eot = DFA.unpackEncodedString(DFA139_eotS);
+    static final short[] DFA139_eof = DFA.unpackEncodedString(DFA139_eofS);
+    static final char[] DFA139_min = DFA.unpackEncodedStringToUnsignedChars(DFA139_minS);
+    static final char[] DFA139_max = DFA.unpackEncodedStringToUnsignedChars(DFA139_maxS);
+    static final short[] DFA139_accept = DFA.unpackEncodedString(DFA139_acceptS);
+    static final short[] DFA139_special = DFA.unpackEncodedString(DFA139_specialS);
+    static final short[][] DFA139_transition;
+
+    static {
+        int numStates = DFA139_transitionS.length;
+        DFA139_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA139_transition[i] = DFA.unpackEncodedString(DFA139_transitionS[i]);
+        }
+    }
+
+    class DFA139 extends DFA {
+
+        public DFA139(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 139;
+            this.eot = DFA139_eot;
+            this.eof = DFA139_eof;
+            this.min = DFA139_min;
+            this.max = DFA139_max;
+            this.accept = DFA139_accept;
+            this.special = DFA139_special;
+            this.transition = DFA139_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 18656: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 LA139_4 = input.LA(1);
+
+                         
+                        int index139_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA139_8 = input.LA(1);
+
+                         
+                        int index139_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA139_6 = input.LA(1);
+
+                         
+                        int index139_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA139_3 = input.LA(1);
+
+                         
+                        int index139_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA139_2 = input.LA(1);
+
+                         
+                        int index139_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA139_7 = input.LA(1);
+
+                         
+                        int index139_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA139_5 = input.LA(1);
+
+                         
+                        int index139_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA139_9 = input.LA(1);
+
+                         
+                        int index139_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred220_InternalCommonGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index139_9);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 139, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA146_eotS =
+        "\116\uffff";
+    static final String DFA146_eofS =
+        "\1\2\115\uffff";
+    static final String DFA146_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA146_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA146_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA146_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA146_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\1\1\1\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA146_eot = DFA.unpackEncodedString(DFA146_eotS);
+    static final short[] DFA146_eof = DFA.unpackEncodedString(DFA146_eofS);
+    static final char[] DFA146_min = DFA.unpackEncodedStringToUnsignedChars(DFA146_minS);
+    static final char[] DFA146_max = DFA.unpackEncodedStringToUnsignedChars(DFA146_maxS);
+    static final short[] DFA146_accept = DFA.unpackEncodedString(DFA146_acceptS);
+    static final short[] DFA146_special = DFA.unpackEncodedString(DFA146_specialS);
+    static final short[][] DFA146_transition;
+
+    static {
+        int numStates = DFA146_transitionS.length;
+        DFA146_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA146_transition[i] = DFA.unpackEncodedString(DFA146_transitionS[i]);
+        }
+    }
+
+    class DFA146 extends DFA {
+
+        public DFA146(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 146;
+            this.eot = DFA146_eot;
+            this.eof = DFA146_eof;
+            this.min = DFA146_min;
+            this.max = DFA146_max;
+            this.accept = DFA146_accept;
+            this.special = DFA146_special;
+            this.transition = DFA146_transition;
+        }
+        public String getDescription() {
+            return "20483: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 LA146_1 = input.LA(1);
+
+                         
+                        int index146_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred227_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index146_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 146, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA147_eotS =
+        "\116\uffff";
+    static final String DFA147_eofS =
+        "\1\2\115\uffff";
+    static final String DFA147_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA147_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA147_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA147_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA147_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\1\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA147_eot = DFA.unpackEncodedString(DFA147_eotS);
+    static final short[] DFA147_eof = DFA.unpackEncodedString(DFA147_eofS);
+    static final char[] DFA147_min = DFA.unpackEncodedStringToUnsignedChars(DFA147_minS);
+    static final char[] DFA147_max = DFA.unpackEncodedStringToUnsignedChars(DFA147_maxS);
+    static final short[] DFA147_accept = DFA.unpackEncodedString(DFA147_acceptS);
+    static final short[] DFA147_special = DFA.unpackEncodedString(DFA147_specialS);
+    static final short[][] DFA147_transition;
+
+    static {
+        int numStates = DFA147_transitionS.length;
+        DFA147_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA147_transition[i] = DFA.unpackEncodedString(DFA147_transitionS[i]);
+        }
+    }
+
+    class DFA147 extends DFA {
+
+        public DFA147(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 147;
+            this.eot = DFA147_eot;
+            this.eof = DFA147_eof;
+            this.min = DFA147_min;
+            this.max = DFA147_max;
+            this.accept = DFA147_accept;
+            this.special = DFA147_special;
+            this.transition = DFA147_transition;
+        }
+        public String getDescription() {
+            return "20511: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 LA147_1 = input.LA(1);
+
+                         
+                        int index147_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred228_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index147_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 147, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA155_eotS =
+        "\46\uffff";
+    static final String DFA155_eofS =
+        "\46\uffff";
+    static final String DFA155_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA155_maxS =
+        "\1\u0090\2\0\43\uffff";
+    static final String DFA155_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA155_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA155_transitionS = {
+            "\1\1\4\5\25\uffff\3\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\3\uffff\7\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\2\uffff\1\5\24\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA155_eot = DFA.unpackEncodedString(DFA155_eotS);
+    static final short[] DFA155_eof = DFA.unpackEncodedString(DFA155_eofS);
+    static final char[] DFA155_min = DFA.unpackEncodedStringToUnsignedChars(DFA155_minS);
+    static final char[] DFA155_max = DFA.unpackEncodedStringToUnsignedChars(DFA155_maxS);
+    static final short[] DFA155_accept = DFA.unpackEncodedString(DFA155_acceptS);
+    static final short[] DFA155_special = DFA.unpackEncodedString(DFA155_specialS);
+    static final short[][] DFA155_transition;
+
+    static {
+        int numStates = DFA155_transitionS.length;
+        DFA155_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA155_transition[i] = DFA.unpackEncodedString(DFA155_transitionS[i]);
+        }
+    }
+
+    class DFA155 extends DFA {
+
+        public DFA155(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 155;
+            this.eot = DFA155_eot;
+            this.eof = DFA155_eof;
+            this.min = DFA155_min;
+            this.max = DFA155_max;
+            this.accept = DFA155_accept;
+            this.special = DFA155_special;
+            this.transition = DFA155_transition;
+        }
+        public String getDescription() {
+            return "21652: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 LA155_1 = input.LA(1);
+
+                         
+                        int index155_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index155_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA155_2 = input.LA(1);
+
+                         
+                        int index155_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred236_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index155_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 155, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA165_eotS =
+        "\42\uffff";
+    static final String DFA165_eofS =
+        "\42\uffff";
+    static final String DFA165_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA165_maxS =
+        "\1\u0090\2\0\37\uffff";
+    static final String DFA165_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA165_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA165_transitionS = {
+            "\1\1\4\4\26\uffff\2\4\13\uffff\1\4\3\uffff\1\3\6\uffff\1\4\4\uffff\6\4\15\uffff\1\4\6\uffff\1\2\3\uffff\1\4\27\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA165_eot = DFA.unpackEncodedString(DFA165_eotS);
+    static final short[] DFA165_eof = DFA.unpackEncodedString(DFA165_eofS);
+    static final char[] DFA165_min = DFA.unpackEncodedStringToUnsignedChars(DFA165_minS);
+    static final char[] DFA165_max = DFA.unpackEncodedStringToUnsignedChars(DFA165_maxS);
+    static final short[] DFA165_accept = DFA.unpackEncodedString(DFA165_acceptS);
+    static final short[] DFA165_special = DFA.unpackEncodedString(DFA165_specialS);
+    static final short[][] DFA165_transition;
+
+    static {
+        int numStates = DFA165_transitionS.length;
+        DFA165_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA165_transition[i] = DFA.unpackEncodedString(DFA165_transitionS[i]);
+        }
+    }
+
+    class DFA165 extends DFA {
+
+        public DFA165(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 165;
+            this.eot = DFA165_eot;
+            this.eof = DFA165_eof;
+            this.min = DFA165_min;
+            this.max = DFA165_max;
+            this.accept = DFA165_accept;
+            this.special = DFA165_special;
+            this.transition = DFA165_transition;
+        }
+        public String getDescription() {
+            return "23320: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 LA165_1 = input.LA(1);
+
+                         
+                        int index165_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred246_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index165_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA165_2 = input.LA(1);
+
+                         
+                        int index165_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred246_InternalCommonGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index165_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 165, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA178_eotS =
+        "\116\uffff";
+    static final String DFA178_eofS =
+        "\1\2\115\uffff";
+    static final String DFA178_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA178_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA178_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA178_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA178_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\1\1\1\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA178_eot = DFA.unpackEncodedString(DFA178_eotS);
+    static final short[] DFA178_eof = DFA.unpackEncodedString(DFA178_eofS);
+    static final char[] DFA178_min = DFA.unpackEncodedStringToUnsignedChars(DFA178_minS);
+    static final char[] DFA178_max = DFA.unpackEncodedStringToUnsignedChars(DFA178_maxS);
+    static final short[] DFA178_accept = DFA.unpackEncodedString(DFA178_acceptS);
+    static final short[] DFA178_special = DFA.unpackEncodedString(DFA178_specialS);
+    static final short[][] DFA178_transition;
+
+    static {
+        int numStates = DFA178_transitionS.length;
+        DFA178_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA178_transition[i] = DFA.unpackEncodedString(DFA178_transitionS[i]);
+        }
+    }
+
+    class DFA178 extends DFA {
+
+        public DFA178(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 178;
+            this.eot = DFA178_eot;
+            this.eof = DFA178_eof;
+            this.min = DFA178_min;
+            this.max = DFA178_max;
+            this.accept = DFA178_accept;
+            this.special = DFA178_special;
+            this.transition = DFA178_transition;
+        }
+        public String getDescription() {
+            return "25808: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 LA178_1 = input.LA(1);
+
+                         
+                        int index178_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred259_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index178_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 178, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA179_eotS =
+        "\116\uffff";
+    static final String DFA179_eofS =
+        "\1\2\115\uffff";
+    static final String DFA179_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA179_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA179_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA179_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA179_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\1\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA179_eot = DFA.unpackEncodedString(DFA179_eotS);
+    static final short[] DFA179_eof = DFA.unpackEncodedString(DFA179_eofS);
+    static final char[] DFA179_min = DFA.unpackEncodedStringToUnsignedChars(DFA179_minS);
+    static final char[] DFA179_max = DFA.unpackEncodedStringToUnsignedChars(DFA179_maxS);
+    static final short[] DFA179_accept = DFA.unpackEncodedString(DFA179_acceptS);
+    static final short[] DFA179_special = DFA.unpackEncodedString(DFA179_specialS);
+    static final short[][] DFA179_transition;
+
+    static {
+        int numStates = DFA179_transitionS.length;
+        DFA179_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA179_transition[i] = DFA.unpackEncodedString(DFA179_transitionS[i]);
+        }
+    }
+
+    class DFA179 extends DFA {
+
+        public DFA179(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 179;
+            this.eot = DFA179_eot;
+            this.eof = DFA179_eof;
+            this.min = DFA179_min;
+            this.max = DFA179_max;
+            this.accept = DFA179_accept;
+            this.special = DFA179_special;
+            this.transition = DFA179_transition;
+        }
+        public String getDescription() {
+            return "25836: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 LA179_1 = input.LA(1);
+
+                         
+                        int index179_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred260_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index179_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 179, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA183_eotS =
+        "\116\uffff";
+    static final String DFA183_eofS =
+        "\1\2\115\uffff";
+    static final String DFA183_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA183_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA183_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA183_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA183_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA183_eot = DFA.unpackEncodedString(DFA183_eotS);
+    static final short[] DFA183_eof = DFA.unpackEncodedString(DFA183_eofS);
+    static final char[] DFA183_min = DFA.unpackEncodedStringToUnsignedChars(DFA183_minS);
+    static final char[] DFA183_max = DFA.unpackEncodedStringToUnsignedChars(DFA183_maxS);
+    static final short[] DFA183_accept = DFA.unpackEncodedString(DFA183_acceptS);
+    static final short[] DFA183_special = DFA.unpackEncodedString(DFA183_specialS);
+    static final short[][] DFA183_transition;
+
+    static {
+        int numStates = DFA183_transitionS.length;
+        DFA183_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA183_transition[i] = DFA.unpackEncodedString(DFA183_transitionS[i]);
+        }
+    }
+
+    class DFA183 extends DFA {
+
+        public DFA183(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 183;
+            this.eot = DFA183_eot;
+            this.eof = DFA183_eof;
+            this.min = DFA183_min;
+            this.max = DFA183_max;
+            this.accept = DFA183_accept;
+            this.special = DFA183_special;
+            this.transition = DFA183_transition;
+        }
+        public String getDescription() {
+            return "26374: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 LA183_1 = input.LA(1);
+
+                         
+                        int index183_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index183_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 183, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA184_eotS =
+        "\116\uffff";
+    static final String DFA184_eofS =
+        "\1\2\115\uffff";
+    static final String DFA184_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA184_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA184_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA184_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA184_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\1\1\1\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA184_eot = DFA.unpackEncodedString(DFA184_eotS);
+    static final short[] DFA184_eof = DFA.unpackEncodedString(DFA184_eofS);
+    static final char[] DFA184_min = DFA.unpackEncodedStringToUnsignedChars(DFA184_minS);
+    static final char[] DFA184_max = DFA.unpackEncodedStringToUnsignedChars(DFA184_maxS);
+    static final short[] DFA184_accept = DFA.unpackEncodedString(DFA184_acceptS);
+    static final short[] DFA184_special = DFA.unpackEncodedString(DFA184_specialS);
+    static final short[][] DFA184_transition;
+
+    static {
+        int numStates = DFA184_transitionS.length;
+        DFA184_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA184_transition[i] = DFA.unpackEncodedString(DFA184_transitionS[i]);
+        }
+    }
+
+    class DFA184 extends DFA {
+
+        public DFA184(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 184;
+            this.eot = DFA184_eot;
+            this.eof = DFA184_eof;
+            this.min = DFA184_min;
+            this.max = DFA184_max;
+            this.accept = DFA184_accept;
+            this.special = DFA184_special;
+            this.transition = DFA184_transition;
+        }
+        public String getDescription() {
+            return "26403: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 LA184_1 = input.LA(1);
+
+                         
+                        int index184_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred265_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index184_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 184, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA185_eotS =
+        "\116\uffff";
+    static final String DFA185_eofS =
+        "\1\2\115\uffff";
+    static final String DFA185_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA185_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA185_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA185_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA185_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\1\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\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 "26431: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 LA185_1 = input.LA(1);
+
+                         
+                        int index185_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred266_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index185_1);
+                        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 DFA190_eotS =
+        "\116\uffff";
+    static final String DFA190_eofS =
+        "\1\41\115\uffff";
+    static final String DFA190_minS =
+        "\1\4\40\0\55\uffff";
+    static final String DFA190_maxS =
+        "\1\u0090\40\0\55\uffff";
+    static final String DFA190_acceptS =
+        "\41\uffff\1\2\53\uffff\1\1";
+    static final String DFA190_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[] DFA190_transitionS = {
+            "\1\1\1\23\1\24\1\25\1\27\5\uffff\2\41\16\uffff\1\41\1\10\1\7\13\41\1\15\12\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\15\uffff\1\12\1\41\1\uffff\1\41\3\uffff\1\40\1\41\2\uffff\1\20\2\uffff\1\41\23\uffff\1\41\1\17\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\6\uffff\2\41\1\uffff\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[] DFA190_eot = DFA.unpackEncodedString(DFA190_eotS);
+    static final short[] DFA190_eof = DFA.unpackEncodedString(DFA190_eofS);
+    static final char[] DFA190_min = DFA.unpackEncodedStringToUnsignedChars(DFA190_minS);
+    static final char[] DFA190_max = DFA.unpackEncodedStringToUnsignedChars(DFA190_maxS);
+    static final short[] DFA190_accept = DFA.unpackEncodedString(DFA190_acceptS);
+    static final short[] DFA190_special = DFA.unpackEncodedString(DFA190_specialS);
+    static final short[][] DFA190_transition;
+
+    static {
+        int numStates = DFA190_transitionS.length;
+        DFA190_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA190_transition[i] = DFA.unpackEncodedString(DFA190_transitionS[i]);
+        }
+    }
+
+    class DFA190 extends DFA {
+
+        public DFA190(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 190;
+            this.eot = DFA190_eot;
+            this.eof = DFA190_eof;
+            this.min = DFA190_min;
+            this.max = DFA190_max;
+            this.accept = DFA190_accept;
+            this.special = DFA190_special;
+            this.transition = DFA190_transition;
+        }
+        public String getDescription() {
+            return "27484: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 LA190_1 = input.LA(1);
+
+                         
+                        int index190_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA190_2 = input.LA(1);
+
+                         
+                        int index190_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA190_3 = input.LA(1);
+
+                         
+                        int index190_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA190_4 = input.LA(1);
+
+                         
+                        int index190_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA190_5 = input.LA(1);
+
+                         
+                        int index190_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA190_6 = input.LA(1);
+
+                         
+                        int index190_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA190_7 = input.LA(1);
+
+                         
+                        int index190_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA190_8 = input.LA(1);
+
+                         
+                        int index190_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA190_9 = input.LA(1);
+
+                         
+                        int index190_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA190_10 = input.LA(1);
+
+                         
+                        int index190_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA190_11 = input.LA(1);
+
+                         
+                        int index190_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA190_12 = input.LA(1);
+
+                         
+                        int index190_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA190_13 = input.LA(1);
+
+                         
+                        int index190_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA190_14 = input.LA(1);
+
+                         
+                        int index190_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA190_15 = input.LA(1);
+
+                         
+                        int index190_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA190_16 = input.LA(1);
+
+                         
+                        int index190_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA190_17 = input.LA(1);
+
+                         
+                        int index190_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA190_18 = input.LA(1);
+
+                         
+                        int index190_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA190_19 = input.LA(1);
+
+                         
+                        int index190_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA190_20 = input.LA(1);
+
+                         
+                        int index190_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA190_21 = input.LA(1);
+
+                         
+                        int index190_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA190_22 = input.LA(1);
+
+                         
+                        int index190_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA190_23 = input.LA(1);
+
+                         
+                        int index190_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA190_24 = input.LA(1);
+
+                         
+                        int index190_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA190_25 = input.LA(1);
+
+                         
+                        int index190_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA190_26 = input.LA(1);
+
+                         
+                        int index190_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA190_27 = input.LA(1);
+
+                         
+                        int index190_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA190_28 = input.LA(1);
+
+                         
+                        int index190_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA190_29 = input.LA(1);
+
+                         
+                        int index190_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA190_30 = input.LA(1);
+
+                         
+                        int index190_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA190_31 = input.LA(1);
+
+                         
+                        int index190_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA190_32 = input.LA(1);
+
+                         
+                        int index190_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred271_InternalCommonGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index190_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 190, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA199_eotS =
+        "\140\uffff";
+    static final String DFA199_eofS =
+        "\1\2\137\uffff";
+    static final String DFA199_minS =
+        "\1\4\1\0\136\uffff";
+    static final String DFA199_maxS =
+        "\1\u0090\1\0\136\uffff";
+    static final String DFA199_acceptS =
+        "\2\uffff\1\2\134\uffff\1\1";
+    static final String DFA199_specialS =
+        "\1\uffff\1\0\136\uffff}>";
+    static final String[] DFA199_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\15\uffff\5\2\1\uffff\3\2\1\uffff\2\2\2\uffff\1\2\1\uffff\4\2\2\uffff\7\2\4\uffff\31\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA199_eot = DFA.unpackEncodedString(DFA199_eotS);
+    static final short[] DFA199_eof = DFA.unpackEncodedString(DFA199_eofS);
+    static final char[] DFA199_min = DFA.unpackEncodedStringToUnsignedChars(DFA199_minS);
+    static final char[] DFA199_max = DFA.unpackEncodedStringToUnsignedChars(DFA199_maxS);
+    static final short[] DFA199_accept = DFA.unpackEncodedString(DFA199_acceptS);
+    static final short[] DFA199_special = DFA.unpackEncodedString(DFA199_specialS);
+    static final short[][] DFA199_transition;
+
+    static {
+        int numStates = DFA199_transitionS.length;
+        DFA199_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA199_transition[i] = DFA.unpackEncodedString(DFA199_transitionS[i]);
+        }
+    }
+
+    class DFA199 extends DFA {
+
+        public DFA199(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 199;
+            this.eot = DFA199_eot;
+            this.eof = DFA199_eof;
+            this.min = DFA199_min;
+            this.max = DFA199_max;
+            this.accept = DFA199_accept;
+            this.special = DFA199_special;
+            this.transition = DFA199_transition;
+        }
+        public String getDescription() {
+            return "29063: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 LA199_1 = input.LA(1);
+
+                         
+                        int index199_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred280_InternalCommonGrammar()) ) {s = 95;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index199_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 199, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA202_eotS =
+        "\140\uffff";
+    static final String DFA202_eofS =
+        "\1\2\137\uffff";
+    static final String DFA202_minS =
+        "\1\4\1\0\136\uffff";
+    static final String DFA202_maxS =
+        "\1\u0090\1\0\136\uffff";
+    static final String DFA202_acceptS =
+        "\2\uffff\1\2\134\uffff\1\1";
+    static final String DFA202_specialS =
+        "\1\uffff\1\0\136\uffff}>";
+    static final String[] DFA202_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\15\uffff\5\2\1\uffff\3\2\1\uffff\2\2\2\uffff\1\2\1\uffff\4\2\2\uffff\7\2\4\uffff\31\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA202_eot = DFA.unpackEncodedString(DFA202_eotS);
+    static final short[] DFA202_eof = DFA.unpackEncodedString(DFA202_eofS);
+    static final char[] DFA202_min = DFA.unpackEncodedStringToUnsignedChars(DFA202_minS);
+    static final char[] DFA202_max = DFA.unpackEncodedStringToUnsignedChars(DFA202_maxS);
+    static final short[] DFA202_accept = DFA.unpackEncodedString(DFA202_acceptS);
+    static final short[] DFA202_special = DFA.unpackEncodedString(DFA202_specialS);
+    static final short[][] DFA202_transition;
+
+    static {
+        int numStates = DFA202_transitionS.length;
+        DFA202_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA202_transition[i] = DFA.unpackEncodedString(DFA202_transitionS[i]);
+        }
+    }
+
+    class DFA202 extends DFA {
+
+        public DFA202(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 202;
+            this.eot = DFA202_eot;
+            this.eof = DFA202_eof;
+            this.min = DFA202_min;
+            this.max = DFA202_max;
+            this.accept = DFA202_accept;
+            this.special = DFA202_special;
+            this.transition = DFA202_transition;
+        }
+        public String getDescription() {
+            return "29374: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 LA202_1 = input.LA(1);
+
+                         
+                        int index202_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred283_InternalCommonGrammar()) ) {s = 95;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index202_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 202, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    
+    protected static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage67 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypedPackage74 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__0_in_ruleTypedPackage100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleType_in_entryRuleType127 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleType134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Type__Alternatives_in_ruleType160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleClass_in_entryRuleClass187 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleClass194 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__0_in_ruleClass220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleImport_in_entryRuleImport247 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleImport254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__0_in_ruleImport280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType307 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataType314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__0_in_ruleDataType340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint369 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataTypeConstraint376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataTypeConstraint__Alternatives_in_ruleDataTypeConstraint402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint429 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDateConstraint436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DateConstraint__Alternatives_in_ruleDateConstraint462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint489 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBlobTypeConstraint496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BlobTypeConstraint__Alternatives_in_ruleBlobTypeConstraint522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse549 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertFalse556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__0_in_ruleDtCAssertFalse582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue609 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertTrue616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__0_in_ruleDtCAssertTrue642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax669 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMax676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__0_in_ruleDtCDecimalMax702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin729 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMin736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__0_in_ruleDtCDecimalMin762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits789 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDigits796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__0_in_ruleDtCDigits822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture849 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCFuture856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__0_in_ruleDtCFuture882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_entryRuleDtCPast909 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCPast916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__0_in_ruleDtCPast942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax969 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMax976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__0_in_ruleDtCNumericMax1002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin1029 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMin1036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__0_in_ruleDtCNumericMin1062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull1089 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNotNull1096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__0_in_ruleDtCNotNull1122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_entryRuleDtCNull1149 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNull1156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__0_in_ruleDtCNull1182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx1209 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCRegEx1216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__0_in_ruleDtCRegEx1242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_entryRuleDtCSize1269 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCSize1276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__0_in_ruleDtCSize1302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_entryRuleScalarType1329 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleScalarType1336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ScalarType__Alternatives_in_ruleScalarType1362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum1391 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnum1398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__0_in_ruleEnum1424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnumLiteral_in_entryRuleEnumLiteral1451 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnumLiteral1458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__0_in_ruleEnumLiteral1484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_entryRuleAnnotationDef1511 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAnnotationDef1518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__Group__0_in_ruleAnnotationDef1544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResultFilter_in_entryRuleResultFilter1573 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResultFilter1580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_ruleResultFilter1606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_entryRuleAttributeMatchingConstraint1632 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAttributeMatchingConstraint1639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__0_in_ruleAttributeMatchingConstraint1665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_entryRuleKeyAndValue1692 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleKeyAndValue1699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__0_in_ruleKeyAndValue1725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLQualifiedNameWithWildCard_in_entryRuleLQualifiedNameWithWildCard1752 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLQualifiedNameWithWildCard1759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__0_in_ruleLQualifiedNameWithWildCard1785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_entryRuleValidIDWithKeywords1816 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidIDWithKeywords1823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Alternatives_in_ruleValidIDWithKeywords1849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_entryRuleLInt1880 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLInt1887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__0_in_ruleLInt1913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLDecimal_in_entryRuleLDecimal1940 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLDecimal1947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__0_in_ruleLDecimal1973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation2000 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation2007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation2033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair2060 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets001 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair2067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair2093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList2120 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList2127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList2153 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue2180 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue2187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue2213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression2240 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression2247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression2273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression2300 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression2307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression2333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment2359 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment2366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment2392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign2419 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign2426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_ruleOpSingleAssign2453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign2481 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign2488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign2514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression2541 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression2548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression2574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr2601 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr2608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_ruleOpOr2635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression2663 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression2670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression2696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd2723 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd2730 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_ruleOpAnd2757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression2785 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression2792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression2818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality2845 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality2852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality2878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression2905 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression2912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression2938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare2965 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare2972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare2998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression3025 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression3032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression3058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther3085 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther3092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther3118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression3145 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression3152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression3178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd3205 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd3212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd3238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression3265 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression3272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression3298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti3325 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti3332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti3358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation3385 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation3392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation3418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary3445 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary3452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary3478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression3505 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression3512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression3538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation3565 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation3572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation3598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix3625 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix3632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix3658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall3685 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall3692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall3718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression3745 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression3752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression3778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral3805 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral3812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral3838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral3865 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral3872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral3898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral3925 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral3932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral3958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral3985 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral3992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral4018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure4045 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure4052 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets002 {
+        public static final BitSet FOLLOW_rule__XClosure__Group__0_in_ruleXClosure4078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure4105 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure4112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure4138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure4165 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure4172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure4198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression4225 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression4232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression4258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression4285 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression4292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression4318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression4345 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression4352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression4378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart4405 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart4412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart4438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression4465 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression4472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression4498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression4525 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression4532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression4558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression4585 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression4592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression4618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression4645 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression4652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression4678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression4705 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression4712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression4738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration4765 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration4772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration4798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration4825 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration4832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration4858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter4885 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter4892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter4918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter4945 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter4952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter4978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall5005 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall5012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall5038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID5065 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID5072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID5098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper5125 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper5132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper5158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall5185 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall5192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall5218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral5245 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral5252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral5278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral5305 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral5312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral5338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral5365 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral5372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral5398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral5425 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral5432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral5458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral5485 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral5492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral5518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression5545 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression5552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression5578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression5605 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression5612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression5638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression5665 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression5672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression5698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression5725 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression5732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression5758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause5785 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause5792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause5818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName5845 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName5852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName5878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber5910 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumber5917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_in_ruleNumber5947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference5976 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference5983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference6009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets6036 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets6043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets6069 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets003 {
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef6096 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef6103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef6129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference6156 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference6163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference6189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference6216 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference6223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference6249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference6276 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference6283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference6309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound6336 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound6343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound6369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded6396 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded6403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded6429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound6456 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound6463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound6489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded6516 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded6523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded6549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard6578 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard6585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard6611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID6638 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidID6645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID6671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration6699 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration6706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration6732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport6759 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport6766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport6794 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport6806 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__ConstraintSeverity__Alternatives_in_ruleConstraintSeverity6846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DateType__Alternatives_in_ruleDateType6882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LVisibility__Alternatives_in_ruleLVisibility6918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LComparatorType__Alternatives_in_ruleLComparatorType6954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LowerBound__Alternatives_in_ruleLowerBound6990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UpperBound__Alternatives_in_ruleUpperBound7026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_rule__Type__Alternatives7061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleClass_in_rule__Type__Alternatives7078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__0_in_rule__DataType__Alternatives_27110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__0_in_rule__DataType__Alternatives_27128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__0_in_rule__DataType__Alternatives_27146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_rule__DataTypeConstraint__Alternatives7180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_rule__DataTypeConstraint__Alternatives7197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_rule__DataTypeConstraint__Alternatives7214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_rule__DataTypeConstraint__Alternatives7231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_rule__DataTypeConstraint__Alternatives7248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_rule__DataTypeConstraint__Alternatives7265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_rule__DataTypeConstraint__Alternatives7282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__DataTypeConstraint__Alternatives7299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__DataTypeConstraint__Alternatives7316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_rule__DataTypeConstraint__Alternatives7333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_rule__DataTypeConstraint__Alternatives7350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_rule__DateConstraint__Alternatives7382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_rule__DateConstraint__Alternatives7399 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__DateConstraint__Alternatives7416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__DateConstraint__Alternatives7433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__BlobTypeConstraint__Alternatives7465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__BlobTypeConstraint__Alternatives7482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_rule__ScalarType__Alternatives7514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_rule__ScalarType__Alternatives7531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0_in_rule__AttributeMatchingConstraint__Alternatives_27563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1_in_rule__AttributeMatchingConstraint__Alternatives_27581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ValidIDWithKeywords__Alternatives7615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ValidIDWithKeywords__Alternatives7635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__ValidIDWithKeywords__Alternatives7655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__ValidIDWithKeywords__Alternatives7675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__ValidIDWithKeywords__Alternatives7695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__0_in_rule__ValidIDWithKeywords__Alternatives7714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__ValidIDWithKeywords__Alternatives7733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rule__ValidIDWithKeywords__Alternatives7753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ValidIDWithKeywords__Alternatives7773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__ValidIDWithKeywords__Alternatives7793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__ValidIDWithKeywords__Alternatives7813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__ValidIDWithKeywords__Alternatives7833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__ValidIDWithKeywords__Alternatives7853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__ValidIDWithKeywords__Alternatives7873 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ValidIDWithKeywords__Alternatives7893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__ValidIDWithKeywords__Alternatives7913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__ValidIDWithKeywords__Alternatives7932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__LInt__Alternatives_07965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__LInt__Alternatives_07985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_18019 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_18037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives8070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives8088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives8121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives8139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives8171 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives8188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives8220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives8238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__OpMultiAssign__Alternatives8272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpMultiAssign__Alternatives8292 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets004 {
+        public static final BitSet FOLLOW_35_in_rule__OpMultiAssign__Alternatives8312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__OpMultiAssign__Alternatives8332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__OpMultiAssign__Alternatives8352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives8371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives8389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__OpEquality__Alternatives8423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__OpEquality__Alternatives8443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__OpEquality__Alternatives8463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__OpEquality__Alternatives8483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_18517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_18535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpCompare__Alternatives8569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives8588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpCompare__Alternatives8607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpCompare__Alternatives8627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__OpOther__Alternatives8662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__OpOther__Alternatives8682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives8701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__OpOther__Alternatives8720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__OpOther__Alternatives8740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0_in_rule__OpOther__Alternatives8759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0_in_rule__OpOther__Alternatives8777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__OpOther__Alternatives8796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__OpOther__Alternatives8816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0_in_rule__OpOther__Alternatives_5_18850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Alternatives_5_18869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0_in_rule__OpOther__Alternatives_6_18903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Alternatives_6_18922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__OpOther__Alternatives_6_18942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpAdd__Alternatives8977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpAdd__Alternatives8997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__OpMulti__Alternatives9032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__OpMulti__Alternatives9052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__OpMulti__Alternatives9072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__OpMulti__Alternatives9092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0_in_rule__XUnaryOperation__Alternatives9126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_rule__XUnaryOperation__Alternatives9144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__OpUnary__Alternatives9177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpUnary__Alternatives9197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpUnary__Alternatives9217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__OpPostfix__Alternatives9252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__OpPostfix__Alternatives9272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0_in_rule__XMemberFeatureCall__Alternatives_19306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0_in_rule__XMemberFeatureCall__Alternatives_19324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_19358 = 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_19377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_19411 = 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_19430 = 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_19448 = 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_19481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_19499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_rule__XPrimaryExpression__Alternatives9532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__XPrimaryExpression__Alternatives9549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_rule__XPrimaryExpression__Alternatives9566 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_rule__XPrimaryExpression__Alternatives9584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_rule__XPrimaryExpression__Alternatives9602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_rule__XPrimaryExpression__Alternatives9619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_rule__XPrimaryExpression__Alternatives9636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_rule__XPrimaryExpression__Alternatives9654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_rule__XPrimaryExpression__Alternatives9672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_rule__XPrimaryExpression__Alternatives9689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_rule__XPrimaryExpression__Alternatives9706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_rule__XPrimaryExpression__Alternatives9723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_rule__XPrimaryExpression__Alternatives9740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_rule__XPrimaryExpression__Alternatives9757 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_rule__XPrimaryExpression__Alternatives9774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_rule__XLiteral__Alternatives9806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_rule__XLiteral__Alternatives9824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_rule__XLiteral__Alternatives9842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_rule__XLiteral__Alternatives9859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_rule__XLiteral__Alternatives9876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_rule__XLiteral__Alternatives9893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_rule__XLiteral__Alternatives9910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_rule__XCollectionLiteral__Alternatives9942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_rule__XCollectionLiteral__Alternatives9959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0_in_rule__XSwitchExpression__Alternatives_29991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0_in_rule__XSwitchExpression__Alternatives_210009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0_in_rule__XCasePart__Alternatives_310042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__FallThroughAssignment_3_1_in_rule__XCasePart__Alternatives_310060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rule__XExpressionOrVarDeclaration__Alternatives10093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XExpressionOrVarDeclaration__Alternatives10110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__WriteableAssignment_1_0_in_rule__XVariableDeclaration__Alternatives_110142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__XVariableDeclaration__Alternatives_110161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0_in_rule__XVariableDeclaration__Alternatives_210195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_1_in_rule__XVariableDeclaration__Alternatives_210213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0_in_rule__XFeatureCall__Alternatives_3_110246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0_in_rule__XFeatureCall__Alternatives_3_110264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__FeatureCallID__Alternatives10297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__FeatureCallID__Alternatives10315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__FeatureCallID__Alternatives10335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__FeatureCallID__Alternatives10355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__FeatureCallID__Alternatives10375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__IdOrSuper__Alternatives10409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__IdOrSuper__Alternatives10427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_0_in_rule__XConstructorCall__Alternatives_4_110461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0_in_rule__XConstructorCall__Alternatives_4_110479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__XBooleanLiteral__Alternatives_110513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__IsTrueAssignment_1_1_in_rule__XBooleanLiteral__Alternatives_110532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0_in_rule__XTryCatchFinallyExpression__Alternatives_310565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0_in_rule__XTryCatchFinallyExpression__Alternatives_310583 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets005 {
+        public static final BitSet FOLLOW_RULE_HEX_in_rule__Number__Alternatives10616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__0_in_rule__Number__Alternatives10633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_010666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_010683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_1_110715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_1_110732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0_in_rule__JvmTypeReference__Alternatives10764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_rule__JvmTypeReference__Alternatives10782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__JvmArgumentTypeReference__Alternatives10814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_rule__JvmArgumentTypeReference__Alternatives10831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0_in_rule__JvmWildcardTypeReference__Alternatives_210863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0_in_rule__JvmWildcardTypeReference__Alternatives_210881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0_in_rule__XImportDeclaration__Alternatives_110914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_1_in_rule__XImportDeclaration__Alternatives_110932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedNamespaceAssignment_1_2_in_rule__XImportDeclaration__Alternatives_110950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__WildcardAssignment_1_0_3_0_in_rule__XImportDeclaration__Alternatives_1_0_310983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__MemberNameAssignment_1_0_3_1_in_rule__XImportDeclaration__Alternatives_1_0_311001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_rule__ConstraintSeverity__Alternatives11035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__ConstraintSeverity__Alternatives11056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_rule__ConstraintSeverity__Alternatives11077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__DateType__Alternatives11113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_rule__DateType__Alternatives11134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__DateType__Alternatives11155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__LVisibility__Alternatives11191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__LVisibility__Alternatives11212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__LVisibility__Alternatives11233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__LVisibility__Alternatives11254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__LComparatorType__Alternatives11290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__LComparatorType__Alternatives11311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__LComparatorType__Alternatives11332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__LComparatorType__Alternatives11353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__LComparatorType__Alternatives11374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__LComparatorType__Alternatives11395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__LowerBound__Alternatives11431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__LowerBound__Alternatives11452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__LowerBound__Alternatives11473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__LowerBound__Alternatives11494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__LowerBound__Alternatives11515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__UpperBound__Alternatives11551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__UpperBound__Alternatives11572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__0__Impl_in_rule__TypedPackage__Group__011605 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__1_in_rule__TypedPackage__Group__011608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__1__Impl_in_rule__TypedPackage__Group__111666 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__2_in_rule__TypedPackage__Group__111669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__TypedPackage__Group__1__Impl11697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__2__Impl_in_rule__TypedPackage__Group__211728 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__3_in_rule__TypedPackage__Group__211731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__NameAssignment_2_in_rule__TypedPackage__Group__2__Impl11758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__3__Impl_in_rule__TypedPackage__Group__311788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__0_in_rule__TypedPackage__Group__3__Impl11815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__0__Impl_in_rule__TypedPackage__Group_3__011854 = new BitSet(new long[]{0x4000000000000000L,0x00010800000B0000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__1_in_rule__TypedPackage__Group_3__011857 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__TypedPackage__Group_3__0__Impl11885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__1__Impl_in_rule__TypedPackage__Group_3__111916 = new BitSet(new long[]{0x4000000000000000L,0x00010800000B0000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__2_in_rule__TypedPackage__Group_3__111919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__ImportsAssignment_3_1_in_rule__TypedPackage__Group_3__1__Impl11946 = new BitSet(new long[]{0x4000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__2__Impl_in_rule__TypedPackage__Group_3__211977 = new BitSet(new long[]{0x4000000000000000L,0x00010800000B0000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__3_in_rule__TypedPackage__Group_3__211980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__TypesAssignment_3_2_in_rule__TypedPackage__Group_3__2__Impl12007 = new BitSet(new long[]{0x0000000000000002L,0x00010800000A0000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__3__Impl_in_rule__TypedPackage__Group_3__312038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__TypedPackage__Group_3__3__Impl12066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__0__Impl_in_rule__Class__Group__012105 = new BitSet(new long[]{0x0000000000000000L,0x00010800000A0000L});
+        public static final BitSet FOLLOW_rule__Class__Group__1_in_rule__Class__Group__012108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__1__Impl_in_rule__Class__Group__112166 = new BitSet(new long[]{0x0000000000000000L,0x00010800000A0000L});
+        public static final BitSet FOLLOW_rule__Class__Group__2_in_rule__Class__Group__112169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__AnnotationsAssignment_1_in_rule__Class__Group__1__Impl12196 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__Class__Group__2__Impl_in_rule__Class__Group__212227 = new BitSet(new long[]{0x0000000000000000L,0x00010800000A0000L});
+        public static final BitSet FOLLOW_rule__Class__Group__3_in_rule__Class__Group__212230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__3__Impl_in_rule__Class__Group__312288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__Class__Group__3__Impl12316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__012355 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Import__Group__1_in_rule__Import__Group__012358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__Import__Group__0__Impl12386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__112417 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__Import__Group__2_in_rule__Import__Group__112420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__ImportedNamespaceAssignment_1_in_rule__Import__Group__1__Impl12447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__2__Impl_in_rule__Import__Group__212477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__Import__Group__2__Impl12506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__0__Impl_in_rule__DataType__Group__012545 = new BitSet(new long[]{0x000000007FFF0010L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__1_in_rule__DataType__Group__012548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__DataType__Group__0__Impl12576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__1__Impl_in_rule__DataType__Group__112607 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L,0x0000000000000600L});
+        public static final BitSet FOLLOW_rule__DataType__Group__2_in_rule__DataType__Group__112610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__NameAssignment_1_in_rule__DataType__Group__1__Impl12637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__2__Impl_in_rule__DataType__Group__212667 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__3_in_rule__DataType__Group__212670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Alternatives_2_in_rule__DataType__Group__2__Impl12697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__3__Impl_in_rule__DataType__Group__312727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__DataType__Group__3__Impl12756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__0__Impl_in_rule__DataType__Group_2_0__012797 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__1_in_rule__DataType__Group_2_0__012800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__DataType__Group_2_0__0__Impl12828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__1__Impl_in_rule__DataType__Group_2_0__112859 = new BitSet(new long[]{0x0000000000000000L,0x000007E782200000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__2_in_rule__DataType__Group_2_0__112862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__JvmTypeReferenceAssignment_2_0_1_in_rule__DataType__Group_2_0__1__Impl12889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__2__Impl_in_rule__DataType__Group_2_0__212919 = new BitSet(new long[]{0x0000000000000000L,0x000007E782200000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__3_in_rule__DataType__Group_2_0__212922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__AsPrimitiveAssignment_2_0_2_in_rule__DataType__Group_2_0__2__Impl12949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__3__Impl_in_rule__DataType__Group_2_0__312980 = new BitSet(new long[]{0x0000000000000000L,0x000007E782200000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__4_in_rule__DataType__Group_2_0__312983 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets006 {
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_0_3_in_rule__DataType__Group_2_0__3__Impl13010 = new BitSet(new long[]{0x0000000000000002L,0x000007E782000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__4__Impl_in_rule__DataType__Group_2_0__413041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__0_in_rule__DataType__Group_2_0__4__Impl13068 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__0__Impl_in_rule__DataType__Group_2_0_4__013109 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__1_in_rule__DataType__Group_2_0_4__013112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__DataType__Group_2_0_4__0__Impl13140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__1__Impl_in_rule__DataType__Group_2_0_4__113171 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__2_in_rule__DataType__Group_2_0_4__113174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DataType__Group_2_0_4__1__Impl13202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__2__Impl_in_rule__DataType__Group_2_0_4__213233 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__3_in_rule__DataType__Group_2_0_4__213236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_0_4_2_in_rule__DataType__Group_2_0_4__2__Impl13263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__3__Impl_in_rule__DataType__Group_2_0_4__313293 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__4_in_rule__DataType__Group_2_0_4__313296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__0_in_rule__DataType__Group_2_0_4__3__Impl13323 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__4__Impl_in_rule__DataType__Group_2_0_4__413354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DataType__Group_2_0_4__4__Impl13382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__0__Impl_in_rule__DataType__Group_2_0_4_3__013423 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__1_in_rule__DataType__Group_2_0_4_3__013426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group_2_0_4_3__0__Impl13454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__1__Impl_in_rule__DataType__Group_2_0_4_3__113485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_0_4_3_1_in_rule__DataType__Group_2_0_4_3__1__Impl13512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__0__Impl_in_rule__DataType__Group_2_1__013546 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000060L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__1_in_rule__DataType__Group_2_1__013549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__DateAssignment_2_1_0_in_rule__DataType__Group_2_1__0__Impl13576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__1__Impl_in_rule__DataType__Group_2_1__113606 = new BitSet(new long[]{0x0000000000000000L,0x0000019800200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__2_in_rule__DataType__Group_2_1__113609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__DateTypeAssignment_2_1_1_in_rule__DataType__Group_2_1__1__Impl13636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__2__Impl_in_rule__DataType__Group_2_1__213666 = new BitSet(new long[]{0x0000000000000000L,0x0000019800200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__3_in_rule__DataType__Group_2_1__213669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_1_2_in_rule__DataType__Group_2_1__2__Impl13696 = new BitSet(new long[]{0x0000000000000002L,0x0000019800000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__3__Impl_in_rule__DataType__Group_2_1__313727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__0_in_rule__DataType__Group_2_1__3__Impl13754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__0__Impl_in_rule__DataType__Group_2_1_3__013793 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__1_in_rule__DataType__Group_2_1_3__013796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__DataType__Group_2_1_3__0__Impl13824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__1__Impl_in_rule__DataType__Group_2_1_3__113855 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__2_in_rule__DataType__Group_2_1_3__113858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DataType__Group_2_1_3__1__Impl13886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__2__Impl_in_rule__DataType__Group_2_1_3__213917 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__3_in_rule__DataType__Group_2_1_3__213920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_1_3_2_in_rule__DataType__Group_2_1_3__2__Impl13947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__3__Impl_in_rule__DataType__Group_2_1_3__313977 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__4_in_rule__DataType__Group_2_1_3__313980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__0_in_rule__DataType__Group_2_1_3__3__Impl14007 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__4__Impl_in_rule__DataType__Group_2_1_3__414038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DataType__Group_2_1_3__4__Impl14066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__0__Impl_in_rule__DataType__Group_2_1_3_3__014107 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__1_in_rule__DataType__Group_2_1_3_3__014110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group_2_1_3_3__0__Impl14138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__1__Impl_in_rule__DataType__Group_2_1_3_3__114169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_1_3_3_1_in_rule__DataType__Group_2_1_3_3__1__Impl14196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__0__Impl_in_rule__DataType__Group_2_2__014230 = new BitSet(new long[]{0x0000000000000000L,0x0000018000200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__1_in_rule__DataType__Group_2_2__014233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__AsBlobAssignment_2_2_0_in_rule__DataType__Group_2_2__0__Impl14260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__1__Impl_in_rule__DataType__Group_2_2__114290 = new BitSet(new long[]{0x0000000000000000L,0x0000018000200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__2_in_rule__DataType__Group_2_2__114293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_2_1_in_rule__DataType__Group_2_2__1__Impl14320 = new BitSet(new long[]{0x0000000000000002L,0x0000018000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__2__Impl_in_rule__DataType__Group_2_2__214351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__0_in_rule__DataType__Group_2_2__2__Impl14378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__0__Impl_in_rule__DataType__Group_2_2_2__014415 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__1_in_rule__DataType__Group_2_2_2__014418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__DataType__Group_2_2_2__0__Impl14446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__1__Impl_in_rule__DataType__Group_2_2_2__114477 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__2_in_rule__DataType__Group_2_2_2__114480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DataType__Group_2_2_2__1__Impl14508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__2__Impl_in_rule__DataType__Group_2_2_2__214539 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__3_in_rule__DataType__Group_2_2_2__214542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_2_2_2_in_rule__DataType__Group_2_2_2__2__Impl14569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__3__Impl_in_rule__DataType__Group_2_2_2__314599 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__4_in_rule__DataType__Group_2_2_2__314602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__0_in_rule__DataType__Group_2_2_2__3__Impl14629 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__4__Impl_in_rule__DataType__Group_2_2_2__414660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DataType__Group_2_2_2__4__Impl14688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__0__Impl_in_rule__DataType__Group_2_2_2_3__014729 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__1_in_rule__DataType__Group_2_2_2_3__014732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group_2_2_2_3__0__Impl14760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__1__Impl_in_rule__DataType__Group_2_2_2_3__114791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_2_2_3_1_in_rule__DataType__Group_2_2_2_3__1__Impl14818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__0__Impl_in_rule__DtCAssertFalse__Group__014852 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__1_in_rule__DtCAssertFalse__Group__014855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__1__Impl_in_rule__DtCAssertFalse__Group__114913 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__2_in_rule__DtCAssertFalse__Group__114916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__DtCAssertFalse__Group__1__Impl14944 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__2__Impl_in_rule__DtCAssertFalse__Group__214975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__UnorderedGroup_2_in_rule__DtCAssertFalse__Group__2__Impl15002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__0__Impl_in_rule__DtCAssertFalse__Group_2_0__015039 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__1_in_rule__DtCAssertFalse__Group_2_0__015042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCAssertFalse__Group_2_0__0__Impl15070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__1__Impl_in_rule__DtCAssertFalse__Group_2_0__115101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__0_in_rule__DtCAssertFalse__Group_2_0__1__Impl15128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__0__Impl_in_rule__DtCAssertFalse__Group_2_0_1__015163 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__1_in_rule__DtCAssertFalse__Group_2_0_1__015166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCAssertFalse__Group_2_0_1__0__Impl15194 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__1__Impl_in_rule__DtCAssertFalse__Group_2_0_1__115225 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__2_in_rule__DtCAssertFalse__Group_2_0_1__115228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_0_1__1__Impl15256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__2__Impl_in_rule__DtCAssertFalse__Group_2_0_1__215287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2_in_rule__DtCAssertFalse__Group_2_0_1__2__Impl15314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__0__Impl_in_rule__DtCAssertFalse__Group_2_1__015350 = new BitSet(new long[]{0x0000000000002000L});
+    }
+
+    protected static class FollowSets007 {
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__1_in_rule__DtCAssertFalse__Group_2_1__015353 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCAssertFalse__Group_2_1__0__Impl15381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__1__Impl_in_rule__DtCAssertFalse__Group_2_1__115412 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__2_in_rule__DtCAssertFalse__Group_2_1__115415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_1__1__Impl15443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__2__Impl_in_rule__DtCAssertFalse__Group_2_1__215474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2_in_rule__DtCAssertFalse__Group_2_1__2__Impl15501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__0__Impl_in_rule__DtCAssertFalse__Group_2_2__015537 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__1_in_rule__DtCAssertFalse__Group_2_2__015540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__0_in_rule__DtCAssertFalse__Group_2_2__0__Impl15567 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__1__Impl_in_rule__DtCAssertFalse__Group_2_2__115598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCAssertFalse__Group_2_2__1__Impl15626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__0__Impl_in_rule__DtCAssertFalse__Group_2_2_0__015661 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__1_in_rule__DtCAssertFalse__Group_2_2_0__015664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCAssertFalse__Group_2_2_0__0__Impl15692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__1__Impl_in_rule__DtCAssertFalse__Group_2_2_0__115723 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__2_in_rule__DtCAssertFalse__Group_2_2_0__115726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_2_0__1__Impl15754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__2__Impl_in_rule__DtCAssertFalse__Group_2_2_0__215785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__SeverityAssignment_2_2_0_2_in_rule__DtCAssertFalse__Group_2_2_0__2__Impl15812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__0__Impl_in_rule__DtCAssertTrue__Group__015848 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__1_in_rule__DtCAssertTrue__Group__015851 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__1__Impl_in_rule__DtCAssertTrue__Group__115909 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__2_in_rule__DtCAssertTrue__Group__115912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__DtCAssertTrue__Group__1__Impl15940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__2__Impl_in_rule__DtCAssertTrue__Group__215971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__UnorderedGroup_2_in_rule__DtCAssertTrue__Group__2__Impl15998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__0__Impl_in_rule__DtCAssertTrue__Group_2_0__016035 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__1_in_rule__DtCAssertTrue__Group_2_0__016038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCAssertTrue__Group_2_0__0__Impl16066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__1__Impl_in_rule__DtCAssertTrue__Group_2_0__116097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__0_in_rule__DtCAssertTrue__Group_2_0__1__Impl16124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__0__Impl_in_rule__DtCAssertTrue__Group_2_0_1__016159 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__1_in_rule__DtCAssertTrue__Group_2_0_1__016162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCAssertTrue__Group_2_0_1__0__Impl16190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__1__Impl_in_rule__DtCAssertTrue__Group_2_0_1__116221 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__2_in_rule__DtCAssertTrue__Group_2_0_1__116224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_0_1__1__Impl16252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__2__Impl_in_rule__DtCAssertTrue__Group_2_0_1__216283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2_in_rule__DtCAssertTrue__Group_2_0_1__2__Impl16310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__0__Impl_in_rule__DtCAssertTrue__Group_2_1__016346 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__1_in_rule__DtCAssertTrue__Group_2_1__016349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCAssertTrue__Group_2_1__0__Impl16377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__1__Impl_in_rule__DtCAssertTrue__Group_2_1__116408 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__2_in_rule__DtCAssertTrue__Group_2_1__116411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_1__1__Impl16439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__2__Impl_in_rule__DtCAssertTrue__Group_2_1__216470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2_in_rule__DtCAssertTrue__Group_2_1__2__Impl16497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__0__Impl_in_rule__DtCAssertTrue__Group_2_2__016533 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__1_in_rule__DtCAssertTrue__Group_2_2__016536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__0_in_rule__DtCAssertTrue__Group_2_2__0__Impl16563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__1__Impl_in_rule__DtCAssertTrue__Group_2_2__116594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCAssertTrue__Group_2_2__1__Impl16622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__0__Impl_in_rule__DtCAssertTrue__Group_2_2_0__016657 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__1_in_rule__DtCAssertTrue__Group_2_2_0__016660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCAssertTrue__Group_2_2_0__0__Impl16688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__1__Impl_in_rule__DtCAssertTrue__Group_2_2_0__116719 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__2_in_rule__DtCAssertTrue__Group_2_2_0__116722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_2_0__1__Impl16750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__2__Impl_in_rule__DtCAssertTrue__Group_2_2_0__216781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__SeverityAssignment_2_2_0_2_in_rule__DtCAssertTrue__Group_2_2_0__2__Impl16808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__0__Impl_in_rule__DtCDecimalMax__Group__016844 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__1_in_rule__DtCDecimalMax__Group__016847 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__1__Impl_in_rule__DtCDecimalMax__Group__116905 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__2_in_rule__DtCDecimalMax__Group__116908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__DtCDecimalMax__Group__1__Impl16936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__2__Impl_in_rule__DtCDecimalMax__Group__216967 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__3_in_rule__DtCDecimalMax__Group__216970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCDecimalMax__Group__2__Impl16998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__3__Impl_in_rule__DtCDecimalMax__Group__317029 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__4_in_rule__DtCDecimalMax__Group__317032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MaxAssignment_3_in_rule__DtCDecimalMax__Group__3__Impl17059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__4__Impl_in_rule__DtCDecimalMax__Group__417089 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__5_in_rule__DtCDecimalMax__Group__417092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__UnorderedGroup_4_in_rule__DtCDecimalMax__Group__4__Impl17119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__5__Impl_in_rule__DtCDecimalMax__Group__517150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCDecimalMax__Group__5__Impl17178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__0__Impl_in_rule__DtCDecimalMax__Group_4_0__017221 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__1_in_rule__DtCDecimalMax__Group_4_0__017224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDecimalMax__Group_4_0__0__Impl17252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__1__Impl_in_rule__DtCDecimalMax__Group_4_0__117283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__0_in_rule__DtCDecimalMax__Group_4_0__1__Impl17310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__0__Impl_in_rule__DtCDecimalMax__Group_4_0_1__017345 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__1_in_rule__DtCDecimalMax__Group_4_0_1__017348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCDecimalMax__Group_4_0_1__0__Impl17376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__1__Impl_in_rule__DtCDecimalMax__Group_4_0_1__117407 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__2_in_rule__DtCDecimalMax__Group_4_0_1__117410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_0_1__1__Impl17438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__2__Impl_in_rule__DtCDecimalMax__Group_4_0_1__217469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2_in_rule__DtCDecimalMax__Group_4_0_1__2__Impl17496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__0__Impl_in_rule__DtCDecimalMax__Group_4_1__017532 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__1_in_rule__DtCDecimalMax__Group_4_1__017535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCDecimalMax__Group_4_1__0__Impl17563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__1__Impl_in_rule__DtCDecimalMax__Group_4_1__117594 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__2_in_rule__DtCDecimalMax__Group_4_1__117597 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_1__1__Impl17625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__2__Impl_in_rule__DtCDecimalMax__Group_4_1__217656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2_in_rule__DtCDecimalMax__Group_4_1__2__Impl17683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__0__Impl_in_rule__DtCDecimalMax__Group_4_2__017719 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__1_in_rule__DtCDecimalMax__Group_4_2__017722 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets008 {
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__0_in_rule__DtCDecimalMax__Group_4_2__0__Impl17749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__1__Impl_in_rule__DtCDecimalMax__Group_4_2__117780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDecimalMax__Group_4_2__1__Impl17808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__0__Impl_in_rule__DtCDecimalMax__Group_4_2_0__017843 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__1_in_rule__DtCDecimalMax__Group_4_2_0__017846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDecimalMax__Group_4_2_0__0__Impl17874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__1__Impl_in_rule__DtCDecimalMax__Group_4_2_0__117905 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__2_in_rule__DtCDecimalMax__Group_4_2_0__117908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_2_0__1__Impl17936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__2__Impl_in_rule__DtCDecimalMax__Group_4_2_0__217967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__SeverityAssignment_4_2_0_2_in_rule__DtCDecimalMax__Group_4_2_0__2__Impl17994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__0__Impl_in_rule__DtCDecimalMin__Group__018030 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__1_in_rule__DtCDecimalMin__Group__018033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__1__Impl_in_rule__DtCDecimalMin__Group__118091 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__2_in_rule__DtCDecimalMin__Group__118094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__DtCDecimalMin__Group__1__Impl18122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__2__Impl_in_rule__DtCDecimalMin__Group__218153 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__3_in_rule__DtCDecimalMin__Group__218156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCDecimalMin__Group__2__Impl18184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__3__Impl_in_rule__DtCDecimalMin__Group__318215 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__4_in_rule__DtCDecimalMin__Group__318218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MinAssignment_3_in_rule__DtCDecimalMin__Group__3__Impl18245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__4__Impl_in_rule__DtCDecimalMin__Group__418275 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__5_in_rule__DtCDecimalMin__Group__418278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__UnorderedGroup_4_in_rule__DtCDecimalMin__Group__4__Impl18305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__5__Impl_in_rule__DtCDecimalMin__Group__518336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCDecimalMin__Group__5__Impl18364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__0__Impl_in_rule__DtCDecimalMin__Group_4_0__018407 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__1_in_rule__DtCDecimalMin__Group_4_0__018410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDecimalMin__Group_4_0__0__Impl18438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__1__Impl_in_rule__DtCDecimalMin__Group_4_0__118469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__0_in_rule__DtCDecimalMin__Group_4_0__1__Impl18496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__0__Impl_in_rule__DtCDecimalMin__Group_4_0_1__018531 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__1_in_rule__DtCDecimalMin__Group_4_0_1__018534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCDecimalMin__Group_4_0_1__0__Impl18562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__1__Impl_in_rule__DtCDecimalMin__Group_4_0_1__118593 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__2_in_rule__DtCDecimalMin__Group_4_0_1__118596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_0_1__1__Impl18624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__2__Impl_in_rule__DtCDecimalMin__Group_4_0_1__218655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2_in_rule__DtCDecimalMin__Group_4_0_1__2__Impl18682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__0__Impl_in_rule__DtCDecimalMin__Group_4_1__018718 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__1_in_rule__DtCDecimalMin__Group_4_1__018721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCDecimalMin__Group_4_1__0__Impl18749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__1__Impl_in_rule__DtCDecimalMin__Group_4_1__118780 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__2_in_rule__DtCDecimalMin__Group_4_1__118783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_1__1__Impl18811 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__2__Impl_in_rule__DtCDecimalMin__Group_4_1__218842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2_in_rule__DtCDecimalMin__Group_4_1__2__Impl18869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__0__Impl_in_rule__DtCDecimalMin__Group_4_2__018905 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__1_in_rule__DtCDecimalMin__Group_4_2__018908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__0_in_rule__DtCDecimalMin__Group_4_2__0__Impl18935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__1__Impl_in_rule__DtCDecimalMin__Group_4_2__118966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDecimalMin__Group_4_2__1__Impl18994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__0__Impl_in_rule__DtCDecimalMin__Group_4_2_0__019029 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__1_in_rule__DtCDecimalMin__Group_4_2_0__019032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDecimalMin__Group_4_2_0__0__Impl19060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__1__Impl_in_rule__DtCDecimalMin__Group_4_2_0__119091 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__2_in_rule__DtCDecimalMin__Group_4_2_0__119094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_2_0__1__Impl19122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__2__Impl_in_rule__DtCDecimalMin__Group_4_2_0__219153 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__SeverityAssignment_4_2_0_2_in_rule__DtCDecimalMin__Group_4_2_0__2__Impl19180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__0__Impl_in_rule__DtCDigits__Group__019216 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__1_in_rule__DtCDigits__Group__019219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__1__Impl_in_rule__DtCDigits__Group__119277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__2_in_rule__DtCDigits__Group__119280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__DtCDigits__Group__1__Impl19308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__2__Impl_in_rule__DtCDigits__Group__219339 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__3_in_rule__DtCDigits__Group__219342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCDigits__Group__2__Impl19370 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__3__Impl_in_rule__DtCDigits__Group__319401 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__4_in_rule__DtCDigits__Group__319404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__IntDigitsAssignment_3_in_rule__DtCDigits__Group__3__Impl19431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__4__Impl_in_rule__DtCDigits__Group__419461 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__5_in_rule__DtCDigits__Group__419464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DtCDigits__Group__4__Impl19492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__5__Impl_in_rule__DtCDigits__Group__519523 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__6_in_rule__DtCDigits__Group__519526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__FractionDigitsAssignment_5_in_rule__DtCDigits__Group__5__Impl19553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__6__Impl_in_rule__DtCDigits__Group__619583 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__7_in_rule__DtCDigits__Group__619586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__UnorderedGroup_6_in_rule__DtCDigits__Group__6__Impl19613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__7__Impl_in_rule__DtCDigits__Group__719644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCDigits__Group__7__Impl19672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__0__Impl_in_rule__DtCDigits__Group_6_0__019719 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__1_in_rule__DtCDigits__Group_6_0__019722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDigits__Group_6_0__0__Impl19750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__1__Impl_in_rule__DtCDigits__Group_6_0__119781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__0_in_rule__DtCDigits__Group_6_0__1__Impl19808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__0__Impl_in_rule__DtCDigits__Group_6_0_1__019843 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__1_in_rule__DtCDigits__Group_6_0_1__019846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCDigits__Group_6_0_1__0__Impl19874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__1__Impl_in_rule__DtCDigits__Group_6_0_1__119905 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__2_in_rule__DtCDigits__Group_6_0_1__119908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_0_1__1__Impl19936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__2__Impl_in_rule__DtCDigits__Group_6_0_1__219967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__MsgCodeAssignment_6_0_1_2_in_rule__DtCDigits__Group_6_0_1__2__Impl19994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__0__Impl_in_rule__DtCDigits__Group_6_1__020030 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__1_in_rule__DtCDigits__Group_6_1__020033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCDigits__Group_6_1__0__Impl20061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__1__Impl_in_rule__DtCDigits__Group_6_1__120092 = new BitSet(new long[]{0x0000000000000010L});
+    }
+
+    protected static class FollowSets009 {
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__2_in_rule__DtCDigits__Group_6_1__120095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_1__1__Impl20123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__2__Impl_in_rule__DtCDigits__Group_6_1__220154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__MsgI18nKeyAssignment_6_1_2_in_rule__DtCDigits__Group_6_1__2__Impl20181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__0__Impl_in_rule__DtCDigits__Group_6_2__020217 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__1_in_rule__DtCDigits__Group_6_2__020220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__0_in_rule__DtCDigits__Group_6_2__0__Impl20247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__1__Impl_in_rule__DtCDigits__Group_6_2__120278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDigits__Group_6_2__1__Impl20306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__0__Impl_in_rule__DtCDigits__Group_6_2_0__020341 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__1_in_rule__DtCDigits__Group_6_2_0__020344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDigits__Group_6_2_0__0__Impl20372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__1__Impl_in_rule__DtCDigits__Group_6_2_0__120403 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__2_in_rule__DtCDigits__Group_6_2_0__120406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_2_0__1__Impl20434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__2__Impl_in_rule__DtCDigits__Group_6_2_0__220465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__SeverityAssignment_6_2_0_2_in_rule__DtCDigits__Group_6_2_0__2__Impl20492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__0__Impl_in_rule__DtCFuture__Group__020528 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__1_in_rule__DtCFuture__Group__020531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__1__Impl_in_rule__DtCFuture__Group__120589 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__2_in_rule__DtCFuture__Group__120592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCFuture__Group__1__Impl20620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__2__Impl_in_rule__DtCFuture__Group__220651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__UnorderedGroup_2_in_rule__DtCFuture__Group__2__Impl20678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__0__Impl_in_rule__DtCFuture__Group_2_0__020715 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__1_in_rule__DtCFuture__Group_2_0__020718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCFuture__Group_2_0__0__Impl20746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__1__Impl_in_rule__DtCFuture__Group_2_0__120777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__0_in_rule__DtCFuture__Group_2_0__1__Impl20804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__0__Impl_in_rule__DtCFuture__Group_2_0_1__020839 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__1_in_rule__DtCFuture__Group_2_0_1__020842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCFuture__Group_2_0_1__0__Impl20870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__1__Impl_in_rule__DtCFuture__Group_2_0_1__120901 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__2_in_rule__DtCFuture__Group_2_0_1__120904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_0_1__1__Impl20932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__2__Impl_in_rule__DtCFuture__Group_2_0_1__220963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__MsgCodeAssignment_2_0_1_2_in_rule__DtCFuture__Group_2_0_1__2__Impl20990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__0__Impl_in_rule__DtCFuture__Group_2_1__021026 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__1_in_rule__DtCFuture__Group_2_1__021029 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCFuture__Group_2_1__0__Impl21057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__1__Impl_in_rule__DtCFuture__Group_2_1__121088 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__2_in_rule__DtCFuture__Group_2_1__121091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_1__1__Impl21119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__2__Impl_in_rule__DtCFuture__Group_2_1__221150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__MsgI18nKeyAssignment_2_1_2_in_rule__DtCFuture__Group_2_1__2__Impl21177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__0__Impl_in_rule__DtCFuture__Group_2_2__021213 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__1_in_rule__DtCFuture__Group_2_2__021216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__0_in_rule__DtCFuture__Group_2_2__0__Impl21243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__1__Impl_in_rule__DtCFuture__Group_2_2__121274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCFuture__Group_2_2__1__Impl21302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__0__Impl_in_rule__DtCFuture__Group_2_2_0__021337 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__1_in_rule__DtCFuture__Group_2_2_0__021340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCFuture__Group_2_2_0__0__Impl21368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__1__Impl_in_rule__DtCFuture__Group_2_2_0__121399 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__2_in_rule__DtCFuture__Group_2_2_0__121402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_2_0__1__Impl21430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__2__Impl_in_rule__DtCFuture__Group_2_2_0__221461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__SeverityAssignment_2_2_0_2_in_rule__DtCFuture__Group_2_2_0__2__Impl21488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__0__Impl_in_rule__DtCPast__Group__021524 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__1_in_rule__DtCPast__Group__021527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__1__Impl_in_rule__DtCPast__Group__121585 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__2_in_rule__DtCPast__Group__121588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCPast__Group__1__Impl21616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__2__Impl_in_rule__DtCPast__Group__221647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__UnorderedGroup_2_in_rule__DtCPast__Group__2__Impl21674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__0__Impl_in_rule__DtCPast__Group_2_0__021711 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__1_in_rule__DtCPast__Group_2_0__021714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCPast__Group_2_0__0__Impl21742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__1__Impl_in_rule__DtCPast__Group_2_0__121773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__0_in_rule__DtCPast__Group_2_0__1__Impl21800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__0__Impl_in_rule__DtCPast__Group_2_0_1__021835 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__1_in_rule__DtCPast__Group_2_0_1__021838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCPast__Group_2_0_1__0__Impl21866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__1__Impl_in_rule__DtCPast__Group_2_0_1__121897 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__2_in_rule__DtCPast__Group_2_0_1__121900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_0_1__1__Impl21928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__2__Impl_in_rule__DtCPast__Group_2_0_1__221959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__MsgCodeAssignment_2_0_1_2_in_rule__DtCPast__Group_2_0_1__2__Impl21986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__0__Impl_in_rule__DtCPast__Group_2_1__022022 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__1_in_rule__DtCPast__Group_2_1__022025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCPast__Group_2_1__0__Impl22053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__1__Impl_in_rule__DtCPast__Group_2_1__122084 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__2_in_rule__DtCPast__Group_2_1__122087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_1__1__Impl22115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__2__Impl_in_rule__DtCPast__Group_2_1__222146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__MsgI18nKeyAssignment_2_1_2_in_rule__DtCPast__Group_2_1__2__Impl22173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__0__Impl_in_rule__DtCPast__Group_2_2__022209 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__1_in_rule__DtCPast__Group_2_2__022212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__0_in_rule__DtCPast__Group_2_2__0__Impl22239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__1__Impl_in_rule__DtCPast__Group_2_2__122270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCPast__Group_2_2__1__Impl22298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__0__Impl_in_rule__DtCPast__Group_2_2_0__022333 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__1_in_rule__DtCPast__Group_2_2_0__022336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCPast__Group_2_2_0__0__Impl22364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__1__Impl_in_rule__DtCPast__Group_2_2_0__122395 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__2_in_rule__DtCPast__Group_2_2_0__122398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_2_0__1__Impl22426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__2__Impl_in_rule__DtCPast__Group_2_2_0__222457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__SeverityAssignment_2_2_0_2_in_rule__DtCPast__Group_2_2_0__2__Impl22484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__0__Impl_in_rule__DtCNumericMax__Group__022520 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    }
+
+    protected static class FollowSets010 {
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__1_in_rule__DtCNumericMax__Group__022523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__1__Impl_in_rule__DtCNumericMax__Group__122581 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__2_in_rule__DtCNumericMax__Group__122584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCNumericMax__Group__1__Impl22612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__2__Impl_in_rule__DtCNumericMax__Group__222643 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__3_in_rule__DtCNumericMax__Group__222646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCNumericMax__Group__2__Impl22674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__3__Impl_in_rule__DtCNumericMax__Group__322705 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__4_in_rule__DtCNumericMax__Group__322708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MaxAssignment_3_in_rule__DtCNumericMax__Group__3__Impl22735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__4__Impl_in_rule__DtCNumericMax__Group__422765 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__5_in_rule__DtCNumericMax__Group__422768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__UnorderedGroup_4_in_rule__DtCNumericMax__Group__4__Impl22795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__5__Impl_in_rule__DtCNumericMax__Group__522826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCNumericMax__Group__5__Impl22854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__0__Impl_in_rule__DtCNumericMax__Group_4_0__022897 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__1_in_rule__DtCNumericMax__Group_4_0__022900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNumericMax__Group_4_0__0__Impl22928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__1__Impl_in_rule__DtCNumericMax__Group_4_0__122959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__0_in_rule__DtCNumericMax__Group_4_0__1__Impl22986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__0__Impl_in_rule__DtCNumericMax__Group_4_0_1__023021 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__1_in_rule__DtCNumericMax__Group_4_0_1__023024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNumericMax__Group_4_0_1__0__Impl23052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__1__Impl_in_rule__DtCNumericMax__Group_4_0_1__123083 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__2_in_rule__DtCNumericMax__Group_4_0_1__123086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_0_1__1__Impl23114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__2__Impl_in_rule__DtCNumericMax__Group_4_0_1__223145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2_in_rule__DtCNumericMax__Group_4_0_1__2__Impl23172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__0__Impl_in_rule__DtCNumericMax__Group_4_1__023208 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__1_in_rule__DtCNumericMax__Group_4_1__023211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNumericMax__Group_4_1__0__Impl23239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__1__Impl_in_rule__DtCNumericMax__Group_4_1__123270 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__2_in_rule__DtCNumericMax__Group_4_1__123273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_1__1__Impl23301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__2__Impl_in_rule__DtCNumericMax__Group_4_1__223332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2_in_rule__DtCNumericMax__Group_4_1__2__Impl23359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__0__Impl_in_rule__DtCNumericMax__Group_4_2__023395 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__1_in_rule__DtCNumericMax__Group_4_2__023398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__0_in_rule__DtCNumericMax__Group_4_2__0__Impl23425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__1__Impl_in_rule__DtCNumericMax__Group_4_2__123456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNumericMax__Group_4_2__1__Impl23484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__0__Impl_in_rule__DtCNumericMax__Group_4_2_0__023519 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__1_in_rule__DtCNumericMax__Group_4_2_0__023522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNumericMax__Group_4_2_0__0__Impl23550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__1__Impl_in_rule__DtCNumericMax__Group_4_2_0__123581 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__2_in_rule__DtCNumericMax__Group_4_2_0__123584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_2_0__1__Impl23612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__2__Impl_in_rule__DtCNumericMax__Group_4_2_0__223643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__SeverityAssignment_4_2_0_2_in_rule__DtCNumericMax__Group_4_2_0__2__Impl23670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__0__Impl_in_rule__DtCNumericMin__Group__023706 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__1_in_rule__DtCNumericMin__Group__023709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__1__Impl_in_rule__DtCNumericMin__Group__123767 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__2_in_rule__DtCNumericMin__Group__123770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCNumericMin__Group__1__Impl23798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__2__Impl_in_rule__DtCNumericMin__Group__223829 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__3_in_rule__DtCNumericMin__Group__223832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCNumericMin__Group__2__Impl23860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__3__Impl_in_rule__DtCNumericMin__Group__323891 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__4_in_rule__DtCNumericMin__Group__323894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MinAssignment_3_in_rule__DtCNumericMin__Group__3__Impl23921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__4__Impl_in_rule__DtCNumericMin__Group__423951 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__5_in_rule__DtCNumericMin__Group__423954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__UnorderedGroup_4_in_rule__DtCNumericMin__Group__4__Impl23981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__5__Impl_in_rule__DtCNumericMin__Group__524012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCNumericMin__Group__5__Impl24040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__0__Impl_in_rule__DtCNumericMin__Group_4_0__024083 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__1_in_rule__DtCNumericMin__Group_4_0__024086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNumericMin__Group_4_0__0__Impl24114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__1__Impl_in_rule__DtCNumericMin__Group_4_0__124145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__0_in_rule__DtCNumericMin__Group_4_0__1__Impl24172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__0__Impl_in_rule__DtCNumericMin__Group_4_0_1__024207 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__1_in_rule__DtCNumericMin__Group_4_0_1__024210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNumericMin__Group_4_0_1__0__Impl24238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__1__Impl_in_rule__DtCNumericMin__Group_4_0_1__124269 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__2_in_rule__DtCNumericMin__Group_4_0_1__124272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_0_1__1__Impl24300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__2__Impl_in_rule__DtCNumericMin__Group_4_0_1__224331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2_in_rule__DtCNumericMin__Group_4_0_1__2__Impl24358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__0__Impl_in_rule__DtCNumericMin__Group_4_1__024394 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__1_in_rule__DtCNumericMin__Group_4_1__024397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNumericMin__Group_4_1__0__Impl24425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__1__Impl_in_rule__DtCNumericMin__Group_4_1__124456 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__2_in_rule__DtCNumericMin__Group_4_1__124459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_1__1__Impl24487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__2__Impl_in_rule__DtCNumericMin__Group_4_1__224518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2_in_rule__DtCNumericMin__Group_4_1__2__Impl24545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__0__Impl_in_rule__DtCNumericMin__Group_4_2__024581 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__1_in_rule__DtCNumericMin__Group_4_2__024584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__0_in_rule__DtCNumericMin__Group_4_2__0__Impl24611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__1__Impl_in_rule__DtCNumericMin__Group_4_2__124642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNumericMin__Group_4_2__1__Impl24670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__0__Impl_in_rule__DtCNumericMin__Group_4_2_0__024705 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__1_in_rule__DtCNumericMin__Group_4_2_0__024708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNumericMin__Group_4_2_0__0__Impl24736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__1__Impl_in_rule__DtCNumericMin__Group_4_2_0__124767 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__2_in_rule__DtCNumericMin__Group_4_2_0__124770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_2_0__1__Impl24798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__2__Impl_in_rule__DtCNumericMin__Group_4_2_0__224829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__SeverityAssignment_4_2_0_2_in_rule__DtCNumericMin__Group_4_2_0__2__Impl24856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__0__Impl_in_rule__DtCNotNull__Group__024892 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+    }
+
+    protected static class FollowSets011 {
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__1_in_rule__DtCNotNull__Group__024895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__1__Impl_in_rule__DtCNotNull__Group__124953 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__2_in_rule__DtCNotNull__Group__124956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCNotNull__Group__1__Impl24984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__2__Impl_in_rule__DtCNotNull__Group__225015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__UnorderedGroup_2_in_rule__DtCNotNull__Group__2__Impl25042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__0__Impl_in_rule__DtCNotNull__Group_2_0__025079 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__1_in_rule__DtCNotNull__Group_2_0__025082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNotNull__Group_2_0__0__Impl25110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__1__Impl_in_rule__DtCNotNull__Group_2_0__125141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__0_in_rule__DtCNotNull__Group_2_0__1__Impl25168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__0__Impl_in_rule__DtCNotNull__Group_2_0_1__025203 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__1_in_rule__DtCNotNull__Group_2_0_1__025206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNotNull__Group_2_0_1__0__Impl25234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__1__Impl_in_rule__DtCNotNull__Group_2_0_1__125265 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__2_in_rule__DtCNotNull__Group_2_0_1__125268 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_0_1__1__Impl25296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__2__Impl_in_rule__DtCNotNull__Group_2_0_1__225327 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__MsgCodeAssignment_2_0_1_2_in_rule__DtCNotNull__Group_2_0_1__2__Impl25354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__0__Impl_in_rule__DtCNotNull__Group_2_1__025390 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__1_in_rule__DtCNotNull__Group_2_1__025393 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNotNull__Group_2_1__0__Impl25421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__1__Impl_in_rule__DtCNotNull__Group_2_1__125452 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__2_in_rule__DtCNotNull__Group_2_1__125455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_1__1__Impl25483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__2__Impl_in_rule__DtCNotNull__Group_2_1__225514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2_in_rule__DtCNotNull__Group_2_1__2__Impl25541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__0__Impl_in_rule__DtCNotNull__Group_2_2__025577 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__1_in_rule__DtCNotNull__Group_2_2__025580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__0_in_rule__DtCNotNull__Group_2_2__0__Impl25607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__1__Impl_in_rule__DtCNotNull__Group_2_2__125638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNotNull__Group_2_2__1__Impl25666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__0__Impl_in_rule__DtCNotNull__Group_2_2_0__025701 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__1_in_rule__DtCNotNull__Group_2_2_0__025704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNotNull__Group_2_2_0__0__Impl25732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__1__Impl_in_rule__DtCNotNull__Group_2_2_0__125763 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__2_in_rule__DtCNotNull__Group_2_2_0__125766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_2_0__1__Impl25794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__2__Impl_in_rule__DtCNotNull__Group_2_2_0__225825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__SeverityAssignment_2_2_0_2_in_rule__DtCNotNull__Group_2_2_0__2__Impl25852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__0__Impl_in_rule__DtCNull__Group__025888 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__1_in_rule__DtCNull__Group__025891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__1__Impl_in_rule__DtCNull__Group__125949 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__2_in_rule__DtCNull__Group__125952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_rule__DtCNull__Group__1__Impl25980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__2__Impl_in_rule__DtCNull__Group__226011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__UnorderedGroup_2_in_rule__DtCNull__Group__2__Impl26038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__0__Impl_in_rule__DtCNull__Group_2_0__026075 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__1_in_rule__DtCNull__Group_2_0__026078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNull__Group_2_0__0__Impl26106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__1__Impl_in_rule__DtCNull__Group_2_0__126137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__0_in_rule__DtCNull__Group_2_0__1__Impl26164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__0__Impl_in_rule__DtCNull__Group_2_0_1__026199 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__1_in_rule__DtCNull__Group_2_0_1__026202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNull__Group_2_0_1__0__Impl26230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__1__Impl_in_rule__DtCNull__Group_2_0_1__126261 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__2_in_rule__DtCNull__Group_2_0_1__126264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_0_1__1__Impl26292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__2__Impl_in_rule__DtCNull__Group_2_0_1__226323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__MsgCodeAssignment_2_0_1_2_in_rule__DtCNull__Group_2_0_1__2__Impl26350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__0__Impl_in_rule__DtCNull__Group_2_1__026386 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__1_in_rule__DtCNull__Group_2_1__026389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNull__Group_2_1__0__Impl26417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__1__Impl_in_rule__DtCNull__Group_2_1__126448 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__2_in_rule__DtCNull__Group_2_1__126451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_1__1__Impl26479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__2__Impl_in_rule__DtCNull__Group_2_1__226510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__MsgI18nKeyAssignment_2_1_2_in_rule__DtCNull__Group_2_1__2__Impl26537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__0__Impl_in_rule__DtCNull__Group_2_2__026573 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__1_in_rule__DtCNull__Group_2_2__026576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__0_in_rule__DtCNull__Group_2_2__0__Impl26603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__1__Impl_in_rule__DtCNull__Group_2_2__126634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNull__Group_2_2__1__Impl26662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__0__Impl_in_rule__DtCNull__Group_2_2_0__026697 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__1_in_rule__DtCNull__Group_2_2_0__026700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNull__Group_2_2_0__0__Impl26728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__1__Impl_in_rule__DtCNull__Group_2_2_0__126759 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__2_in_rule__DtCNull__Group_2_2_0__126762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_2_0__1__Impl26790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__2__Impl_in_rule__DtCNull__Group_2_2_0__226821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__SeverityAssignment_2_2_0_2_in_rule__DtCNull__Group_2_2_0__2__Impl26848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__0__Impl_in_rule__DtCRegEx__Group__026884 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__1_in_rule__DtCRegEx__Group__026887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__1__Impl_in_rule__DtCRegEx__Group__126945 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__2_in_rule__DtCRegEx__Group__126948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_rule__DtCRegEx__Group__1__Impl26976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__2__Impl_in_rule__DtCRegEx__Group__227007 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__3_in_rule__DtCRegEx__Group__227010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCRegEx__Group__2__Impl27038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__3__Impl_in_rule__DtCRegEx__Group__327069 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__4_in_rule__DtCRegEx__Group__327072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__PatternAssignment_3_in_rule__DtCRegEx__Group__3__Impl27099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__4__Impl_in_rule__DtCRegEx__Group__427129 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__5_in_rule__DtCRegEx__Group__427132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__UnorderedGroup_4_in_rule__DtCRegEx__Group__4__Impl27159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__5__Impl_in_rule__DtCRegEx__Group__527190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCRegEx__Group__5__Impl27218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__0__Impl_in_rule__DtCRegEx__Group_4_0__027261 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__1_in_rule__DtCRegEx__Group_4_0__027264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCRegEx__Group_4_0__0__Impl27292 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets012 {
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__1__Impl_in_rule__DtCRegEx__Group_4_0__127323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__0_in_rule__DtCRegEx__Group_4_0__1__Impl27350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__0__Impl_in_rule__DtCRegEx__Group_4_0_1__027385 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__1_in_rule__DtCRegEx__Group_4_0_1__027388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCRegEx__Group_4_0_1__0__Impl27416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__1__Impl_in_rule__DtCRegEx__Group_4_0_1__127447 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__2_in_rule__DtCRegEx__Group_4_0_1__127450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_0_1__1__Impl27478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__2__Impl_in_rule__DtCRegEx__Group_4_0_1__227509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__MsgCodeAssignment_4_0_1_2_in_rule__DtCRegEx__Group_4_0_1__2__Impl27536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__0__Impl_in_rule__DtCRegEx__Group_4_1__027572 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__1_in_rule__DtCRegEx__Group_4_1__027575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCRegEx__Group_4_1__0__Impl27603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__1__Impl_in_rule__DtCRegEx__Group_4_1__127634 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__2_in_rule__DtCRegEx__Group_4_1__127637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_1__1__Impl27665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__2__Impl_in_rule__DtCRegEx__Group_4_1__227696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2_in_rule__DtCRegEx__Group_4_1__2__Impl27723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__0__Impl_in_rule__DtCRegEx__Group_4_2__027759 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__1_in_rule__DtCRegEx__Group_4_2__027762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__0_in_rule__DtCRegEx__Group_4_2__0__Impl27789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__1__Impl_in_rule__DtCRegEx__Group_4_2__127820 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCRegEx__Group_4_2__1__Impl27848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__0__Impl_in_rule__DtCRegEx__Group_4_2_0__027883 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__1_in_rule__DtCRegEx__Group_4_2_0__027886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCRegEx__Group_4_2_0__0__Impl27914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__1__Impl_in_rule__DtCRegEx__Group_4_2_0__127945 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__2_in_rule__DtCRegEx__Group_4_2_0__127948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_2_0__1__Impl27976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__2__Impl_in_rule__DtCRegEx__Group_4_2_0__228007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__SeverityAssignment_4_2_0_2_in_rule__DtCRegEx__Group_4_2_0__2__Impl28034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__0__Impl_in_rule__DtCSize__Group__028070 = new BitSet(new long[]{0x0000000000000000L,0x000007E782000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__1_in_rule__DtCSize__Group__028073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__1__Impl_in_rule__DtCSize__Group__128131 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__2_in_rule__DtCSize__Group__128134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__DtCSize__Group__1__Impl28162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__2__Impl_in_rule__DtCSize__Group__228193 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__3_in_rule__DtCSize__Group__228196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCSize__Group__2__Impl28224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__3__Impl_in_rule__DtCSize__Group__328255 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__4_in_rule__DtCSize__Group__328258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MinAssignment_3_in_rule__DtCSize__Group__3__Impl28285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__4__Impl_in_rule__DtCSize__Group__428315 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__5_in_rule__DtCSize__Group__428318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DtCSize__Group__4__Impl28346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__5__Impl_in_rule__DtCSize__Group__528377 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__6_in_rule__DtCSize__Group__528380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MaxAssignment_5_in_rule__DtCSize__Group__5__Impl28407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__6__Impl_in_rule__DtCSize__Group__628437 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__7_in_rule__DtCSize__Group__628440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__UnorderedGroup_6_in_rule__DtCSize__Group__6__Impl28467 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__7__Impl_in_rule__DtCSize__Group__728498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCSize__Group__7__Impl28526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__0__Impl_in_rule__DtCSize__Group_6_0__028573 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__1_in_rule__DtCSize__Group_6_0__028576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCSize__Group_6_0__0__Impl28604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__1__Impl_in_rule__DtCSize__Group_6_0__128635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__0_in_rule__DtCSize__Group_6_0__1__Impl28662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__0__Impl_in_rule__DtCSize__Group_6_0_1__028697 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__1_in_rule__DtCSize__Group_6_0_1__028700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCSize__Group_6_0_1__0__Impl28728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__1__Impl_in_rule__DtCSize__Group_6_0_1__128759 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__2_in_rule__DtCSize__Group_6_0_1__128762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_0_1__1__Impl28790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__2__Impl_in_rule__DtCSize__Group_6_0_1__228821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MsgCodeAssignment_6_0_1_2_in_rule__DtCSize__Group_6_0_1__2__Impl28848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__0__Impl_in_rule__DtCSize__Group_6_1__028884 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__1_in_rule__DtCSize__Group_6_1__028887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCSize__Group_6_1__0__Impl28915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__1__Impl_in_rule__DtCSize__Group_6_1__128946 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__2_in_rule__DtCSize__Group_6_1__128949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_1__1__Impl28977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__2__Impl_in_rule__DtCSize__Group_6_1__229008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MsgI18nKeyAssignment_6_1_2_in_rule__DtCSize__Group_6_1__2__Impl29035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__0__Impl_in_rule__DtCSize__Group_6_2__029071 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__1_in_rule__DtCSize__Group_6_2__029074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__0_in_rule__DtCSize__Group_6_2__0__Impl29101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__1__Impl_in_rule__DtCSize__Group_6_2__129132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCSize__Group_6_2__1__Impl29160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__0__Impl_in_rule__DtCSize__Group_6_2_0__029195 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__1_in_rule__DtCSize__Group_6_2_0__029198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCSize__Group_6_2_0__0__Impl29226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__1__Impl_in_rule__DtCSize__Group_6_2_0__129257 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__2_in_rule__DtCSize__Group_6_2_0__129260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_2_0__1__Impl29288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__2__Impl_in_rule__DtCSize__Group_6_2_0__229319 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__SeverityAssignment_6_2_0_2_in_rule__DtCSize__Group_6_2_0__2__Impl29346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__0__Impl_in_rule__Enum__Group__029382 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group__1_in_rule__Enum__Group__029385 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rule__Enum__Group__0__Impl29413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__1__Impl_in_rule__Enum__Group__129444 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__2_in_rule__Enum__Group__129447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__NameAssignment_1_in_rule__Enum__Group__1__Impl29474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__2__Impl_in_rule__Enum__Group__229504 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group__3_in_rule__Enum__Group__229507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__Enum__Group__2__Impl29535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__3__Impl_in_rule__Enum__Group__329566 = new BitSet(new long[]{0x0000000000000000L,0x0000000001010000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__4_in_rule__Enum__Group__329569 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__LiteralsAssignment_3_in_rule__Enum__Group__3__Impl29596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__4__Impl_in_rule__Enum__Group__429626 = new BitSet(new long[]{0x0000000000000000L,0x0000000001010000L});
+    }
+
+    protected static class FollowSets013 {
+        public static final BitSet FOLLOW_rule__Enum__Group__5_in_rule__Enum__Group__429629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__0_in_rule__Enum__Group__4__Impl29656 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__5__Impl_in_rule__Enum__Group__529687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__Enum__Group__5__Impl29715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__0__Impl_in_rule__Enum__Group_4__029758 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__1_in_rule__Enum__Group_4__029761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__Enum__Group_4__0__Impl29789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__1__Impl_in_rule__Enum__Group_4__129820 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__LiteralsAssignment_4_1_in_rule__Enum__Group_4__1__Impl29847 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__0__Impl_in_rule__EnumLiteral__Group__029881 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__1_in_rule__EnumLiteral__Group__029884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__NameAssignment_0_in_rule__EnumLiteral__Group__0__Impl29911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__1__Impl_in_rule__EnumLiteral__Group__129941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__UnorderedGroup_1_in_rule__EnumLiteral__Group__1__Impl29968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__0__Impl_in_rule__EnumLiteral__Group_1_0__030003 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__1_in_rule__EnumLiteral__Group_1_0__030006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__EnumLiteral__Group_1_0__0__Impl30034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__1__Impl_in_rule__EnumLiteral__Group_1_0__130065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__DefaultAssignment_1_0_1_in_rule__EnumLiteral__Group_1_0__1__Impl30092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__0__Impl_in_rule__EnumLiteral__Group_1_1__030127 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__1_in_rule__EnumLiteral__Group_1_1__030130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__NullAssignment_1_1_0_in_rule__EnumLiteral__Group_1_1__0__Impl30157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__1__Impl_in_rule__EnumLiteral__Group_1_1__130188 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__2_in_rule__EnumLiteral__Group_1_1__130191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EnumLiteral__Group_1_1__1__Impl30219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__2__Impl_in_rule__EnumLiteral__Group_1_1__230250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__0_in_rule__EnumLiteral__Group_1_1__2__Impl30277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__0__Impl_in_rule__EnumLiteral__Group_1_1_2__030314 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__1_in_rule__EnumLiteral__Group_1_1_2__030317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__EnumLiteral__Group_1_1_2__0__Impl30345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__1__Impl_in_rule__EnumLiteral__Group_1_1_2__130376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__ValueAssignment_1_1_2_1_in_rule__EnumLiteral__Group_1_1_2__1__Impl30403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__Group__0__Impl_in_rule__AnnotationDef__Group__030437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__AnnotationAssignment_0_in_rule__AnnotationDef__Group__0__Impl30464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__0__Impl_in_rule__AttributeMatchingConstraint__Group__030497 = new BitSet(new long[]{0x00021C4000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__1_in_rule__AttributeMatchingConstraint__Group__030500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__AttributeAssignment_0_in_rule__AttributeMatchingConstraint__Group__0__Impl30527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__1__Impl_in_rule__AttributeMatchingConstraint__Group__130557 = new BitSet(new long[]{0x0000000000000110L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__2_in_rule__AttributeMatchingConstraint__Group__130560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1_in_rule__AttributeMatchingConstraint__Group__1__Impl30587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__2__Impl_in_rule__AttributeMatchingConstraint__Group__230617 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__3_in_rule__AttributeMatchingConstraint__Group__230620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Alternatives_2_in_rule__AttributeMatchingConstraint__Group__2__Impl30647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__3__Impl_in_rule__AttributeMatchingConstraint__Group__330677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__AttributeMatchingConstraint__Group__3__Impl30706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__0__Impl_in_rule__KeyAndValue__Group__030747 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__1_in_rule__KeyAndValue__Group__030750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_rule__KeyAndValue__Group__0__Impl30778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__1__Impl_in_rule__KeyAndValue__Group__130809 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__2_in_rule__KeyAndValue__Group__130812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__KeyAndValue__Group__1__Impl30840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__2__Impl_in_rule__KeyAndValue__Group__230871 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__3_in_rule__KeyAndValue__Group__230874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__KeyAssignment_2_in_rule__KeyAndValue__Group__2__Impl30901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__3__Impl_in_rule__KeyAndValue__Group__330931 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__4_in_rule__KeyAndValue__Group__330934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_rule__KeyAndValue__Group__3__Impl30962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__4__Impl_in_rule__KeyAndValue__Group__430993 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__5_in_rule__KeyAndValue__Group__430996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__KeyAndValue__Group__4__Impl31024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__5__Impl_in_rule__KeyAndValue__Group__531055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__ValueAssignment_5_in_rule__KeyAndValue__Group__5__Impl31082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__0__Impl_in_rule__LQualifiedNameWithWildCard__Group__031124 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__1_in_rule__LQualifiedNameWithWildCard__Group__031127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__LQualifiedNameWithWildCard__Group__0__Impl31154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__1__Impl_in_rule__LQualifiedNameWithWildCard__Group__131183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__0_in_rule__LQualifiedNameWithWildCard__Group__1__Impl31210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__0__Impl_in_rule__LQualifiedNameWithWildCard__Group_1__031245 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__1_in_rule__LQualifiedNameWithWildCard__Group_1__031248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LQualifiedNameWithWildCard__Group_1__0__Impl31276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__1__Impl_in_rule__LQualifiedNameWithWildCard__Group_1__131307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__LQualifiedNameWithWildCard__Group_1__1__Impl31335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__0__Impl_in_rule__ValidIDWithKeywords__Group_5__031372 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__1_in_rule__ValidIDWithKeywords__Group_5__031375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__ValidIDWithKeywords__Group_5__0__Impl31403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__1__Impl_in_rule__ValidIDWithKeywords__Group_5__131434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_rule__ValidIDWithKeywords__Group_5__1__Impl31462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__0__Impl_in_rule__LInt__Group__031501 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__LInt__Group__1_in_rule__LInt__Group__031504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Alternatives_0_in_rule__LInt__Group__0__Impl31531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__1__Impl_in_rule__LInt__Group__131562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__LInt__Group__1__Impl31589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__0__Impl_in_rule__LDecimal__Group__031622 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__1_in_rule__LDecimal__Group__031625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_rule__LDecimal__Group__0__Impl31652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__1__Impl_in_rule__LDecimal__Group__131681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__0_in_rule__LDecimal__Group__1__Impl31708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__0__Impl_in_rule__LDecimal__Group_1__031743 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__1_in_rule__LDecimal__Group_1__031746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LDecimal__Group_1__0__Impl31774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__1__Impl_in_rule__LDecimal__Group_1__131805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__LDecimal__Group_1__1__Impl31832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0__Impl_in_rule__XAnnotation__Group__031865 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1_in_rule__XAnnotation__Group__031868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1__Impl_in_rule__XAnnotation__Group__131926 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2_in_rule__XAnnotation__Group__131929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__XAnnotation__Group__1__Impl31957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2__Impl_in_rule__XAnnotation__Group__231988 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3_in_rule__XAnnotation__Group__231991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__AnnotationTypeAssignment_2_in_rule__XAnnotation__Group__2__Impl32018 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets014 {
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3__Impl_in_rule__XAnnotation__Group__332048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0_in_rule__XAnnotation__Group__3__Impl32075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0__Impl_in_rule__XAnnotation__Group_3__032114 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1_in_rule__XAnnotation__Group_3__032117 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XAnnotation__Group_3__0__Impl32146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1__Impl_in_rule__XAnnotation__Group_3__132178 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2_in_rule__XAnnotation__Group_3__132181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Alternatives_3_1_in_rule__XAnnotation__Group_3__1__Impl32208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2__Impl_in_rule__XAnnotation__Group_3__232239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XAnnotation__Group_3__2__Impl32267 = 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__032304 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1_in_rule__XAnnotation__Group_3_1_0__032307 = 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__Impl32334 = 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__132364 = 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__Impl32391 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0__Impl_in_rule__XAnnotation__Group_3_1_0_1__032426 = 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__032429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotation__Group_3_1_0_1__0__Impl32457 = 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__132488 = 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__Impl32515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0__Impl_in_rule__XAnnotationElementValuePair__Group__032549 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1_in_rule__XAnnotationElementValuePair__Group__032552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0_in_rule__XAnnotationElementValuePair__Group__0__Impl32579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1__Impl_in_rule__XAnnotationElementValuePair__Group__132609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ValueAssignment_1_in_rule__XAnnotationElementValuePair__Group__1__Impl32636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0__032670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0_in_rule__XAnnotationElementValuePair__Group_0__0__Impl32697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__032729 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1_in_rule__XAnnotationElementValuePair__Group_0_0__032732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ElementAssignment_0_0_0_in_rule__XAnnotationElementValuePair__Group_0_0__0__Impl32759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__132789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__XAnnotationElementValuePair__Group_0_0__1__Impl32817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__032852 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0__032855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl32882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__132912 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0__132915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl32942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__232973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl33001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__033038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl33065 = 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__033097 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__033100 = 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__133158 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__133161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl33189 = 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__233220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl33248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__033285 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__033288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl33315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__133345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl33372 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__033407 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__033410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl33438 = 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__133469 = 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__Impl33496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__033530 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1__033533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl33560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__133589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl33616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__033651 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__033654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__133712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl33741 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl33753 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__033790 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__033793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl33821 = 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__133852 = 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__Impl33879 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0__Impl_in_rule__XAnnotationElementValue__Group_0__033913 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1_in_rule__XAnnotationElementValue__Group_0__033916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0_in_rule__XAnnotationElementValue__Group_0__0__Impl33943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1__Impl_in_rule__XAnnotationElementValue__Group_0__133973 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2_in_rule__XAnnotationElementValue__Group_0__133976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0_in_rule__XAnnotationElementValue__Group_0__1__Impl34003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2__Impl_in_rule__XAnnotationElementValue__Group_0__234034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XAnnotationElementValue__Group_0__2__Impl34062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0__034099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0_in_rule__XAnnotationElementValue__Group_0_0__0__Impl34126 = 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__034158 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1_in_rule__XAnnotationElementValue__Group_0_0_0__034161 = 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__134219 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2_in_rule__XAnnotationElementValue__Group_0_0_0__134222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XAnnotationElementValue__Group_0_0_0__1__Impl34250 = 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__234281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XAnnotationElementValue__Group_0_0_0__2__Impl34309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1__034346 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1_in_rule__XAnnotationElementValue__Group_0_1__034349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValue__Group_0_1__0__Impl34376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1__134406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0_in_rule__XAnnotationElementValue__Group_0_1__1__Impl34433 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__034468 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1_in_rule__XAnnotationElementValue__Group_0_1_1__034471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotationElementValue__Group_0_1_1__0__Impl34499 = 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__134530 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets015 {
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1_in_rule__XAnnotationElementValue__Group_0_1_1__1__Impl34557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0__Impl_in_rule__XAssignment__Group_0__034591 = new BitSet(new long[]{0xF000000000000010L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1_in_rule__XAssignment__Group_0__034594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1__Impl_in_rule__XAssignment__Group_0__134652 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2_in_rule__XAssignment__Group_0__134655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_0_1_in_rule__XAssignment__Group_0__1__Impl34682 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2__Impl_in_rule__XAssignment__Group_0__234712 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3_in_rule__XAssignment__Group_0__234715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XAssignment__Group_0__2__Impl34742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3__Impl_in_rule__XAssignment__Group_0__334771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__ValueAssignment_0_3_in_rule__XAssignment__Group_0__3__Impl34798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0__Impl_in_rule__XAssignment__Group_1__034836 = new BitSet(new long[]{0x0000183E00000000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1_in_rule__XAssignment__Group_1__034839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_rule__XAssignment__Group_1__0__Impl34866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1__Impl_in_rule__XAssignment__Group_1__134895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0_in_rule__XAssignment__Group_1__1__Impl34922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0__Impl_in_rule__XAssignment__Group_1_1__034957 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1_in_rule__XAssignment__Group_1_1__034960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0_in_rule__XAssignment__Group_1_1__0__Impl34987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1__Impl_in_rule__XAssignment__Group_1_1__135017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__RightOperandAssignment_1_1_1_in_rule__XAssignment__Group_1_1__1__Impl35044 = 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__035078 = 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__Impl35105 = 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__035137 = new BitSet(new long[]{0x0000183E00000000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1_in_rule__XAssignment__Group_1_1_0_0__035140 = 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__135198 = 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__Impl35225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0__Impl_in_rule__OpMultiAssign__Group_5__035259 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1_in_rule__OpMultiAssign__Group_5__035262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpMultiAssign__Group_5__0__Impl35290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1__Impl_in_rule__OpMultiAssign__Group_5__135321 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2_in_rule__OpMultiAssign__Group_5__135324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpMultiAssign__Group_5__1__Impl35352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2__Impl_in_rule__OpMultiAssign__Group_5__235383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpMultiAssign__Group_5__2__Impl35411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0__Impl_in_rule__OpMultiAssign__Group_6__035448 = new BitSet(new long[]{0x00000C0000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1_in_rule__OpMultiAssign__Group_6__035451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpMultiAssign__Group_6__0__Impl35479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1__Impl_in_rule__OpMultiAssign__Group_6__135510 = new BitSet(new long[]{0x00000C0000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2_in_rule__OpMultiAssign__Group_6__135513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpMultiAssign__Group_6__1__Impl35542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2__Impl_in_rule__OpMultiAssign__Group_6__235575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpMultiAssign__Group_6__2__Impl35603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0__Impl_in_rule__XOrExpression__Group__035640 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1_in_rule__XOrExpression__Group__035643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__Group__0__Impl35670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1__Impl_in_rule__XOrExpression__Group__135699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0_in_rule__XOrExpression__Group__1__Impl35726 = new BitSet(new long[]{0x0000000000004002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0__Impl_in_rule__XOrExpression__Group_1__035761 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1_in_rule__XOrExpression__Group_1__035764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0_in_rule__XOrExpression__Group_1__0__Impl35791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1__Impl_in_rule__XOrExpression__Group_1__135821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__RightOperandAssignment_1_1_in_rule__XOrExpression__Group_1__1__Impl35848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0__Impl_in_rule__XOrExpression__Group_1_0__035882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0_in_rule__XOrExpression__Group_1_0__0__Impl35909 = 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__035941 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1_in_rule__XOrExpression__Group_1_0_0__035944 = 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__136002 = 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__Impl36029 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0__Impl_in_rule__XAndExpression__Group__036063 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1_in_rule__XAndExpression__Group__036066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__Group__0__Impl36093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1__Impl_in_rule__XAndExpression__Group__136122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0_in_rule__XAndExpression__Group__1__Impl36149 = new BitSet(new long[]{0x0000000000008002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0__Impl_in_rule__XAndExpression__Group_1__036184 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1_in_rule__XAndExpression__Group_1__036187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0_in_rule__XAndExpression__Group_1__0__Impl36214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1__Impl_in_rule__XAndExpression__Group_1__136244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__RightOperandAssignment_1_1_in_rule__XAndExpression__Group_1__1__Impl36271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0__Impl_in_rule__XAndExpression__Group_1_0__036305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0_in_rule__XAndExpression__Group_1_0__0__Impl36332 = 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__036364 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1_in_rule__XAndExpression__Group_1_0_0__036367 = 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__136425 = 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__Impl36452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0__Impl_in_rule__XEqualityExpression__Group__036486 = new BitSet(new long[]{0x000003C000000000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1_in_rule__XEqualityExpression__Group__036489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__Group__0__Impl36516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1__Impl_in_rule__XEqualityExpression__Group__136545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0_in_rule__XEqualityExpression__Group__1__Impl36572 = new BitSet(new long[]{0x000003C000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0__Impl_in_rule__XEqualityExpression__Group_1__036607 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1_in_rule__XEqualityExpression__Group_1__036610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0_in_rule__XEqualityExpression__Group_1__0__Impl36637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1__Impl_in_rule__XEqualityExpression__Group_1__136667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__RightOperandAssignment_1_1_in_rule__XEqualityExpression__Group_1__1__Impl36694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0__Impl_in_rule__XEqualityExpression__Group_1_0__036728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0_in_rule__XEqualityExpression__Group_1_0__0__Impl36755 = 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__036787 = new BitSet(new long[]{0x000003C000000000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1_in_rule__XEqualityExpression__Group_1_0_0__036790 = 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__136848 = 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__Impl36875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0__Impl_in_rule__XRelationalExpression__Group__036909 = new BitSet(new long[]{0x00001C0000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1_in_rule__XRelationalExpression__Group__036912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__Group__0__Impl36939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1__Impl_in_rule__XRelationalExpression__Group__136968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Alternatives_1_in_rule__XRelationalExpression__Group__1__Impl36995 = new BitSet(new long[]{0x00001C0000000002L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_0__037030 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1_in_rule__XRelationalExpression__Group_1_0__037033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0_in_rule__XRelationalExpression__Group_1_0__0__Impl37060 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1__Impl_in_rule__XRelationalExpression__Group_1_0__137090 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets016 {
+        public static final BitSet FOLLOW_rule__XRelationalExpression__TypeAssignment_1_0_1_in_rule__XRelationalExpression__Group_1_0__1__Impl37117 = 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__037151 = 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__Impl37178 = 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__037210 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1_in_rule__XRelationalExpression__Group_1_0_0_0__037213 = 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__137271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__XRelationalExpression__Group_1_0_0_0__1__Impl37299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0__Impl_in_rule__XRelationalExpression__Group_1_1__037334 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1_in_rule__XRelationalExpression__Group_1_1__037337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0_in_rule__XRelationalExpression__Group_1_1__0__Impl37364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1__Impl_in_rule__XRelationalExpression__Group_1_1__137394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__RightOperandAssignment_1_1_1_in_rule__XRelationalExpression__Group_1_1__1__Impl37421 = 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__037455 = 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__Impl37482 = 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__037514 = new BitSet(new long[]{0x00001C0000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1_in_rule__XRelationalExpression__Group_1_1_0_0__037517 = 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__137575 = 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__Impl37602 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0__Impl_in_rule__OpCompare__Group_1__037636 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1_in_rule__OpCompare__Group_1__037639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpCompare__Group_1__0__Impl37667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1__Impl_in_rule__OpCompare__Group_1__137698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpCompare__Group_1__1__Impl37726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0__Impl_in_rule__XOtherOperatorExpression__Group__037761 = new BitSet(new long[]{0x0007F80000000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1_in_rule__XOtherOperatorExpression__Group__037764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__Group__0__Impl37791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1__Impl_in_rule__XOtherOperatorExpression__Group__137820 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0_in_rule__XOtherOperatorExpression__Group__1__Impl37847 = new BitSet(new long[]{0x0007F80000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0__Impl_in_rule__XOtherOperatorExpression__Group_1__037882 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1_in_rule__XOtherOperatorExpression__Group_1__037885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0_in_rule__XOtherOperatorExpression__Group_1__0__Impl37912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1__Impl_in_rule__XOtherOperatorExpression__Group_1__137942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__RightOperandAssignment_1_1_in_rule__XOtherOperatorExpression__Group_1__1__Impl37969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0__038003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0_in_rule__XOtherOperatorExpression__Group_1_0__0__Impl38030 = 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__038062 = new BitSet(new long[]{0x0007F80000000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1_in_rule__XOtherOperatorExpression__Group_1_0_0__038065 = 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__138123 = 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__Impl38150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0__Impl_in_rule__OpOther__Group_2__038184 = new BitSet(new long[]{0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1_in_rule__OpOther__Group_2__038187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_2__0__Impl38215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1__Impl_in_rule__OpOther__Group_2__138246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__OpOther__Group_2__1__Impl38274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0__Impl_in_rule__OpOther__Group_5__038309 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1_in_rule__OpOther__Group_5__038312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5__0__Impl38340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1__Impl_in_rule__OpOther__Group_5__138371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_5_1_in_rule__OpOther__Group_5__1__Impl38398 = 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__038432 = 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__Impl38459 = 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__038491 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1_in_rule__OpOther__Group_5_1_0_0__038494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5_1_0_0__0__Impl38522 = 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__138553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5_1_0_0__1__Impl38581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0__Impl_in_rule__OpOther__Group_6__038616 = new BitSet(new long[]{0x0001100000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1_in_rule__OpOther__Group_6__038619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6__0__Impl38647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1__Impl_in_rule__OpOther__Group_6__138678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_6_1_in_rule__OpOther__Group_6__1__Impl38705 = 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__038739 = 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__Impl38766 = 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__038798 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1_in_rule__OpOther__Group_6_1_0_0__038801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6_1_0_0__0__Impl38829 = 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__138860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6_1_0_0__1__Impl38888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0__Impl_in_rule__XAdditiveExpression__Group__038923 = new BitSet(new long[]{0x0000000180000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1_in_rule__XAdditiveExpression__Group__038926 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_rule__XAdditiveExpression__Group__0__Impl38953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1__Impl_in_rule__XAdditiveExpression__Group__138982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0_in_rule__XAdditiveExpression__Group__1__Impl39009 = new BitSet(new long[]{0x0000000180000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0__Impl_in_rule__XAdditiveExpression__Group_1__039044 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1_in_rule__XAdditiveExpression__Group_1__039047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0_in_rule__XAdditiveExpression__Group_1__0__Impl39074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1__Impl_in_rule__XAdditiveExpression__Group_1__139104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__RightOperandAssignment_1_1_in_rule__XAdditiveExpression__Group_1__1__Impl39131 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0__039165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0_in_rule__XAdditiveExpression__Group_1_0__0__Impl39192 = 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__039224 = new BitSet(new long[]{0x0000000180000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1_in_rule__XAdditiveExpression__Group_1_0_0__039227 = 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__139285 = 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__Impl39312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0__Impl_in_rule__XMultiplicativeExpression__Group__039346 = new BitSet(new long[]{0x0078000000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1_in_rule__XMultiplicativeExpression__Group__039349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XMultiplicativeExpression__Group__0__Impl39376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1__Impl_in_rule__XMultiplicativeExpression__Group__139405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0_in_rule__XMultiplicativeExpression__Group__1__Impl39432 = new BitSet(new long[]{0x0078000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0__Impl_in_rule__XMultiplicativeExpression__Group_1__039467 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1_in_rule__XMultiplicativeExpression__Group_1__039470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0_in_rule__XMultiplicativeExpression__Group_1__0__Impl39497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1__Impl_in_rule__XMultiplicativeExpression__Group_1__139527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__RightOperandAssignment_1_1_in_rule__XMultiplicativeExpression__Group_1__1__Impl39554 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0__039588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0_in_rule__XMultiplicativeExpression__Group_1_0__0__Impl39615 = 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__039647 = new BitSet(new long[]{0x0078000000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1_in_rule__XMultiplicativeExpression__Group_1_0_0__039650 = 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__139708 = 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__Impl39735 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets017 {
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0__Impl_in_rule__XUnaryOperation__Group_0__039769 = new BitSet(new long[]{0x0080000180000000L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1_in_rule__XUnaryOperation__Group_0__039772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1__Impl_in_rule__XUnaryOperation__Group_0__139830 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2_in_rule__XUnaryOperation__Group_0__139833 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__FeatureAssignment_0_1_in_rule__XUnaryOperation__Group_0__1__Impl39860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2__Impl_in_rule__XUnaryOperation__Group_0__239890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__OperandAssignment_0_2_in_rule__XUnaryOperation__Group_0__2__Impl39917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0__Impl_in_rule__XCastedExpression__Group__039953 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1_in_rule__XCastedExpression__Group__039956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_rule__XCastedExpression__Group__0__Impl39983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1__Impl_in_rule__XCastedExpression__Group__140012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0_in_rule__XCastedExpression__Group__1__Impl40039 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0__Impl_in_rule__XCastedExpression__Group_1__040074 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1_in_rule__XCastedExpression__Group_1__040077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0_in_rule__XCastedExpression__Group_1__0__Impl40104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1__Impl_in_rule__XCastedExpression__Group_1__140134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__TypeAssignment_1_1_in_rule__XCastedExpression__Group_1__1__Impl40161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0__Impl_in_rule__XCastedExpression__Group_1_0__040195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0_in_rule__XCastedExpression__Group_1_0__0__Impl40222 = 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__040254 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1_in_rule__XCastedExpression__Group_1_0_0__040257 = 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__140315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_rule__XCastedExpression__Group_1_0_0__1__Impl40343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0__Impl_in_rule__XPostfixOperation__Group__040378 = new BitSet(new long[]{0x0300000000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1_in_rule__XPostfixOperation__Group__040381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_rule__XPostfixOperation__Group__0__Impl40408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1__Impl_in_rule__XPostfixOperation__Group__140437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0_in_rule__XPostfixOperation__Group__1__Impl40464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0__Impl_in_rule__XPostfixOperation__Group_1__040499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0_in_rule__XPostfixOperation__Group_1__0__Impl40526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0__Impl_in_rule__XPostfixOperation__Group_1_0__040558 = new BitSet(new long[]{0x0300000000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1_in_rule__XPostfixOperation__Group_1_0__040561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1__Impl_in_rule__XPostfixOperation__Group_1_0__140619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__FeatureAssignment_1_0_1_in_rule__XPostfixOperation__Group_1_0__1__Impl40646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0__Impl_in_rule__XMemberFeatureCall__Group__040680 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1_in_rule__XMemberFeatureCall__Group__040683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_rule__XMemberFeatureCall__Group__0__Impl40710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1__Impl_in_rule__XMemberFeatureCall__Group__140739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_in_rule__XMemberFeatureCall__Group__1__Impl40766 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0__040801 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1_in_rule__XMemberFeatureCall__Group_1_0__040804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_0__0__Impl40831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0__140861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ValueAssignment_1_0_1_in_rule__XMemberFeatureCall__Group_1_0__1__Impl40888 = 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__040922 = 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__Impl40949 = 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__040981 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1_in_rule__XMemberFeatureCall__Group_1_0_0_0__040984 = 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__141042 = new BitSet(new long[]{0xF000000000000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2_in_rule__XMemberFeatureCall__Group_1_0_0_0__141045 = 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__Impl41072 = 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__241102 = 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__241105 = 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__Impl41132 = 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__341162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl41189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1__041226 = new BitSet(new long[]{0xF000100000000010L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1_in_rule__XMemberFeatureCall__Group_1_1__041229 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0_in_rule__XMemberFeatureCall__Group_1_1__0__Impl41256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1__141286 = new BitSet(new long[]{0xF000100000000010L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2_in_rule__XMemberFeatureCall__Group_1_1__141289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1__1__Impl41316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1__241347 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3_in_rule__XMemberFeatureCall__Group_1_1__241350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_1_2_in_rule__XMemberFeatureCall__Group_1_1__2__Impl41377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1__341407 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4_in_rule__XMemberFeatureCall__Group_1_1__341410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0_in_rule__XMemberFeatureCall__Group_1_1__3__Impl41437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4__Impl_in_rule__XMemberFeatureCall__Group_1_1__441468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4_in_rule__XMemberFeatureCall__Group_1_1__4__Impl41495 = 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__041536 = 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__Impl41563 = 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__041595 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1_in_rule__XMemberFeatureCall__Group_1_1_0_0__041598 = 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__141656 = 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__Impl41683 = 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__041717 = new BitSet(new long[]{0x0001000000000010L,0x0000000000402000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_1__041720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__XMemberFeatureCall__Group_1_1_1__0__Impl41748 = 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__141779 = new BitSet(new long[]{0x0000080000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2_in_rule__XMemberFeatureCall__Group_1_1_1__141782 = 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__Impl41809 = 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__241839 = new BitSet(new long[]{0x0000080000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3_in_rule__XMemberFeatureCall__Group_1_1_1__241842 = 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__Impl41869 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__341900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Group_1_1_1__3__Impl41928 = 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__041967 = new BitSet(new long[]{0x0001000000000010L,0x0000000000402000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1_in_rule__XMemberFeatureCall__Group_1_1_1_2__041970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl41998 = 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__142029 = 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__Impl42056 = 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__042090 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004C08003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1_in_rule__XMemberFeatureCall__Group_1_1_3__042093 = 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__Impl42120 = 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__142150 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004C08003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2_in_rule__XMemberFeatureCall__Group_1_1_3__142153 = 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__Impl42180 = 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__242211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XMemberFeatureCall__Group_1_1_3__2__Impl42239 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets018 {
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__042276 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__042279 = 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__Impl42306 = 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__142336 = new BitSet(new long[]{0x0000000000000002L});
+        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__Impl42363 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        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__042398 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        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__042401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl42429 = 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__142460 = 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__Impl42487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0__Impl_in_rule__XSetLiteral__Group__042521 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1_in_rule__XSetLiteral__Group__042524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1__Impl_in_rule__XSetLiteral__Group__142582 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2_in_rule__XSetLiteral__Group__142585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XSetLiteral__Group__1__Impl42613 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2__Impl_in_rule__XSetLiteral__Group__242644 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3_in_rule__XSetLiteral__Group__242647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__XSetLiteral__Group__2__Impl42675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3__Impl_in_rule__XSetLiteral__Group__342706 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4_in_rule__XSetLiteral__Group__342709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0_in_rule__XSetLiteral__Group__3__Impl42736 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4__Impl_in_rule__XSetLiteral__Group__442767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__XSetLiteral__Group__4__Impl42795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0__Impl_in_rule__XSetLiteral__Group_3__042836 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1_in_rule__XSetLiteral__Group_3__042839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_0_in_rule__XSetLiteral__Group_3__0__Impl42866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1__Impl_in_rule__XSetLiteral__Group_3__142896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0_in_rule__XSetLiteral__Group_3__1__Impl42923 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0__Impl_in_rule__XSetLiteral__Group_3_1__042958 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1_in_rule__XSetLiteral__Group_3_1__042961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XSetLiteral__Group_3_1__0__Impl42989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1__Impl_in_rule__XSetLiteral__Group_3_1__143020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_1_1_in_rule__XSetLiteral__Group_3_1__1__Impl43047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0__Impl_in_rule__XListLiteral__Group__043081 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1_in_rule__XListLiteral__Group__043084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1__Impl_in_rule__XListLiteral__Group__143142 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__2_in_rule__XListLiteral__Group__143145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XListLiteral__Group__1__Impl43173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__2__Impl_in_rule__XListLiteral__Group__243204 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__3_in_rule__XListLiteral__Group__243207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XListLiteral__Group__2__Impl43235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__3__Impl_in_rule__XListLiteral__Group__343266 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__4_in_rule__XListLiteral__Group__343269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0_in_rule__XListLiteral__Group__3__Impl43296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__4__Impl_in_rule__XListLiteral__Group__443327 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XListLiteral__Group__4__Impl43355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0__Impl_in_rule__XListLiteral__Group_3__043396 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1_in_rule__XListLiteral__Group_3__043399 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_0_in_rule__XListLiteral__Group_3__0__Impl43426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1__Impl_in_rule__XListLiteral__Group_3__143456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0_in_rule__XListLiteral__Group_3__1__Impl43483 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0__Impl_in_rule__XListLiteral__Group_3_1__043518 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1_in_rule__XListLiteral__Group_3_1__043521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XListLiteral__Group_3_1__0__Impl43549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1__Impl_in_rule__XListLiteral__Group_3_1__143580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_1_1_in_rule__XListLiteral__Group_3_1__1__Impl43607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__0__Impl_in_rule__XClosure__Group__043641 = new BitSet(new long[]{0xF8811001C00001F0L,0xF8A5000004408003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XClosure__Group__1_in_rule__XClosure__Group__043644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0__0_in_rule__XClosure__Group__0__Impl43671 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__1__Impl_in_rule__XClosure__Group__143701 = new BitSet(new long[]{0xF8811001C00001F0L,0xF8A5000004408003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XClosure__Group__2_in_rule__XClosure__Group__143704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1__0_in_rule__XClosure__Group__1__Impl43731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__2__Impl_in_rule__XClosure__Group__243762 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__3_in_rule__XClosure__Group__243765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__ExpressionAssignment_2_in_rule__XClosure__Group__2__Impl43792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__3__Impl_in_rule__XClosure__Group__343822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XClosure__Group__3__Impl43850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0__0__Impl_in_rule__XClosure__Group_0__043889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0_in_rule__XClosure__Group_0__0__Impl43916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0__Impl_in_rule__XClosure__Group_0_0__043948 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1_in_rule__XClosure__Group_0_0__043951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1__Impl_in_rule__XClosure__Group_0_0__144009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XClosure__Group_0_0__1__Impl44037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1__0__Impl_in_rule__XClosure__Group_1__044072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0_in_rule__XClosure__Group_1__0__Impl44099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0__Impl_in_rule__XClosure__Group_1_0__044131 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1_in_rule__XClosure__Group_1_0__044134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__0_in_rule__XClosure__Group_1_0__0__Impl44161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1__Impl_in_rule__XClosure__Group_1_0__144192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__ExplicitSyntaxAssignment_1_0_1_in_rule__XClosure__Group_1_0__1__Impl44219 = 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__044253 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__1_in_rule__XClosure__Group_1_0_0__044256 = 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__Impl44283 = 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__144313 = 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__Impl44340 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__0__Impl_in_rule__XClosure__Group_1_0_0_1__044375 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__1_in_rule__XClosure__Group_1_0_0_1__044378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XClosure__Group_1_0_0_1__0__Impl44406 = 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__144437 = 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__Impl44464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0__Impl_in_rule__XExpressionInClosure__Group__044498 = new BitSet(new long[]{0xF8811001C00001F0L,0xF8A5000004408003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1_in_rule__XExpressionInClosure__Group__044501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1__Impl_in_rule__XExpressionInClosure__Group__144559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0_in_rule__XExpressionInClosure__Group__1__Impl44586 = new BitSet(new long[]{0xF8801001C00001F2L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0__Impl_in_rule__XExpressionInClosure__Group_1__044621 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1_in_rule__XExpressionInClosure__Group_1__044624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__ExpressionsAssignment_1_0_in_rule__XExpressionInClosure__Group_1__0__Impl44651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1__Impl_in_rule__XExpressionInClosure__Group_1__144681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XExpressionInClosure__Group_1__1__Impl44710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0__Impl_in_rule__XShortClosure__Group__044747 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+    }
+
+    protected static class FollowSets019 {
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__1_in_rule__XShortClosure__Group__044750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0_in_rule__XShortClosure__Group__0__Impl44777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__1__Impl_in_rule__XShortClosure__Group__144807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__ExpressionAssignment_1_in_rule__XShortClosure__Group__1__Impl44834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0__Impl_in_rule__XShortClosure__Group_0__044868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0_in_rule__XShortClosure__Group_0__0__Impl44895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0__Impl_in_rule__XShortClosure__Group_0_0__044927 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1_in_rule__XShortClosure__Group_0_0__044930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1__Impl_in_rule__XShortClosure__Group_0_0__144988 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2_in_rule__XShortClosure__Group_0_0__144991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__0_in_rule__XShortClosure__Group_0_0__1__Impl45018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2__Impl_in_rule__XShortClosure__Group_0_0__245049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2_in_rule__XShortClosure__Group_0_0__2__Impl45076 = 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__045112 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__1_in_rule__XShortClosure__Group_0_0_1__045115 = 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__Impl45142 = 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__145172 = 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__Impl45199 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__0__Impl_in_rule__XShortClosure__Group_0_0_1_1__045234 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__1_in_rule__XShortClosure__Group_0_0_1_1__045237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XShortClosure__Group_0_0_1_1__0__Impl45265 = 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__145296 = 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__Impl45323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0__Impl_in_rule__XParenthesizedExpression__Group__045357 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1_in_rule__XParenthesizedExpression__Group__045360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XParenthesizedExpression__Group__0__Impl45388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1__Impl_in_rule__XParenthesizedExpression__Group__145419 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2_in_rule__XParenthesizedExpression__Group__145422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XParenthesizedExpression__Group__1__Impl45449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2__Impl_in_rule__XParenthesizedExpression__Group__245478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XParenthesizedExpression__Group__2__Impl45506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0__Impl_in_rule__XIfExpression__Group__045543 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__1_in_rule__XIfExpression__Group__045546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__1__Impl_in_rule__XIfExpression__Group__145604 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__2_in_rule__XIfExpression__Group__145607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__XIfExpression__Group__1__Impl45635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__2__Impl_in_rule__XIfExpression__Group__245666 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__3_in_rule__XIfExpression__Group__245669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XIfExpression__Group__2__Impl45697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__3__Impl_in_rule__XIfExpression__Group__345728 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__4_in_rule__XIfExpression__Group__345731 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__IfAssignment_3_in_rule__XIfExpression__Group__3__Impl45758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__4__Impl_in_rule__XIfExpression__Group__445788 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__5_in_rule__XIfExpression__Group__445791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XIfExpression__Group__4__Impl45819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__5__Impl_in_rule__XIfExpression__Group__545850 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__6_in_rule__XIfExpression__Group__545853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__ThenAssignment_5_in_rule__XIfExpression__Group__5__Impl45880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__6__Impl_in_rule__XIfExpression__Group__645910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0_in_rule__XIfExpression__Group__6__Impl45937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0__Impl_in_rule__XIfExpression__Group_6__045982 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1_in_rule__XIfExpression__Group_6__045985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__XIfExpression__Group_6__0__Impl46014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1__Impl_in_rule__XIfExpression__Group_6__146046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__ElseAssignment_6_1_in_rule__XIfExpression__Group_6__1__Impl46073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0__Impl_in_rule__XSwitchExpression__Group__046107 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1_in_rule__XSwitchExpression__Group__046110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1__Impl_in_rule__XSwitchExpression__Group__146168 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2_in_rule__XSwitchExpression__Group__146171 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_rule__XSwitchExpression__Group__1__Impl46199 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2__Impl_in_rule__XSwitchExpression__Group__246230 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3_in_rule__XSwitchExpression__Group__246233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Alternatives_2_in_rule__XSwitchExpression__Group__2__Impl46260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3__Impl_in_rule__XSwitchExpression__Group__346290 = new BitSet(new long[]{0x0001000000000010L,0x0702000000410000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4_in_rule__XSwitchExpression__Group__346293 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__XSwitchExpression__Group__3__Impl46321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4__Impl_in_rule__XSwitchExpression__Group__446352 = new BitSet(new long[]{0x0001000000000010L,0x0702000000410000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5_in_rule__XSwitchExpression__Group__446355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__CasesAssignment_4_in_rule__XSwitchExpression__Group__4__Impl46382 = new BitSet(new long[]{0x0001000000000012L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5__Impl_in_rule__XSwitchExpression__Group__546413 = new BitSet(new long[]{0x0001000000000010L,0x0702000000410000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6_in_rule__XSwitchExpression__Group__546416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0_in_rule__XSwitchExpression__Group__5__Impl46443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6__Impl_in_rule__XSwitchExpression__Group__646474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__XSwitchExpression__Group__6__Impl46502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0__Impl_in_rule__XSwitchExpression__Group_2_0__046547 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1_in_rule__XSwitchExpression__Group_2_0__046550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0__0_in_rule__XSwitchExpression__Group_2_0__0__Impl46577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1__Impl_in_rule__XSwitchExpression__Group_2_0__146607 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2_in_rule__XSwitchExpression__Group_2_0__146610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_0_1_in_rule__XSwitchExpression__Group_2_0__1__Impl46637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2__Impl_in_rule__XSwitchExpression__Group_2_0__246667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XSwitchExpression__Group_2_0__2__Impl46695 = 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__046732 = 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__Impl46759 = 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__046791 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__1_in_rule__XSwitchExpression__Group_2_0_0_0__046794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XSwitchExpression__Group_2_0_0_0__0__Impl46822 = 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__146853 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__2_in_rule__XSwitchExpression__Group_2_0_0_0__146856 = 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__Impl46883 = 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__246913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XSwitchExpression__Group_2_0_0_0__2__Impl46941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0__Impl_in_rule__XSwitchExpression__Group_2_1__046978 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1_in_rule__XSwitchExpression__Group_2_1__046981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0__0_in_rule__XSwitchExpression__Group_2_1__0__Impl47008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1__Impl_in_rule__XSwitchExpression__Group_2_1__147039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_1_1_in_rule__XSwitchExpression__Group_2_1__1__Impl47066 = 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__047100 = 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__Impl47127 = 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__047159 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+    }
+
+    protected static class FollowSets020 {
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1_in_rule__XSwitchExpression__Group_2_1_0_0__047162 = 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__Impl47189 = 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__147219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XSwitchExpression__Group_2_1_0_0__1__Impl47247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0__Impl_in_rule__XSwitchExpression__Group_5__047282 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1_in_rule__XSwitchExpression__Group_5__047285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__XSwitchExpression__Group_5__0__Impl47313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1__Impl_in_rule__XSwitchExpression__Group_5__147344 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2_in_rule__XSwitchExpression__Group_5__147347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XSwitchExpression__Group_5__1__Impl47375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2__Impl_in_rule__XSwitchExpression__Group_5__247406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__DefaultAssignment_5_2_in_rule__XSwitchExpression__Group_5__2__Impl47433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0__Impl_in_rule__XCasePart__Group__047469 = new BitSet(new long[]{0x0001000000000010L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__1_in_rule__XCasePart__Group__047472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__1__Impl_in_rule__XCasePart__Group__147530 = new BitSet(new long[]{0x0001000000000010L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__2_in_rule__XCasePart__Group__147533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__TypeGuardAssignment_1_in_rule__XCasePart__Group__1__Impl47560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__2__Impl_in_rule__XCasePart__Group__247591 = new BitSet(new long[]{0x0001000000000010L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__3_in_rule__XCasePart__Group__247594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0_in_rule__XCasePart__Group__2__Impl47621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__3__Impl_in_rule__XCasePart__Group__347652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Alternatives_3_in_rule__XCasePart__Group__3__Impl47679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0__Impl_in_rule__XCasePart__Group_2__047717 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1_in_rule__XCasePart__Group_2__047720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XCasePart__Group_2__0__Impl47748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1__Impl_in_rule__XCasePart__Group_2__147779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__CaseAssignment_2_1_in_rule__XCasePart__Group_2__1__Impl47806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0__Impl_in_rule__XCasePart__Group_3_0__047840 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1_in_rule__XCasePart__Group_3_0__047843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XCasePart__Group_3_0__0__Impl47871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1__Impl_in_rule__XCasePart__Group_3_0__147902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__ThenAssignment_3_0_1_in_rule__XCasePart__Group_3_0__1__Impl47929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0__Impl_in_rule__XForLoopExpression__Group__047963 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1_in_rule__XForLoopExpression__Group__047966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0_in_rule__XForLoopExpression__Group__0__Impl47993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1__Impl_in_rule__XForLoopExpression__Group__148023 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2_in_rule__XForLoopExpression__Group__148026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__ForExpressionAssignment_1_in_rule__XForLoopExpression__Group__1__Impl48053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2__Impl_in_rule__XForLoopExpression__Group__248083 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3_in_rule__XForLoopExpression__Group__248086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XForLoopExpression__Group__2__Impl48114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3__Impl_in_rule__XForLoopExpression__Group__348145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__EachExpressionAssignment_3_in_rule__XForLoopExpression__Group__3__Impl48172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0__Impl_in_rule__XForLoopExpression__Group_0__048210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0_in_rule__XForLoopExpression__Group_0__0__Impl48237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0__Impl_in_rule__XForLoopExpression__Group_0_0__048269 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1_in_rule__XForLoopExpression__Group_0_0__048272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1__Impl_in_rule__XForLoopExpression__Group_0_0__148330 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2_in_rule__XForLoopExpression__Group_0_0__148333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XForLoopExpression__Group_0_0__1__Impl48361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2__Impl_in_rule__XForLoopExpression__Group_0_0__248392 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3_in_rule__XForLoopExpression__Group_0_0__248395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XForLoopExpression__Group_0_0__2__Impl48423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3__Impl_in_rule__XForLoopExpression__Group_0_0__348454 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4_in_rule__XForLoopExpression__Group_0_0__348457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__DeclaredParamAssignment_0_0_3_in_rule__XForLoopExpression__Group_0_0__3__Impl48484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4__Impl_in_rule__XForLoopExpression__Group_0_0__448514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XForLoopExpression__Group_0_0__4__Impl48542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0__Impl_in_rule__XBasicForLoopExpression__Group__048583 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1_in_rule__XBasicForLoopExpression__Group__048586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1__Impl_in_rule__XBasicForLoopExpression__Group__148644 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2_in_rule__XBasicForLoopExpression__Group__148647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XBasicForLoopExpression__Group__1__Impl48675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2__Impl_in_rule__XBasicForLoopExpression__Group__248706 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3_in_rule__XBasicForLoopExpression__Group__248709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XBasicForLoopExpression__Group__2__Impl48737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3__Impl_in_rule__XBasicForLoopExpression__Group__348768 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4_in_rule__XBasicForLoopExpression__Group__348771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0_in_rule__XBasicForLoopExpression__Group__3__Impl48798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4__Impl_in_rule__XBasicForLoopExpression__Group__448829 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5_in_rule__XBasicForLoopExpression__Group__448832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XBasicForLoopExpression__Group__4__Impl48860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5__Impl_in_rule__XBasicForLoopExpression__Group__548891 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6_in_rule__XBasicForLoopExpression__Group__548894 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__ExpressionAssignment_5_in_rule__XBasicForLoopExpression__Group__5__Impl48921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6__Impl_in_rule__XBasicForLoopExpression__Group__648952 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7_in_rule__XBasicForLoopExpression__Group__648955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XBasicForLoopExpression__Group__6__Impl48983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7__Impl_in_rule__XBasicForLoopExpression__Group__749014 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8_in_rule__XBasicForLoopExpression__Group__749017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0_in_rule__XBasicForLoopExpression__Group__7__Impl49044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8__Impl_in_rule__XBasicForLoopExpression__Group__849075 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9_in_rule__XBasicForLoopExpression__Group__849078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XBasicForLoopExpression__Group__8__Impl49106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9__Impl_in_rule__XBasicForLoopExpression__Group__949137 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__EachExpressionAssignment_9_in_rule__XBasicForLoopExpression__Group__9__Impl49164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0__Impl_in_rule__XBasicForLoopExpression__Group_3__049214 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1_in_rule__XBasicForLoopExpression__Group_3__049217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0_in_rule__XBasicForLoopExpression__Group_3__0__Impl49244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1__Impl_in_rule__XBasicForLoopExpression__Group_3__149274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0_in_rule__XBasicForLoopExpression__Group_3__1__Impl49301 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0__Impl_in_rule__XBasicForLoopExpression__Group_3_1__049336 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1_in_rule__XBasicForLoopExpression__Group_3_1__049339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XBasicForLoopExpression__Group_3_1__0__Impl49367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1__Impl_in_rule__XBasicForLoopExpression__Group_3_1__149398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1_in_rule__XBasicForLoopExpression__Group_3_1__1__Impl49425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0__Impl_in_rule__XBasicForLoopExpression__Group_7__049459 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1_in_rule__XBasicForLoopExpression__Group_7__049462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0_in_rule__XBasicForLoopExpression__Group_7__0__Impl49489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1__Impl_in_rule__XBasicForLoopExpression__Group_7__149519 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets021 {
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0_in_rule__XBasicForLoopExpression__Group_7__1__Impl49546 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0__Impl_in_rule__XBasicForLoopExpression__Group_7_1__049581 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1_in_rule__XBasicForLoopExpression__Group_7_1__049584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XBasicForLoopExpression__Group_7_1__0__Impl49612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1__Impl_in_rule__XBasicForLoopExpression__Group_7_1__149643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1_in_rule__XBasicForLoopExpression__Group_7_1__1__Impl49670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0__Impl_in_rule__XWhileExpression__Group__049704 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1_in_rule__XWhileExpression__Group__049707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1__Impl_in_rule__XWhileExpression__Group__149765 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2_in_rule__XWhileExpression__Group__149768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__XWhileExpression__Group__1__Impl49796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2__Impl_in_rule__XWhileExpression__Group__249827 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3_in_rule__XWhileExpression__Group__249830 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XWhileExpression__Group__2__Impl49858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3__Impl_in_rule__XWhileExpression__Group__349889 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4_in_rule__XWhileExpression__Group__349892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__PredicateAssignment_3_in_rule__XWhileExpression__Group__3__Impl49919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4__Impl_in_rule__XWhileExpression__Group__449949 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5_in_rule__XWhileExpression__Group__449952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XWhileExpression__Group__4__Impl49980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5__Impl_in_rule__XWhileExpression__Group__550011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__BodyAssignment_5_in_rule__XWhileExpression__Group__5__Impl50038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0__Impl_in_rule__XDoWhileExpression__Group__050080 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1_in_rule__XDoWhileExpression__Group__050083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1__Impl_in_rule__XDoWhileExpression__Group__150141 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2_in_rule__XDoWhileExpression__Group__150144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__XDoWhileExpression__Group__1__Impl50172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2__Impl_in_rule__XDoWhileExpression__Group__250203 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3_in_rule__XDoWhileExpression__Group__250206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__BodyAssignment_2_in_rule__XDoWhileExpression__Group__2__Impl50233 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3__Impl_in_rule__XDoWhileExpression__Group__350263 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4_in_rule__XDoWhileExpression__Group__350266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__XDoWhileExpression__Group__3__Impl50294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4__Impl_in_rule__XDoWhileExpression__Group__450325 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5_in_rule__XDoWhileExpression__Group__450328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XDoWhileExpression__Group__4__Impl50356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5__Impl_in_rule__XDoWhileExpression__Group__550387 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6_in_rule__XDoWhileExpression__Group__550390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__PredicateAssignment_5_in_rule__XDoWhileExpression__Group__5__Impl50417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6__Impl_in_rule__XDoWhileExpression__Group__650447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XDoWhileExpression__Group__6__Impl50475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0__Impl_in_rule__XBlockExpression__Group__050520 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1_in_rule__XBlockExpression__Group__050523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1__Impl_in_rule__XBlockExpression__Group__150581 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2_in_rule__XBlockExpression__Group__150584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__XBlockExpression__Group__1__Impl50612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2__Impl_in_rule__XBlockExpression__Group__250643 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3_in_rule__XBlockExpression__Group__250646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0_in_rule__XBlockExpression__Group__2__Impl50673 = new BitSet(new long[]{0xF8801001C00001F2L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3__Impl_in_rule__XBlockExpression__Group__350704 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/CommonGrammarActivator.java b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/CommonGrammarActivator.java
new file mode 100644
index 0000000..b347dda
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src-gen/org/eclipse/osbp/dsl/common/xtext/ui/internal/CommonGrammarActivator.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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 CommonGrammarActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_DSL_COMMON_XTEXT_COMMONGRAMMAR = "org.eclipse.osbp.dsl.common.xtext.CommonGrammar";
+	
+	private static final Logger logger = Logger.getLogger(CommonGrammarActivator.class);
+	
+	private static CommonGrammarActivator 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 CommonGrammarActivator 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_DSL_COMMON_XTEXT_COMMONGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.common.xtext.CommonGrammarRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_DSL_COMMON_XTEXT_COMMONGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.common.xtext.ui.CommonGrammarUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/CommonGrammarUiModule.java b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/CommonGrammarUiModule.java
new file mode 100644
index 0000000..733633f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/CommonGrammarUiModule.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class CommonGrammarUiModule extends org.eclipse.osbp.dsl.common.xtext.ui.AbstractCommonGrammarUiModule {
+	public CommonGrammarUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/CommonGrammarProposalProvider.java b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/CommonGrammarProposalProvider.java
new file mode 100644
index 0000000..7940f66
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/contentassist/CommonGrammarProposalProvider.java
@@ -0,0 +1,359 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.ui.contentassist;
+
+import java.sql.Blob;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.osbp.dsl.semantic.common.helper.Bounds;
+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.LReference;
+import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
+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.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+
+import com.google.inject.Inject;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to
+ * customize content assistant
+ */
+public class CommonGrammarProposalProvider extends org.eclipse.osbp.dsl.common.xtext.ui.contentassist.AbstractCommonGrammarProposalProvider {
+
+	@Inject
+	TerminalsProposalProvider provider;
+	@Inject
+	BasicDSLProposalProviderHelper providerHelper;
+
+	private static final String IS_PAST = "isPast";
+	private static final String IS_FUTURE = "isFuture";
+	private static final String MAX_SIZE = "maxSize";
+	private static final String MIN_SIZE = "minSize";
+	private static final String REGEX = "regex";
+	private static final String IS_TRUE = "isTrue";
+	private static final String IS_FALSE = "isFalse";
+	private static final String IS_NULL = "isNull";
+	private static final String IS_NOT_NULL = "isNotNull";
+	private static final String MIN_NUMBER = "minNumber";
+	private static final String MAX_NUMBER = "maxNumber";
+	private static final String DIGITS = "digits";
+	private static final String MIN_DECIMAL = "minDecimal";
+	private static final String MAX_DECIMAL = "maxDecimal";
+	private static Set<String> constraints = new HashSet<String>();
+	private static Map<String, Set<String>> allowedConstraints = new HashMap<String, Set<String>>();
+	static {
+		constraints.add(IS_FALSE);
+		constraints.add(IS_TRUE);
+		constraints.add(MAX_DECIMAL);
+		constraints.add(MIN_DECIMAL);
+		constraints.add(DIGITS);
+		constraints.add(IS_FUTURE);
+		constraints.add(IS_PAST);
+		constraints.add(MAX_NUMBER);
+		constraints.add(MIN_NUMBER);
+		constraints.add(IS_NOT_NULL);
+		constraints.add(IS_NULL);
+		constraints.add(REGEX);
+		constraints.add(MIN_SIZE);
+		constraints.add(MAX_SIZE);
+
+		// constraints for String
+		Set<String> stringConstraints = new HashSet<String>();
+		allowedConstraints.put(String.class.getCanonicalName(), stringConstraints);
+		stringConstraints.add(IS_NOT_NULL);
+		stringConstraints.add(IS_NULL);
+		stringConstraints.add(REGEX);
+		stringConstraints.add(MIN_SIZE);
+		stringConstraints.add(MAX_SIZE);
+
+		// constraints for String
+		Set<String> charConstraints = new HashSet<String>();
+		allowedConstraints.put(Character.class.getCanonicalName(), stringConstraints);
+		charConstraints.add(IS_NOT_NULL);
+		charConstraints.add(IS_NULL);
+		charConstraints.add(REGEX);
+
+		// constraints for numeric
+		Set<String> numericConstraints = new HashSet<String>();
+		allowedConstraints.put(Short.class.getCanonicalName(), numericConstraints);
+		allowedConstraints.put(Byte.class.getCanonicalName(), numericConstraints);
+		allowedConstraints.put(Integer.class.getCanonicalName(), numericConstraints);
+		allowedConstraints.put(Long.class.getCanonicalName(), numericConstraints);
+		numericConstraints.add(MAX_NUMBER);
+		numericConstraints.add(MIN_NUMBER);
+		numericConstraints.add(IS_NOT_NULL);
+		numericConstraints.add(IS_NULL);
+
+		// constraints for decimal
+		Set<String> decimalConstraints = new HashSet<String>();
+		allowedConstraints.put(Float.class.getCanonicalName(), decimalConstraints);
+		allowedConstraints.put(Double.class.getCanonicalName(), decimalConstraints);
+		decimalConstraints.add(MAX_DECIMAL);
+		decimalConstraints.add(MIN_DECIMAL);
+		decimalConstraints.add(DIGITS);
+		decimalConstraints.add(IS_NOT_NULL);
+		decimalConstraints.add(IS_NULL);
+
+		// constraints for boolean
+		Set<String> booleanConstraints = new HashSet<String>();
+		allowedConstraints.put(Boolean.class.getCanonicalName(), booleanConstraints);
+		booleanConstraints.add(IS_FALSE);
+		booleanConstraints.add(IS_TRUE);
+		booleanConstraints.add(IS_NOT_NULL);
+		booleanConstraints.add(IS_NULL);
+
+		// constraints for Date
+		Set<String> dateConstraints = new HashSet<String>();
+		allowedConstraints.put(Date.class.getCanonicalName(), dateConstraints);
+		dateConstraints.add(IS_NOT_NULL);
+		dateConstraints.add(IS_NULL);
+		dateConstraints.add(IS_PAST);
+		dateConstraints.add(IS_FUTURE);
+
+		// constraints for Blob
+		Set<String> blobConstraints = new HashSet<String>();
+		allowedConstraints.put(Blob.class.getCanonicalName(), blobConstraints);
+		blobConstraints.add(IS_NOT_NULL);
+		blobConstraints.add(IS_NULL);
+	}
+
+	@Override
+	public void complete_DtCDecimalMax(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+
+		if (!context.getPrefix().equals("minDecimal")) {
+			return;
+		}
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		ConfigurableCompletionProposal result = doCreateProposal("minDecimal(-123.456)", new StyledString("minDecimal(-123.456)"), null,
+				replacementOffset, replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+
+	}
+
+	@Override
+	public void complete_DtCDecimalMin(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+
+		if (!context.getPrefix().equals("maxDecimal")) {
+			return;
+		}
+
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		ConfigurableCompletionProposal result = doCreateProposal("maxDecimal(123.456)", new StyledString("maxDecimal(123.456)"), null,
+				replacementOffset, replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+
+	@Override
+	public void complete_DtCDigits(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+
+		if (!context.getPrefix().equals("digits")) {
+			return;
+		}
+
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		ConfigurableCompletionProposal result = doCreateProposal("digits(7, 3)", new StyledString("digits(7, 3)"), null, replacementOffset,
+				replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+
+	@Override
+	public void complete_DtCNumericMax(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+
+		if (!context.getPrefix().equals("maxNumber")) {
+			return;
+		}
+
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		ConfigurableCompletionProposal result = doCreateProposal("maxNumber(7)", new StyledString("maxNumber(7)"), null, replacementOffset,
+				replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+
+	@Override
+	public void complete_DtCNumericMin(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+
+		if (!context.getPrefix().equals("minNumber")) {
+			return;
+		}
+
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		ConfigurableCompletionProposal result = doCreateProposal("minNumber(-7)", new StyledString("minNumber(-7)"), null,
+				replacementOffset, replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+
+	@Override
+	public void complete_DtCRegEx(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		if (!context.getPrefix().equals("regex")) {
+			return;
+		}
+
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		ConfigurableCompletionProposal result = doCreateProposal("regex(\"A[0-9]*\")", new StyledString("regex(\"A[0-9]*\")"), null,
+				replacementOffset, replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+
+	@Override
+	public void complete_DtCSize(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+
+		if (context.getPrefix().equals("minSize")) {
+			int replacementOffset = context.getReplaceRegion().getOffset();
+			int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+			ConfigurableCompletionProposal result = doCreateProposal("minSize(0)", new StyledString("minSize(0)"), null, replacementOffset,
+					replacementLength);
+			result.setPriority(1000);
+			result.setMatcher(context.getMatcher());
+			result.setReplaceContextLength(context.getReplaceContextLength());
+			acceptor.accept(result);
+		} else if (context.getPrefix().equals("maxSize")) {
+			int replacementOffset = context.getReplaceRegion().getOffset();
+			int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+			ConfigurableCompletionProposal result = doCreateProposal("maxSize(10)", new StyledString("maxSize(10)"), null,
+					replacementOffset, replacementLength);
+			result.setPriority(1000);
+			result.setMatcher(context.getMatcher());
+			result.setReplaceContextLength(context.getReplaceContextLength());
+			acceptor.accept(result);
+		}
+	}
+
+	protected boolean isKeywordWorthyToPropose(Keyword keyword, ContentAssistContext context) {
+		EObject model = context.getCurrentModel();
+		if (model instanceof LDataType) {
+			String value = keyword.getValue();
+			if (constraints.contains(value)) {
+				LDataType dt = (LDataType) model;
+				return forDatatype(value, dt);
+			}
+		} else if (model instanceof LAttribute) {
+			String value = keyword.getValue();
+			if (constraints.contains(value)) {
+				LAttribute att = (LAttribute) model;
+				if (att.getType() instanceof LDataType) {
+					LDataType dt = (LDataType) att.getType();
+					return forDatatype(value, dt);
+				}
+			}
+		} else if (model instanceof LReference) {
+			String value = keyword.getValue();
+			if (constraints.contains(value)) {
+				LReference ref = (LReference) model;
+				if (Bounds.createFor(ref).isToMany()) {
+					return false;
+				}
+				if (!value.equals(IS_NOT_NULL) && !value.equals(IS_NULL)) {
+					return false;
+				}
+			}
+		}
+		return true;
+	}
+
+	protected boolean forDatatype(String value, LDataType dt) {
+		if (!dt.isDate() && !dt.isAsBlob()) {
+			if (dt.isAsPrimitive() && (value.equals(IS_NOT_NULL) || value.equals(IS_NULL))) {
+				return false;
+			}
+			String fqn = dt.getJvmTypeReference().getQualifiedName();
+			Set<String> constraints = allowedConstraints.get(fqn);
+			if (constraints != null) {
+				return constraints.contains(value);
+			} else {
+				return false;
+			}
+		} else if (dt.isDate()) {
+			Set<String> constraints = allowedConstraints.get(Date.class.getCanonicalName());
+			if (constraints != null) {
+				return constraints.contains(value);
+			} else {
+				return false;
+			}
+		} else if (dt.isAsBlob()) {
+			Set<String> constraints = allowedConstraints.get(Blob.class.getCanonicalName());
+			if (constraints != null) {
+				return constraints.contains(value);
+			} else {
+				return false;
+			}
+		}
+
+		return false;
+	}
+
+	// ------------- delegates to TerminalsProposalProvider ------------------
+	public void complete_STRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, ruleCall, context, acceptor);
+	}
+
+	public void complete_ID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor);
+	}
+
+	public void complete_ValidIDWithKeywords(EObject model, RuleCall ruleCall, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor);
+	}
+
+	// ------------- delegates to BasicDSLProposalProviderHelper -------------
+	public void complete_QualifiedName(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+	}
+
+	public void complete_LQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/outline/CommonGrammarOutlineTreeProvider.java b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/outline/CommonGrammarOutlineTreeProvider.java
new file mode 100644
index 0000000..6d9cf10
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/outline/CommonGrammarOutlineTreeProvider.java
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.ui.outline;
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+public class CommonGrammarOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/quickfix/CommonGrammarQuickfixProvider.java b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/quickfix/CommonGrammarQuickfixProvider.java
new file mode 100644
index 0000000..8d476f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext.ui/src/org/eclipse/osbp/dsl/common/xtext/ui/quickfix/CommonGrammarQuickfixProvider.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.ui.quickfix;
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+public class CommonGrammarQuickfixProvider extends org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider {
+
+
+
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/.project b/org.eclipse.osbp.dsl.common.xtext/.project
new file mode 100644
index 0000000..728d9e9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.common.xtext</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.common.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.common.xtext/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/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.dsl.common.xtext/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.common.xtext/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c77b5f5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/META-INF/MANIFEST.MF
@@ -0,0 +1,118 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.dsl.common.xtext;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;bundle-version="2.10.0";resolution:=optional,
+ org.eclipse.emf.mwe.utils;bundle-version="1.3.1";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="2.5.1";resolution:=optional,
+ org.eclipse.emf.ecore.xcore.lib;bundle-version="1.1.0";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ 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)";visibility:=reexport,
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.emf.ecore.xcore;bundle-version="1.2.1";resolution:=optional,
+ org.eclipse.core.runtime;bundle-version="3.10.0",
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.jsr303.validation;bundle-version="[0.9.0,0.10.0)"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.common.xtext;version="0.9.0";
+  uses:="org.eclipse.xtext,
+   org.eclipse.xtext.xtype,
+   org.eclipse.xtext.service,
+   org.eclipse.xtext.common.types,
+   com.google.inject";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.extensions;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.osbp.dsl.common.xtext.helper,
+   org.eclipse.xtext.common.types";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.formatting;version="0.9.0";
+  uses:="org.eclipse.xtext.formatting.impl,
+   org.eclipse.osbp.dsl.common.xtext.services";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.jvmmodel;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.xtext.naming,
+   org.eclipse.xtext.xbase.jvmmodel,
+   org.eclipse.xtext.common.types,
+   org.eclipse.xtext.xbase.lib";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.parser.antlr;version="0.9.0";
+  uses:="org.eclipse.osbp.dsl.common.xtext.services,
+   org.eclipse.xtext.parser.antlr,
+   org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.common.util,
+   org.eclipse.osbp.dsl.common.xtext.services,
+   org.antlr.runtime,
+   org.eclipse.xtext.parser.antlr";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.scope;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.common.xtext.extensions,
+   org.eclipse.xtext.naming,
+   org.eclipse.xtext.scoping.impl,
+   org.eclipse.xtext.xbase.annotations.scoping";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.serializer;version="0.9.0";
+  uses:="org.eclipse.xtext,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.serializer.sequencer,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.xtext.serializer.analysis,
+   org.eclipse.osbp.dsl.common.xtext.services,
+   org.eclipse.xtext.nodemodel,
+   org.eclipse.xtext.xbase.annotations.serializer";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.services;version="0.9.0";
+  uses:="org.eclipse.xtext,
+   org.eclipse.xtext.xbase.services,
+   org.eclipse.xtext.service,
+   org.eclipse.xtext.xbase.annotations.services";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.validation;version="0.9.0";
+  uses:="org.eclipse.xtext.xbase.annotations.validation";x-internal:=true,
+ org.eclipse.osbp.dsl.common.xtext.valueconverter;version="0.9.0";
+  uses:="org.eclipse.xtext.xbase.conversion,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.xbase.scoping,
+   org.eclipse.xtext.naming,
+   org.eclipse.xtext.conversion";x-internal:=true,
+ org.eclipse.osbp.dsl.semantic.common.helper;version="0.9.0",
+ org.eclipse.osbp.dsl.semantic.common.types;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.xtext.xbase,
+   org.eclipse.xtext.common.types,
+   org.eclipse.emf.common.util,
+   org.eclipse.xtext.xbase.annotations.xAnnotations",
+ org.eclipse.osbp.dsl.semantic.common.types.impl;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.ecore.impl,
+   org.eclipse.xtext.xbase,
+   org.eclipse.xtext.common.types,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.emf.common.util,
+   org.eclipse.emf.common.notify,
+   org.eclipse.xtext.xbase.annotations.xAnnotations",
+ org.eclipse.osbp.dsl.semantic.common.types.util;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.emf.common.notify,
+   org.eclipse.emf.common.notify.impl,
+   org.eclipse.emf.ecore.util"
+Import-Package: javax.validation;version="1.1.0",
+ javax.validation.constraints;version="1.1.0",
+ org.apache.log4j,
+ org.slf4j;version="1.7.2"
diff --git a/org.eclipse.osbp.dsl.common.xtext/about.html b/org.eclipse.osbp.dsl.common.xtext/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/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.dsl.common.xtext/about.ini b/org.eclipse.osbp.dsl.common.xtext/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/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.dsl.common.xtext/about.mappings b/org.eclipse.osbp.dsl.common.xtext/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/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.dsl.common.xtext/about.properties b/org.eclipse.osbp.dsl.common.xtext/about.properties
new file mode 100644
index 0000000..10d150e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.common.xtext
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.common.xtext/build.properties b/org.eclipse.osbp.dsl.common.xtext/build.properties
new file mode 100644
index 0000000..7270e22
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/build.properties
@@ -0,0 +1,11 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               plugin.xml,\
+               plugin.properties,\
+               model/
+
diff --git a/org.eclipse.osbp.dsl.common.xtext/epl-v10.html b/org.eclipse.osbp.dsl.common.xtext/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/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.dsl.common.xtext/icons/full/ctool16/CreateLAnnotationDef_annotation_XAnnotation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLAnnotationDef_annotation_XAnnotation.gif
new file mode 100644
index 0000000..be1a550
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLAnnotationDef_annotation_XAnnotation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLAnnotationTarget_annotations_LAnnotationDef.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLAnnotationTarget_annotations_LAnnotationDef.gif
new file mode 100644
index 0000000..f4fa5b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLAnnotationTarget_annotations_LAnnotationDef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLCommonModel_packages_LTypedPackage.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLCommonModel_packages_LTypedPackage.gif
new file mode 100644
index 0000000..50cbfbf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLCommonModel_packages_LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..86d7811
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..fa814dc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..be1a550
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..88d8844
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..eaf17fa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..09b5568
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..28de654
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..1651076
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLDataType_jvmTypeReference_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLEnum_literals_LEnumLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLEnum_literals_LEnumLiteral.gif
new file mode 100644
index 0000000..bfe4a39
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLEnum_literals_LEnumLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XAnnotation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XAnnotation.gif
new file mode 100644
index 0000000..8fec234
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XAnnotation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XAssignment.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XAssignment.gif
new file mode 100644
index 0000000..881c6d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XAssignment.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBasicForLoopExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBasicForLoopExpression.gif
new file mode 100644
index 0000000..cbc9f8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBasicForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBinaryOperation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBinaryOperation.gif
new file mode 100644
index 0000000..c6407cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBinaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBlockExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBlockExpression.gif
new file mode 100644
index 0000000..11f3aea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBlockExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBooleanLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBooleanLiteral.gif
new file mode 100644
index 0000000..881c6d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XBooleanLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XCastedExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XCastedExpression.gif
new file mode 100644
index 0000000..881c6d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XCastedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XClosure.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XClosure.gif
new file mode 100644
index 0000000..a3d7b11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XClosure.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XConstructorCall.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XConstructorCall.gif
new file mode 100644
index 0000000..a461190
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XConstructorCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XDoWhileExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XDoWhileExpression.gif
new file mode 100644
index 0000000..a461190
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XDoWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XFeatureCall.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XFeatureCall.gif
new file mode 100644
index 0000000..981b787
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XForLoopExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XForLoopExpression.gif
new file mode 100644
index 0000000..40ef08b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XIfExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XIfExpression.gif
new file mode 100644
index 0000000..73b29f9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XIfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XInstanceOfExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XInstanceOfExpression.gif
new file mode 100644
index 0000000..22660ab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XInstanceOfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XListLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XListLiteral.gif
new file mode 100644
index 0000000..278cd8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XListLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XMemberFeatureCall.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XMemberFeatureCall.gif
new file mode 100644
index 0000000..6555fbe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XMemberFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XNullLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XNullLiteral.gif
new file mode 100644
index 0000000..61e5d4d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XNullLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XNumberLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XNumberLiteral.gif
new file mode 100644
index 0000000..7fd40f1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XNumberLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XPostfixOperation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XPostfixOperation.gif
new file mode 100644
index 0000000..c44b7cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XPostfixOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XReturnExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XReturnExpression.gif
new file mode 100644
index 0000000..c6407cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XReturnExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSetLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSetLiteral.gif
new file mode 100644
index 0000000..3bc5937
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSetLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XStringLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XStringLiteral.gif
new file mode 100644
index 0000000..1b76a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XStringLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSwitchExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSwitchExpression.gif
new file mode 100644
index 0000000..de48ec6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSwitchExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSynchronizedExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSynchronizedExpression.gif
new file mode 100644
index 0000000..c3dd920
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XSynchronizedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XThrowExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XThrowExpression.gif
new file mode 100644
index 0000000..3bc5937
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XThrowExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XTryCatchFinallyExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XTryCatchFinallyExpression.gif
new file mode 100644
index 0000000..b55cd92
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XTryCatchFinallyExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XTypeLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XTypeLiteral.gif
new file mode 100644
index 0000000..27a63b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XTypeLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XUnaryOperation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XUnaryOperation.gif
new file mode 100644
index 0000000..4f26f1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XUnaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XVariableDeclaration.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XVariableDeclaration.gif
new file mode 100644
index 0000000..9fe5500
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XVariableDeclaration.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XWhileExpression.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XWhileExpression.gif
new file mode 100644
index 0000000..8fec234
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_body_XWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_modifier_LModifier.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_modifier_LModifier.gif
new file mode 100644
index 0000000..e9813e1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_modifier_LModifier.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_params_JvmFormalParameter.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_params_JvmFormalParameter.gif
new file mode 100644
index 0000000..4f26f1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_params_JvmFormalParameter.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..766d696
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..a258504
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..8fec234
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..561bc08
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..27a63b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..1b76a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..2b447c2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..cbc9f8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLOperation_type_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLPackage_imports_LImport.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLPackage_imports_LImport.gif
new file mode 100644
index 0000000..0650d76
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLPackage_imports_LImport.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LAnnotationTarget.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LAnnotationTarget.gif
new file mode 100644
index 0000000..0b23dfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LAnnotationTarget.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LClass.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LClass.gif
new file mode 100644
index 0000000..9422192
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LClass.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LDataType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LDataType.gif
new file mode 100644
index 0000000..21f8952
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LDataType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LEnum.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LEnum.gif
new file mode 100644
index 0000000..7e51359
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LEnum.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif
new file mode 100644
index 0000000..9a956d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LScalarType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LScalarType.gif
new file mode 100644
index 0000000..01247e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LScalarType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LType.gif
new file mode 100644
index 0000000..2de871f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLType_annotationInfo_LType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LClass.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LClass.gif
new file mode 100644
index 0000000..1c99c0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LClass.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LDataType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LDataType.gif
new file mode 100644
index 0000000..054211b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LDataType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LEnum.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LEnum.gif
new file mode 100644
index 0000000..efff0c9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LEnum.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LScalarType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LScalarType.gif
new file mode 100644
index 0000000..6f01122
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LScalarType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LType.gif
new file mode 100644
index 0000000..2b15f0c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/ctool16/CreateLTypedPackage_types_LType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LAnnotationDef.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LAnnotationDef.gif
new file mode 100644
index 0000000..338fb8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LAnnotationDef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LAnnotationTarget.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LAnnotationTarget.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LAnnotationTarget.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LClass.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LClass.gif
new file mode 100644
index 0000000..e4bc22d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LClass.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LCommonModel.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LCommonModel.gif
new file mode 100644
index 0000000..739ebbf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LCommonModel.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LDataType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LDataType.gif
new file mode 100644
index 0000000..338fb8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LDataType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LEnum.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LEnum.gif
new file mode 100644
index 0000000..98b351f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LEnum.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LEnumLiteral.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LEnumLiteral.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LEnumLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LImport.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LImport.gif
new file mode 100644
index 0000000..90d10f9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LImport.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LModifier.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LModifier.gif
new file mode 100644
index 0000000..4365960
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LModifier.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LMultiplicity.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LMultiplicity.gif
new file mode 100644
index 0000000..5a9bc75
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LMultiplicity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LOperation.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LOperation.gif
new file mode 100644
index 0000000..be22463
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LPackage.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LPackage.gif
new file mode 100644
index 0000000..98b351f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LScalarType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LScalarType.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LScalarType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LType.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LType.gif
new file mode 100644
index 0000000..badaab0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LType.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LTypedPackage.gif b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LTypedPackage.gif
new file mode 100644
index 0000000..d92f34c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/icons/full/obj16/LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.common.xtext/license.html b/org.eclipse.osbp.dsl.common.xtext/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/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.dsl.common.xtext/model/types.xcore b/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
new file mode 100644
index 0000000..574fa4b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/model/types.xcore
@@ -0,0 +1,427 @@
+@GenModel(fileExtensions="type", modelDirectory= "/org.eclipse.osbp.dsl.common.xtext/src-gen", editDirectory="/org.eclipse.osbp.dsl.common.xtext.edit/src", extensibleProviderFactory="true")
+@GenModel(modelName="Types")
+@GenModel(prefix="OSBPTypes")
+@GenModel(suppressEMFModelTags="true")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+  
+ Contributors:  
+ 		Florian Pirchner - Initial implementation 
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/dsl/common/types/v1")
+@Ecore(nsPrefix="types")
+@Ecore(rootPackage="types")
+package org.eclipse.osbp.dsl.semantic.common.types
+
+import org.eclipse.emf.common.util.EList
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.xtext.common.types.JvmFormalParameter
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.xbase.XExpression
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.osbp.dsl.semantic.common.helper.Bounds
+
+class LCommonModel extends LLazyResolver {
+	contains LTypedPackage[] packages
+}
+
+class LLazyResolver {
+	op EObject eResolveProxy(InternalEObject proxy) {
+		return EcoreUtil3.resolve(proxy, this.eResource()?.resourceSet);
+	}
+}
+
+class LPackage extends LLazyResolver {
+	String name
+	contains LImport[] imports
+}
+
+class LTypedPackage extends LPackage {
+	contains LType[] types
+	op String getResourceSimpleName() {
+		val resource = eResource
+		if (resource == null) {
+			return ""
+		}
+
+		return resource.URI.lastSegment + " - " + name
+	}
+}
+
+class LImport {
+	String importedNamespace
+}
+
+class LType extends LAnnotationTarget {
+	String name
+	contains LAnnotationTarget annotationInfo
+	/**
+	 * Delegates the annotation request to the target element.
+	 */
+	op AnnotationList getResolvedAnnotations() {
+		if (annotationInfo != null) {
+			annotationInfo.annotations
+		} else {
+			annotations
+		}
+	}
+}
+
+class LAnnotationDef extends LLazyResolver {
+	boolean exclude
+	contains XAnnotation ^annotation
+}
+
+class LAnnotationTarget extends LLazyResolver {
+	contains LAnnotationDef[] annotations
+}
+
+class LScalarType extends LType {
+}
+
+class LDataType extends LScalarType {
+	contains JvmTypeReference jvmTypeReference
+	boolean asPrimitive
+	boolean date
+	boolean asBlob
+	int length
+	LDateType dateType
+	/**
+	 * Attention: synthetic must only be used inside the same resource
+	 */
+	// is used to prepare datatypes during linking
+	boolean syntheticFlag
+	// defines what target type should be prepared by the synthetic datatype. May be any string.
+	String syntheticSelector
+	// is used to target a feature in the current entity
+	refers LFeature syntheticTypeReference
+	// used to target a feature in the current entity, but avoids resolving cross refernces too early.
+	// for instance if the feature is contained in a superclass
+	refers LType syntheticType
+	// key value pairs	
+	contains LKeyAndValue[*] properties
+	// constraints for the datatype
+	contains LDatatypeConstraint[*] constraints
+}
+
+enum LDateType {
+	DATE
+	, TIME
+	, TIMESTAMP
+}
+
+class LEnum extends LScalarType {
+	contains LEnumLiteral[] literals
+}
+
+class LEnumLiteral extends LLazyResolver {
+	String name
+	boolean ^default
+	boolean ^null
+	int value
+}
+
+class LClass extends LType {
+	boolean ^abstract
+	boolean serializable
+	String shortName
+}
+
+interface LFeaturesHolder {
+	/**
+	 * Returns the features of the holder
+	 */
+	op FeaturesList getFeatures()
+	/**
+	 * Returns all features of the holder and from super types
+	 */
+	op FeaturesList getAllFeatures()
+}
+
+interface LFeature extends LAnnotationTarget {
+	String name
+	contains LMultiplicity multiplicity
+	contains LAnnotationTarget annotationInfo
+	/**
+	 * Delegates the annotation request to the target element.
+	 */
+	op AnnotationList getResolvedAnnotations() {
+		if (annotationInfo != null) {
+			annotationInfo.annotations
+		} else {
+			annotations
+		}
+	}
+}
+
+interface LReference extends LFeature {
+	boolean lazy
+	boolean cascading
+	contains LKeyAndValue[*] properties
+	// constraints for the datatype
+	contains LDatatypeConstraint[*] constraints
+}
+
+interface LAttribute extends LFeature {
+	boolean ^id
+	boolean uuid
+	boolean version
+	boolean lazy
+	boolean cascading
+	boolean ^transient
+	boolean ^derived
+	boolean dirty
+	/**
+	 * The domainKey is a human readable value for a dto or entity
+	 */
+	boolean domainKey
+	/**
+	 * The domainKey is the human readable description for a dto or entity
+	 */
+	boolean domainDescription
+	contains XExpression derivedGetterExpression
+	refers LScalarType ^type
+	contains transient JvmTypeReference typeJvm
+	contains LKeyAndValue[*] properties
+	// constraints for the datatype
+	contains LDatatypeConstraint[*] constraints
+}
+
+class LKeyAndValue {
+	String key
+	String value
+}
+
+class LOperation extends LAnnotationTarget {
+	contains LModifier modifier
+	contains JvmTypeReference ^type
+	contains JvmFormalParameter[] params
+	contains XExpression body
+	/**
+	 * Method to generalize naming conventions for annotation access
+	 */
+	op AnnotationList getResolvedAnnotations() {
+		annotations
+	}
+}
+
+class LModifier extends LLazyResolver {
+	boolean final
+	boolean ^static
+	LVisibility visibility
+}
+
+enum LVisibility {
+	PACKAGE = 0
+	PRIVATE = 1
+	PROTECTED = 2
+	PUBLIC = 3
+}
+
+class LMultiplicity {
+	LLowerBound lower
+	LUpperBound upper
+	derived String toMultiplicityString get {
+		return Bounds.createFor(this).toBoundsString
+	}
+}
+
+enum LLowerBound {
+	NULL = 0
+	MANY = 1
+	OPTIONAL = 2
+	ATLEASTONE = 3
+	ZERO = 4
+	ONE = 5
+}
+
+enum LUpperBound {
+	NULL = 0
+	MANY = 1
+	ONE = 2
+}
+
+interface LConstraint extends LLazyResolver{
+}
+
+/**
+ * ResultFilters are used to filter the possible results for a reference. 
+ * May be used by UI to filter unwanted entries.
+ */
+class LResultFilters extends LLazyResolver {
+	contains LResultFilter[*] resultFilters
+}
+
+interface LResultFilter extends LConstraint {
+}
+
+class LAttributeMatchingConstraint extends LResultFilter {
+	refers LAttribute attribute
+	LComparatorType comparatorType
+	String matchingValue
+	refers LEnumLiteral matchingLiteral
+}
+
+enum LComparatorType {
+	EQUALS as '=='
+	GREATER as '>'
+	LOWER as '<'
+	GREATER_EQ as '>='
+	LOWER_EQ as '<='
+	NOT_EQ as '<>'
+}
+
+/**
+ * DatatypeConstraints are used to create javax.validation constraint annotations.
+ */
+interface LDatatypeConstraint extends LConstraint {
+	
+	String msgCode
+	String msgI18nKey
+	LConstraintSeverity severity
+	
+	/**
+	 * Returns true, if the constraint can be used for primitive datatypes. 
+	 */
+	op boolean isForPrimitives()
+}
+
+enum LConstraintSeverity {
+	INFO, WARNING, ERROR
+}
+
+interface LStringConstraint extends LDatatypeConstraint {
+}
+
+interface LNumericConstraint extends LDatatypeConstraint {
+}
+
+interface LDecimalConstraint extends LDatatypeConstraint {
+}
+
+interface LDateConstraint extends LDatatypeConstraint {
+}
+
+interface LBooleanConstraint extends LDatatypeConstraint {
+}
+
+interface LBlobConstraint extends LDatatypeConstraint {
+}
+
+class LDtCAssertFalse extends LBooleanConstraint {
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCAssertTrue extends LBooleanConstraint {
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCDecimalMax extends LDecimalConstraint {
+	float max
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCDecimalMin extends LDecimalConstraint {
+	float min
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCDigits extends LDecimalConstraint {
+	int intDigits
+	int fractionDigits
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCFuture extends LDateConstraint {
+	
+	op boolean isForPrimitives() {
+		return false
+	}
+}
+
+class LDtCPast extends LDateConstraint {
+	
+	op boolean isForPrimitives() {
+		return false
+	}
+}
+
+class LDtCNumericMax extends LNumericConstraint {
+	int max
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCNumericMin extends LNumericConstraint {
+	int min
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCNotNull extends LBlobConstraint, LDateConstraint, LStringConstraint, 
+							LBooleanConstraint, LDecimalConstraint, LNumericConstraint {
+								
+	op boolean isForPrimitives() {
+		return false
+	}
+}
+
+class LDtCNull extends LBlobConstraint, LDateConstraint, LStringConstraint, 
+							LBooleanConstraint, LDecimalConstraint, LNumericConstraint {
+								
+	op boolean isForPrimitives() {
+		return false
+	}
+}
+
+class LDtCRegEx extends LStringConstraint {
+	String pattern
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+class LDtCSize extends LStringConstraint {
+	int min
+	int max
+	
+	op boolean isForPrimitives() {
+		return true
+	}
+}
+
+type OperationsList wraps java.util.List<LOperation>
+
+type FeaturesList wraps java.util.List<? extends LFeature>
+
+type AnnotationList wraps EList<LAnnotationDef>
+
+type InternalEObject wraps InternalEObject
+	
+	
+	
diff --git a/org.eclipse.osbp.dsl.common.xtext/plugin.properties b/org.eclipse.osbp.dsl.common.xtext/plugin.properties
new file mode 100644
index 0000000..93f328b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#   
+#  Contributors:  
+#  		Florian Pirchner - Initial implementation 
+#  
+
+pluginName = Types Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.common.xtext/plugin.xml b/org.eclipse.osbp.dsl.common.xtext/plugin.xml
new file mode 100644
index 0000000..32f511d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/plugin.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 - 2012, Lunifera GmbH (Gross Enzersdorf, Austria), Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ 
+ Sources generated by Xtext  
+ 
+ Contributors:
+  		Hans Georg Glöckler - Initial implementation
+  		Florian Pirchner - Initial implementation
+-->
+
+<plugin>
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated types -->
+      <package
+            uri="http://osbp.eclipse.org/dsl/common/types/v1"
+            class="org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+            genModel="model/types.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.common.xtext/pom.xml b/org.eclipse.osbp.dsl.common.xtext/pom.xml
new file mode 100644
index 0000000..fcb4884
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.common.xtext</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<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>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/AbstractCommonGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/AbstractCommonGrammarRuntimeModule.java
new file mode 100644
index 0000000..b542a66
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/AbstractCommonGrammarRuntimeModule.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext;
+
+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.dsl.common.xtext.CommonGrammarRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractCommonGrammarRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/dsl/common/xtext/CommonGrammar.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.dsl.common.xtext.CommonGrammar");
+	}
+	
+	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("type");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.dsl.common.xtext.serializer.CommonGrammarSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.dsl.common.xtext.serializer.CommonGrammarSyntacticSequencer.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.dsl.common.xtext.parser.antlr.CommonGrammarParser.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.dsl.common.xtext.parser.antlr.CommonGrammarAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarLexer> provideInternalCommonGrammarLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarLexer.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.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarLexer.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.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator> bindCommonGrammarJavaValidator() {
+		return org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator.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.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// 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.dsl.common.xtext.jvmmodel.CommonGrammarJvmModelInferrer.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/CommonGrammarStandaloneSetupGenerated.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/CommonGrammarStandaloneSetupGenerated.java
new file mode 100644
index 0000000..807d692
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/CommonGrammarStandaloneSetupGenerated.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext;
+
+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 CommonGrammarStandaloneSetupGenerated 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.dsl.common.xtext.CommonGrammarRuntimeModule());
+	}
+	
+	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("type", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("type", serviceProvider);
+		
+
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/CommonGrammarAntlrTokenFileProvider.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/CommonGrammarAntlrTokenFileProvider.java
new file mode 100644
index 0000000..c213d65
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/CommonGrammarAntlrTokenFileProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class CommonGrammarAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/CommonGrammarParser.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/CommonGrammarParser.java
new file mode 100644
index 0000000..8e341a3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/CommonGrammarParser.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+public class CommonGrammarParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private CommonGrammarGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.dsl.common.xtext.parser.antlr.internal.InternalCommonGrammarParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "TypedPackage";
+	}
+	
+	public CommonGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(CommonGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/DebugInternalCommonGrammar.g b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/DebugInternalCommonGrammar.g
new file mode 100644
index 0000000..9e1f9ec
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/DebugInternalCommonGrammar.g
@@ -0,0 +1,3238 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar DebugInternalCommonGrammar;
+
+	
+
+
+
+
+
+
+// Rule TypedPackage
+ruleTypedPackage :
+((
+)	'package' 
+(
+(
+ruleQualifiedName
+)
+)(	'{' 
+(
+(
+ruleImport
+)
+)*(
+(
+ruleType
+)
+)*	'}' 
+)?)
+;
+
+
+
+
+
+
+// Rule Type
+ruleType :
+(	ruleScalarType
+    |	ruleClass)
+;
+
+
+
+
+
+
+// Rule Class
+ruleClass :
+((
+)(
+(
+ruleAnnotationDef
+)
+)*(
+)	'class' 
+)
+;
+
+
+
+
+
+
+// Rule Import
+ruleImport :
+(	'import' 
+(
+(
+ruleLQualifiedNameWithWildCard
+)
+)(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule DataType
+ruleDataType :
+(	'datatype' 
+(
+(
+ruleValidIDWithKeywords
+)
+)((	'jvmType' 
+(
+(
+ruleJvmTypeReference
+)
+)(
+(
+	'as primitive' 
+ 
+
+)
+)?(
+(
+ruleDataTypeConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?)
+    |((
+(
+	'dateType' 
+ 
+
+)
+)(
+(
+ruleDateType
+)
+)(
+(
+ruleDateConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?)
+    |((
+(
+	'as blob' 
+ 
+
+)
+)(
+(
+ruleBlobTypeConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?))(	';' 
+)?)
+;
+
+
+
+
+
+
+
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint :
+(	ruleDtCAssertFalse
+    |	ruleDtCAssertTrue
+    |	ruleDtCDecimalMax
+    |	ruleDtCDecimalMin
+    |	ruleDtCDigits
+    |	ruleDtCNumericMax
+    |	ruleDtCNumericMin
+    |	ruleDtCNotNull
+    |	ruleDtCNull
+    |	ruleDtCRegEx
+    |	ruleDtCSize)
+;
+
+
+
+
+
+
+// Rule DateConstraint
+ruleDateConstraint :
+(	ruleDtCFuture
+    |	ruleDtCPast
+    |	ruleDtCNotNull
+    |	ruleDtCNull)
+;
+
+
+
+
+
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint :
+(	ruleDtCNotNull
+    |	ruleDtCNull)
+;
+
+
+
+
+
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse :
+((
+)	'isFalse' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue :
+((
+)	'isTrue' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax :
+((
+)	'maxDecimal' 
+	'(' 
+(
+(
+ruleLDecimal
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin :
+((
+)	'minDecimal' 
+	'(' 
+(
+(
+ruleLDecimal
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCDigits
+ruleDtCDigits :
+((
+)	'digits' 
+	'(' 
+(
+(
+RULE_INT
+
+)
+)	', ' 
+(
+(
+RULE_INT
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCFuture
+ruleDtCFuture :
+((
+)	'isFuture' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCPast
+ruleDtCPast :
+((
+)	'isPast' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCNumericMax
+ruleDtCNumericMax :
+((
+)	'maxNumber' 
+	'(' 
+(
+(
+ruleLInt
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCNumericMin
+ruleDtCNumericMin :
+((
+)	'minNumber' 
+	'(' 
+(
+(
+ruleLInt
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCNotNull
+ruleDtCNotNull :
+((
+)	'isNotNull' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCNull
+ruleDtCNull :
+((
+)	'isNull' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCRegEx
+ruleDtCRegEx :
+((
+)	'regex' 
+	'(' 
+(
+(
+RULE_STRING
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCSize
+ruleDtCSize :
+((
+)	'minMaxSize' 
+	'(' 
+(
+(
+RULE_INT
+
+)
+)	', ' 
+(
+(
+RULE_INT
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule ScalarType
+ruleScalarType :
+(	ruleDataType
+    |	ruleEnum)
+;
+
+
+
+
+
+
+
+
+// Rule Enum
+ruleEnum :
+(	'enum' 
+(
+(
+RULE_ID
+
+)
+)	'{' 
+(
+(
+ruleEnumLiteral
+)
+)(	', ' 
+(
+(
+ruleEnumLiteral
+)
+))*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule EnumLiteral
+ruleEnumLiteral :
+((
+(
+RULE_ID
+
+)
+)(
+((	'(' 
+(
+(
+	'asDefault' 
+ 
+
+)
+)?)
+    |((
+(
+	'forNull' 
+ 
+
+)
+)?	')' 
+(	'=' 
+(
+(
+RULE_INT
+
+)
+))?))*
+)?)
+;
+
+
+
+
+
+
+// Rule AnnotationDef
+ruleAnnotationDef :
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+ruleXAnnotation
+)
+))
+;
+
+
+
+
+
+
+
+
+// Rule ResultFilter
+ruleResultFilter :
+	ruleAttributeMatchingConstraint
+;
+
+
+
+
+
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint :
+((
+(
+	RULE_ID
+
+)
+)(
+(
+ruleLComparatorType
+)
+)((
+(
+RULE_STRING
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+	RULE_ID
+
+)
+))(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule KeyAndValue
+ruleKeyAndValue :
+(	'key' 
+	'=' 
+(
+(
+RULE_STRING
+
+)
+)	'value' 
+	'=' 
+(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard :
+( ruleQualifiedName(
+	'.' 
+
+	'*' 
+)?)
+    ;
+
+
+
+
+
+
+
+
+
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords :
+(
+	'cachable' 
+
+    |
+	'id' 
+
+    |
+	'uuid' 
+
+    |
+	'transient' 
+
+    |
+	'version' 
+
+    |(
+	'derived' 
+
+	'collection' 
+)
+    |
+	'refers' 
+
+    |
+	'settings' 
+
+    |
+	'lazy' 
+
+    |
+	'notnull' 
+
+    |
+	'dto' 
+
+    |
+	'date' 
+
+    |
+	'mapto' 
+
+    |
+	'ref' 
+
+    |
+	'cascade' 
+
+    |
+	'var' 
+
+    | RULE_ID)
+    ;
+
+
+
+
+
+
+
+
+
+
+// Rule LInt
+ruleLInt :
+((
+	'+' 
+
+    |
+	'-' 
+)? RULE_INT)
+    ;
+
+
+
+
+
+
+// Rule LDecimal
+ruleLDecimal :
+( ruleLInt(
+	'.' 
+RULE_INT)?)
+    ;
+
+
+
+
+
+
+// Rule XAnnotation
+ruleXAnnotation :
+((
+)	'@' 
+(
+(
+		ruleQualifiedName
+)
+)(((	'(' 
+)=>	'(' 
+)((((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+ruleXAnnotationElementValuePair
+)
+)(	',' 
+((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+ruleXAnnotationElementValuePair
+)
+))*)
+    |(
+(
+ruleXAnnotationElementValueOrCommaList
+)
+))?	')' 
+)?)
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair :
+(((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>((
+(
+		ruleValidID
+)
+)	'=' 
+))(
+(
+ruleXAnnotationElementValue
+)
+))
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList :
+((((((
+)	'#' 
+	'[' 
+))=>((
+)	'#' 
+	'[' 
+))((
+(
+ruleXAnnotationOrExpression
+)
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))*)?	']' 
+)
+    |(	ruleXAnnotationOrExpression((
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))+)?))
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue :
+((((((
+)	'#' 
+	'[' 
+))=>((
+)	'#' 
+	'[' 
+))((
+(
+ruleXAnnotationOrExpression
+)
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))*)?	']' 
+)
+    |	ruleXAnnotationOrExpression)
+;
+
+
+
+
+
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression :
+(	ruleXAnnotation
+    |	ruleXExpression)
+;
+
+
+
+
+
+
+// Rule XExpression
+ruleXExpression :
+	ruleXAssignment
+;
+
+
+
+
+
+
+// Rule XAssignment
+ruleXAssignment :
+(((
+)(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign(
+(
+ruleXAssignment
+)
+))
+    |(	ruleXOrExpression(((((
+)(
+(
+		ruleOpMultiAssign
+)
+)))=>((
+)(
+(
+		ruleOpMultiAssign
+)
+)))(
+(
+ruleXAssignment
+)
+))?))
+;
+
+
+
+
+
+
+// Rule OpSingleAssign
+ruleOpSingleAssign :
+
+	'=' 
+
+    ;
+
+
+
+
+
+
+// Rule OpMultiAssign
+ruleOpMultiAssign :
+(
+	'+=' 
+
+    |
+	'-=' 
+
+    |
+	'*=' 
+
+    |
+	'/=' 
+
+    |
+	'%=' 
+
+    |(
+	'<' 
+
+	'<' 
+
+	'=' 
+)
+    |(
+	'>' 
+(
+	'>' 
+)?
+	'>=' 
+))
+    ;
+
+
+
+
+
+
+// Rule XOrExpression
+ruleXOrExpression :
+(	ruleXAndExpression(((((
+)(
+(
+		ruleOpOr
+)
+)))=>((
+)(
+(
+		ruleOpOr
+)
+)))(
+(
+ruleXAndExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpOr
+ruleOpOr :
+
+	'||' 
+
+    ;
+
+
+
+
+
+
+// Rule XAndExpression
+ruleXAndExpression :
+(	ruleXEqualityExpression(((((
+)(
+(
+		ruleOpAnd
+)
+)))=>((
+)(
+(
+		ruleOpAnd
+)
+)))(
+(
+ruleXEqualityExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpAnd
+ruleOpAnd :
+
+	'&&' 
+
+    ;
+
+
+
+
+
+
+// Rule XEqualityExpression
+ruleXEqualityExpression :
+(	ruleXRelationalExpression(((((
+)(
+(
+		ruleOpEquality
+)
+)))=>((
+)(
+(
+		ruleOpEquality
+)
+)))(
+(
+ruleXRelationalExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpEquality
+ruleOpEquality :
+(
+	'==' 
+
+    |
+	'!=' 
+
+    |
+	'===' 
+
+    |
+	'!==' 
+)
+    ;
+
+
+
+
+
+
+// Rule XRelationalExpression
+ruleXRelationalExpression :
+(	ruleXOtherOperatorExpression((((((
+)	'instanceof' 
+))=>((
+)	'instanceof' 
+))(
+(
+ruleJvmTypeReference
+)
+))
+    |(((((
+)(
+(
+		ruleOpCompare
+)
+)))=>((
+)(
+(
+		ruleOpCompare
+)
+)))(
+(
+ruleXOtherOperatorExpression
+)
+)))*)
+;
+
+
+
+
+
+
+// Rule OpCompare
+ruleOpCompare :
+(
+	'>=' 
+
+    |(
+	'<' 
+
+	'=' 
+)
+    |
+	'>' 
+
+    |
+	'<' 
+)
+    ;
+
+
+
+
+
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression :
+(	ruleXAdditiveExpression(((((
+)(
+(
+		ruleOpOther
+)
+)))=>((
+)(
+(
+		ruleOpOther
+)
+)))(
+(
+ruleXAdditiveExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpOther
+ruleOpOther :
+(
+	'->' 
+
+    |
+	'..<' 
+
+    |(
+	'>' 
+
+	'..' 
+)
+    |
+	'..' 
+
+    |
+	'=>' 
+
+    |(
+	'>' 
+((((
+	'>' 
+
+	'>' 
+))=>(
+	'>' 
+
+	'>' 
+))
+    |
+	'>' 
+))
+    |(
+	'<' 
+((((
+	'<' 
+
+	'<' 
+))=>(
+	'<' 
+
+	'<' 
+))
+    |
+	'<' 
+
+    |
+	'=>' 
+))
+    |
+	'<>' 
+
+    |
+	'?:' 
+)
+    ;
+
+
+
+
+
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression :
+(	ruleXMultiplicativeExpression(((((
+)(
+(
+		ruleOpAdd
+)
+)))=>((
+)(
+(
+		ruleOpAdd
+)
+)))(
+(
+ruleXMultiplicativeExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpAdd
+ruleOpAdd :
+(
+	'+' 
+
+    |
+	'-' 
+)
+    ;
+
+
+
+
+
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression :
+(	ruleXUnaryOperation(((((
+)(
+(
+		ruleOpMulti
+)
+)))=>((
+)(
+(
+		ruleOpMulti
+)
+)))(
+(
+ruleXUnaryOperation
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpMulti
+ruleOpMulti :
+(
+	'*' 
+
+    |
+	'**' 
+
+    |
+	'/' 
+
+    |
+	'%' 
+)
+    ;
+
+
+
+
+
+
+// Rule XUnaryOperation
+ruleXUnaryOperation :
+(((
+)(
+(
+		ruleOpUnary
+)
+)(
+(
+ruleXUnaryOperation
+)
+))
+    |	ruleXCastedExpression)
+;
+
+
+
+
+
+
+// Rule OpUnary
+ruleOpUnary :
+(
+	'!' 
+
+    |
+	'-' 
+
+    |
+	'+' 
+)
+    ;
+
+
+
+
+
+
+// Rule XCastedExpression
+ruleXCastedExpression :
+(	ruleXPostfixOperation(((((
+)	'as' 
+))=>((
+)	'as' 
+))(
+(
+ruleJvmTypeReference
+)
+))*)
+;
+
+
+
+
+
+
+// Rule XPostfixOperation
+ruleXPostfixOperation :
+(	ruleXMemberFeatureCall((((
+)(
+(
+		ruleOpPostfix
+)
+)))=>((
+)(
+(
+		ruleOpPostfix
+)
+)))?)
+;
+
+
+
+
+
+
+// Rule OpPostfix
+ruleOpPostfix :
+(
+	'++' 
+
+    |
+	'--' 
+)
+    ;
+
+
+
+
+
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall :
+(	ruleXPrimaryExpression((((((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))=>((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))(
+(
+ruleXAssignment
+)
+))
+    |(((((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))=>((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))(	'<' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(
+(
+		ruleIdOrSuper
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?))*)
+;
+
+
+
+
+
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression :
+(	ruleXConstructorCall
+    |	ruleXBlockExpression
+    |	ruleXSwitchExpression
+    |((((
+)	'synchronized' 
+	'(' 
+))=>	ruleXSynchronizedExpression)
+    |	ruleXFeatureCall
+    |	ruleXLiteral
+    |	ruleXIfExpression
+    |((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>	ruleXForLoopExpression)
+    |	ruleXBasicForLoopExpression
+    |	ruleXWhileExpression
+    |	ruleXDoWhileExpression
+    |	ruleXThrowExpression
+    |	ruleXReturnExpression
+    |	ruleXTryCatchFinallyExpression
+    |	ruleXParenthesizedExpression)
+;
+
+
+
+
+
+
+// Rule XLiteral
+ruleXLiteral :
+(	ruleXCollectionLiteral
+    |((((
+)	'[' 
+))=>	ruleXClosure)
+    |	ruleXBooleanLiteral
+    |	ruleXNumberLiteral
+    |	ruleXNullLiteral
+    |	ruleXStringLiteral
+    |	ruleXTypeLiteral)
+;
+
+
+
+
+
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral :
+(	ruleXSetLiteral
+    |	ruleXListLiteral)
+;
+
+
+
+
+
+
+// Rule XSetLiteral
+ruleXSetLiteral :
+((
+)	'#' 
+	'{' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XListLiteral
+ruleXListLiteral :
+((
+)	'#' 
+	'[' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	']' 
+)
+;
+
+
+
+
+
+
+// Rule XClosure
+ruleXClosure :
+(((((
+)	'[' 
+))=>((
+)	'[' 
+))(((((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>(((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))?(
+(
+ruleXExpressionInClosure
+)
+)	']' 
+)
+;
+
+
+
+
+
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure :
+((
+)((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	';' 
+)?)*)
+;
+
+
+
+
+
+
+// Rule XShortClosure
+ruleXShortClosure :
+(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression :
+(	'(' 
+	ruleXExpression	')' 
+)
+;
+
+
+
+
+
+
+// Rule XIfExpression
+ruleXIfExpression :
+((
+)	'if' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+)(((	'else' 
+)=>	'else' 
+)(
+(
+ruleXExpression
+)
+))?)
+;
+
+
+
+
+
+
+// Rule XSwitchExpression
+ruleXSwitchExpression :
+((
+)	'switch' 
+(((((	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>(	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+)
+    |(((((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))?(
+(
+ruleXExpression
+)
+)))	'{' 
+(
+(
+ruleXCasePart
+)
+)*(	'default' 
+	':' 
+(
+(
+ruleXExpression
+)
+))?	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XCasePart
+ruleXCasePart :
+((
+)(
+(
+ruleJvmTypeReference
+)
+)?(	'case' 
+(
+(
+ruleXExpression
+)
+))?((	':' 
+(
+(
+ruleXExpression
+)
+))
+    |(
+(
+	',' 
+ 
+
+)
+)))
+;
+
+
+
+
+
+
+// Rule XForLoopExpression
+ruleXForLoopExpression :
+(((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression :
+((
+)	'for' 
+	'(' 
+((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	',' 
+(
+(
+ruleXExpressionOrVarDeclaration
+)
+))*)?	';' 
+(
+(
+ruleXExpression
+)
+)?	';' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XWhileExpression
+ruleXWhileExpression :
+((
+)	'while' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression :
+((
+)	'do' 
+(
+(
+ruleXExpression
+)
+)	'while' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+)
+;
+
+
+
+
+
+
+// Rule XBlockExpression
+ruleXBlockExpression :
+((
+)	'{' 
+((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	';' 
+)?)*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration :
+(	ruleXVariableDeclaration
+    |	ruleXExpression)
+;
+
+
+
+
+
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration :
+((
+)((
+(
+	'var' 
+ 
+
+)
+)
+    |	'val' 
+)(((((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))=>((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))
+    |(
+(
+ruleValidID
+)
+))(	'=' 
+(
+(
+ruleXExpression
+)
+))?)
+;
+
+
+
+
+
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter :
+((
+(
+ruleJvmTypeReference
+)
+)?(
+(
+ruleValidID
+)
+))
+;
+
+
+
+
+
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter :
+((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+))
+;
+
+
+
+
+
+
+// Rule XFeatureCall
+ruleXFeatureCall :
+((
+)(	'<' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(
+(
+		ruleIdOrSuper
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?)
+;
+
+
+
+
+
+
+// Rule FeatureCallID
+ruleFeatureCallID :
+( ruleValidID
+    |
+	'extends' 
+
+    |
+	'static' 
+
+    |
+	'import' 
+
+    |
+	'extension' 
+)
+    ;
+
+
+
+
+
+
+// Rule IdOrSuper
+ruleIdOrSuper :
+( ruleFeatureCallID
+    |
+	'super' 
+)
+    ;
+
+
+
+
+
+
+// Rule XConstructorCall
+ruleXConstructorCall :
+((
+)	'new' 
+(
+(
+		ruleQualifiedName
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?)
+;
+
+
+
+
+
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral :
+((
+)(	'false' 
+
+    |(
+(
+	'true' 
+ 
+
+)
+)))
+;
+
+
+
+
+
+
+// Rule XNullLiteral
+ruleXNullLiteral :
+((
+)	'null' 
+)
+;
+
+
+
+
+
+
+// Rule XNumberLiteral
+ruleXNumberLiteral :
+((
+)(
+(
+ruleNumber
+)
+))
+;
+
+
+
+
+
+
+// Rule XStringLiteral
+ruleXStringLiteral :
+((
+)(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule XTypeLiteral
+ruleXTypeLiteral :
+((
+)	'typeof' 
+	'(' 
+(
+(
+		ruleQualifiedName
+)
+)(
+(
+ruleArrayBrackets
+)
+)*	')' 
+)
+;
+
+
+
+
+
+
+// Rule XThrowExpression
+ruleXThrowExpression :
+((
+)	'throw' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XReturnExpression
+ruleXReturnExpression :
+((
+)	'return' 
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+ruleXExpression
+)
+)?)
+;
+
+
+
+
+
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression :
+((
+)	'try' 
+(
+(
+ruleXExpression
+)
+)((((	'catch' 
+)=>
+(
+ruleXCatchClause
+)
+)+(((	'finally' 
+)=>	'finally' 
+)(
+(
+ruleXExpression
+)
+))?)
+    |(	'finally' 
+(
+(
+ruleXExpression
+)
+))))
+;
+
+
+
+
+
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression :
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+)	'synchronized' 
+	'(' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XCatchClause
+ruleXCatchClause :
+(((	'catch' 
+)=>	'catch' 
+)	'(' 
+(
+(
+ruleFullJvmFormalParameter
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule QualifiedName
+ruleQualifiedName :
+( ruleValidID(((
+	'.' 
+)=>
+	'.' 
+) ruleValidID)*)
+    ;
+
+
+
+
+
+
+// Rule Number
+ruleNumber :
+( RULE_HEX
+    |(( RULE_INT
+    | RULE_DECIMAL)(
+	'.' 
+( RULE_INT
+    | RULE_DECIMAL))?))
+    ;
+
+
+
+
+
+
+
+
+// Rule JvmTypeReference
+ruleJvmTypeReference :
+((	ruleJvmParameterizedTypeReference((((
+)	ruleArrayBrackets))=>((
+)	ruleArrayBrackets))*)
+    |	ruleXFunctionTypeRef)
+;
+
+
+
+
+
+
+// Rule ArrayBrackets
+ruleArrayBrackets :
+(
+	'[' 
+
+	']' 
+)
+    ;
+
+
+
+
+
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef :
+((	'(' 
+((
+(
+ruleJvmTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmTypeReference
+)
+))*)?	')' 
+)?	'=>' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference :
+((
+(
+		ruleQualifiedName
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+(((((
+)	'.' 
+))=>((
+)	'.' 
+))(
+(
+		ruleValidID
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?)*)?)
+;
+
+
+
+
+
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference :
+(	ruleJvmTypeReference
+    |	ruleJvmWildcardTypeReference)
+;
+
+
+
+
+
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference :
+((
+)	'?' 
+(((
+(
+ruleJvmUpperBound
+)
+)(
+(
+ruleJvmUpperBoundAnded
+)
+)*)
+    |((
+(
+ruleJvmLowerBound
+)
+)(
+(
+ruleJvmLowerBoundAnded
+)
+)*))?)
+;
+
+
+
+
+
+
+// Rule JvmUpperBound
+ruleJvmUpperBound :
+(	'extends' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded :
+(	'&' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmLowerBound
+ruleJvmLowerBound :
+(	'super' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded :
+(	'&' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard :
+( ruleQualifiedName
+	'.' 
+
+	'*' 
+)
+    ;
+
+
+
+
+
+
+// Rule ValidID
+ruleValidID :
+RULE_ID
+    ;
+
+
+
+
+
+
+
+
+// Rule XImportDeclaration
+ruleXImportDeclaration :
+(	'import' 
+(((
+(
+	'static' 
+ 
+
+)
+)(
+(
+	'extension' 
+ 
+
+)
+)?(
+(
+		ruleQualifiedNameInStaticImport
+)
+)((
+(
+	'*' 
+ 
+
+)
+)
+    |(
+(
+ruleValidID
+)
+)))
+    |(
+(
+		ruleQualifiedName
+)
+)
+    |(
+(
+ruleQualifiedNameWithWildcard
+)
+))(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport :
+( ruleValidID
+	'.' 
+)+
+    ;
+
+
+
+
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity :
+((	'info' 
+)
+    |(	'warn' 
+)
+    |(	'error' 
+));
+
+
+
+// Rule DateType
+ruleDateType :
+((	'date' 
+)
+    |(	'time' 
+)
+    |(	'timestamp' 
+));
+
+
+
+// Rule LVisibility
+ruleLVisibility :
+((	'package' 
+)
+    |(	'private' 
+)
+    |(	'protected' 
+)
+    |(	'public' 
+));
+
+
+
+// Rule LComparatorType
+ruleLComparatorType :
+((	'==' 
+)
+    |(	'>' 
+)
+    |(	'<' 
+)
+    |(	'>=' 
+)
+    |(	'<=' 
+)
+    |(	'<>' 
+));
+
+
+
+// Rule LowerBound
+ruleLowerBound :
+((	'*' 
+)
+    |(	'0' 
+)
+    |(	'?' 
+)
+    |(	'+' 
+)
+    |(	'1' 
+));
+
+
+
+// Rule UpperBound
+ruleUpperBound :
+((	'*' 
+)
+    |(	'1' 
+));
+
+
+
+RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
+
+RULE_INT : '0'..'9' ('0'..'9'|'_')*;
+
+RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/' {skip();};
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')? {skip();};
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+ {skip();};
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g
new file mode 100644
index 0000000..d8150c4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalCommonGrammar;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.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.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private CommonGrammarGrammarAccess grammarAccess;
+ 	
+    public InternalCommonGrammarParser(TokenStream input, CommonGrammarGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "TypedPackage";	
+   	}
+   	
+   	@Override
+   	protected CommonGrammarGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedPackageRule()); }
+	 iv_ruleTypedPackage=ruleTypedPackage 
+	 { $current=$iv_ruleTypedPackage.current; } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"Import");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+	    }
+		lv_types_5_0=ruleType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"types",
+        		lv_types_5_0, 
+        		"Type");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleType
+entryRuleType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRule()); }
+	 iv_ruleType=ruleType 
+	 { $current=$iv_ruleType.current; } 
+	 EOF 
+;
+
+// Rule Type
+ruleType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+    }
+    this_ScalarType_0=ruleScalarType
+    { 
+        $current = $this_ScalarType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+    }
+    this_Class_1=ruleClass
+    { 
+        $current = $this_Class_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassRule()); }
+	 iv_ruleClass=ruleClass 
+	 { $current=$iv_ruleClass.current; } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getClassAccess().getLClassAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2(),
+            $current);
+    }
+)	otherlv_3='class' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getClassAccess().getClassKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportRule()); }
+	 iv_ruleImport=ruleImport 
+	 { $current=$iv_ruleImport.current; } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"LQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeRule()); }
+	 iv_ruleDataType=ruleDataType 
+	 { $current=$iv_ruleDataType.current; } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datatype' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2='jvmType' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+	    }
+		lv_jvmTypeReference_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"jvmTypeReference",
+        		lv_jvmTypeReference_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_asPrimitive_4_0=	'as primitive' 
+    {
+        newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asPrimitive", true, "as primitive");
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+	    }
+		lv_constraints_5_0=ruleDataTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"DataTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_6='properties' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+    }
+	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+	    }
+		lv_properties_8_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_8_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=', ' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+	    }
+		lv_properties_10_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_10_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11=')' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+    }
+)?)
+    |((
+(
+		lv_date_12_0=	'dateType' 
+    {
+        newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "date", true, "dateType");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+	    }
+		lv_dateType_13_0=ruleDateType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateType",
+        		lv_dateType_13_0, 
+        		"DateType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+	    }
+		lv_constraints_14_0=ruleDateConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_14_0, 
+        		"DateConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_15='properties' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+    }
+	otherlv_16='(' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+	    }
+		lv_properties_17_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_17_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_18=', ' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+	    }
+		lv_properties_19_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_19_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_20=')' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+    }
+)?)
+    |((
+(
+		lv_asBlob_21_0=	'as blob' 
+    {
+        newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asBlob", true, "as blob");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+	    }
+		lv_constraints_22_0=ruleBlobTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_22_0, 
+        		"BlobTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_23='properties' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+    }
+	otherlv_24='(' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+	    }
+		lv_properties_25_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_25_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=', ' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+	    }
+		lv_properties_27_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_27_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28=')' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+    }
+)?))(	otherlv_29=';' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeConstraintRule()); }
+	 iv_ruleDataTypeConstraint=ruleDataTypeConstraint 
+	 { $current=$iv_ruleDataTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDateConstraintRule()); }
+	 iv_ruleDateConstraint=ruleDateConstraint 
+	 { $current=$iv_ruleDateConstraint.current; } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+    }
+    this_DtCFuture_0=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+    }
+    this_DtCPast_1=ruleDtCPast
+    { 
+        $current = $this_DtCPast_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+    }
+    this_DtCNotNull_2=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+    }
+    this_DtCNull_3=ruleDtCNull
+    { 
+        $current = $this_DtCNull_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); }
+	 iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint 
+	 { $current=$iv_ruleBlobTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+    }
+    this_DtCNotNull_0=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+    }
+    this_DtCNull_1=ruleDtCNull
+    { 
+        $current = $this_DtCNull_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertFalseRule()); }
+	 iv_ruleDtCAssertFalse=ruleDtCAssertFalse 
+	 { $current=$iv_ruleDtCAssertFalse.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+            $current);
+    }
+)	otherlv_1='isFalse' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertTrueRule()); }
+	 iv_ruleDtCAssertTrue=ruleDtCAssertTrue 
+	 { $current=$iv_ruleDtCAssertTrue.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+            $current);
+    }
+)	otherlv_1='isTrue' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); }
+	 iv_ruleDtCDecimalMax=ruleDtCDecimalMax 
+	 { $current=$iv_ruleDtCDecimalMax.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMinRule()); }
+	 iv_ruleDtCDecimalMin=ruleDtCDecimalMin 
+	 { $current=$iv_ruleDtCDecimalMin.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDigitsRule()); }
+	 iv_ruleDtCDigits=ruleDtCDigits 
+	 { $current=$iv_ruleDtCDigits.current; } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+            $current);
+    }
+)	otherlv_1='digits' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_intDigits_3_0=RULE_INT
+		{
+			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"intDigits",
+        		lv_intDigits_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_fractionDigits_5_0=RULE_INT
+		{
+			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fractionDigits",
+        		lv_fractionDigits_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCFutureRule()); }
+	 iv_ruleDtCFuture=ruleDtCFuture 
+	 { $current=$iv_ruleDtCFuture.current; } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+            $current);
+    }
+)	otherlv_1='isFuture' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCPastRule()); }
+	 iv_ruleDtCPast=ruleDtCPast 
+	 { $current=$iv_ruleDtCPast.current; } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+            $current);
+    }
+)	otherlv_1='isPast' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMaxRule()); }
+	 iv_ruleDtCNumericMax=ruleDtCNumericMax 
+	 { $current=$iv_ruleDtCNumericMax.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMinRule()); }
+	 iv_ruleDtCNumericMin=ruleDtCNumericMin 
+	 { $current=$iv_ruleDtCNumericMin.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNotNullRule()); }
+	 iv_ruleDtCNotNull=ruleDtCNotNull 
+	 { $current=$iv_ruleDtCNotNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNotNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNullRule()); }
+	 iv_ruleDtCNull=ruleDtCNull 
+	 { $current=$iv_ruleDtCNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCRegExRule()); }
+	 iv_ruleDtCRegEx=ruleDtCRegEx 
+	 { $current=$iv_ruleDtCRegEx.current; } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+            $current);
+    }
+)	otherlv_1='regex' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_pattern_3_0=RULE_STRING
+		{
+			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCRegExRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"pattern",
+        		lv_pattern_3_0, 
+        		"STRING");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCSizeRule()); }
+	 iv_ruleDtCSize=ruleDtCSize 
+	 { $current=$iv_ruleDtCSize.current; } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+            $current);
+    }
+)	otherlv_1='minMaxSize' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_min_3_0=RULE_INT
+		{
+			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_max_5_0=RULE_INT
+		{
+			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"max",
+        		lv_max_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getScalarTypeRule()); }
+	 iv_ruleScalarType=ruleScalarType 
+	 { $current=$iv_ruleScalarType.current; } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+    }
+    this_DataType_0=ruleDataType
+    { 
+        $current = $this_DataType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+    }
+    this_Enum_1=ruleEnum
+    { 
+        $current = $this_Enum_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumRule()); }
+	 iv_ruleEnum=ruleEnum 
+	 { $current=$iv_ruleEnum.current; } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='enum' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+	    }
+		lv_literals_3_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_3_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+	    }
+		lv_literals_5_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_5_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumLiteralRule()); }
+	 iv_ruleEnumLiteral=ruleEnumLiteral 
+	 { $current=$iv_ruleEnumLiteral.current; } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=RULE_ID
+		{
+			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"ID");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+	 				}
+					({true}?=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+    }
+(
+(
+		lv_default_3_0=	'asDefault' 
+    {
+        newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "default", true, "asDefault");
+	    }
+
+)
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_null_4_0=	'forNull' 
+    {
+        newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "null", true, "forNull");
+	    }
+
+)
+)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+    }
+(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumLiteralAccess().getEqualsSignKeyword_1_1_2_0());
+    }
+(
+(
+		lv_value_7_0=RULE_INT
+		{
+			newLeafNode(lv_value_7_0, grammarAccess.getEnumLiteralAccess().getValueINTTerminalRuleCall_1_1_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"INT");
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationDefRule()); }
+	 iv_ruleAnnotationDef=ruleAnnotationDef 
+	 { $current=$iv_ruleAnnotationDef.current; } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationDefAccess().getAnnotationXAnnotationParserRuleCall_0_0()); 
+	    }
+		lv_annotation_0_0=ruleXAnnotation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationDefRule());
+	        }
+       		set(
+       			$current, 
+       			"annotation",
+        		lv_annotation_0_0, 
+        		"XAnnotation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResultFilterRule()); }
+	 iv_ruleResultFilter=ruleResultFilter 
+	 { $current=$iv_ruleResultFilter.current; } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); 
+    }
+    this_AttributeMatchingConstraint_0=ruleAttributeMatchingConstraint
+    { 
+        $current = $this_AttributeMatchingConstraint_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 iv_ruleAttributeMatchingConstraint=ruleAttributeMatchingConstraint 
+	 { $current=$iv_ruleAttributeMatchingConstraint.current; } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_0=RULE_ID
+	{
+		newLeafNode(otherlv_0, grammarAccess.getAttributeMatchingConstraintAccess().getAttributeLAttributeCrossReference_0_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeLComparatorTypeEnumRuleCall_1_0()); 
+	    }
+		lv_comparatorType_1_0=ruleLComparatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		set(
+       			$current, 
+       			"comparatorType",
+        		lv_comparatorType_1_0, 
+        		"LComparatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_matchingValue_2_0=RULE_STRING
+		{
+			newLeafNode(lv_matchingValue_2_0, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueSTRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"matchingValue",
+        		lv_matchingValue_2_0, 
+        		"STRING");
+	    }
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralLEnumLiteralCrossReference_2_1_0()); 
+	}
+
+)
+))(	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getKeyAndValueRule()); }
+	 iv_ruleKeyAndValue=ruleKeyAndValue 
+	 { $current=$iv_ruleKeyAndValue.current; } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='key' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getKeyAndValueAccess().getKeyKeyword_0());
+    }
+	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+		lv_key_2_0=RULE_STRING
+		{
+			newLeafNode(lv_key_2_0, grammarAccess.getKeyAndValueAccess().getKeySTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_2_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_3='value' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getKeyAndValueAccess().getValueKeyword_3());
+    }
+	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_4());
+    }
+(
+(
+		lv_value_5_0=RULE_STRING
+		{
+			newLeafNode(lv_value_5_0, grammarAccess.getKeyAndValueAccess().getValueSTRINGTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 iv_ruleLQualifiedNameWithWildCard=ruleLQualifiedNameWithWildCard 
+	 { $current=$iv_ruleLQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 iv_ruleValidIDWithKeywords=ruleValidIDWithKeywords 
+	 { $current=$iv_ruleValidIDWithKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='cachable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
+    }
+
+    |
+	kw='id' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
+    }
+
+    |
+	kw='uuid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
+    }
+
+    |
+	kw='transient' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
+    }
+
+    |
+	kw='version' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
+    }
+
+    |(
+	kw='derived' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5_0()); 
+    }
+
+	kw='collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_5_1()); 
+    }
+)
+    |
+	kw='refers' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); 
+    }
+
+    |
+	kw='settings' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); 
+    }
+
+    |
+	kw='lazy' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); 
+    }
+
+    |
+	kw='notnull' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); 
+    }
+
+    |
+	kw='dto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); 
+    }
+
+    |
+	kw='date' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); 
+    }
+
+    |
+	kw='mapto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); 
+    }
+
+    |
+	kw='ref' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); 
+    }
+
+    |
+	kw='cascade' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); 
+    }
+
+    |
+	kw='var' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); 
+    }
+
+    |    this_ID_17=RULE_ID    {
+		$current.merge(this_ID_17);
+    }
+
+    { 
+    newLeafNode(this_ID_17, grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLIntRule()); } 
+	 iv_ruleLInt=ruleLInt 
+	 { $current=$iv_ruleLInt.current.getText(); }  
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
+    }
+)?    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLIntAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLDecimalRule()); } 
+	 iv_ruleLDecimal=ruleLDecimal 
+	 { $current=$iv_ruleLDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLDecimalAccess().getLIntParserRuleCall_0()); 
+    }
+    this_LInt_0=ruleLInt    {
+		$current.merge(this_LInt_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLDecimalAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLDecimalAccess().getINTTerminalRuleCall_1_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 
+	 { $current=$iv_ruleXStringLiteral.current; } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		lv_value_1_0=RULE_STRING
+		{
+			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
+	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
+	 { $current=$iv_ruleXTypeLiteral.current; } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='typeof' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+	    }
+		lv_arrayDimensions_4_0=ruleArrayBrackets		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"arrayDimensions",
+        		lv_arrayDimensions_4_0, 
+        		"ArrayBrackets");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
+	 iv_ruleXThrowExpression=ruleXThrowExpression 
+	 { $current=$iv_ruleXThrowExpression.current; } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='throw' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
+	 iv_ruleXReturnExpression=ruleXReturnExpression 
+	 { $current=$iv_ruleXReturnExpression.current; } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='return' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+    }
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
+	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='try' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((((	'catch' 
+)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+	    }
+		lv_catchClauses_3_0=ruleXCatchClause		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"catchClauses",
+        		lv_catchClauses_3_0, 
+        		"XCatchClause");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+(((	'finally' 
+)=>	otherlv_4='finally' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+	    }
+		lv_finallyExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='finally' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_finallyExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))))
+;
+
+
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
+	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
+	 { $current=$iv_ruleXSynchronizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='synchronized' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_param_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"param",
+        		lv_param_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCatchClauseRule()); }
+	 iv_ruleXCatchClause=ruleXCatchClause 
+	 { $current=$iv_ruleXCatchClause.current; } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((	'catch' 
+)=>	otherlv_0='catch' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
+	    }
+		lv_declaredParam_2_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_2_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
+	    }
+		lv_expression_4_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_4_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule 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 entryRuleNumber
+entryRuleNumber returns [String current=null] 
+	@init { 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+	}
+	:
+	{ newCompositeNode(grammarAccess.getNumberRule()); } 
+	 iv_ruleNumber=ruleNumber 
+	 { $current=$iv_ruleNumber.current.getText(); }  
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+    }
+    @after { leaveRule(); }:
+(    this_HEX_0=RULE_HEX    {
+		$current.merge(this_HEX_0);
+    }
+
+    { 
+    newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
+    }
+
+    |((    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
+    }
+
+    |    this_DECIMAL_2=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_2);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
+    }
+)(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+    }
+(    this_INT_4=RULE_INT    {
+		$current.merge(this_INT_4);
+    }
+
+    { 
+    newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
+    }
+
+    |    this_DECIMAL_5=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_5);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
+    }
+))?))
+    ;
+finally {
+	myHiddenTokenState.restore();
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
+	 iv_ruleJvmTypeReference=ruleJvmTypeReference 
+	 { $current=$iv_ruleJvmTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
+    }
+    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+    { 
+        $current = $this_JvmParameterizedTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)	ruleArrayBrackets))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+            $current);
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
+    }
+ruleArrayBrackets
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))*)
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
+    }
+    this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+    { 
+        $current = $this_XFunctionTypeRef_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); } 
+	 iv_ruleArrayBrackets=ruleArrayBrackets 
+	 { $current=$iv_ruleArrayBrackets.current.getText(); }  
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='[' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+    }
+
+	kw=']' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
+	 iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef 
+	 { $current=$iv_ruleXFunctionTypeRef.current; } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
+	    }
+		lv_paramTypes_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_paramTypes_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+    }
+)?	otherlv_5='=>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
+	    }
+		lv_returnType_6_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		set(
+       			$current, 
+       			"returnType",
+        		lv_returnType_6_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference 
+	 { $current=$iv_ruleJvmParameterizedTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_1='<' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_arguments_2_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_2_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+	    }
+		lv_arguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+    }
+(((((
+)	'.' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+            $current);
+    }
+)	otherlv_7='.' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+    }
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_9='<' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
+	    }
+		lv_arguments_10_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_10_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=',' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
+	    }
+		lv_arguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='>' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+    }
+)?)*)?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference 
+	 { $current=$iv_ruleJvmArgumentTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
+    }
+    this_JvmTypeReference_0=ruleJvmTypeReference
+    { 
+        $current = $this_JvmTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
+    }
+    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+    { 
+        $current = $this_JvmWildcardTypeReference_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference 
+	 { $current=$iv_ruleJvmWildcardTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
+	    }
+		lv_constraints_2_0=ruleJvmUpperBound		{
+	        if ($current==null) {
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.tokens b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.tokens
new file mode 100644
index 0000000..df3ef11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.tokens
@@ -0,0 +1,273 @@
+'!'=100
+'!='=87
+'!=='=89
+'#'=75
+'%'=99
+'%='=80
+'&&'=85
+'&'=133
+'('=23
+')'=25
+'*'=53
+'**'=97
+'*='=78
+'+'=71
+'++'=102
+'+='=76
+', '=24
+','=74
+'-'=72
+'--'=103
+'-='=77
+'->'=91
+'.'=52
+'..'=93
+'..<'=92
+'/'=98
+'/='=79
+'0'=143
+'1'=144
+':'=110
+'::'=104
+';'=18
+'<'=81
+'<='=142
+'<>'=95
+'='=31
+'=='=86
+'==='=88
+'=>'=94
+'>'=82
+'>='=83
+'?'=132
+'?.'=105
+'?:'=96
+'@'=73
+'['=29
+']'=34
+'as blob'=27
+'as primitive'=21
+'as'=101
+'asDefault'=48
+'cachable'=54
+'cascade'=69
+'case'=112
+'catch'=131
+'class'=16
+'collection'=60
+'datatype'=19
+'date'=66
+'dateType'=26
+'default'=111
+'derived'=59
+'digits'=38
+'do'=115
+'dto'=65
+'else'=108
+'enum'=47
+'error'=136
+'extends'=117
+'extension'=119
+'false'=122
+'finally'=129
+'for'=113
+'forNull'=49
+'id'=55
+'if'=107
+'import'=17
+'info'=134
+'instanceof'=90
+'isFalse'=28
+'isFuture'=39
+'isNotNull'=43
+'isNull'=44
+'isPast'=40
+'isTrue'=35
+'jvmType'=20
+'key'=50
+'lazy'=63
+'mapto'=67
+'maxDecimal'=36
+'maxNumber'=41
+'minDecimal'=37
+'minMaxSize'=46
+'minNumber'=42
+'msgCode'=30
+'msgI18nKey'=32
+'new'=121
+'notnull'=64
+'null'=124
+'package'=13
+'private'=139
+'properties'=22
+'protected'=140
+'public'=141
+'ref'=68
+'refers'=61
+'regex'=45
+'return'=127
+'settings'=62
+'severity'=33
+'static'=118
+'super'=120
+'switch'=109
+'synchronized'=130
+'throw'=126
+'time'=137
+'timestamp'=138
+'transient'=57
+'true'=123
+'try'=128
+'typeof'=125
+'uuid'=56
+'val'=116
+'value'=51
+'var'=70
+'version'=58
+'warn'=135
+'while'=114
+'{'=14
+'|'=106
+'||'=84
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=6
+RULE_INT=4
+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__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java
new file mode 100644
index 0000000..03aef5b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarLexer.java
@@ -0,0 +1,5489 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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 InternalCommonGrammarLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=7;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalCommonGrammarLexer() {;} 
+    public InternalCommonGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalCommonGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:14:7: ( 'class' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:14:9: 'class'
+            {
+            match("class"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:15:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:15:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:16:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:17:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:17:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:18:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:18:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:19:7: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:19:9: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:20:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:20:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:21:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:22:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:23:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:24:7: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:24:9: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:25:7: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:25:9: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:26:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:26:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:27:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:28:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:28:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:29:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:30:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:30:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:31:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:31:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:32:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:33:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:33:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:34:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:34:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:35:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:35:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:36:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:36:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:37:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:37:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:38:7: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:38:9: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:39:7: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:39:9: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:40:7: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:40:9: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:41:7: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:41:9: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:42:7: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:42:9: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:43:7: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:43:9: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:44:7: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:44:9: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:45:7: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:45:9: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:46:7: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:46:9: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:47:7: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:47:9: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:48:7: ( 'key' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:48:9: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:49:7: ( 'value' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:49:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:50:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:50:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:51:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:52:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:52:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:53:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:53:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:54:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:54:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:55:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:55:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:56:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:56:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:57:7: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:57:9: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:58:7: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:58:9: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:59:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:59:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:60:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:60:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:61:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:61:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:62:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:62:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:63:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:63:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:64:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:64:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:65:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:65:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:66:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:66:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:67:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:67:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:68:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:68:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:69:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:69:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:70:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:70:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:71:7: ( '@' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:72:7: ( ',' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:72:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:73:7: ( '#' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:73:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:74:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:74:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:75:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:76:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:76:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:77:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:77:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:78:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:78:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:79:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:79:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:80:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:80:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:81:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:81:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:82:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:82:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:83:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:83:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:84:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:84:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:85:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:85:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:86:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:86:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:87:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:87:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:88:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:88:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:89:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:89:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:90:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:90:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:91:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:91:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:92:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:92:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:93:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:94:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:95:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:96:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:97:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:98:8: ( '!' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:99:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:99:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:100:8: ( '++' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:101:8: ( '--' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:102:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:103:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:104:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:105:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:105:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:106:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:106:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:107:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:107:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:108:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:109:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:109:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:110:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:110:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:111:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:111:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:112:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:112:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:113:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:113:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:114:8: ( 'val' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:114:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:115:8: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:115:10: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:116:8: ( 'static' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:116:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:117:8: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:117:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:118:8: ( 'super' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:118:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:119:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:119:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:120:8: ( 'false' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:120:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:121:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:121:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:122:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:122:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:123:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:123:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:124:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:124:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:125:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:125:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:126:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:126:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:127:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:127:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:128:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:128:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:129:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:129:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:130:8: ( '?' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:130:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:131:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:131:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:132:8: ( 'info' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:132:10: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:133:8: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:133:10: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:134:8: ( 'error' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:134:10: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:135:8: ( 'time' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:135:10: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:136:8: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:136:10: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:137:8: ( 'private' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:137:10: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:138:8: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:138:10: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:139:8: ( 'public' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:139:10: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:140:8: ( '<=' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:140:10: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:141:8: ( '0' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:141:10: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:142:8: ( '1' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:142:10: '1'
+            {
+            match('1'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10687: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10689:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10689:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10689: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10691: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10693:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10693:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10693:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10693: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10693: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10695: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10697:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10697:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10697: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10697: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10699: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10701:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10701:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10701: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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10703:16: ( . )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:10703:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=141;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:847: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:856: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:865: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:878: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:886: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:898: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:914: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:930: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1:938: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\67\2\uffff\2\67\1\uffff\3\67\1\uffff\1\114\2\uffff\1\67\1\124\1\67\1\uffff\5\67\1\147\1\152\4\67\1\166\1\172\2\uffff\1\u0080\1\u0082\1\u0085\1\u0087\1\u0089\1\u008b\1\u008d\1\u0090\1\u0092\1\67\1\u0097\1\u0099\1\u009a\1\63\5\uffff\3\67\3\uffff\5\67\1\u00ab\1\67\1\u00ae\1\uffff\4\67\1\u00b4\1\67\1\u00b8\5\uffff\3\67\1\u00be\2\uffff\5\67\1\uffff\13\67\1\u00d4\4\uffff\11\67\30\uffff\1\u00e1\6\uffff\2\67\1\uffff\1\u009a\6\uffff\16\67\1\uffff\2\67\1\uffff\4\67\1\u00fd\1\uffff\1\67\1\uffff\1\67\1\uffff\4\67\2\uffff\7\67\1\u0112\5\67\1\u0119\2\67\1\u011c\1\u011e\1\u011f\1\67\2\uffff\3\67\1\u0124\5\67\1\u012a\1\67\2\uffff\12\67\1\u0136\12\67\1\u0141\1\67\1\u0144\3\67\1\uffff\1\67\2\uffff\21\67\1\uffff\1\67\1\u015b\1\u015c\3\67\1\uffff\2\67\1\uffff\1\67\2\uffff\1\67\1\u0164\1\67\1\u0166\1\uffff\2\67\1\u016a\1\u016b\1\67\1\uffff\1\u016d\1\67\1\u016f\5\67\1\u0175\2\67\1\uffff\1\u0178\11\67\1\uffff\2\67\1\uffff\11\67\1\u018d\7\67\1\u0195\1\67\1\u0197\2\67\2\uffff\1\67\1\u019c\1\67\1\u019e\1\67\1\u01a0\1\67\1\uffff\1\67\1\uffff\1\67\1\u01a4\1\67\2\uffff\1\67\1\uffff\1\u01a7\1\uffff\4\67\1\u01ac\1\uffff\2\67\1\uffff\1\67\1\u01b0\2\67\1\u01b3\1\u01b4\1\67\1\u01b6\3\67\1\u01ba\10\67\1\uffff\5\67\1\u01c8\1\u01c9\1\uffff\1\67\1\uffff\1\u01cb\1\u01cc\2\67\1\uffff\1\67\1\uffff\1\67\1\uffff\2\67\1\u01d3\1\uffff\2\67\1\uffff\1\u01d6\2\67\1\u01d9\1\uffff\1\67\1\u01db\1\67\1\uffff\1\u01dd\1\67\2\uffff\1\67\1\uffff\3\67\1\uffff\1\u01e3\1\u01e4\1\u01e5\1\67\1\u01e7\10\67\2\uffff\1\67\2\uffff\1\u01f1\1\67\1\u01f3\1\u01f4\1\u01f5\1\67\1\uffff\1\67\1\u01f8\1\uffff\2\67\1\uffff\1\u01fb\1\uffff\1\67\1\uffff\1\u01fd\2\67\1\u0200\1\u0201\3\uffff\1\67\1\uffff\6\67\1\u0209\1\u020a\1\67\1\uffff\1\67\3\uffff\2\67\1\uffff\1\67\1\u0210\1\uffff\1\67\1\uffff\1\u0212\1\67\2\uffff\1\u0214\2\67\1\u0217\1\67\1\u0219\1\67\2\uffff\1\67\1\u021c\1\u021d\1\u021e\1\u021f\1\uffff\1\u0220\1\uffff\1\u0221\1\uffff\1\u0222\1\u0223\1\uffff\1\u0224\1\uffff\1\u0225\1\67\12\uffff\1\67\1\u0228\1\uffff";
+    static final String DFA21_eofS =
+        "\u0229\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\1\141\1\144\1\uffff\1\141\1\166\1\163\1\uffff\1\40\2\uffff\1\141\1\75\1\145\1\uffff\1\145\1\154\1\141\1\145\1\141\1\56\1\52\1\165\1\150\1\141\1\145\1\53\1\55\2\uffff\1\52\3\75\1\174\1\46\1\75\1\56\1\72\1\141\3\60\1\44\5\uffff\1\143\1\151\1\142\3\uffff\1\141\1\143\1\154\1\160\1\106\1\44\1\146\1\44\1\uffff\1\164\1\147\1\146\1\157\1\44\1\155\1\40\5\uffff\1\147\1\160\1\156\1\75\2\uffff\1\164\1\151\1\141\1\160\1\156\1\uffff\1\146\1\165\1\163\1\164\2\162\1\154\1\156\1\171\1\154\1\162\1\74\4\uffff\1\151\1\141\1\160\1\162\1\155\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\uffff\1\60\6\uffff\1\153\1\160\1\166\1\154\1\163\1\150\2\143\1\154\1\157\1\141\1\162\1\141\1\157\1\uffff\1\164\1\157\1\uffff\1\141\2\151\1\141\1\44\1\uffff\1\124\1\142\1\145\1\uffff\1\103\1\104\1\164\1\104\2\uffff\1\145\3\164\1\145\1\143\1\145\1\44\1\165\1\155\2\145\1\157\1\44\1\163\1\141\3\44\1\163\2\uffff\1\144\1\156\1\145\1\44\1\145\1\157\1\145\1\171\1\156\1\44\1\154\2\uffff\1\154\1\156\1\141\2\145\1\141\1\151\1\163\2\141\1\44\1\150\1\145\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\141\1\44\1\164\1\44\1\164\1\166\1\165\1\uffff\1\171\2\uffff\1\146\1\157\1\61\1\145\1\165\1\157\1\145\1\165\1\141\1\162\1\151\1\143\1\151\1\162\1\150\1\170\1\162\1\uffff\1\162\2\44\1\156\1\162\1\165\1\uffff\1\145\1\154\1\uffff\1\145\2\uffff\1\151\1\44\1\163\1\44\1\uffff\1\157\1\167\2\44\1\165\1\uffff\1\44\1\145\1\44\1\147\1\162\1\143\1\164\1\143\1\44\1\142\1\144\1\uffff\1\44\1\143\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\156\1\uffff\2\171\1\uffff\1\163\1\145\1\154\1\160\1\141\1\144\1\70\1\143\1\155\1\44\1\143\1\155\1\170\1\151\1\156\1\150\1\143\1\44\1\162\1\44\1\163\1\156\2\uffff\1\144\1\44\1\154\1\44\1\154\1\44\1\157\1\uffff\1\151\1\uffff\1\146\1\44\1\164\2\uffff\1\154\1\uffff\1\44\1\uffff\1\145\2\164\1\145\1\44\1\uffff\1\154\1\145\1\uffff\1\164\1\44\1\145\1\162\2\44\1\165\1\44\1\143\2\160\1\44\1\144\1\164\1\145\1\165\1\145\1\156\1\151\1\142\1\uffff\1\151\1\142\1\123\1\164\1\147\2\44\1\uffff\1\157\1\uffff\2\44\1\163\1\151\1\uffff\1\154\1\uffff\1\171\1\uffff\1\156\1\145\1\44\1\uffff\1\141\1\154\1\uffff\1\44\1\151\1\145\1\44\1\uffff\1\145\1\44\1\151\1\uffff\1\44\1\145\2\uffff\1\154\1\uffff\3\145\1\uffff\3\44\1\154\1\44\1\113\1\155\1\145\1\155\1\145\1\151\1\171\1\163\2\uffff\1\156\2\uffff\1\44\1\157\3\44\1\156\1\uffff\1\155\1\44\1\uffff\1\145\1\144\1\uffff\1\44\1\uffff\1\157\1\uffff\1\44\1\154\1\157\2\44\3\uffff\1\164\1\uffff\1\145\1\141\1\162\1\141\1\162\1\172\2\44\1\151\1\uffff\1\156\3\uffff\1\164\1\160\1\uffff\1\163\1\44\1\uffff\1\156\1\uffff\1\44\1\146\2\uffff\1\44\1\171\1\154\1\44\1\154\1\44\1\145\2\uffff\1\172\4\44\1\uffff\1\44\1\uffff\1\44\1\uffff\2\44\1\uffff\1\44\1\uffff\1\44\1\145\12\uffff\1\144\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\165\2\uffff\1\157\1\163\1\uffff\1\164\1\166\1\163\1\uffff\1\40\2\uffff\1\163\1\76\1\171\1\uffff\1\145\1\170\1\157\2\145\1\56\1\75\1\165\1\171\1\141\1\165\1\75\1\76\2\uffff\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\150\1\170\2\154\1\172\5\uffff\1\143\1\157\1\142\3\uffff\1\141\1\164\1\154\1\160\1\124\1\172\1\163\1\172\1\uffff\1\164\1\147\1\162\1\157\1\172\1\155\1\172\5\uffff\1\147\1\170\1\156\1\75\2\uffff\1\166\1\151\1\141\1\160\1\156\1\uffff\1\164\1\165\1\163\1\164\2\162\1\154\1\156\1\171\2\162\1\74\4\uffff\1\151\1\171\1\160\1\162\1\155\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\uffff\1\154\6\uffff\1\153\1\164\1\166\1\154\1\163\1\150\1\145\1\143\1\154\1\157\1\165\1\162\1\141\1\165\1\uffff\1\164\1\157\1\uffff\1\145\2\151\1\141\1\172\1\uffff\1\124\1\160\1\145\1\uffff\1\111\1\116\1\164\1\116\2\uffff\1\145\3\164\1\145\1\143\1\145\1\172\1\165\1\155\2\145\1\157\1\172\1\163\1\141\3\172\1\163\2\uffff\1\144\1\156\1\145\1\172\1\145\1\157\1\145\1\171\1\156\1\172\1\154\2\uffff\1\154\1\156\1\141\2\145\1\141\1\151\1\163\2\141\1\172\1\150\1\145\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\141\1\172\1\164\1\172\1\164\1\166\1\165\1\uffff\1\171\2\uffff\1\146\1\157\1\61\1\145\1\165\1\157\1\145\1\165\1\141\1\162\1\151\1\143\1\151\1\162\1\150\1\170\1\162\1\uffff\1\162\2\172\1\156\1\162\1\165\1\uffff\1\145\1\154\1\uffff\1\145\2\uffff\1\151\1\172\1\163\1\172\1\uffff\1\157\1\167\2\172\1\165\1\uffff\1\172\1\145\1\172\1\147\1\162\1\143\1\164\1\143\1\172\1\142\1\144\1\uffff\1\172\1\143\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\156\1\uffff\2\171\1\uffff\1\163\1\145\1\154\1\160\1\141\1\144\1\70\1\143\1\155\1\172\1\143\1\155\1\170\1\151\1\156\1\150\1\143\1\172\1\162\1\172\1\163\1\156\2\uffff\1\163\1\172\1\154\1\172\1\154\1\172\1\157\1\uffff\1\151\1\uffff\1\146\1\172\1\164\2\uffff\1\154\1\uffff\1\172\1\uffff\1\145\2\164\1\145\1\172\1\uffff\1\154\1\145\1\uffff\1\164\1\172\1\145\1\162\2\172\1\165\1\172\1\143\2\160\1\172\1\144\1\164\1\145\1\165\1\145\1\156\1\151\1\142\1\uffff\1\151\1\142\1\123\1\164\1\147\2\172\1\uffff\1\157\1\uffff\2\172\1\163\1\151\1\uffff\1\154\1\uffff\1\171\1\uffff\1\156\1\145\1\172\1\uffff\1\141\1\154\1\uffff\1\172\1\151\1\145\1\172\1\uffff\1\145\1\172\1\151\1\uffff\1\172\1\145\2\uffff\1\154\1\uffff\3\145\1\uffff\3\172\1\154\1\172\1\113\1\155\1\145\1\155\1\145\1\151\1\171\1\163\2\uffff\1\156\2\uffff\1\172\1\157\3\172\1\156\1\uffff\1\155\1\172\1\uffff\1\145\1\144\1\uffff\1\172\1\uffff\1\157\1\uffff\1\172\1\154\1\157\2\172\3\uffff\1\164\1\uffff\1\145\1\141\1\162\1\141\1\162\3\172\1\151\1\uffff\1\156\3\uffff\1\164\1\160\1\uffff\1\163\1\172\1\uffff\1\156\1\uffff\1\172\1\146\2\uffff\1\172\1\171\1\154\1\172\1\154\1\172\1\145\2\uffff\5\172\1\uffff\1\172\1\uffff\1\172\1\uffff\2\172\1\uffff\1\172\1\uffff\1\172\1\145\12\uffff\1\144\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\2\uffff\1\6\3\uffff\1\13\1\uffff\1\15\1\21\3\uffff\1\26\15\uffff\1\75\1\77\16\uffff\1\u0088\2\u0089\1\u008c\1\u008d\3\uffff\1\u0088\1\2\1\3\10\uffff\1\6\7\uffff\1\13\1\14\1\76\1\15\1\21\4\uffff\1\122\1\23\5\uffff\1\26\14\uffff\1\50\1\102\1\125\1\51\11\uffff\1\100\1\132\1\73\1\101\1\117\1\133\1\74\1\75\1\77\1\103\1\u008a\1\u008b\1\126\1\104\1\127\1\123\1\u0082\1\105\1\107\1\106\1\110\1\136\1\111\1\171\1\uffff\1\130\1\124\1\135\1\170\1\134\1\142\2\uffff\1\u0085\1\uffff\1\u0083\1\u0087\1\u0084\1\u0086\1\u0089\1\u008c\16\uffff\1\53\2\uffff\1\137\5\uffff\1\147\3\uffff\1\131\4\uffff\1\114\1\112\24\uffff\1\120\1\121\13\uffff\1\115\1\113\33\uffff\1\65\1\uffff\1\11\1\17\21\uffff\1\70\6\uffff\1\145\2\uffff\1\46\1\uffff\1\150\1\72\4\uffff\1\164\5\uffff\1\155\13\uffff\1\144\12\uffff\1\172\2\uffff\1\66\26\uffff\1\43\1\140\7\uffff\1\54\1\uffff\1\157\3\uffff\1\175\1\63\1\uffff\1\160\1\uffff\1\173\5\uffff\1\4\2\uffff\1\167\24\uffff\1\67\7\uffff\1\154\1\uffff\1\41\4\uffff\1\174\1\uffff\1\156\1\uffff\1\47\3\uffff\1\162\2\uffff\1\146\4\uffff\1\u0081\3\uffff\1\5\2\uffff\1\27\1\34\1\uffff\1\40\3\uffff\1\32\15\uffff\1\141\1\152\1\uffff\1\61\1\163\6\uffff\1\161\2\uffff\1\1\2\uffff\1\177\1\uffff\1\71\1\uffff\1\20\5\uffff\1\57\1\143\1\10\1\uffff\1\22\11\uffff\1\151\1\uffff\1\45\1\165\1\56\2\uffff\1\64\2\uffff\1\52\1\uffff\1\33\2\uffff\1\7\1\16\7\uffff\1\25\1\62\5\uffff\1\u0080\1\uffff\1\37\1\uffff\1\44\2\uffff\1\35\1\uffff\1\36\2\uffff\1\153\1\55\1\176\1\12\1\60\1\116\1\24\1\30\1\31\1\42\2\uffff\1\166";
+    static final String DFA21_specialS =
+        "\1\0\u0228\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\63\2\62\2\63\1\62\22\63\1\62\1\47\1\60\1\40\1\57\1\42\1\46\1\61\1\12\1\14\1\30\1\35\1\13\1\36\1\27\1\41\1\53\1\54\10\55\1\51\1\6\1\43\1\17\1\44\1\50\1\37\32\57\1\15\1\63\1\21\1\56\1\57\1\63\1\11\1\57\1\4\1\7\1\23\1\24\2\57\1\5\1\10\1\25\1\33\1\16\1\34\1\57\1\1\1\57\1\22\1\20\1\32\1\31\1\26\1\52\3\57\1\2\1\45\1\3\uff82\63",
+            "\1\64\20\uffff\1\65\2\uffff\1\66",
+            "",
+            "",
+            "\1\73\12\uffff\1\72\2\uffff\1\74",
+            "\1\77\1\uffff\1\101\6\uffff\1\75\1\100\4\uffff\1\76",
+            "",
+            "\1\103\3\uffff\1\105\3\uffff\1\104\5\uffff\1\107\4\uffff\1\106",
+            "\1\110",
+            "\1\111",
+            "",
+            "\1\113",
+            "",
+            "",
+            "\1\120\7\uffff\1\121\11\uffff\1\117",
+            "\1\122\1\123",
+            "\1\125\16\uffff\1\127\1\130\1\uffff\1\126\1\uffff\1\131",
+            "",
+            "\1\133",
+            "\1\135\1\uffff\1\134\3\uffff\1\137\5\uffff\1\136",
+            "\1\141\7\uffff\1\142\5\uffff\1\140",
+            "\1\143",
+            "\1\144\3\uffff\1\145",
+            "\1\146",
+            "\1\151\22\uffff\1\150",
+            "\1\153",
+            "\1\156\1\157\10\uffff\1\154\6\uffff\1\155",
+            "\1\160",
+            "\1\162\11\uffff\1\161\5\uffff\1\163",
+            "\1\165\21\uffff\1\164",
+            "\1\171\17\uffff\1\167\1\170",
+            "",
+            "",
+            "\1\176\4\uffff\1\177\15\uffff\1\175",
+            "\1\u0081",
+            "\1\u0084\1\u0083",
+            "\1\u0086",
+            "\1\u0088",
+            "\1\u008a",
+            "\1\u008c",
+            "\1\u008f\13\uffff\1\u008e",
+            "\1\u0091",
+            "\1\u0094\6\uffff\1\u0093",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095\6\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "\1\67\34\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009d",
+            "\1\u009f\5\uffff\1\u009e",
+            "\1\u00a0",
+            "",
+            "",
+            "",
+            "\1\u00a1",
+            "\1\u00a2\17\uffff\1\u00a3\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7\7\uffff\1\u00aa\1\uffff\1\u00a9\3\uffff\1\u00a8",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00ad\14\uffff\1\u00ac",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b2\13\uffff\1\u00b1",
+            "\1\u00b3",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00b5",
+            "\1\u00b6\3\uffff\1\67\13\uffff\12\67\7\uffff\3\67\1\u00b7\26\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b9",
+            "\1\u00bb\7\uffff\1\u00ba",
+            "\1\u00bc",
+            "\1\u00bd",
+            "",
+            "",
+            "\1\u00c0\1\uffff\1\u00bf",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "",
+            "\1\u00c6\1\u00c5\14\uffff\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0\5\uffff\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d5",
+            "\1\u00d6\23\uffff\1\u00d7\3\uffff\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e2",
+            "\1\u00e3",
+            "",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e4",
+            "\1\u00e5\3\uffff\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb\1\uffff\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0\23\uffff\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4\5\uffff\1\u00f5",
+            "",
+            "\1\u00f6",
+            "\1\u00f7",
+            "",
+            "\1\u00f8\3\uffff\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u00fe",
+            "\1\u0100\15\uffff\1\u00ff",
+            "\1\u0101",
+            "",
+            "\1\u0102\5\uffff\1\u0103",
+            "\1\u0104\11\uffff\1\u0105",
+            "\1\u0106",
+            "\1\u0107\10\uffff\1\u0109\1\u0108",
+            "",
+            "",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\4\67\1\u0111\25\67",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\67\13\uffff\12\67\7\uffff\15\67\1\u0118\14\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\24\67\1\u011d\5\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0120",
+            "",
+            "",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u012b",
+            "",
+            "",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0142",
+            "\1\67\13\uffff\12\67\7\uffff\23\67\1\u0143\6\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "",
+            "\1\u0148",
+            "",
+            "",
+            "\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\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "",
+            "\1\u015a",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "",
+            "\1\u0160",
+            "\1\u0161",
+            "",
+            "\1\u0162",
+            "",
+            "",
+            "\1\u0163",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0165",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\22\67\1\u0169\7\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u016c",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u016e",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0176",
+            "\1\u0177",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\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\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0196",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0198",
+            "\1\u0199",
+            "",
+            "",
+            "\1\u019a\16\uffff\1\u019b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u019d",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u019f",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01a1",
+            "",
+            "\1\u01a2",
+            "",
+            "\1\u01a3",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01a5",
+            "",
+            "",
+            "\1\u01a6",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01ad",
+            "\1\u01ae",
+            "",
+            "\1\u01af",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b5",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01ca",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01cd",
+            "\1\u01ce",
+            "",
+            "\1\u01cf",
+            "",
+            "\1\u01d0",
+            "",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01d4",
+            "\1\u01d5",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01da",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01dc",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01de",
+            "",
+            "",
+            "\1\u01df",
+            "",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01e6",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "",
+            "",
+            "\1\u01f0",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01f2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01f6",
+            "",
+            "\1\u01f7",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01f9",
+            "\1\u01fa",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01fc",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "",
+            "\1\u0202",
+            "",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u020b",
+            "",
+            "\1\u020c",
+            "",
+            "",
+            "",
+            "\1\u020d",
+            "\1\u020e",
+            "",
+            "\1\u020f",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u0211",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0213",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0215",
+            "\1\u0216",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0218",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u021a",
+            "",
+            "",
+            "\1\u021b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0226",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0227",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            ""
+    };
+
+    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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='p') ) {s = 1;}
+
+                        else if ( (LA21_0=='{') ) {s = 2;}
+
+                        else if ( (LA21_0=='}') ) {s = 3;}
+
+                        else if ( (LA21_0=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='i') ) {s = 5;}
+
+                        else if ( (LA21_0==';') ) {s = 6;}
+
+                        else if ( (LA21_0=='d') ) {s = 7;}
+
+                        else if ( (LA21_0=='j') ) {s = 8;}
+
+                        else if ( (LA21_0=='a') ) {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=='m') ) {s = 14;}
+
+                        else if ( (LA21_0=='=') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0==']') ) {s = 17;}
+
+                        else if ( (LA21_0=='r') ) {s = 18;}
+
+                        else if ( (LA21_0=='e') ) {s = 19;}
+
+                        else if ( (LA21_0=='f') ) {s = 20;}
+
+                        else if ( (LA21_0=='k') ) {s = 21;}
+
+                        else if ( (LA21_0=='v') ) {s = 22;}
+
+                        else if ( (LA21_0=='.') ) {s = 23;}
+
+                        else if ( (LA21_0=='*') ) {s = 24;}
+
+                        else if ( (LA21_0=='u') ) {s = 25;}
+
+                        else if ( (LA21_0=='t') ) {s = 26;}
+
+                        else if ( (LA21_0=='l') ) {s = 27;}
+
+                        else if ( (LA21_0=='n') ) {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=='w') ) {s = 42;}
+
+                        else if ( (LA21_0=='0') ) {s = 43;}
+
+                        else if ( (LA21_0=='1') ) {s = 44;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 45;}
+
+                        else if ( (LA21_0=='^') ) {s = 46;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='o'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+
+                        else if ( (LA21_0=='\"') ) {s = 48;}
+
+                        else if ( (LA21_0=='\'') ) {s = 49;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 51;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarParser.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarParser.java
new file mode 100644
index 0000000..db7da1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+
+
+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 InternalCommonGrammarParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'class'", "'import'", "';'", "'datatype'", "'jvmType'", "'as primitive'", "'properties'", "'('", "', '", "')'", "'dateType'", "'as blob'", "'isFalse'", "'['", "'msgCode'", "'='", "'msgI18nKey'", "'severity'", "']'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'asDefault'", "'forNull'", "'key'", "'value'", "'.'", "'*'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'derived'", "'collection'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'@'", "','", "'#'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'1'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=7;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalCommonGrammarParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalCommonGrammarParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalCommonGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g"; }
+
+
+
+     	private CommonGrammarGrammarAccess grammarAccess;
+     	
+        public InternalCommonGrammarParser(TokenStream input, CommonGrammarGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "TypedPackage";	
+       	}
+       	
+       	@Override
+       	protected CommonGrammarGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleTypedPackage"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:68:1: entryRuleTypedPackage returns [EObject current=null] : iv_ruleTypedPackage= ruleTypedPackage EOF ;
+    public final EObject entryRuleTypedPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTypedPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:69:2: (iv_ruleTypedPackage= ruleTypedPackage EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:70:2: iv_ruleTypedPackage= ruleTypedPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypedPackageRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage75);
+            iv_ruleTypedPackage=ruleTypedPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTypedPackage; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedPackage85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTypedPackage"
+
+
+    // $ANTLR start "ruleTypedPackage"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:77:1: ruleTypedPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleTypedPackage() 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_types_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:80:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:81:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:81:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:81:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:81:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:82:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleTypedPackage131); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:91:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:92:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:92:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:93:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleTypedPackage152);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:109:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )?
+            int alt3=2;
+            int LA3_0 = input.LA(1);
+
+            if ( (LA3_0==14) ) {
+                alt3=1;
+            }
+            switch (alt3) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:109:4: otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleTypedPackage165); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:113:1: ( (lv_imports_4_0= ruleImport ) )*
+                    loop1:
+                    do {
+                        int alt1=2;
+                        int LA1_0 = input.LA(1);
+
+                        if ( (LA1_0==17) ) {
+                            alt1=1;
+                        }
+
+
+                        switch (alt1) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:114:1: (lv_imports_4_0= ruleImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:114:1: (lv_imports_4_0= ruleImport )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:115:3: lv_imports_4_0= ruleImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleImport_in_ruleTypedPackage186);
+                    	    lv_imports_4_0=ruleImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"Import");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop1;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:131:3: ( (lv_types_5_0= ruleType ) )*
+                    loop2:
+                    do {
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
+
+                        if ( (LA2_0==16||LA2_0==19||LA2_0==47||LA2_0==73) ) {
+                            alt2=1;
+                        }
+
+
+                        switch (alt2) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:132:1: (lv_types_5_0= ruleType )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:132:1: (lv_types_5_0= ruleType )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:133:3: lv_types_5_0= ruleType
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleTypedPackage208);
+                    	    lv_types_5_0=ruleType();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"types",
+                    	              		lv_types_5_0, 
+                    	              		"Type");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop2;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleTypedPackage221); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTypedPackage"
+
+
+    // $ANTLR start "entryRuleType"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:161:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
+    public final EObject entryRuleType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:162:2: (iv_ruleType= ruleType EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:163:2: iv_ruleType= ruleType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleType_in_entryRuleType259);
+            iv_ruleType=ruleType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleType269); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleType"
+
+
+    // $ANTLR start "ruleType"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:170:1: ruleType returns [EObject current=null] : (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass ) ;
+    public final EObject ruleType() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ScalarType_0 = null;
+
+        EObject this_Class_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:173:28: ( (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:174:1: (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:174:1: (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==19||LA4_0==47) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==16||LA4_0==73) ) {
+                alt4=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:175:5: this_ScalarType_0= ruleScalarType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleScalarType_in_ruleType316);
+                    this_ScalarType_0=ruleScalarType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ScalarType_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:185:5: this_Class_1= ruleClass
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleClass_in_ruleType343);
+                    this_Class_1=ruleClass();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_Class_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleType"
+
+
+    // $ANTLR start "entryRuleClass"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:201:1: entryRuleClass returns [EObject current=null] : iv_ruleClass= ruleClass EOF ;
+    public final EObject entryRuleClass() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleClass = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:202:2: (iv_ruleClass= ruleClass EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:203:2: iv_ruleClass= ruleClass EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getClassRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleClass_in_entryRuleClass378);
+            iv_ruleClass=ruleClass();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleClass; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleClass388); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleClass"
+
+
+    // $ANTLR start "ruleClass"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:210:1: ruleClass returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' ) ;
+    public final EObject ruleClass() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_3=null;
+        EObject lv_annotations_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:213:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:214:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:214:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:214:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:214:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:215:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getClassAccess().getLClassAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:220:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( (LA5_0==73) ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:221:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:221:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:222:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleClass443);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:238:3: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:239:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_3=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleClass465); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getClassAccess().getClassKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleClass"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:256:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
+    public final EObject entryRuleImport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleImport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:257:2: (iv_ruleImport= ruleImport EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:258:2: iv_ruleImport= ruleImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getImportRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleImport_in_entryRuleImport501);
+            iv_ruleImport=ruleImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleImport; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImport511); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:265:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? ) ;
+    public final EObject ruleImport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:268:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:269:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:269:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:269:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )?
+            {
+            otherlv_0=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleImport548); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:273:1: ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:274:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:274:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:275:3: lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLQualifiedNameWithWildCard_in_ruleImport569);
+            lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getImportRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"importedNamespace",
+                      		lv_importedNamespace_1_0, 
+                      		"LQualifiedNameWithWildCard");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:291:2: (otherlv_2= ';' )?
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==18) ) {
+                alt6=1;
+            }
+            switch (alt6) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:291:4: otherlv_2= ';'
+                    {
+                    otherlv_2=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleImport582); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleDataType"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:303:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
+    public final EObject entryRuleDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:304:2: (iv_ruleDataType= ruleDataType EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:305:2: iv_ruleDataType= ruleDataType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataType_in_entryRuleDataType620);
+            iv_ruleDataType=ruleDataType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataType630); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataType"
+
+
+    // $ANTLR start "ruleDataType"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:312:1: ruleDataType returns [EObject current=null] : (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) ;
+    public final EObject ruleDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_asPrimitive_4_0=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token lv_date_12_0=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token lv_asBlob_21_0=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_jvmTypeReference_3_0 = null;
+
+        EObject lv_constraints_5_0 = null;
+
+        EObject lv_properties_8_0 = null;
+
+        EObject lv_properties_10_0 = null;
+
+        Enumerator lv_dateType_13_0 = null;
+
+        EObject lv_constraints_14_0 = null;
+
+        EObject lv_properties_17_0 = null;
+
+        EObject lv_properties_19_0 = null;
+
+        EObject lv_constraints_22_0 = null;
+
+        EObject lv_properties_25_0 = null;
+
+        EObject lv_properties_27_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:315:28: ( (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:316:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:316:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:316:3: otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )?
+            {
+            otherlv_0=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleDataType667); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:320:1: ( (lv_name_1_0= ruleValidIDWithKeywords ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:321:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:321:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:322:3: lv_name_1_0= ruleValidIDWithKeywords
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDataType688);
+            lv_name_1_0=ruleValidIDWithKeywords();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidIDWithKeywords");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:338:2: ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) )
+            int alt17=3;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt17=1;
+                }
+                break;
+            case 26:
+                {
+                alt17=2;
+                }
+                break;
+            case 27:
+                {
+                alt17=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 17, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt17) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:338:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:338:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:338:5: otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    {
+                    otherlv_2=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleDataType702); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:342:1: ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:343:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:343:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:344:3: lv_jvmTypeReference_3_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleDataType723);
+                    lv_jvmTypeReference_3_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"jvmTypeReference",
+                              		lv_jvmTypeReference_3_0, 
+                              		"JvmTypeReference");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:360:2: ( (lv_asPrimitive_4_0= 'as primitive' ) )?
+                    int alt7=2;
+                    int LA7_0 = input.LA(1);
+
+                    if ( (LA7_0==21) ) {
+                        alt7=1;
+                    }
+                    switch (alt7) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:361:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            {
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:361:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:362:3: lv_asPrimitive_4_0= 'as primitive'
+                            {
+                            lv_asPrimitive_4_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleDataType741); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		setWithLastConsumed(current, "asPrimitive", true, "as primitive");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:375:3: ( (lv_constraints_5_0= ruleDataTypeConstraint ) )*
+                    loop8:
+                    do {
+                        int alt8=2;
+                        int LA8_0 = input.LA(1);
+
+                        if ( (LA8_0==28||(LA8_0>=35 && LA8_0<=38)||(LA8_0>=41 && LA8_0<=46)) ) {
+                            alt8=1;
+                        }
+
+
+                        switch (alt8) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:376:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:376:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:377:3: lv_constraints_5_0= ruleDataTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_ruleDataType776);
+                    	    lv_constraints_5_0=ruleDataTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_5_0, 
+                    	              		"DataTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop8;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:393:3: (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    int alt10=2;
+                    int LA10_0 = input.LA(1);
+
+                    if ( (LA10_0==22) ) {
+                        alt10=1;
+                    }
+                    switch (alt10) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:393:5: otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')'
+                            {
+                            otherlv_6=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType790); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+                                  
+                            }
+                            otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType802); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:401:1: ( (lv_properties_8_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:402:1: (lv_properties_8_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:402:1: (lv_properties_8_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:403:3: lv_properties_8_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType823);
+                            lv_properties_8_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_8_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:419:2: (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )*
+                            loop9:
+                            do {
+                                int alt9=2;
+                                int LA9_0 = input.LA(1);
+
+                                if ( (LA9_0==24) ) {
+                                    alt9=1;
+                                }
+
+
+                                switch (alt9) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:419:4: otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType836); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:423:1: ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:424:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:424:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:425:3: lv_properties_10_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType857);
+                            	    lv_properties_10_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_10_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop9;
+                                }
+                            } while (true);
+
+                            otherlv_11=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType871); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:446:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:446:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:446:7: ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:446:7: ( (lv_date_12_0= 'dateType' ) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:447:1: (lv_date_12_0= 'dateType' )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:447:1: (lv_date_12_0= 'dateType' )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:448:3: lv_date_12_0= 'dateType'
+                    {
+                    lv_date_12_0=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDataType899); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "date", true, "dateType");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:461:2: ( (lv_dateType_13_0= ruleDateType ) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:462:1: (lv_dateType_13_0= ruleDateType )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:462:1: (lv_dateType_13_0= ruleDateType )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:463:3: lv_dateType_13_0= ruleDateType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDateType_in_ruleDataType933);
+                    lv_dateType_13_0=ruleDateType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"dateType",
+                              		lv_dateType_13_0, 
+                              		"DateType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:479:2: ( (lv_constraints_14_0= ruleDateConstraint ) )*
+                    loop11:
+                    do {
+                        int alt11=2;
+                        int LA11_0 = input.LA(1);
+
+                        if ( ((LA11_0>=39 && LA11_0<=40)||(LA11_0>=43 && LA11_0<=44)) ) {
+                            alt11=1;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:480:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:480:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:481:3: lv_constraints_14_0= ruleDateConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_ruleDataType954);
+                    	    lv_constraints_14_0=ruleDateConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_14_0, 
+                    	              		"DateConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:497:3: (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    int alt13=2;
+                    int LA13_0 = input.LA(1);
+
+                    if ( (LA13_0==22) ) {
+                        alt13=1;
+                    }
+                    switch (alt13) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:497:5: otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')'
+                            {
+                            otherlv_15=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType968); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+                                  
+                            }
+                            otherlv_16=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType980); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:505:1: ( (lv_properties_17_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:506:1: (lv_properties_17_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:506:1: (lv_properties_17_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:507:3: lv_properties_17_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1001);
+                            lv_properties_17_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_17_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:523:2: (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )*
+                            loop12:
+                            do {
+                                int alt12=2;
+                                int LA12_0 = input.LA(1);
+
+                                if ( (LA12_0==24) ) {
+                                    alt12=1;
+                                }
+
+
+                                switch (alt12) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:523:4: otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_18=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType1014); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:527:1: ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:528:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:528:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:529:3: lv_properties_19_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1035);
+                            	    lv_properties_19_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_19_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop12;
+                                }
+                            } while (true);
+
+                            otherlv_20=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType1049); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:550:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:550:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:550:7: ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:550:7: ( (lv_asBlob_21_0= 'as blob' ) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:551:1: (lv_asBlob_21_0= 'as blob' )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:551:1: (lv_asBlob_21_0= 'as blob' )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:552:3: lv_asBlob_21_0= 'as blob'
+                    {
+                    lv_asBlob_21_0=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleDataType1077); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "asBlob", true, "as blob");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:565:2: ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )*
+                    loop14:
+                    do {
+                        int alt14=2;
+                        int LA14_0 = input.LA(1);
+
+                        if ( ((LA14_0>=43 && LA14_0<=44)) ) {
+                            alt14=1;
+                        }
+
+
+                        switch (alt14) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:566:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:566:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:567:3: lv_constraints_22_0= ruleBlobTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_ruleDataType1111);
+                    	    lv_constraints_22_0=ruleBlobTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_22_0, 
+                    	              		"BlobTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop14;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:583:3: (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
+
+                    if ( (LA16_0==22) ) {
+                        alt16=1;
+                    }
+                    switch (alt16) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:583:5: otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')'
+                            {
+                            otherlv_23=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType1125); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+                                  
+                            }
+                            otherlv_24=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType1137); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:591:1: ( (lv_properties_25_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:592:1: (lv_properties_25_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:592:1: (lv_properties_25_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:593:3: lv_properties_25_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1158);
+                            lv_properties_25_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_25_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:609:2: (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )*
+                            loop15:
+                            do {
+                                int alt15=2;
+                                int LA15_0 = input.LA(1);
+
+                                if ( (LA15_0==24) ) {
+                                    alt15=1;
+                                }
+
+
+                                switch (alt15) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:609:4: otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_26=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType1171); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:613:1: ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:614:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:614:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:615:3: lv_properties_27_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1192);
+                            	    lv_properties_27_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_27_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop15;
+                                }
+                            } while (true);
+
+                            otherlv_28=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType1206); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:635:5: (otherlv_29= ';' )?
+            int alt18=2;
+            int LA18_0 = input.LA(1);
+
+            if ( (LA18_0==18) ) {
+                alt18=1;
+            }
+            switch (alt18) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:635:7: otherlv_29= ';'
+                    {
+                    otherlv_29=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleDataType1223); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataType"
+
+
+    // $ANTLR start "entryRuleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:649:1: entryRuleDataTypeConstraint returns [EObject current=null] : iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF ;
+    public final EObject entryRuleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:650:2: (iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:651:2: iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint1263);
+            iv_ruleDataTypeConstraint=ruleDataTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataTypeConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataTypeConstraint1273); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataTypeConstraint"
+
+
+    // $ANTLR start "ruleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:658:1: ruleDataTypeConstraint returns [EObject current=null] : (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) ;
+    public final EObject ruleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCAssertFalse_0 = null;
+
+        EObject this_DtCAssertTrue_1 = null;
+
+        EObject this_DtCDecimalMax_2 = null;
+
+        EObject this_DtCDecimalMin_3 = null;
+
+        EObject this_DtCDigits_4 = null;
+
+        EObject this_DtCNumericMax_5 = null;
+
+        EObject this_DtCNumericMin_6 = null;
+
+        EObject this_DtCNotNull_7 = null;
+
+        EObject this_DtCNull_8 = null;
+
+        EObject this_DtCRegEx_9 = null;
+
+        EObject this_DtCSize_10 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:661:28: ( (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:662:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:662:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            int alt19=11;
+            switch ( input.LA(1) ) {
+            case 28:
+                {
+                alt19=1;
+                }
+                break;
+            case 35:
+                {
+                alt19=2;
+                }
+                break;
+            case 36:
+                {
+                alt19=3;
+                }
+                break;
+            case 37:
+                {
+                alt19=4;
+                }
+                break;
+            case 38:
+                {
+                alt19=5;
+                }
+                break;
+            case 41:
+                {
+                alt19=6;
+                }
+                break;
+            case 42:
+                {
+                alt19=7;
+                }
+                break;
+            case 43:
+                {
+                alt19=8;
+                }
+                break;
+            case 44:
+                {
+                alt19=9;
+                }
+                break;
+            case 45:
+                {
+                alt19=10;
+                }
+                break;
+            case 46:
+                {
+                alt19=11;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:663:5: this_DtCAssertFalse_0= ruleDtCAssertFalse
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCAssertFalse_in_ruleDataTypeConstraint1320);
+                    this_DtCAssertFalse_0=ruleDtCAssertFalse();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertFalse_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:673:5: this_DtCAssertTrue_1= ruleDtCAssertTrue
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCAssertTrue_in_ruleDataTypeConstraint1347);
+                    this_DtCAssertTrue_1=ruleDtCAssertTrue();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertTrue_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:683:5: this_DtCDecimalMax_2= ruleDtCDecimalMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMax_in_ruleDataTypeConstraint1374);
+                    this_DtCDecimalMax_2=ruleDtCDecimalMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMax_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:693:5: this_DtCDecimalMin_3= ruleDtCDecimalMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMin_in_ruleDataTypeConstraint1401);
+                    this_DtCDecimalMin_3=ruleDtCDecimalMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMin_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:703:5: this_DtCDigits_4= ruleDtCDigits
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDigits_in_ruleDataTypeConstraint1428);
+                    this_DtCDigits_4=ruleDtCDigits();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDigits_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:713:5: this_DtCNumericMax_5= ruleDtCNumericMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNumericMax_in_ruleDataTypeConstraint1455);
+                    this_DtCNumericMax_5=ruleDtCNumericMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMax_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:723:5: this_DtCNumericMin_6= ruleDtCNumericMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNumericMin_in_ruleDataTypeConstraint1482);
+                    this_DtCNumericMin_6=ruleDtCNumericMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMin_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:733:5: this_DtCNotNull_7= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleDataTypeConstraint1509);
+                    this_DtCNotNull_7=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:743:5: this_DtCNull_8= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleDataTypeConstraint1536);
+                    this_DtCNull_8=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:753:5: this_DtCRegEx_9= ruleDtCRegEx
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCRegEx_in_ruleDataTypeConstraint1563);
+                    this_DtCRegEx_9=ruleDtCRegEx();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCRegEx_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:763:5: this_DtCSize_10= ruleDtCSize
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCSize_in_ruleDataTypeConstraint1590);
+                    this_DtCSize_10=ruleDtCSize();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCSize_10; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDateConstraint"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:779:1: entryRuleDateConstraint returns [EObject current=null] : iv_ruleDateConstraint= ruleDateConstraint EOF ;
+    public final EObject entryRuleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDateConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:780:2: (iv_ruleDateConstraint= ruleDateConstraint EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:781:2: iv_ruleDateConstraint= ruleDateConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDateConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint1625);
+            iv_ruleDateConstraint=ruleDateConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDateConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDateConstraint1635); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDateConstraint"
+
+
+    // $ANTLR start "ruleDateConstraint"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:788:1: ruleDateConstraint returns [EObject current=null] : (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) ;
+    public final EObject ruleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCFuture_0 = null;
+
+        EObject this_DtCPast_1 = null;
+
+        EObject this_DtCNotNull_2 = null;
+
+        EObject this_DtCNull_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:791:28: ( (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:792:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:792:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            int alt20=4;
+            switch ( input.LA(1) ) {
+            case 39:
+                {
+                alt20=1;
+                }
+                break;
+            case 40:
+                {
+                alt20=2;
+                }
+                break;
+            case 43:
+                {
+                alt20=3;
+                }
+                break;
+            case 44:
+                {
+                alt20=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt20) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:793:5: this_DtCFuture_0= ruleDtCFuture
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCFuture_in_ruleDateConstraint1682);
+                    this_DtCFuture_0=ruleDtCFuture();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCFuture_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:803:5: this_DtCPast_1= ruleDtCPast
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCPast_in_ruleDateConstraint1709);
+                    this_DtCPast_1=ruleDtCPast();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCPast_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:813:5: this_DtCNotNull_2= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleDateConstraint1736);
+                    this_DtCNotNull_2=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:823:5: this_DtCNull_3= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleDateConstraint1763);
+                    this_DtCNull_3=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDateConstraint"
+
+
+    // $ANTLR start "entryRuleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:839:1: entryRuleBlobTypeConstraint returns [EObject current=null] : iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF ;
+    public final EObject entryRuleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBlobTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:840:2: (iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:841:2: iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint1798);
+            iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleBlobTypeConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlobTypeConstraint1808); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBlobTypeConstraint"
+
+
+    // $ANTLR start "ruleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:848:1: ruleBlobTypeConstraint returns [EObject current=null] : (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) ;
+    public final EObject ruleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCNotNull_0 = null;
+
+        EObject this_DtCNull_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:851:28: ( (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:852:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:852:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==43) ) {
+                alt21=1;
+            }
+            else if ( (LA21_0==44) ) {
+                alt21=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:853:5: this_DtCNotNull_0= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleBlobTypeConstraint1855);
+                    this_DtCNotNull_0=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:863:5: this_DtCNull_1= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleBlobTypeConstraint1882);
+                    this_DtCNull_1=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBlobTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:879:1: entryRuleDtCAssertFalse returns [EObject current=null] : iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF ;
+    public final EObject entryRuleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertFalse = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:880:2: (iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:881:2: iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertFalseRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse1917);
+            iv_ruleDtCAssertFalse=ruleDtCAssertFalse();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertFalse; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCAssertFalse1927); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertFalse"
+
+
+    // $ANTLR start "ruleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:888:1: ruleDtCAssertFalse returns [EObject current=null] : ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:891:28: ( ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:892:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:892:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:892:2: () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:892:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:893:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleDtCAssertFalse1973); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:902:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt25=2;
+            int LA25_0 = input.LA(1);
+
+            if ( (LA25_0==29||(LA25_0>=32 && LA25_0<=34)) ) {
+                alt25=1;
+            }
+            switch (alt25) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:904:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:904:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:905:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:908:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:909:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:909:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt24=0;
+                    loop24:
+                    do {
+                        int alt24=4;
+                        int LA24_0 = input.LA(1);
+
+                        if ( LA24_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                            alt24=1;
+                        }
+                        else if ( LA24_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                            alt24=2;
+                        }
+                        else if ( LA24_0 >=33 && LA24_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                            alt24=3;
+                        }
+
+
+                        switch (alt24) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:911:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:911:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:912:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:912:111: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:913:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:916:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:916:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:916:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:916:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCAssertFalse2031); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:920:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt22=2;
+                    	    int LA22_0 = input.LA(1);
+
+                    	    if ( (LA22_0==30) ) {
+                    	        alt22=1;
+                    	    }
+                    	    switch (alt22) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:920:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCAssertFalse2044); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertFalse2056); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:928:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:929:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:929:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:930:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse2077);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:953:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:953:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:954:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:954:111: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:955:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:958:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:958:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:958:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:958:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCAssertFalse2147); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertFalse2159); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:966:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:967:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:967:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:968:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse2180);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:991:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:991:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:992:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:992:111: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:993:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:996:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:996:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:996:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:996:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:996:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt23=2;
+                    	    int LA23_0 = input.LA(1);
+
+                    	    if ( (LA23_0==33) ) {
+                    	        alt23=1;
+                    	    }
+                    	    switch (alt23) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:996:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCAssertFalse2249); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertFalse2261); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1004:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1005:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1005:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1006:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertFalse2282);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCAssertFalse2296); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt24 >= 1 ) break loop24;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(24, input);
+                                throw eee;
+                        }
+                        cnt24++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertFalse"
+
+
+    // $ANTLR start "entryRuleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1049:1: entryRuleDtCAssertTrue returns [EObject current=null] : iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF ;
+    public final EObject entryRuleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertTrue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1050:2: (iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1051:2: iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertTrueRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue2380);
+            iv_ruleDtCAssertTrue=ruleDtCAssertTrue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertTrue; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCAssertTrue2390); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertTrue"
+
+
+    // $ANTLR start "ruleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1058:1: ruleDtCAssertTrue returns [EObject current=null] : ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1061:28: ( ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1062:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1062:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1062:2: () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1062:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1063:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleDtCAssertTrue2436); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1072:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==29||(LA29_0>=32 && LA29_0<=34)) ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1074:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1074:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1075:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1078:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1079:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1079:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt28=0;
+                    loop28:
+                    do {
+                        int alt28=4;
+                        int LA28_0 = input.LA(1);
+
+                        if ( LA28_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                            alt28=1;
+                        }
+                        else if ( LA28_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                            alt28=2;
+                        }
+                        else if ( LA28_0 >=33 && LA28_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                            alt28=3;
+                        }
+
+
+                        switch (alt28) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1081:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1081:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1082:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1082:110: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1083:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1086:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1086:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1086:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1086:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCAssertTrue2494); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1090:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt26=2;
+                    	    int LA26_0 = input.LA(1);
+
+                    	    if ( (LA26_0==30) ) {
+                    	        alt26=1;
+                    	    }
+                    	    switch (alt26) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1090:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCAssertTrue2507); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertTrue2519); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1098:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1099:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1099:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1100:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue2540);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1123:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1123:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1124:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1124:110: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1125:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1128:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1128:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1128:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1128:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCAssertTrue2610); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertTrue2622); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1136:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1137:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1137:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1138:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue2643);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1161:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1161:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1162:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1162:110: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1163:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1166:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1166:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1166:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1166:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1166:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt27=2;
+                    	    int LA27_0 = input.LA(1);
+
+                    	    if ( (LA27_0==33) ) {
+                    	        alt27=1;
+                    	    }
+                    	    switch (alt27) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1166:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCAssertTrue2712); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertTrue2724); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1174:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1175:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1175:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1176:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertTrue2745);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCAssertTrue2759); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt28 >= 1 ) break loop28;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(28, input);
+                                throw eee;
+                        }
+                        cnt28++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertTrue"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1219:1: entryRuleDtCDecimalMax returns [EObject current=null] : iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF ;
+    public final EObject entryRuleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1220:2: (iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1221:2: iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax2843);
+            iv_ruleDtCDecimalMax=ruleDtCDecimalMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMax; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCDecimalMax2853); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMax"
+
+
+    // $ANTLR start "ruleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1228:1: ruleDtCDecimalMax returns [EObject current=null] : ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1231:28: ( ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1232:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1232:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1232:2: () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1232:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1233:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleDtCDecimalMax2899); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtCDecimalMax2911); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1246:1: ( (lv_max_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1247:1: (lv_max_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1247:1: (lv_max_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1248:3: lv_max_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMax2932);
+            lv_max_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1264:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==29||(LA33_0>=32 && LA33_0<=34)) ) {
+                alt33=1;
+            }
+            switch (alt33) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1266:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1266:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1267:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1270:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1271:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1271:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt32=0;
+                    loop32:
+                    do {
+                        int alt32=4;
+                        int LA32_0 = input.LA(1);
+
+                        if ( LA32_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt32=1;
+                        }
+                        else if ( LA32_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt32=2;
+                        }
+                        else if ( LA32_0 >=33 && LA32_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt32=3;
+                        }
+
+
+                        switch (alt32) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1273:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1273:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1274:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1274:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1275:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1278:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1278:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1278:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1278:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCDecimalMax2990); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1282:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt30=2;
+                    	    int LA30_0 = input.LA(1);
+
+                    	    if ( (LA30_0==30) ) {
+                    	        alt30=1;
+                    	    }
+                    	    switch (alt30) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1282:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCDecimalMax3003); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMax3015); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1290:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1291:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1291:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1292:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax3036);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1315:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1315:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1316:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1316:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1317:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1320:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1320:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1320:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1320:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCDecimalMax3106); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMax3118); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1328:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1329:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1329:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1330:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax3139);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1353:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1353:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1354:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1354:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1355:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1358:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1358:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1358:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1358:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1358:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt31=2;
+                    	    int LA31_0 = input.LA(1);
+
+                    	    if ( (LA31_0==33) ) {
+                    	        alt31=1;
+                    	    }
+                    	    switch (alt31) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1358:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCDecimalMax3208); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMax3220); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1366:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1367:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1367:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1368:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMax3241);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCDecimalMax3255); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt32 >= 1 ) break loop32;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(32, input);
+                                throw eee;
+                        }
+                        cnt32++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtCDecimalMax3315); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMax"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1415:1: entryRuleDtCDecimalMin returns [EObject current=null] : iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF ;
+    public final EObject entryRuleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1416:2: (iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1417:2: iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMinRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin3351);
+            iv_ruleDtCDecimalMin=ruleDtCDecimalMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMin; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCDecimalMin3361); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMin"
+
+
+    // $ANTLR start "ruleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1424:1: ruleDtCDecimalMin returns [EObject current=null] : ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1427:28: ( ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1428:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1428:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1428:2: () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1428:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1429:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCDecimalMin3407); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtCDecimalMin3419); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1442:1: ( (lv_min_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1443:1: (lv_min_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1443:1: (lv_min_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1444:3: lv_min_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMin3440);
+            lv_min_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1460:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt37=2;
+            int LA37_0 = input.LA(1);
+
+            if ( (LA37_0==29||(LA37_0>=32 && LA37_0<=34)) ) {
+                alt37=1;
+            }
+            switch (alt37) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1462:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1462:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1463:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1466:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1467:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1467:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt36=0;
+                    loop36:
+                    do {
+                        int alt36=4;
+                        int LA36_0 = input.LA(1);
+
+                        if ( LA36_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt36=1;
+                        }
+                        else if ( LA36_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt36=2;
+                        }
+                        else if ( LA36_0 >=33 && LA36_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt36=3;
+                        }
+
+
+                        switch (alt36) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1469:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1469:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1470:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1470:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1471:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1474:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1474:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1474:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1474:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCDecimalMin3498); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1478:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt34=2;
+                    	    int LA34_0 = input.LA(1);
+
+                    	    if ( (LA34_0==30) ) {
+                    	        alt34=1;
+                    	    }
+                    	    switch (alt34) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1478:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCDecimalMin3511); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMin3523); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1486:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1487:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1487:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1488:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin3544);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1511:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1511:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1512:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1512:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1513:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1516:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1516:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1516:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1516:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCDecimalMin3614); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMin3626); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1524:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1525:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1525:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1526:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin3647);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1549:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1549:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1550:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1550:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1551:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1554:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1554:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1554:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1554:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1554:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt35=2;
+                    	    int LA35_0 = input.LA(1);
+
+                    	    if ( (LA35_0==33) ) {
+                    	        alt35=1;
+                    	    }
+                    	    switch (alt35) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1554:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCDecimalMin3716); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMin3728); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1562:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1563:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1563:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1564:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMin3749);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCDecimalMin3763); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt36 >= 1 ) break loop36;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(36, input);
+                                throw eee;
+                        }
+                        cnt36++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtCDecimalMin3823); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMin"
+
+
+    // $ANTLR start "entryRuleDtCDigits"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1611:1: entryRuleDtCDigits returns [EObject current=null] : iv_ruleDtCDigits= ruleDtCDigits EOF ;
+    public final EObject entryRuleDtCDigits() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDigits = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1612:2: (iv_ruleDtCDigits= ruleDtCDigits EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1613:2: iv_ruleDtCDigits= ruleDtCDigits EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDigitsRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits3859);
+            iv_ruleDtCDigits=ruleDtCDigits();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDigits; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCDigits3869); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDigits"
+
+
+    // $ANTLR start "ruleDtCDigits"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1620:1: ruleDtCDigits returns [EObject current=null] : ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) ;
+    public final EObject ruleDtCDigits() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_intDigits_3_0=null;
+        Token otherlv_4=null;
+        Token lv_fractionDigits_5_0=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        AntlrDatatypeRuleToken lv_msgCode_10_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_13_0 = null;
+
+        Enumerator lv_severity_16_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1623:28: ( ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1624:1: ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1624:1: ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1624:2: () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1624:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1625:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleDtCDigits3915); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtCDigits3927); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1638:1: ( (lv_intDigits_3_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1639:1: (lv_intDigits_3_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1639:1: (lv_intDigits_3_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1640:3: lv_intDigits_3_0= RULE_INT
+            {
+            lv_intDigits_3_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleDtCDigits3944); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCDigitsRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"intDigits",
+                      		lv_intDigits_3_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtCDigits3961); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1660:1: ( (lv_fractionDigits_5_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1661:1: (lv_fractionDigits_5_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1661:1: (lv_fractionDigits_5_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1662:3: lv_fractionDigits_5_0= RULE_INT
+            {
+            lv_fractionDigits_5_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleDtCDigits3978); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCDigitsRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"fractionDigits",
+                      		lv_fractionDigits_5_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1678:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==29||(LA41_0>=32 && LA41_0<=34)) ) {
+                alt41=1;
+            }
+            switch (alt41) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1680:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1680:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1681:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1684:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1685:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1685:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+
+                    int cnt40=0;
+                    loop40:
+                    do {
+                        int alt40=4;
+                        int LA40_0 = input.LA(1);
+
+                        if ( LA40_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0) ) {
+                            alt40=1;
+                        }
+                        else if ( LA40_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1) ) {
+                            alt40=2;
+                        }
+                        else if ( LA40_0 >=33 && LA40_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2) ) {
+                            alt40=3;
+                        }
+
+
+                        switch (alt40) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1687:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1687:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1688:5: {...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1688:106: ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1689:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1692:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1692:7: {...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1692:16: (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1692:18: otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_7=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCDigits4041); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1696:1: (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    int alt38=2;
+                    	    int LA38_0 = input.LA(1);
+
+                    	    if ( (LA38_0==30) ) {
+                    	        alt38=1;
+                    	    }
+                    	    switch (alt38) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1696:3: otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_8=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCDigits4054); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_9=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDigits4066); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1704:1: ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1705:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1705:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1706:3: lv_msgCode_10_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDigits4087);
+                    	            lv_msgCode_10_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_10_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1729:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1729:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1730:5: {...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1730:106: ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1731:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1734:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1734:7: {...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1734:16: (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1734:18: otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_11=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCDigits4157); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+                    	          
+                    	    }
+                    	    otherlv_12=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCDigits4169); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1742:1: ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1743:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1743:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1744:3: lv_msgI18nKey_13_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDigits4190);
+                    	    lv_msgI18nKey_13_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_13_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1767:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1767:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1768:5: {...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1768:106: ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1769:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1772:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1772:7: {...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1772:16: ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1772:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1772:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )?
+                    	    int alt39=2;
+                    	    int LA39_0 = input.LA(1);
+
+                    	    if ( (LA39_0==33) ) {
+                    	        alt39=1;
+                    	    }
+                    	    switch (alt39) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1772:19: otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_14=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCDigits4259); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_15=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCDigits4271); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1780:1: ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1781:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1781:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1782:3: lv_severity_16_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCDigits4292);
+                    	            lv_severity_16_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_16_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_17=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCDigits4306); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt40 >= 1 ) break loop40;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(40, input);
+                                throw eee;
+                        }
+                        cnt40++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_18=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCDigits4366); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDigits"
+
+
+    // $ANTLR start "entryRuleDtCFuture"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1829:1: entryRuleDtCFuture returns [EObject current=null] : iv_ruleDtCFuture= ruleDtCFuture EOF ;
+    public final EObject entryRuleDtCFuture() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCFuture = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1830:2: (iv_ruleDtCFuture= ruleDtCFuture EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1831:2: iv_ruleDtCFuture= ruleDtCFuture EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCFutureRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture4402);
+            iv_ruleDtCFuture=ruleDtCFuture();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCFuture; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCFuture4412); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCFuture"
+
+
+    // $ANTLR start "ruleDtCFuture"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1838:1: ruleDtCFuture returns [EObject current=null] : ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCFuture() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1841:28: ( ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1842:1: ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1842:1: ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1842:2: () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1842:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1843:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCFuture4458); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1852:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==29||(LA45_0>=32 && LA45_0<=34)) ) {
+                alt45=1;
+            }
+            switch (alt45) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1854:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1854:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1855:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1858:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1859:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1859:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt44=0;
+                    loop44:
+                    do {
+                        int alt44=4;
+                        int LA44_0 = input.LA(1);
+
+                        if ( LA44_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {
+                            alt44=1;
+                        }
+                        else if ( LA44_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {
+                            alt44=2;
+                        }
+                        else if ( LA44_0 >=33 && LA44_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {
+                            alt44=3;
+                        }
+
+
+                        switch (alt44) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1861:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1861:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1862:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1862:106: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1863:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1866:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1866:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1866:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1866:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCFuture4516); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1870:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt42=2;
+                    	    int LA42_0 = input.LA(1);
+
+                    	    if ( (LA42_0==30) ) {
+                    	        alt42=1;
+                    	    }
+                    	    switch (alt42) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1870:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCFuture4529); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCFuture4541); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1878:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1879:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1879:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1880:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCFuture4562);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1903:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1903:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1904:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1904:106: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1905:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1908:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1908:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1908:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1908:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCFuture4632); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCFuture4644); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1916:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1917:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1917:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1918:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCFuture4665);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1941:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1941:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1942:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1942:106: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1943:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1946:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1946:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1946:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1946:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1946:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt43=2;
+                    	    int LA43_0 = input.LA(1);
+
+                    	    if ( (LA43_0==33) ) {
+                    	        alt43=1;
+                    	    }
+                    	    switch (alt43) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1946:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCFuture4734); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCFuture4746); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1954:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1955:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1955:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1956:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCFuture4767);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCFuture4781); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt44 >= 1 ) break loop44;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(44, input);
+                                throw eee;
+                        }
+                        cnt44++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCFuture"
+
+
+    // $ANTLR start "entryRuleDtCPast"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:1999:1: entryRuleDtCPast returns [EObject current=null] : iv_ruleDtCPast= ruleDtCPast EOF ;
+    public final EObject entryRuleDtCPast() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCPast = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2000:2: (iv_ruleDtCPast= ruleDtCPast EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2001:2: iv_ruleDtCPast= ruleDtCPast EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCPastRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCPast_in_entryRuleDtCPast4865);
+            iv_ruleDtCPast=ruleDtCPast();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCPast; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCPast4875); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCPast"
+
+
+    // $ANTLR start "ruleDtCPast"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2008:1: ruleDtCPast returns [EObject current=null] : ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCPast() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2011:28: ( ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2012:1: ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2012:1: ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2012:2: () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2012:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2013:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCPast4921); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2022:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==29||(LA49_0>=32 && LA49_0<=34)) ) {
+                alt49=1;
+            }
+            switch (alt49) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2024:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2024:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2025:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2028:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2029:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2029:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt48=0;
+                    loop48:
+                    do {
+                        int alt48=4;
+                        int LA48_0 = input.LA(1);
+
+                        if ( LA48_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {
+                            alt48=1;
+                        }
+                        else if ( LA48_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {
+                            alt48=2;
+                        }
+                        else if ( LA48_0 >=33 && LA48_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {
+                            alt48=3;
+                        }
+
+
+                        switch (alt48) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2031:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2031:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2032:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2032:104: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2033:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2036:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2036:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2036:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2036:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCPast4979); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2040:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt46=2;
+                    	    int LA46_0 = input.LA(1);
+
+                    	    if ( (LA46_0==30) ) {
+                    	        alt46=1;
+                    	    }
+                    	    switch (alt46) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2040:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCPast4992); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCPast5004); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2048:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2049:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2049:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2050:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCPast5025);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2073:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2073:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2074:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2074:104: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2075:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2078:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2078:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2078:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2078:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCPast5095); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCPast5107); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2086:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2087:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2087:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2088:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCPast5128);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2111:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2111:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2112:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2112:104: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2113:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2116:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2116:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2116:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2116:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2116:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt47=2;
+                    	    int LA47_0 = input.LA(1);
+
+                    	    if ( (LA47_0==33) ) {
+                    	        alt47=1;
+                    	    }
+                    	    switch (alt47) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2116:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCPast5197); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCPast5209); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2124:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2125:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2125:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2126:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCPast5230);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCPast5244); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt48 >= 1 ) break loop48;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(48, input);
+                                throw eee;
+                        }
+                        cnt48++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCPast"
+
+
+    // $ANTLR start "entryRuleDtCNumericMax"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2169:1: entryRuleDtCNumericMax returns [EObject current=null] : iv_ruleDtCNumericMax= ruleDtCNumericMax EOF ;
+    public final EObject entryRuleDtCNumericMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNumericMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2170:2: (iv_ruleDtCNumericMax= ruleDtCNumericMax EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2171:2: iv_ruleDtCNumericMax= ruleDtCNumericMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNumericMaxRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax5328);
+            iv_ruleDtCNumericMax=ruleDtCNumericMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNumericMax; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNumericMax5338); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNumericMax"
+
+
+    // $ANTLR start "ruleDtCNumericMax"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2178:1: ruleDtCNumericMax returns [EObject current=null] : ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCNumericMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2181:28: ( ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2182:1: ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2182:1: ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2182:2: () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2182:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2183:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,41,FollowSets001.FOLLOW_41_in_ruleDtCNumericMax5384); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCNumericMax5396); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2196:1: ( (lv_max_3_0= ruleLInt ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2197:1: (lv_max_3_0= ruleLInt )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2197:1: (lv_max_3_0= ruleLInt )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2198:3: lv_max_3_0= ruleLInt
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLInt_in_ruleDtCNumericMax5417);
+            lv_max_3_0=ruleLInt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LInt");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2214:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==29||(LA53_0>=32 && LA53_0<=34)) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2216:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2216:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2217:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2220:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2221:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2221:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt52=0;
+                    loop52:
+                    do {
+                        int alt52=4;
+                        int LA52_0 = input.LA(1);
+
+                        if ( LA52_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt52=1;
+                        }
+                        else if ( LA52_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt52=2;
+                        }
+                        else if ( LA52_0 >=33 && LA52_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt52=3;
+                        }
+
+
+                        switch (alt52) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2223:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2223:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2224:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2224:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2225:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2228:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2228:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2228:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2228:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNumericMax5475); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2232:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt50=2;
+                    	    int LA50_0 = input.LA(1);
+
+                    	    if ( (LA50_0==30) ) {
+                    	        alt50=1;
+                    	    }
+                    	    switch (alt50) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2232:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNumericMax5488); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMax5500); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2240:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2241:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2241:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2242:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax5521);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2265:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2265:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2266:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2266:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2267:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2270:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2270:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2270:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2270:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNumericMax5591); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMax5603); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2278:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2279:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2279:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2280:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax5624);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2303:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2303:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2304:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2304:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2305:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2308:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2308:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2308:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2308:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2308:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt51=2;
+                    	    int LA51_0 = input.LA(1);
+
+                    	    if ( (LA51_0==33) ) {
+                    	        alt51=1;
+                    	    }
+                    	    switch (alt51) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2308:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNumericMax5693); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMax5705); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2316:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2317:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2317:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2318:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMax5726);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNumericMax5740); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt52 >= 1 ) break loop52;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(52, input);
+                                throw eee;
+                        }
+                        cnt52++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCNumericMax5800); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNumericMax"
+
+
+    // $ANTLR start "entryRuleDtCNumericMin"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2365:1: entryRuleDtCNumericMin returns [EObject current=null] : iv_ruleDtCNumericMin= ruleDtCNumericMin EOF ;
+    public final EObject entryRuleDtCNumericMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNumericMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2366:2: (iv_ruleDtCNumericMin= ruleDtCNumericMin EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2367:2: iv_ruleDtCNumericMin= ruleDtCNumericMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNumericMinRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin5836);
+            iv_ruleDtCNumericMin=ruleDtCNumericMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNumericMin; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNumericMin5846); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNumericMin"
+
+
+    // $ANTLR start "ruleDtCNumericMin"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2374:1: ruleDtCNumericMin returns [EObject current=null] : ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCNumericMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2377:28: ( ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2378:1: ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2378:1: ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2378:2: () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2378:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2379:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,42,FollowSets001.FOLLOW_42_in_ruleDtCNumericMin5892); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCNumericMin5904); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2392:1: ( (lv_min_3_0= ruleLInt ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2393:1: (lv_min_3_0= ruleLInt )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2393:1: (lv_min_3_0= ruleLInt )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2394:3: lv_min_3_0= ruleLInt
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLInt_in_ruleDtCNumericMin5925);
+            lv_min_3_0=ruleLInt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LInt");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2410:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+
+            if ( (LA57_0==29||(LA57_0>=32 && LA57_0<=34)) ) {
+                alt57=1;
+            }
+            switch (alt57) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2412:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2412:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2413:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2416:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2417:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2417:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt56=0;
+                    loop56:
+                    do {
+                        int alt56=4;
+                        int LA56_0 = input.LA(1);
+
+                        if ( LA56_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt56=1;
+                        }
+                        else if ( LA56_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt56=2;
+                        }
+                        else if ( LA56_0 >=33 && LA56_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt56=3;
+                        }
+
+
+                        switch (alt56) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2419:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2419:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2420:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2420:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2421:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2424:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2424:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2424:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2424:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNumericMin5983); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2428:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt54=2;
+                    	    int LA54_0 = input.LA(1);
+
+                    	    if ( (LA54_0==30) ) {
+                    	        alt54=1;
+                    	    }
+                    	    switch (alt54) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2428:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNumericMin5996); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMin6008); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2436:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2437:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2437:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2438:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin6029);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2461:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2461:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2462:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2462:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2463:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2466:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2466:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2466:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2466:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNumericMin6099); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMin6111); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2474:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2475:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2475:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2476:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin6132);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2499:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2499:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2500:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2500:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2501:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2504:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2504:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2504:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2504:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2504:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt55=2;
+                    	    int LA55_0 = input.LA(1);
+
+                    	    if ( (LA55_0==33) ) {
+                    	        alt55=1;
+                    	    }
+                    	    switch (alt55) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2504:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNumericMin6201); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMin6213); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2512:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2513:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2513:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2514:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMin6234);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNumericMin6248); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt56 >= 1 ) break loop56;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(56, input);
+                                throw eee;
+                        }
+                        cnt56++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCNumericMin6308); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNumericMin"
+
+
+    // $ANTLR start "entryRuleDtCNotNull"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2561:1: entryRuleDtCNotNull returns [EObject current=null] : iv_ruleDtCNotNull= ruleDtCNotNull EOF ;
+    public final EObject entryRuleDtCNotNull() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNotNull = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2562:2: (iv_ruleDtCNotNull= ruleDtCNotNull EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2563:2: iv_ruleDtCNotNull= ruleDtCNotNull EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNotNullRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull6344);
+            iv_ruleDtCNotNull=ruleDtCNotNull();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNotNull; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNotNull6354); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNotNull"
+
+
+    // $ANTLR start "ruleDtCNotNull"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2570:1: ruleDtCNotNull returns [EObject current=null] : ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCNotNull() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2573:28: ( ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2574:1: ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2574:1: ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2574:2: () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2574:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2575:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,43,FollowSets001.FOLLOW_43_in_ruleDtCNotNull6400); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2584:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==29||(LA61_0>=32 && LA61_0<=34)) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2586:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2586:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2587:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2590:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2591:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2591:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt60=0;
+                    loop60:
+                    do {
+                        int alt60=4;
+                        int LA60_0 = input.LA(1);
+
+                        if ( LA60_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {
+                            alt60=1;
+                        }
+                        else if ( LA60_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {
+                            alt60=2;
+                        }
+                        else if ( LA60_0 >=33 && LA60_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {
+                            alt60=3;
+                        }
+
+
+                        switch (alt60) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2593:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2593:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2594:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2594:107: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2595:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2598:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2598:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2598:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2598:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNotNull6458); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2602:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt58=2;
+                    	    int LA58_0 = input.LA(1);
+
+                    	    if ( (LA58_0==30) ) {
+                    	        alt58=1;
+                    	    }
+                    	    switch (alt58) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2602:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNotNull6471); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNotNull6483); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2610:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2611:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2611:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2612:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNotNull6504);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2635:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2635:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2636:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2636:107: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2637:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2640:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2640:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2640:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2640:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNotNull6574); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNotNull6586); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2648:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2649:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2649:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2650:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNotNull6607);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2673:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2673:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2674:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2674:107: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2675:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2678:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2678:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2678:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2678:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2678:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt59=2;
+                    	    int LA59_0 = input.LA(1);
+
+                    	    if ( (LA59_0==33) ) {
+                    	        alt59=1;
+                    	    }
+                    	    switch (alt59) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2678:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNotNull6676); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNotNull6688); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2686:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2687:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2687:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2688:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNotNull6709);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNotNull6723); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt60 >= 1 ) break loop60;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(60, input);
+                                throw eee;
+                        }
+                        cnt60++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNotNull"
+
+
+    // $ANTLR start "entryRuleDtCNull"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2731:1: entryRuleDtCNull returns [EObject current=null] : iv_ruleDtCNull= ruleDtCNull EOF ;
+    public final EObject entryRuleDtCNull() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNull = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2732:2: (iv_ruleDtCNull= ruleDtCNull EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2733:2: iv_ruleDtCNull= ruleDtCNull EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNullRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_entryRuleDtCNull6807);
+            iv_ruleDtCNull=ruleDtCNull();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNull; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNull6817); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNull"
+
+
+    // $ANTLR start "ruleDtCNull"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2740:1: ruleDtCNull returns [EObject current=null] : ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCNull() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2743:28: ( ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2744:1: ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2744:1: ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2744:2: () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2744:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2745:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,44,FollowSets001.FOLLOW_44_in_ruleDtCNull6863); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2754:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt65=2;
+            int LA65_0 = input.LA(1);
+
+            if ( (LA65_0==29||(LA65_0>=32 && LA65_0<=34)) ) {
+                alt65=1;
+            }
+            switch (alt65) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2756:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2756:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2757:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2760:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2761:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2761:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt64=0;
+                    loop64:
+                    do {
+                        int alt64=4;
+                        int LA64_0 = input.LA(1);
+
+                        if ( LA64_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {
+                            alt64=1;
+                        }
+                        else if ( LA64_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {
+                            alt64=2;
+                        }
+                        else if ( LA64_0 >=33 && LA64_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {
+                            alt64=3;
+                        }
+
+
+                        switch (alt64) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2763:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2763:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2764:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2764:104: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2765:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2768:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2768:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2768:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2768:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNull6921); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2772:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt62=2;
+                    	    int LA62_0 = input.LA(1);
+
+                    	    if ( (LA62_0==30) ) {
+                    	        alt62=1;
+                    	    }
+                    	    switch (alt62) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2772:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNull6934); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNull6946); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2780:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2781:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2781:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2782:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNull6967);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2805:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2805:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2806:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2806:104: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2807:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2810:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2810:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2810:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2810:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNull7037); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNull7049); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2818:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2819:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2819:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2820:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNull7070);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2843:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2843:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2844:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2844:104: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2845:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2848:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2848:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2848:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2848:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2848:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt63=2;
+                    	    int LA63_0 = input.LA(1);
+
+                    	    if ( (LA63_0==33) ) {
+                    	        alt63=1;
+                    	    }
+                    	    switch (alt63) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2848:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNull7139); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNull7151); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2856:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2857:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2857:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2858:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNull7172);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNull7186); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt64 >= 1 ) break loop64;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(64, input);
+                                throw eee;
+                        }
+                        cnt64++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNull"
+
+
+    // $ANTLR start "entryRuleDtCRegEx"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2901:1: entryRuleDtCRegEx returns [EObject current=null] : iv_ruleDtCRegEx= ruleDtCRegEx EOF ;
+    public final EObject entryRuleDtCRegEx() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCRegEx = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2902:2: (iv_ruleDtCRegEx= ruleDtCRegEx EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2903:2: iv_ruleDtCRegEx= ruleDtCRegEx EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCRegExRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx7270);
+            iv_ruleDtCRegEx=ruleDtCRegEx();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCRegEx; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCRegEx7280); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCRegEx"
+
+
+    // $ANTLR start "ruleDtCRegEx"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2910:1: ruleDtCRegEx returns [EObject current=null] : ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCRegEx() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_pattern_3_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2913:28: ( ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2914:1: ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2914:1: ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2914:2: () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2914:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2915:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,45,FollowSets001.FOLLOW_45_in_ruleDtCRegEx7326); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCRegEx7338); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2928:1: ( (lv_pattern_3_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2929:1: (lv_pattern_3_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2929:1: (lv_pattern_3_0= RULE_STRING )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2930:3: lv_pattern_3_0= RULE_STRING
+            {
+            lv_pattern_3_0=(Token)match(input,RULE_STRING,FollowSets001.FOLLOW_RULE_STRING_in_ruleDtCRegEx7355); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCRegExRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"pattern",
+                      		lv_pattern_3_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2946:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==29||(LA69_0>=32 && LA69_0<=34)) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2948:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2948:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2949:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2952:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2953:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2953:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt68=0;
+                    loop68:
+                    do {
+                        int alt68=4;
+                        int LA68_0 = input.LA(1);
+
+                        if ( LA68_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0) ) {
+                            alt68=1;
+                        }
+                        else if ( LA68_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1) ) {
+                            alt68=2;
+                        }
+                        else if ( LA68_0 >=33 && LA68_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2) ) {
+                            alt68=3;
+                        }
+
+
+                        switch (alt68) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2955:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2955:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2956:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2956:105: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2957:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2960:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2960:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2960:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2960:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCRegEx7418); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2964:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt66=2;
+                    	    int LA66_0 = input.LA(1);
+
+                    	    if ( (LA66_0==30) ) {
+                    	        alt66=1;
+                    	    }
+                    	    switch (alt66) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2964:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCRegEx7431); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCRegEx7443); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2972:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2973:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2973:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2974:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCRegEx7464);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2997:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2997:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2998:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2998:105: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:2999:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3002:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3002:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3002:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3002:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCRegEx7534); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCRegEx7546); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3010:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3011:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3011:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3012:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCRegEx7567);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3035:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3035:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3036:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3036:105: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3037:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3040:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3040:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3040:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3040:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3040:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt67=2;
+                    	    int LA67_0 = input.LA(1);
+
+                    	    if ( (LA67_0==33) ) {
+                    	        alt67=1;
+                    	    }
+                    	    switch (alt67) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3040:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCRegEx7636); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCRegEx7648); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3048:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3049:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3049:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3050:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCRegEx7669);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCRegEx7683); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt68 >= 1 ) break loop68;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(68, input);
+                                throw eee;
+                        }
+                        cnt68++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCRegEx7743); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCRegEx"
+
+
+    // $ANTLR start "entryRuleDtCSize"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3097:1: entryRuleDtCSize returns [EObject current=null] : iv_ruleDtCSize= ruleDtCSize EOF ;
+    public final EObject entryRuleDtCSize() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCSize = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3098:2: (iv_ruleDtCSize= ruleDtCSize EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3099:2: iv_ruleDtCSize= ruleDtCSize EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCSizeRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCSize_in_entryRuleDtCSize7779);
+            iv_ruleDtCSize=ruleDtCSize();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCSize; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCSize7789); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCSize"
+
+
+    // $ANTLR start "ruleDtCSize"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3106:1: ruleDtCSize returns [EObject current=null] : ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) ;
+    public final EObject ruleDtCSize() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_min_3_0=null;
+        Token otherlv_4=null;
+        Token lv_max_5_0=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        AntlrDatatypeRuleToken lv_msgCode_10_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_13_0 = null;
+
+        Enumerator lv_severity_16_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3109:28: ( ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3110:1: ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3110:1: ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3110:2: () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')'
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3110:2: ()
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3111:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,46,FollowSets001.FOLLOW_46_in_ruleDtCSize7835); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCSize7847); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3124:1: ( (lv_min_3_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3125:1: (lv_min_3_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3125:1: (lv_min_3_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3126:3: lv_min_3_0= RULE_INT
+            {
+            lv_min_3_0=(Token)match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_ruleDtCSize7864); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCSizeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCSize7881); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3146:1: ( (lv_max_5_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3147:1: (lv_max_5_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3147:1: (lv_max_5_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3148:3: lv_max_5_0= RULE_INT
+            {
+            lv_max_5_0=(Token)match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_ruleDtCSize7898); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCSizeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"max",
+                      		lv_max_5_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3164:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==29||(LA73_0>=32 && LA73_0<=34)) ) {
+                alt73=1;
+            }
+            switch (alt73) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3166:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3166:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3167:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3170:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3171:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3171:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+
+                    int cnt72=0;
+                    loop72:
+                    do {
+                        int alt72=4;
+                        int LA72_0 = input.LA(1);
+
+                        if ( LA72_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0) ) {
+                            alt72=1;
+                        }
+                        else if ( LA72_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1) ) {
+                            alt72=2;
+                        }
+                        else if ( LA72_0 >=33 && LA72_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2) ) {
+                            alt72=3;
+                        }
+
+
+                        switch (alt72) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3173:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3173:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3174:5: {...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3174:104: ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3175:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3178:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3178:7: {...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3178:16: (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3178:18: otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_7=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCSize7961); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3182:1: (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    int alt70=2;
+                    	    int LA70_0 = input.LA(1);
+
+                    	    if ( (LA70_0==30) ) {
+                    	        alt70=1;
+                    	    }
+                    	    switch (alt70) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3182:3: otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_8=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCSize7974); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_9=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCSize7986); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3190:1: ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3191:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3191:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3192:3: lv_msgCode_10_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCSize8007);
+                    	            lv_msgCode_10_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_10_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3215:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3215:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3216:5: {...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3216:104: ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3217:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3220:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3220:7: {...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3220:16: (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3220:18: otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_11=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCSize8077); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+                    	          
+                    	    }
+                    	    otherlv_12=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCSize8089); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3228:1: ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3229:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3229:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3230:3: lv_msgI18nKey_13_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCSize8110);
+                    	    lv_msgI18nKey_13_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_13_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3253:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3253:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3254:5: {...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3254:104: ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3255:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3258:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3258:7: {...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3258:16: ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3258:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3258:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )?
+                    	    int alt71=2;
+                    	    int LA71_0 = input.LA(1);
+
+                    	    if ( (LA71_0==33) ) {
+                    	        alt71=1;
+                    	    }
+                    	    switch (alt71) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3258:19: otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_14=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCSize8179); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_15=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCSize8191); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3266:1: ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3267:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3267:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3268:3: lv_severity_16_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCSize8212);
+                    	            lv_severity_16_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_16_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_17=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCSize8226); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt72 >= 1 ) break loop72;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(72, input);
+                                throw eee;
+                        }
+                        cnt72++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_18=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCSize8286); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCSize"
+
+
+    // $ANTLR start "entryRuleScalarType"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3315:1: entryRuleScalarType returns [EObject current=null] : iv_ruleScalarType= ruleScalarType EOF ;
+    public final EObject entryRuleScalarType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleScalarType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3316:2: (iv_ruleScalarType= ruleScalarType EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3317:2: iv_ruleScalarType= ruleScalarType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getScalarTypeRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleScalarType_in_entryRuleScalarType8322);
+            iv_ruleScalarType=ruleScalarType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleScalarType; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleScalarType8332); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleScalarType"
+
+
+    // $ANTLR start "ruleScalarType"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3324:1: ruleScalarType returns [EObject current=null] : (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum ) ;
+    public final EObject ruleScalarType() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DataType_0 = null;
+
+        EObject this_Enum_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3327:28: ( (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3328:1: (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3328:1: (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum )
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+
+            if ( (LA74_0==19) ) {
+                alt74=1;
+            }
+            else if ( (LA74_0==47) ) {
+                alt74=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 74, 0, input);
+
+                throw nvae;
+            }
+            switch (alt74) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3329:5: this_DataType_0= ruleDataType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDataType_in_ruleScalarType8379);
+                    this_DataType_0=ruleDataType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DataType_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3339:5: this_Enum_1= ruleEnum
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleEnum_in_ruleScalarType8406);
+                    this_Enum_1=ruleEnum();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_Enum_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleScalarType"
+
+
+    // $ANTLR start "entryRuleEnum"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3357:1: entryRuleEnum returns [EObject current=null] : iv_ruleEnum= ruleEnum EOF ;
+    public final EObject entryRuleEnum() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEnum = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3358:2: (iv_ruleEnum= ruleEnum EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3359:2: iv_ruleEnum= ruleEnum EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEnumRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleEnum_in_entryRuleEnum8443);
+            iv_ruleEnum=ruleEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEnum; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleEnum8453); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEnum"
+
+
+    // $ANTLR start "ruleEnum"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3366:1: ruleEnum returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleEnum() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_literals_3_0 = null;
+
+        EObject lv_literals_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3369:28: ( (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3370:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3370:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3370:3: otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,47,FollowSets001.FOLLOW_47_in_ruleEnum8490); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3374:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3375:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3375:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3376:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets001.FOLLOW_RULE_ID_in_ruleEnum8507); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getEnumRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FollowSets001.FOLLOW_14_in_ruleEnum8524); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3396:1: ( (lv_literals_3_0= ruleEnumLiteral ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3397:1: (lv_literals_3_0= ruleEnumLiteral )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3397:1: (lv_literals_3_0= ruleEnumLiteral )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3398:3: lv_literals_3_0= ruleEnumLiteral
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleEnumLiteral_in_ruleEnum8545);
+            lv_literals_3_0=ruleEnumLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getEnumRule());
+              	        }
+                     		add(
+                     			current, 
+                     			"literals",
+                      		lv_literals_3_0, 
+                      		"EnumLiteral");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3414:2: (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )*
+            loop75:
+            do {
+                int alt75=2;
+                int LA75_0 = input.LA(1);
+
+                if ( (LA75_0==24) ) {
+                    alt75=1;
+                }
+
+
+                switch (alt75) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3414:4: otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) )
+            	    {
+            	    otherlv_4=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleEnum8558); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3418:1: ( (lv_literals_5_0= ruleEnumLiteral ) )
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3419:1: (lv_literals_5_0= ruleEnumLiteral )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3419:1: (lv_literals_5_0= ruleEnumLiteral )
+            	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3420:3: lv_literals_5_0= ruleEnumLiteral
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets001.FOLLOW_ruleEnumLiteral_in_ruleEnum8579);
+            	    lv_literals_5_0=ruleEnumLiteral();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getEnumRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"literals",
+            	              		lv_literals_5_0, 
+            	              		"EnumLiteral");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop75;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FollowSets001.FOLLOW_15_in_ruleEnum8593); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEnum"
+
+
+    // $ANTLR start "entryRuleEnumLiteral"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3448:1: entryRuleEnumLiteral returns [EObject current=null] : iv_ruleEnumLiteral= ruleEnumLiteral EOF ;
+    public final EObject entryRuleEnumLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEnumLiteral = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3449:2: (iv_ruleEnumLiteral= ruleEnumLiteral EOF )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3450:2: iv_ruleEnumLiteral= ruleEnumLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEnumLiteralRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleEnumLiteral_in_entryRuleEnumLiteral8629);
+            iv_ruleEnumLiteral=ruleEnumLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEnumLiteral; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleEnumLiteral8639); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEnumLiteral"
+
+
+    // $ANTLR start "ruleEnumLiteral"
+    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3457:1: ruleEnumLiteral returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleEnumLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_name_0_0=null;
+        Token otherlv_2=null;
+        Token lv_default_3_0=null;
+        Token lv_null_4_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token lv_value_7_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3460:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3461:1: ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3461:1: ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3461:2: ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3461:2: ( (lv_name_0_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3462:1: (lv_name_0_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3462:1: (lv_name_0_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3463:3: lv_name_0_0= RULE_ID
+            {
+            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets001.FOLLOW_RULE_ID_in_ruleEnumLiteral8681); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getEnumLiteralRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_0_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3479:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==23||LA80_0==25||LA80_0==49) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3481:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3481:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3482:2: ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3485:2: ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3486:3: ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3486:3: ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+
+                    int cnt79=0;
+                    loop79:
+                    do {
+                        int alt79=3;
+                        int LA79_0 = input.LA(1);
+
+                        if ( LA79_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0) ) {
+                            alt79=1;
+                        }
+                        else if ( (LA79_0==25||LA79_0==49) && getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1) ) {
+                            alt79=2;
+                        }
+
+
+                        switch (alt79) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3488:4: ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3488:4: ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3489:5: {...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3489:108: ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3490:6: ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3493:6: ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3493:7: {...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3493:16: (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3493:18: otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )?
+                    	    {
+                    	    otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleEnumLiteral8744); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3497:1: ( (lv_default_3_0= 'asDefault' ) )?
+                    	    int alt76=2;
+                    	    int LA76_0 = input.LA(1);
+
+                    	    if ( (LA76_0==48) ) {
+                    	        alt76=1;
+                    	    }
+                    	    switch (alt76) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3498:1: (lv_default_3_0= 'asDefault' )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3498:1: (lv_default_3_0= 'asDefault' )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3499:3: lv_default_3_0= 'asDefault'
+                    	            {
+                    	            lv_default_3_0=(Token)match(input,48,FollowSets002.FOLLOW_48_in_ruleEnumLiteral8762); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getEnumLiteralRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "default", true, "asDefault");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3519:4: ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3519:4: ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3520:5: {...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3520:108: ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3521:6: ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3524:6: ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3524:7: {...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3524:16: ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3524:17: ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )?
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3524:17: ( (lv_null_4_0= 'forNull' ) )?
+                    	    int alt77=2;
+                    	    int LA77_0 = input.LA(1);
+
+                    	    if ( (LA77_0==49) ) {
+                    	        alt77=1;
+                    	    }
+                    	    switch (alt77) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3525:1: (lv_null_4_0= 'forNull' )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3525:1: (lv_null_4_0= 'forNull' )
+                    	            // ../org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/parser/antlr/internal/InternalCommonGrammar.g:3526:3: lv_null_4_0= 'forNull'
+                    	            {
+                    	            lv_null_4_0=(Token)match(input,49,FollowSets002.FOLLOW_49_in_ruleEnumLiteral8850); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getEnumLiteralRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "null", true, "forNull");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_5=(Token)match(input,25,FollowSets002.FOLLOW_25_in_ruleEnumLiteral8876); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+                    	          
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/AbstractCommonGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/AbstractCommonGrammarSemanticSequencer.java
new file mode 100644
index 0000000..e33133e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/AbstractCommonGrammarSemanticSequencer.java
@@ -0,0 +1,1808 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+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 abstract class AbstractCommonGrammarSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+
+	@Inject
+	private CommonGrammarGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LANNOTATION_DEF:
+				if(context == grammarAccess.getAnnotationDefRule()) {
+					sequence_AnnotationDef(context, (LAnnotationDef) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT:
+				if(context == grammarAccess.getAttributeMatchingConstraintRule() ||
+				   context == grammarAccess.getResultFilterRule()) {
+					sequence_AttributeMatchingConstraint(context, (LAttributeMatchingConstraint) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LCLASS:
+				if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LClass) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2()) {
+					sequence_Class_LClass_2(context, (LClass) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDATA_TYPE:
+				if(context == grammarAccess.getDataTypeRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_DataType(context, (LDataType) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertFalseRule()) {
+					sequence_DtCAssertFalse(context, (LDtCAssertFalse) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertTrueRule()) {
+					sequence_DtCAssertTrue(context, (LDtCAssertTrue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMaxRule()) {
+					sequence_DtCDecimalMax(context, (LDtCDecimalMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMinRule()) {
+					sequence_DtCDecimalMin(context, (LDtCDecimalMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDIGITS:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDigitsRule()) {
+					sequence_DtCDigits(context, (LDtCDigits) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CFUTURE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCFutureRule()) {
+					sequence_DtCFuture(context, (LDtCFuture) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNOT_NULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNotNullRule()) {
+					sequence_DtCNotNull(context, (LDtCNotNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNullRule()) {
+					sequence_DtCNull(context, (LDtCNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMaxRule()) {
+					sequence_DtCNumericMax(context, (LDtCNumericMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMinRule()) {
+					sequence_DtCNumericMin(context, (LDtCNumericMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CPAST:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCPastRule()) {
+					sequence_DtCPast(context, (LDtCPast) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CREG_EX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCRegExRule()) {
+					sequence_DtCRegEx(context, (LDtCRegEx) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CSIZE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCSizeRule()) {
+					sequence_DtCSize(context, (LDtCSize) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM:
+				if(context == grammarAccess.getEnumRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Enum(context, (LEnum) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM_LITERAL:
+				if(context == grammarAccess.getEnumLiteralRule()) {
+					sequence_EnumLiteral(context, (LEnumLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getImportRule()) {
+					sequence_Import(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LKEY_AND_VALUE:
+				if(context == grammarAccess.getKeyAndValueRule()) {
+					sequence_KeyAndValue(context, (LKeyAndValue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMODIFIER:
+				if(context == grammarAccess.getModifierRule()) {
+					sequence_Modifier(context, (LModifier) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMULTIPLICITY:
+				if(context == grammarAccess.getMultiplicityRule()) {
+					sequence_Multiplicity(context, (LMultiplicity) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LRESULT_FILTERS:
+				if(context == grammarAccess.getResultFiltersRule()) {
+					sequence_ResultFilters(context, (LResultFilters) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LTYPED_PACKAGE:
+				if(context == grammarAccess.getTypedPackageRule()) {
+					sequence_TypedPackage(context, (LTypedPackage) 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:
+	 *     annotation=XAnnotation
+	 */
+	protected void sequence_AnnotationDef(EObject context, LAnnotationDef semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (attribute=[LAttribute|ID] comparatorType=LComparatorType (matchingValue=STRING | matchingLiteral=[LEnumLiteral|ID]))
+	 */
+	protected void sequence_AttributeMatchingConstraint(EObject context, LAttributeMatchingConstraint semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotationInfo=Class_LClass_2
+	 */
+	protected void sequence_Class(EObject context, LClass semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_Class_LClass_2(EObject context, LClass semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         name=ValidIDWithKeywords 
+	 *         (
+	 *             (
+	 *                 jvmTypeReference=JvmTypeReference 
+	 *                 asPrimitive?='as primitive'? 
+	 *                 constraints+=DataTypeConstraint* 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *             ) | 
+	 *             (date?='dateType' dateType=DateType constraints+=DateConstraint* (properties+=KeyAndValue properties+=KeyAndValue*)?) | 
+	 *             (asBlob?='as blob' constraints+=BlobTypeConstraint* (properties+=KeyAndValue properties+=KeyAndValue*)?)
+	 *         )
+	 *     )
+	 */
+	protected void sequence_DataType(EObject context, LDataType semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCAssertFalse(EObject context, LDtCAssertFalse semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCAssertTrue(EObject context, LDtCAssertTrue semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (max=LDecimal (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCDecimalMax(EObject context, LDtCDecimalMax semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (min=LDecimal (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCDecimalMin(EObject context, LDtCDecimalMin semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (intDigits=INT fractionDigits=INT (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCDigits(EObject context, LDtCDigits semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCFuture(EObject context, LDtCFuture semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCNotNull(EObject context, LDtCNotNull semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCNull(EObject context, LDtCNull semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (max=LInt (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCNumericMax(EObject context, LDtCNumericMax semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (min=LInt (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCNumericMin(EObject context, LDtCNumericMin semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     ((msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCPast(EObject context, LDtCPast semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (pattern=STRING (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCRegEx(EObject context, LDtCRegEx semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (min=INT max=INT (msgCode=QualifiedName? msgI18nKey=QualifiedName? severity=ConstraintSeverity?)?)
+	 */
+	protected void sequence_DtCSize(EObject context, LDtCSize semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID (default?='asDefault'? null?='forNull'? value=INT?)?)
+	 */
+	protected void sequence_EnumLiteral(EObject context, LEnumLiteral semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=ID literals+=EnumLiteral literals+=EnumLiteral*)
+	 */
+	protected void sequence_Enum(EObject context, LEnum semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     importedNamespace=LQualifiedNameWithWildCard
+	 */
+	protected void sequence_Import(EObject context, LImport semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPTypesPackage.Literals.LIMPORT__IMPORTED_NAMESPACE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (key=STRING value=STRING)
+	 */
+	protected void sequence_KeyAndValue(EObject context, LKeyAndValue semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, OSBPTypesPackage.Literals.LKEY_AND_VALUE__KEY) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPTypesPackage.Literals.LKEY_AND_VALUE__KEY));
+			if(transientValues.isValueTransient(semanticObject, OSBPTypesPackage.Literals.LKEY_AND_VALUE__VALUE) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPTypesPackage.Literals.LKEY_AND_VALUE__VALUE));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getKeyAndValueAccess().getKeySTRINGTerminalRuleCall_2_0(), semanticObject.getKey());
+		feeder.accept(grammarAccess.getKeyAndValueAccess().getValueSTRINGTerminalRuleCall_5_0(), semanticObject.getValue());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (final?='final'? static?='static'? visibility=LVisibility)
+	 */
+	protected void sequence_Modifier(EObject context, LModifier semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (lower=LowerBound upper=UpperBound?)
+	 */
+	protected void sequence_Multiplicity(EObject context, LMultiplicity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (resultFilters+=ResultFilter*)
+	 */
+	protected void sequence_ResultFilters(EObject context, LResultFilters semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=QualifiedName (imports+=Import* types+=Type*)?)
+	 */
+	protected void sequence_TypedPackage(EObject context, LTypedPackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/AbstractCommonGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/AbstractCommonGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..700610d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/serializer/AbstractCommonGrammarSyntacticSequencer.java
@@ -0,0 +1,907 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public abstract class AbstractCommonGrammarSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected CommonGrammarGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_AttributeMatchingConstraint_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DataType_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p;
+	protected AbstractElementAlias match_Import_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_TypedPackage___LeftCurlyBracketKeyword_3_0_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 = (CommonGrammarGrammarAccess) access;
+		match_AttributeMatchingConstraint_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+		match_DataType_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+		match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a = new GroupAlias(true, true, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_Import_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+		match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().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_AttributeMatchingConstraint_SemicolonKeyword_3_q.equals(syntax))
+				emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DataType_SemicolonKeyword_3_q.equals(syntax))
+				emit_DataType_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Import_SemicolonKeyword_2_q.equals(syntax))
+				emit_Import_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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:
+	 *     ';'?
+	 */
+	protected void emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DataType_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')+
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' | ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')' '('*)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'* '(')+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'+ '('+)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Import_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/services/CommonGrammarGrammarAccess.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/services/CommonGrammarGrammarAccess.java
new file mode 100644
index 0000000..d604e9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/services/CommonGrammarGrammarAccess.java
@@ -0,0 +1,4493 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.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 CommonGrammarGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class TypedPackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TypedPackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLTypedPackageAction_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 cImportsImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
+		private final Assignment cTypesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cTypesTypeParserRuleCall_3_2_0 = (RuleCall)cTypesAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		
+		//TypedPackage returns types::LTypedPackage:
+		//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=Type* "}")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=Type* "}")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LTypedPackage}
+		public Action getLTypedPackageAction_0() { return cLTypedPackageAction_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+=Import* types+=Type* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
+
+		//imports+=Import*
+		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
+
+		//Import
+		public RuleCall getImportsImportParserRuleCall_3_1_0() { return cImportsImportParserRuleCall_3_1_0; }
+
+		//types+=Type*
+		public Assignment getTypesAssignment_3_2() { return cTypesAssignment_3_2; }
+
+		//Type
+		public RuleCall getTypesTypeParserRuleCall_3_2_0() { return cTypesTypeParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+	}
+
+	public class TypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Type");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cScalarTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cClassParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//Type returns types::LType:
+		//	ScalarType | Class;
+		public ParserRule getRule() { return rule; }
+
+		//ScalarType | Class
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ScalarType
+		public RuleCall getScalarTypeParserRuleCall_0() { return cScalarTypeParserRuleCall_0; }
+
+		//Class
+		public RuleCall getClassParserRuleCall_1() { return cClassParserRuleCall_1; }
+	}
+
+	public class ClassElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Class");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLClassAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Action cLClassAnnotationInfoAction_2 = (Action)cGroup.eContents().get(2);
+		private final Keyword cClassKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		/// **
+		// * Needs to be overridden by sub grammar
+		// * / Class returns types::LClass:
+		//	{types::LClass} annotations+=AnnotationDef* {types::LClass.annotationInfo=current} "class";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LClass} annotations+=AnnotationDef* {types::LClass.annotationInfo=current} "class"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LClass}
+		public Action getLClassAction_0() { return cLClassAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//{types::LClass.annotationInfo=current}
+		public Action getLClassAnnotationInfoAction_2() { return cLClassAnnotationInfoAction_2; }
+
+		//"class"
+		public Keyword getClassKeyword_3() { return cClassKeyword_3; }
+	}
+
+	public class ImportElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Import");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cImportKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cImportedNamespaceAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		
+		//Import returns types::LImport:
+		//	"import" importedNamespace=LQualifiedNameWithWildCard ";"?;
+		public ParserRule getRule() { return rule; }
+
+		//"import" importedNamespace=LQualifiedNameWithWildCard ";"?
+		public Group getGroup() { return cGroup; }
+
+		//"import"
+		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
+
+		//importedNamespace=LQualifiedNameWithWildCard
+		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
+
+		//LQualifiedNameWithWildCard
+		public RuleCall getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
+	}
+
+	public class DataTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataType");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cDatatypeKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Keyword cJvmTypeKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Assignment cJvmTypeReferenceAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
+		private final RuleCall cJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0 = (RuleCall)cJvmTypeReferenceAssignment_2_0_1.eContents().get(0);
+		private final Assignment cAsPrimitiveAssignment_2_0_2 = (Assignment)cGroup_2_0.eContents().get(2);
+		private final Keyword cAsPrimitiveAsPrimitiveKeyword_2_0_2_0 = (Keyword)cAsPrimitiveAssignment_2_0_2.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_0_3 = (Assignment)cGroup_2_0.eContents().get(3);
+		private final RuleCall cConstraintsDataTypeConstraintParserRuleCall_2_0_3_0 = (RuleCall)cConstraintsAssignment_2_0_3.eContents().get(0);
+		private final Group cGroup_2_0_4 = (Group)cGroup_2_0.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_0_4_0 = (Keyword)cGroup_2_0_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_0_4_1 = (Keyword)cGroup_2_0_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_0_4_2 = (Assignment)cGroup_2_0_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_4_2_0 = (RuleCall)cPropertiesAssignment_2_0_4_2.eContents().get(0);
+		private final Group cGroup_2_0_4_3 = (Group)cGroup_2_0_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_0_4_3_0 = (Keyword)cGroup_2_0_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_0_4_3_1 = (Assignment)cGroup_2_0_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_0_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_0_4_4 = (Keyword)cGroup_2_0_4.eContents().get(4);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Assignment cDateAssignment_2_1_0 = (Assignment)cGroup_2_1.eContents().get(0);
+		private final Keyword cDateDateTypeKeyword_2_1_0_0 = (Keyword)cDateAssignment_2_1_0.eContents().get(0);
+		private final Assignment cDateTypeAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
+		private final RuleCall cDateTypeDateTypeEnumRuleCall_2_1_1_0 = (RuleCall)cDateTypeAssignment_2_1_1.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cConstraintsDateConstraintParserRuleCall_2_1_2_0 = (RuleCall)cConstraintsAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_1_3 = (Group)cGroup_2_1.eContents().get(3);
+		private final Keyword cPropertiesKeyword_2_1_3_0 = (Keyword)cGroup_2_1_3.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_3_1 = (Keyword)cGroup_2_1_3.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_3_2 = (Assignment)cGroup_2_1_3.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_3_2_0 = (RuleCall)cPropertiesAssignment_2_1_3_2.eContents().get(0);
+		private final Group cGroup_2_1_3_3 = (Group)cGroup_2_1_3.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_3_3_0 = (Keyword)cGroup_2_1_3_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_3_3_1 = (Assignment)cGroup_2_1_3_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_3_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_3_4 = (Keyword)cGroup_2_1_3.eContents().get(4);
+		private final Group cGroup_2_2 = (Group)cAlternatives_2.eContents().get(2);
+		private final Assignment cAsBlobAssignment_2_2_0 = (Assignment)cGroup_2_2.eContents().get(0);
+		private final Keyword cAsBlobAsBlobKeyword_2_2_0_0 = (Keyword)cAsBlobAssignment_2_2_0.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_2_1 = (Assignment)cGroup_2_2.eContents().get(1);
+		private final RuleCall cConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0 = (RuleCall)cConstraintsAssignment_2_2_1.eContents().get(0);
+		private final Group cGroup_2_2_2 = (Group)cGroup_2_2.eContents().get(2);
+		private final Keyword cPropertiesKeyword_2_2_2_0 = (Keyword)cGroup_2_2_2.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_2_2_1 = (Keyword)cGroup_2_2_2.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_2_2_2 = (Assignment)cGroup_2_2_2.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_2_2_2_0 = (RuleCall)cPropertiesAssignment_2_2_2_2.eContents().get(0);
+		private final Group cGroup_2_2_2_3 = (Group)cGroup_2_2_2.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_2_2_3_0 = (Keyword)cGroup_2_2_2_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_2_2_3_1 = (Assignment)cGroup_2_2_2_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0 = (RuleCall)cPropertiesAssignment_2_2_2_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_2_2_4 = (Keyword)cGroup_2_2_2.eContents().get(4);
+		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//DataType returns types::LDataType:
+		//	"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+		//	constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+		//	date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+		//	properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+		//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?;
+		public ParserRule getRule() { return rule; }
+
+		//"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+		//constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+		//date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?
+		public Group getGroup() { return cGroup; }
+
+		//"datatype"
+		public Keyword getDatatypeKeyword_0() { return cDatatypeKeyword_0; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_1_0() { return cNameValidIDWithKeywordsParserRuleCall_1_0; }
+
+		//"jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"? constraints+=DataTypeConstraint* ("properties"
+		//"(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? | date?="dateType" dateType=DateType
+		//constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+		//asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")?
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//"jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"? constraints+=DataTypeConstraint* ("properties"
+		//"(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"jvmType"
+		public Keyword getJvmTypeKeyword_2_0_0() { return cJvmTypeKeyword_2_0_0; }
+
+		//jvmTypeReference=JvmTypeReference
+		public Assignment getJvmTypeReferenceAssignment_2_0_1() { return cJvmTypeReferenceAssignment_2_0_1; }
+
+		//JvmTypeReference
+		public RuleCall getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0() { return cJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0; }
+
+		//asPrimitive?="as primitive"?
+		public Assignment getAsPrimitiveAssignment_2_0_2() { return cAsPrimitiveAssignment_2_0_2; }
+
+		//"as primitive"
+		public Keyword getAsPrimitiveAsPrimitiveKeyword_2_0_2_0() { return cAsPrimitiveAsPrimitiveKeyword_2_0_2_0; }
+
+		//constraints+=DataTypeConstraint*
+		public Assignment getConstraintsAssignment_2_0_3() { return cConstraintsAssignment_2_0_3; }
+
+		//DataTypeConstraint
+		public RuleCall getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0() { return cConstraintsDataTypeConstraintParserRuleCall_2_0_3_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_0_4() { return cGroup_2_0_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_0_4_0() { return cPropertiesKeyword_2_0_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_0_4_1() { return cLeftParenthesisKeyword_2_0_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_4_2() { return cPropertiesAssignment_2_0_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_0_4_3() { return cGroup_2_0_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_0_4_3_0() { return cCommaSpaceKeyword_2_0_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_4_3_1() { return cPropertiesAssignment_2_0_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_0_4_4() { return cRightParenthesisKeyword_2_0_4_4; }
+
+		//date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//date?="dateType"
+		public Assignment getDateAssignment_2_1_0() { return cDateAssignment_2_1_0; }
+
+		//"dateType"
+		public Keyword getDateDateTypeKeyword_2_1_0_0() { return cDateDateTypeKeyword_2_1_0_0; }
+
+		//dateType=DateType
+		public Assignment getDateTypeAssignment_2_1_1() { return cDateTypeAssignment_2_1_1; }
+
+		//DateType
+		public RuleCall getDateTypeDateTypeEnumRuleCall_2_1_1_0() { return cDateTypeDateTypeEnumRuleCall_2_1_1_0; }
+
+		//constraints+=DateConstraint*
+		public Assignment getConstraintsAssignment_2_1_2() { return cConstraintsAssignment_2_1_2; }
+
+		//DateConstraint
+		public RuleCall getConstraintsDateConstraintParserRuleCall_2_1_2_0() { return cConstraintsDateConstraintParserRuleCall_2_1_2_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_3() { return cGroup_2_1_3; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_3_0() { return cPropertiesKeyword_2_1_3_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_3_1() { return cLeftParenthesisKeyword_2_1_3_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_3_2() { return cPropertiesAssignment_2_1_3_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_3_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_3_3() { return cGroup_2_1_3_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_3_3_0() { return cCommaSpaceKeyword_2_1_3_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_3_3_1() { return cPropertiesAssignment_2_1_3_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_3_4() { return cRightParenthesisKeyword_2_1_3_4; }
+
+		//asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//asBlob?="as blob"
+		public Assignment getAsBlobAssignment_2_2_0() { return cAsBlobAssignment_2_2_0; }
+
+		//"as blob"
+		public Keyword getAsBlobAsBlobKeyword_2_2_0_0() { return cAsBlobAsBlobKeyword_2_2_0_0; }
+
+		//constraints+=BlobTypeConstraint*
+		public Assignment getConstraintsAssignment_2_2_1() { return cConstraintsAssignment_2_2_1; }
+
+		//BlobTypeConstraint
+		public RuleCall getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0() { return cConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_2_2() { return cGroup_2_2_2; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_2_2_0() { return cPropertiesKeyword_2_2_2_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_2_2_1() { return cLeftParenthesisKeyword_2_2_2_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_2_2_2() { return cPropertiesAssignment_2_2_2_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_2_2_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_2_2_3() { return cGroup_2_2_2_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_2_2_3_0() { return cCommaSpaceKeyword_2_2_2_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_2_2_3_1() { return cPropertiesAssignment_2_2_2_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_2_2_4() { return cRightParenthesisKeyword_2_2_2_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
+	}
+
+	public class AllConstraintsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AllConstraints");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDtCAssertFalseParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDtCAssertTrueParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDtCDecimalMaxParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cDtCDecimalMinParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cDtCDigitsParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cDtCNumericMaxParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cDtCNumericMinParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cDtCNotNullParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cDtCNullParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cDtCRegExParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cDtCSizeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		private final RuleCall cDtCFutureParserRuleCall_11 = (RuleCall)cAlternatives.eContents().get(11);
+		private final RuleCall cDtCPastParserRuleCall_12 = (RuleCall)cAlternatives.eContents().get(12);
+		
+		//AllConstraints returns types::LDatatypeConstraint:
+		//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+		//	DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast;
+		public ParserRule getRule() { return rule; }
+
+		//DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin | DtCNotNull
+		//| DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DtCAssertFalse
+		public RuleCall getDtCAssertFalseParserRuleCall_0() { return cDtCAssertFalseParserRuleCall_0; }
+
+		//DtCAssertTrue
+		public RuleCall getDtCAssertTrueParserRuleCall_1() { return cDtCAssertTrueParserRuleCall_1; }
+
+		//DtCDecimalMax
+		public RuleCall getDtCDecimalMaxParserRuleCall_2() { return cDtCDecimalMaxParserRuleCall_2; }
+
+		//DtCDecimalMin
+		public RuleCall getDtCDecimalMinParserRuleCall_3() { return cDtCDecimalMinParserRuleCall_3; }
+
+		//DtCDigits
+		public RuleCall getDtCDigitsParserRuleCall_4() { return cDtCDigitsParserRuleCall_4; }
+
+		//DtCNumericMax
+		public RuleCall getDtCNumericMaxParserRuleCall_5() { return cDtCNumericMaxParserRuleCall_5; }
+
+		//DtCNumericMin
+		public RuleCall getDtCNumericMinParserRuleCall_6() { return cDtCNumericMinParserRuleCall_6; }
+
+		//DtCNotNull
+		public RuleCall getDtCNotNullParserRuleCall_7() { return cDtCNotNullParserRuleCall_7; }
+
+		//DtCNull
+		public RuleCall getDtCNullParserRuleCall_8() { return cDtCNullParserRuleCall_8; }
+
+		//DtCRegEx
+		public RuleCall getDtCRegExParserRuleCall_9() { return cDtCRegExParserRuleCall_9; }
+
+		//DtCSize
+		public RuleCall getDtCSizeParserRuleCall_10() { return cDtCSizeParserRuleCall_10; }
+
+		//DtCFuture
+		public RuleCall getDtCFutureParserRuleCall_11() { return cDtCFutureParserRuleCall_11; }
+
+		//DtCPast
+		public RuleCall getDtCPastParserRuleCall_12() { return cDtCPastParserRuleCall_12; }
+	}
+
+	public class DataTypeConstraintElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DataTypeConstraint");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDtCAssertFalseParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDtCAssertTrueParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDtCDecimalMaxParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cDtCDecimalMinParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		private final RuleCall cDtCDigitsParserRuleCall_4 = (RuleCall)cAlternatives.eContents().get(4);
+		private final RuleCall cDtCNumericMaxParserRuleCall_5 = (RuleCall)cAlternatives.eContents().get(5);
+		private final RuleCall cDtCNumericMinParserRuleCall_6 = (RuleCall)cAlternatives.eContents().get(6);
+		private final RuleCall cDtCNotNullParserRuleCall_7 = (RuleCall)cAlternatives.eContents().get(7);
+		private final RuleCall cDtCNullParserRuleCall_8 = (RuleCall)cAlternatives.eContents().get(8);
+		private final RuleCall cDtCRegExParserRuleCall_9 = (RuleCall)cAlternatives.eContents().get(9);
+		private final RuleCall cDtCSizeParserRuleCall_10 = (RuleCall)cAlternatives.eContents().get(10);
+		
+		//DataTypeConstraint returns types::LDatatypeConstraint:
+		//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+		//	DtCNotNull | DtCNull | DtCRegEx | DtCSize;
+		public ParserRule getRule() { return rule; }
+
+		//DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin | DtCNotNull
+		//| DtCNull | DtCRegEx | DtCSize
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DtCAssertFalse
+		public RuleCall getDtCAssertFalseParserRuleCall_0() { return cDtCAssertFalseParserRuleCall_0; }
+
+		//DtCAssertTrue
+		public RuleCall getDtCAssertTrueParserRuleCall_1() { return cDtCAssertTrueParserRuleCall_1; }
+
+		//DtCDecimalMax
+		public RuleCall getDtCDecimalMaxParserRuleCall_2() { return cDtCDecimalMaxParserRuleCall_2; }
+
+		//DtCDecimalMin
+		public RuleCall getDtCDecimalMinParserRuleCall_3() { return cDtCDecimalMinParserRuleCall_3; }
+
+		//DtCDigits
+		public RuleCall getDtCDigitsParserRuleCall_4() { return cDtCDigitsParserRuleCall_4; }
+
+		//DtCNumericMax
+		public RuleCall getDtCNumericMaxParserRuleCall_5() { return cDtCNumericMaxParserRuleCall_5; }
+
+		//DtCNumericMin
+		public RuleCall getDtCNumericMinParserRuleCall_6() { return cDtCNumericMinParserRuleCall_6; }
+
+		//DtCNotNull
+		public RuleCall getDtCNotNullParserRuleCall_7() { return cDtCNotNullParserRuleCall_7; }
+
+		//DtCNull
+		public RuleCall getDtCNullParserRuleCall_8() { return cDtCNullParserRuleCall_8; }
+
+		//DtCRegEx
+		public RuleCall getDtCRegExParserRuleCall_9() { return cDtCRegExParserRuleCall_9; }
+
+		//DtCSize
+		public RuleCall getDtCSizeParserRuleCall_10() { return cDtCSizeParserRuleCall_10; }
+	}
+
+	public class DateConstraintElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DateConstraint");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDtCFutureParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDtCPastParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		private final RuleCall cDtCNotNullParserRuleCall_2 = (RuleCall)cAlternatives.eContents().get(2);
+		private final RuleCall cDtCNullParserRuleCall_3 = (RuleCall)cAlternatives.eContents().get(3);
+		
+		//DateConstraint returns types::LDatatypeConstraint:
+		//	DtCFuture | DtCPast | DtCNotNull | DtCNull;
+		public ParserRule getRule() { return rule; }
+
+		//DtCFuture | DtCPast | DtCNotNull | DtCNull
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DtCFuture
+		public RuleCall getDtCFutureParserRuleCall_0() { return cDtCFutureParserRuleCall_0; }
+
+		//DtCPast
+		public RuleCall getDtCPastParserRuleCall_1() { return cDtCPastParserRuleCall_1; }
+
+		//DtCNotNull
+		public RuleCall getDtCNotNullParserRuleCall_2() { return cDtCNotNullParserRuleCall_2; }
+
+		//DtCNull
+		public RuleCall getDtCNullParserRuleCall_3() { return cDtCNullParserRuleCall_3; }
+	}
+
+	public class BlobTypeConstraintElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BlobTypeConstraint");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDtCNotNullParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cDtCNullParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//BlobTypeConstraint returns types::LDatatypeConstraint:
+		//	DtCNotNull | DtCNull;
+		public ParserRule getRule() { return rule; }
+
+		//DtCNotNull | DtCNull
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DtCNotNull
+		public RuleCall getDtCNotNullParserRuleCall_0() { return cDtCNotNullParserRuleCall_0; }
+
+		//DtCNull
+		public RuleCall getDtCNullParserRuleCall_1() { return cDtCNullParserRuleCall_1; }
+	}
+
+	public class DtCAssertFalseElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCAssertFalse");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCAssertFalseAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIsFalseKeyword_1 = (Keyword)cGroup.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 Keyword cLeftSquareBracketKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_0_1_1 = (Keyword)cGroup_2_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0 = (RuleCall)cMsgCodeAssignment_2_0_1_2.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Group cGroup_2_2_0 = (Group)cGroup_2_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_2_2_0_0 = (Keyword)cGroup_2_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_2_0_1 = (Keyword)cGroup_2_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0 = (RuleCall)cSeverityAssignment_2_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		
+		//DtCAssertFalse returns types::LDtCAssertFalse:
+		//	{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCAssertFalse}
+		public Action getLDtCAssertFalseAction_0() { return cLDtCAssertFalseAction_0; }
+
+		//"isFalse"
+		public Keyword getIsFalseKeyword_1() { return cIsFalseKeyword_1; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_2_0_1_0() { return cMsgCodeKeyword_2_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_0_1_1() { return cEqualsSignKeyword_2_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_2_0_1_2() { return cMsgCodeAssignment_2_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_2_1_0() { return cMsgI18nKeyKeyword_2_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_2_1_2() { return cMsgI18nKeyAssignment_2_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_2_2_0() { return cGroup_2_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_2_2_0_0() { return cSeverityKeyword_2_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_2_0_1() { return cEqualsSignKeyword_2_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_2_2_0_2() { return cSeverityAssignment_2_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1() { return cRightSquareBracketKeyword_2_2_1; }
+	}
+
+	public class DtCAssertTrueElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCAssertTrue");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCAssertTrueAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIsTrueKeyword_1 = (Keyword)cGroup.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 Keyword cLeftSquareBracketKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_0_1_1 = (Keyword)cGroup_2_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0 = (RuleCall)cMsgCodeAssignment_2_0_1_2.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Group cGroup_2_2_0 = (Group)cGroup_2_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_2_2_0_0 = (Keyword)cGroup_2_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_2_0_1 = (Keyword)cGroup_2_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0 = (RuleCall)cSeverityAssignment_2_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		
+		//DtCAssertTrue returns types::LDtCAssertTrue:
+		//	{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCAssertTrue}
+		public Action getLDtCAssertTrueAction_0() { return cLDtCAssertTrueAction_0; }
+
+		//"isTrue"
+		public Keyword getIsTrueKeyword_1() { return cIsTrueKeyword_1; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_2_0_1_0() { return cMsgCodeKeyword_2_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_0_1_1() { return cEqualsSignKeyword_2_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_2_0_1_2() { return cMsgCodeAssignment_2_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_2_1_0() { return cMsgI18nKeyKeyword_2_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_2_1_2() { return cMsgI18nKeyAssignment_2_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_2_2_0() { return cGroup_2_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_2_2_0_0() { return cSeverityKeyword_2_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_2_0_1() { return cEqualsSignKeyword_2_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_2_2_0_2() { return cSeverityAssignment_2_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1() { return cRightSquareBracketKeyword_2_2_1; }
+	}
+
+	public class DtCDecimalMaxElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCDecimalMax");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCDecimalMaxAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cMaxDecimalKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMaxAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMaxLDecimalParserRuleCall_3_0 = (RuleCall)cMaxAssignment_3.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
+		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
+		private final Group cGroup_4_0_1 = (Group)cGroup_4_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_4_0_1_0 = (Keyword)cGroup_4_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_0_1_1 = (Keyword)cGroup_4_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_4_0_1_2 = (Assignment)cGroup_4_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0 = (RuleCall)cMsgCodeAssignment_4_0_1_2.eContents().get(0);
+		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_4_1_2.eContents().get(0);
+		private final Group cGroup_4_2 = (Group)cUnorderedGroup_4.eContents().get(2);
+		private final Group cGroup_4_2_0 = (Group)cGroup_4_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_4_2_0_0 = (Keyword)cGroup_4_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_2_0_1 = (Keyword)cGroup_4_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_4_2_0_2 = (Assignment)cGroup_4_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0 = (RuleCall)cSeverityAssignment_4_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_4_2_1 = (Keyword)cGroup_4_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//DtCDecimalMax returns types::LDtCDecimalMax:
+		//	{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCDecimalMax}
+		public Action getLDtCDecimalMaxAction_0() { return cLDtCDecimalMaxAction_0; }
+
+		//"maxDecimal"
+		public Keyword getMaxDecimalKeyword_1() { return cMaxDecimalKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//max=LDecimal
+		public Assignment getMaxAssignment_3() { return cMaxAssignment_3; }
+
+		//LDecimal
+		public RuleCall getMaxLDecimalParserRuleCall_3_0() { return cMaxLDecimalParserRuleCall_3_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0() { return cGroup_4_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_4_0_0() { return cLeftSquareBracketKeyword_4_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0_1() { return cGroup_4_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_4_0_1_0() { return cMsgCodeKeyword_4_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_0_1_1() { return cEqualsSignKeyword_4_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_4_0_1_2() { return cMsgCodeAssignment_4_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_4_1() { return cGroup_4_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_4_1_0() { return cMsgI18nKeyKeyword_4_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_4_1_2() { return cMsgI18nKeyAssignment_4_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_4_2() { return cGroup_4_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_4_2_0() { return cGroup_4_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_4_2_0_0() { return cSeverityKeyword_4_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_2_0_1() { return cEqualsSignKeyword_4_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_4_2_0_2() { return cSeverityAssignment_4_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_4_2_1() { return cRightSquareBracketKeyword_4_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class DtCDecimalMinElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCDecimalMin");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCDecimalMinAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cMinDecimalKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMinAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMinLDecimalParserRuleCall_3_0 = (RuleCall)cMinAssignment_3.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
+		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
+		private final Group cGroup_4_0_1 = (Group)cGroup_4_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_4_0_1_0 = (Keyword)cGroup_4_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_0_1_1 = (Keyword)cGroup_4_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_4_0_1_2 = (Assignment)cGroup_4_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0 = (RuleCall)cMsgCodeAssignment_4_0_1_2.eContents().get(0);
+		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_4_1_2.eContents().get(0);
+		private final Group cGroup_4_2 = (Group)cUnorderedGroup_4.eContents().get(2);
+		private final Group cGroup_4_2_0 = (Group)cGroup_4_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_4_2_0_0 = (Keyword)cGroup_4_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_2_0_1 = (Keyword)cGroup_4_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_4_2_0_2 = (Assignment)cGroup_4_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0 = (RuleCall)cSeverityAssignment_4_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_4_2_1 = (Keyword)cGroup_4_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//DtCDecimalMin returns types::LDtCDecimalMin:
+		//	{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCDecimalMin}
+		public Action getLDtCDecimalMinAction_0() { return cLDtCDecimalMinAction_0; }
+
+		//"minDecimal"
+		public Keyword getMinDecimalKeyword_1() { return cMinDecimalKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//min=LDecimal
+		public Assignment getMinAssignment_3() { return cMinAssignment_3; }
+
+		//LDecimal
+		public RuleCall getMinLDecimalParserRuleCall_3_0() { return cMinLDecimalParserRuleCall_3_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0() { return cGroup_4_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_4_0_0() { return cLeftSquareBracketKeyword_4_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0_1() { return cGroup_4_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_4_0_1_0() { return cMsgCodeKeyword_4_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_0_1_1() { return cEqualsSignKeyword_4_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_4_0_1_2() { return cMsgCodeAssignment_4_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_4_1() { return cGroup_4_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_4_1_0() { return cMsgI18nKeyKeyword_4_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_4_1_2() { return cMsgI18nKeyAssignment_4_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_4_2() { return cGroup_4_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_4_2_0() { return cGroup_4_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_4_2_0_0() { return cSeverityKeyword_4_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_2_0_1() { return cEqualsSignKeyword_4_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_4_2_0_2() { return cSeverityAssignment_4_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_4_2_1() { return cRightSquareBracketKeyword_4_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class DtCDigitsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCDigits");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCDigitsAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cDigitsKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cIntDigitsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cIntDigitsINTTerminalRuleCall_3_0 = (RuleCall)cIntDigitsAssignment_3.eContents().get(0);
+		private final Keyword cCommaSpaceKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cFractionDigitsAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cFractionDigitsINTTerminalRuleCall_5_0 = (RuleCall)cFractionDigitsAssignment_5.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_6 = (UnorderedGroup)cGroup.eContents().get(6);
+		private final Group cGroup_6_0 = (Group)cUnorderedGroup_6.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_6_0_0 = (Keyword)cGroup_6_0.eContents().get(0);
+		private final Group cGroup_6_0_1 = (Group)cGroup_6_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_6_0_1_0 = (Keyword)cGroup_6_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_6_0_1_1 = (Keyword)cGroup_6_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_6_0_1_2 = (Assignment)cGroup_6_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0 = (RuleCall)cMsgCodeAssignment_6_0_1_2.eContents().get(0);
+		private final Group cGroup_6_1 = (Group)cUnorderedGroup_6.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_6_1_1 = (Keyword)cGroup_6_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_6_1_2 = (Assignment)cGroup_6_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_6_1_2.eContents().get(0);
+		private final Group cGroup_6_2 = (Group)cUnorderedGroup_6.eContents().get(2);
+		private final Group cGroup_6_2_0 = (Group)cGroup_6_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_6_2_0_0 = (Keyword)cGroup_6_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_6_2_0_1 = (Keyword)cGroup_6_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_6_2_0_2 = (Assignment)cGroup_6_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0 = (RuleCall)cSeverityAssignment_6_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_6_2_1 = (Keyword)cGroup_6_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//DtCDigits returns types::LDtCDigits:
+		//	{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+		//	("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCDigits}
+		public Action getLDtCDigitsAction_0() { return cLDtCDigitsAction_0; }
+
+		//"digits"
+		public Keyword getDigitsKeyword_1() { return cDigitsKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//intDigits=INT
+		public Assignment getIntDigitsAssignment_3() { return cIntDigitsAssignment_3; }
+
+		//INT
+		public RuleCall getIntDigitsINTTerminalRuleCall_3_0() { return cIntDigitsINTTerminalRuleCall_3_0; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_4() { return cCommaSpaceKeyword_4; }
+
+		//fractionDigits=INT
+		public Assignment getFractionDigitsAssignment_5() { return cFractionDigitsAssignment_5; }
+
+		//INT
+		public RuleCall getFractionDigitsINTTerminalRuleCall_5_0() { return cFractionDigitsINTTerminalRuleCall_5_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_6() { return cUnorderedGroup_6; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_6_0() { return cGroup_6_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_6_0_0() { return cLeftSquareBracketKeyword_6_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_6_0_1() { return cGroup_6_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_6_0_1_0() { return cMsgCodeKeyword_6_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_6_0_1_1() { return cEqualsSignKeyword_6_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_6_0_1_2() { return cMsgCodeAssignment_6_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_6_1() { return cGroup_6_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_6_1_0() { return cMsgI18nKeyKeyword_6_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_6_1_1() { return cEqualsSignKeyword_6_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_6_1_2() { return cMsgI18nKeyAssignment_6_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_6_2() { return cGroup_6_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_6_2_0() { return cGroup_6_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_6_2_0_0() { return cSeverityKeyword_6_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_6_2_0_1() { return cEqualsSignKeyword_6_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_6_2_0_2() { return cSeverityAssignment_6_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_6_2_1() { return cRightSquareBracketKeyword_6_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_7() { return cRightParenthesisKeyword_7; }
+	}
+
+	public class DtCFutureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCFuture");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCFutureAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIsFutureKeyword_1 = (Keyword)cGroup.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 Keyword cLeftSquareBracketKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_0_1_1 = (Keyword)cGroup_2_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0 = (RuleCall)cMsgCodeAssignment_2_0_1_2.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Group cGroup_2_2_0 = (Group)cGroup_2_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_2_2_0_0 = (Keyword)cGroup_2_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_2_0_1 = (Keyword)cGroup_2_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0 = (RuleCall)cSeverityAssignment_2_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		
+		//DtCFuture returns types::LDtCFuture:
+		//	{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCFuture}
+		public Action getLDtCFutureAction_0() { return cLDtCFutureAction_0; }
+
+		//"isFuture"
+		public Keyword getIsFutureKeyword_1() { return cIsFutureKeyword_1; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_2_0_1_0() { return cMsgCodeKeyword_2_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_0_1_1() { return cEqualsSignKeyword_2_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_2_0_1_2() { return cMsgCodeAssignment_2_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_2_1_0() { return cMsgI18nKeyKeyword_2_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_2_1_2() { return cMsgI18nKeyAssignment_2_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_2_2_0() { return cGroup_2_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_2_2_0_0() { return cSeverityKeyword_2_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_2_0_1() { return cEqualsSignKeyword_2_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_2_2_0_2() { return cSeverityAssignment_2_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1() { return cRightSquareBracketKeyword_2_2_1; }
+	}
+
+	public class DtCPastElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCPast");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCPastAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIsPastKeyword_1 = (Keyword)cGroup.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 Keyword cLeftSquareBracketKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_0_1_1 = (Keyword)cGroup_2_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0 = (RuleCall)cMsgCodeAssignment_2_0_1_2.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Group cGroup_2_2_0 = (Group)cGroup_2_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_2_2_0_0 = (Keyword)cGroup_2_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_2_0_1 = (Keyword)cGroup_2_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0 = (RuleCall)cSeverityAssignment_2_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		
+		//DtCPast returns types::LDtCPast:
+		//	{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? &
+		//("severity" "=" severity=ConstraintSeverity)? "]")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCPast}
+		public Action getLDtCPastAction_0() { return cLDtCPastAction_0; }
+
+		//"isPast"
+		public Keyword getIsPastKeyword_1() { return cIsPastKeyword_1; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_2_0_1_0() { return cMsgCodeKeyword_2_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_0_1_1() { return cEqualsSignKeyword_2_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_2_0_1_2() { return cMsgCodeAssignment_2_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_2_1_0() { return cMsgI18nKeyKeyword_2_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_2_1_2() { return cMsgI18nKeyAssignment_2_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_2_2_0() { return cGroup_2_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_2_2_0_0() { return cSeverityKeyword_2_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_2_0_1() { return cEqualsSignKeyword_2_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_2_2_0_2() { return cSeverityAssignment_2_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1() { return cRightSquareBracketKeyword_2_2_1; }
+	}
+
+	public class DtCNumericMaxElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCNumericMax");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCNumericMaxAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cMaxNumberKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMaxAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMaxLIntParserRuleCall_3_0 = (RuleCall)cMaxAssignment_3.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
+		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
+		private final Group cGroup_4_0_1 = (Group)cGroup_4_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_4_0_1_0 = (Keyword)cGroup_4_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_0_1_1 = (Keyword)cGroup_4_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_4_0_1_2 = (Assignment)cGroup_4_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0 = (RuleCall)cMsgCodeAssignment_4_0_1_2.eContents().get(0);
+		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_4_1_2.eContents().get(0);
+		private final Group cGroup_4_2 = (Group)cUnorderedGroup_4.eContents().get(2);
+		private final Group cGroup_4_2_0 = (Group)cGroup_4_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_4_2_0_0 = (Keyword)cGroup_4_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_2_0_1 = (Keyword)cGroup_4_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_4_2_0_2 = (Assignment)cGroup_4_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0 = (RuleCall)cSeverityAssignment_4_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_4_2_1 = (Keyword)cGroup_4_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//DtCNumericMax returns types::LDtCNumericMax:
+		//	{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCNumericMax}
+		public Action getLDtCNumericMaxAction_0() { return cLDtCNumericMaxAction_0; }
+
+		//"maxNumber"
+		public Keyword getMaxNumberKeyword_1() { return cMaxNumberKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//max=LInt
+		public Assignment getMaxAssignment_3() { return cMaxAssignment_3; }
+
+		//LInt
+		public RuleCall getMaxLIntParserRuleCall_3_0() { return cMaxLIntParserRuleCall_3_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0() { return cGroup_4_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_4_0_0() { return cLeftSquareBracketKeyword_4_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0_1() { return cGroup_4_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_4_0_1_0() { return cMsgCodeKeyword_4_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_0_1_1() { return cEqualsSignKeyword_4_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_4_0_1_2() { return cMsgCodeAssignment_4_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_4_1() { return cGroup_4_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_4_1_0() { return cMsgI18nKeyKeyword_4_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_4_1_2() { return cMsgI18nKeyAssignment_4_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_4_2() { return cGroup_4_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_4_2_0() { return cGroup_4_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_4_2_0_0() { return cSeverityKeyword_4_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_2_0_1() { return cEqualsSignKeyword_4_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_4_2_0_2() { return cSeverityAssignment_4_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_4_2_1() { return cRightSquareBracketKeyword_4_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class DtCNumericMinElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCNumericMin");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCNumericMinAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cMinNumberKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMinAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMinLIntParserRuleCall_3_0 = (RuleCall)cMinAssignment_3.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
+		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
+		private final Group cGroup_4_0_1 = (Group)cGroup_4_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_4_0_1_0 = (Keyword)cGroup_4_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_0_1_1 = (Keyword)cGroup_4_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_4_0_1_2 = (Assignment)cGroup_4_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0 = (RuleCall)cMsgCodeAssignment_4_0_1_2.eContents().get(0);
+		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_4_1_2.eContents().get(0);
+		private final Group cGroup_4_2 = (Group)cUnorderedGroup_4.eContents().get(2);
+		private final Group cGroup_4_2_0 = (Group)cGroup_4_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_4_2_0_0 = (Keyword)cGroup_4_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_2_0_1 = (Keyword)cGroup_4_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_4_2_0_2 = (Assignment)cGroup_4_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0 = (RuleCall)cSeverityAssignment_4_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_4_2_1 = (Keyword)cGroup_4_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//DtCNumericMin returns types::LDtCNumericMin:
+		//	{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCNumericMin}
+		public Action getLDtCNumericMinAction_0() { return cLDtCNumericMinAction_0; }
+
+		//"minNumber"
+		public Keyword getMinNumberKeyword_1() { return cMinNumberKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//min=LInt
+		public Assignment getMinAssignment_3() { return cMinAssignment_3; }
+
+		//LInt
+		public RuleCall getMinLIntParserRuleCall_3_0() { return cMinLIntParserRuleCall_3_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0() { return cGroup_4_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_4_0_0() { return cLeftSquareBracketKeyword_4_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0_1() { return cGroup_4_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_4_0_1_0() { return cMsgCodeKeyword_4_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_0_1_1() { return cEqualsSignKeyword_4_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_4_0_1_2() { return cMsgCodeAssignment_4_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_4_1() { return cGroup_4_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_4_1_0() { return cMsgI18nKeyKeyword_4_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_4_1_2() { return cMsgI18nKeyAssignment_4_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_4_2() { return cGroup_4_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_4_2_0() { return cGroup_4_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_4_2_0_0() { return cSeverityKeyword_4_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_2_0_1() { return cEqualsSignKeyword_4_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_4_2_0_2() { return cSeverityAssignment_4_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_4_2_1() { return cRightSquareBracketKeyword_4_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class DtCNotNullElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCNotNull");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCNotNullAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIsNotNullKeyword_1 = (Keyword)cGroup.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 Keyword cLeftSquareBracketKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_0_1_1 = (Keyword)cGroup_2_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0 = (RuleCall)cMsgCodeAssignment_2_0_1_2.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Group cGroup_2_2_0 = (Group)cGroup_2_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_2_2_0_0 = (Keyword)cGroup_2_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_2_0_1 = (Keyword)cGroup_2_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0 = (RuleCall)cSeverityAssignment_2_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		
+		//DtCNotNull returns types::LDtCNotNull:
+		//	{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCNotNull}
+		public Action getLDtCNotNullAction_0() { return cLDtCNotNullAction_0; }
+
+		//"isNotNull"
+		public Keyword getIsNotNullKeyword_1() { return cIsNotNullKeyword_1; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_2_0_1_0() { return cMsgCodeKeyword_2_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_0_1_1() { return cEqualsSignKeyword_2_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_2_0_1_2() { return cMsgCodeAssignment_2_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_2_1_0() { return cMsgI18nKeyKeyword_2_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_2_1_2() { return cMsgI18nKeyAssignment_2_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_2_2_0() { return cGroup_2_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_2_2_0_0() { return cSeverityKeyword_2_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_2_0_1() { return cEqualsSignKeyword_2_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_2_2_0_2() { return cSeverityAssignment_2_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1() { return cRightSquareBracketKeyword_2_2_1; }
+	}
+
+	public class DtCNullElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCNull");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCNullAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cIsNullKeyword_1 = (Keyword)cGroup.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 Keyword cLeftSquareBracketKeyword_2_0_0 = (Keyword)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_0_1_1 = (Keyword)cGroup_2_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0 = (RuleCall)cMsgCodeAssignment_2_0_1_2.eContents().get(0);
+		private final Group cGroup_2_1 = (Group)cUnorderedGroup_2.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_2_1_0 = (Keyword)cGroup_2_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_1_1 = (Keyword)cGroup_2_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_2_1_2 = (Assignment)cGroup_2_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_2_1_2.eContents().get(0);
+		private final Group cGroup_2_2 = (Group)cUnorderedGroup_2.eContents().get(2);
+		private final Group cGroup_2_2_0 = (Group)cGroup_2_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_2_2_0_0 = (Keyword)cGroup_2_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_2_2_0_1 = (Keyword)cGroup_2_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_2_2_0_2 = (Assignment)cGroup_2_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0 = (RuleCall)cSeverityAssignment_2_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		
+		//DtCNull returns types::LDtCNull:
+		//	{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? &
+		//("severity" "=" severity=ConstraintSeverity)? "]")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCNull}
+		public Action getLDtCNullAction_0() { return cLDtCNullAction_0; }
+
+		//"isNull"
+		public Keyword getIsNullKeyword_1() { return cIsNullKeyword_1; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_0() { return cLeftSquareBracketKeyword_2_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_2_0_1_0() { return cMsgCodeKeyword_2_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_0_1_1() { return cEqualsSignKeyword_2_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_2_0_1_2() { return cMsgCodeAssignment_2_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_2_1_0() { return cMsgI18nKeyKeyword_2_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_1_1() { return cEqualsSignKeyword_2_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_2_1_2() { return cMsgI18nKeyAssignment_2_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_2_2_0() { return cGroup_2_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_2_2_0_0() { return cSeverityKeyword_2_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_2_2_0_1() { return cEqualsSignKeyword_2_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_2_2_0_2() { return cSeverityAssignment_2_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1() { return cRightSquareBracketKeyword_2_2_1; }
+	}
+
+	public class DtCRegExElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCRegEx");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCRegExAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cRegexKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cPatternAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cPatternSTRINGTerminalRuleCall_3_0 = (RuleCall)cPatternAssignment_3.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_4 = (UnorderedGroup)cGroup.eContents().get(4);
+		private final Group cGroup_4_0 = (Group)cUnorderedGroup_4.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_4_0_0 = (Keyword)cGroup_4_0.eContents().get(0);
+		private final Group cGroup_4_0_1 = (Group)cGroup_4_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_4_0_1_0 = (Keyword)cGroup_4_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_0_1_1 = (Keyword)cGroup_4_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_4_0_1_2 = (Assignment)cGroup_4_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0 = (RuleCall)cMsgCodeAssignment_4_0_1_2.eContents().get(0);
+		private final Group cGroup_4_1 = (Group)cUnorderedGroup_4.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_4_1_0 = (Keyword)cGroup_4_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_1_1 = (Keyword)cGroup_4_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_4_1_2 = (Assignment)cGroup_4_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_4_1_2.eContents().get(0);
+		private final Group cGroup_4_2 = (Group)cUnorderedGroup_4.eContents().get(2);
+		private final Group cGroup_4_2_0 = (Group)cGroup_4_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_4_2_0_0 = (Keyword)cGroup_4_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_4_2_0_1 = (Keyword)cGroup_4_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_4_2_0_2 = (Assignment)cGroup_4_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0 = (RuleCall)cSeverityAssignment_4_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_4_2_1 = (Keyword)cGroup_4_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//DtCRegEx returns types::LDtCRegEx:
+		//	{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCRegEx}
+		public Action getLDtCRegExAction_0() { return cLDtCRegExAction_0; }
+
+		//"regex"
+		public Keyword getRegexKeyword_1() { return cRegexKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//pattern=STRING
+		public Assignment getPatternAssignment_3() { return cPatternAssignment_3; }
+
+		//STRING
+		public RuleCall getPatternSTRINGTerminalRuleCall_3_0() { return cPatternSTRINGTerminalRuleCall_3_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_4() { return cUnorderedGroup_4; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0() { return cGroup_4_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_4_0_0() { return cLeftSquareBracketKeyword_4_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_4_0_1() { return cGroup_4_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_4_0_1_0() { return cMsgCodeKeyword_4_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_0_1_1() { return cEqualsSignKeyword_4_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_4_0_1_2() { return cMsgCodeAssignment_4_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_4_1() { return cGroup_4_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_4_1_0() { return cMsgI18nKeyKeyword_4_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_1_1() { return cEqualsSignKeyword_4_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_4_1_2() { return cMsgI18nKeyAssignment_4_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_4_2() { return cGroup_4_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_4_2_0() { return cGroup_4_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_4_2_0_0() { return cSeverityKeyword_4_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4_2_0_1() { return cEqualsSignKeyword_4_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_4_2_0_2() { return cSeverityAssignment_4_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_4_2_1() { return cRightSquareBracketKeyword_4_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; }
+	}
+
+	public class DtCSizeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtCSize");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtCSizeAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cMinMaxSizeKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cMinAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cMinINTTerminalRuleCall_3_0 = (RuleCall)cMinAssignment_3.eContents().get(0);
+		private final Keyword cCommaSpaceKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cMaxAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cMaxINTTerminalRuleCall_5_0 = (RuleCall)cMaxAssignment_5.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_6 = (UnorderedGroup)cGroup.eContents().get(6);
+		private final Group cGroup_6_0 = (Group)cUnorderedGroup_6.eContents().get(0);
+		private final Keyword cLeftSquareBracketKeyword_6_0_0 = (Keyword)cGroup_6_0.eContents().get(0);
+		private final Group cGroup_6_0_1 = (Group)cGroup_6_0.eContents().get(1);
+		private final Keyword cMsgCodeKeyword_6_0_1_0 = (Keyword)cGroup_6_0_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_6_0_1_1 = (Keyword)cGroup_6_0_1.eContents().get(1);
+		private final Assignment cMsgCodeAssignment_6_0_1_2 = (Assignment)cGroup_6_0_1.eContents().get(2);
+		private final RuleCall cMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0 = (RuleCall)cMsgCodeAssignment_6_0_1_2.eContents().get(0);
+		private final Group cGroup_6_1 = (Group)cUnorderedGroup_6.eContents().get(1);
+		private final Keyword cMsgI18nKeyKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_6_1_1 = (Keyword)cGroup_6_1.eContents().get(1);
+		private final Assignment cMsgI18nKeyAssignment_6_1_2 = (Assignment)cGroup_6_1.eContents().get(2);
+		private final RuleCall cMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0 = (RuleCall)cMsgI18nKeyAssignment_6_1_2.eContents().get(0);
+		private final Group cGroup_6_2 = (Group)cUnorderedGroup_6.eContents().get(2);
+		private final Group cGroup_6_2_0 = (Group)cGroup_6_2.eContents().get(0);
+		private final Keyword cSeverityKeyword_6_2_0_0 = (Keyword)cGroup_6_2_0.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_6_2_0_1 = (Keyword)cGroup_6_2_0.eContents().get(1);
+		private final Assignment cSeverityAssignment_6_2_0_2 = (Assignment)cGroup_6_2_0.eContents().get(2);
+		private final RuleCall cSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0 = (RuleCall)cSeverityAssignment_6_2_0_2.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_6_2_1 = (Keyword)cGroup_6_2.eContents().get(1);
+		private final Keyword cRightParenthesisKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		
+		//DtCSize returns types::LDtCSize:
+		//	{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey"
+		//	"=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+		//msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LDtCSize}
+		public Action getLDtCSizeAction_0() { return cLDtCSizeAction_0; }
+
+		//"minMaxSize"
+		public Keyword getMinMaxSizeKeyword_1() { return cMinMaxSizeKeyword_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2() { return cLeftParenthesisKeyword_2; }
+
+		//min=INT
+		public Assignment getMinAssignment_3() { return cMinAssignment_3; }
+
+		//INT
+		public RuleCall getMinINTTerminalRuleCall_3_0() { return cMinINTTerminalRuleCall_3_0; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_4() { return cCommaSpaceKeyword_4; }
+
+		//max=INT
+		public Assignment getMaxAssignment_5() { return cMaxAssignment_5; }
+
+		//INT
+		public RuleCall getMaxINTTerminalRuleCall_5_0() { return cMaxINTTerminalRuleCall_5_0; }
+
+		//("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "="
+		//severity=ConstraintSeverity)? "]")?
+		public UnorderedGroup getUnorderedGroup_6() { return cUnorderedGroup_6; }
+
+		//"[" ("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_6_0() { return cGroup_6_0; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_6_0_0() { return cLeftSquareBracketKeyword_6_0_0; }
+
+		//("msgCode" "=" msgCode=QualifiedName)?
+		public Group getGroup_6_0_1() { return cGroup_6_0_1; }
+
+		//"msgCode"
+		public Keyword getMsgCodeKeyword_6_0_1_0() { return cMsgCodeKeyword_6_0_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_6_0_1_1() { return cEqualsSignKeyword_6_0_1_1; }
+
+		//msgCode=QualifiedName
+		public Assignment getMsgCodeAssignment_6_0_1_2() { return cMsgCodeAssignment_6_0_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0() { return cMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0; }
+
+		//("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+		public Group getGroup_6_1() { return cGroup_6_1; }
+
+		//"msgI18nKey"
+		public Keyword getMsgI18nKeyKeyword_6_1_0() { return cMsgI18nKeyKeyword_6_1_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_6_1_1() { return cEqualsSignKeyword_6_1_1; }
+
+		//msgI18nKey=QualifiedName
+		public Assignment getMsgI18nKeyAssignment_6_1_2() { return cMsgI18nKeyAssignment_6_1_2; }
+
+		//QualifiedName
+		public RuleCall getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0() { return cMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0; }
+
+		//("severity" "=" severity=ConstraintSeverity)? "]"
+		public Group getGroup_6_2() { return cGroup_6_2; }
+
+		//("severity" "=" severity=ConstraintSeverity)?
+		public Group getGroup_6_2_0() { return cGroup_6_2_0; }
+
+		//"severity"
+		public Keyword getSeverityKeyword_6_2_0_0() { return cSeverityKeyword_6_2_0_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_6_2_0_1() { return cEqualsSignKeyword_6_2_0_1; }
+
+		//severity=ConstraintSeverity
+		public Assignment getSeverityAssignment_6_2_0_2() { return cSeverityAssignment_6_2_0_2; }
+
+		//ConstraintSeverity
+		public RuleCall getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0() { return cSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_6_2_1() { return cRightSquareBracketKeyword_6_2_1; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_7() { return cRightParenthesisKeyword_7; }
+	}
+
+	public class ScalarTypeElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ScalarType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cDataTypeParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cEnumParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//ScalarType returns types::LScalarType:
+		//	DataType | Enum;
+		public ParserRule getRule() { return rule; }
+
+		//DataType | Enum
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DataType
+		public RuleCall getDataTypeParserRuleCall_0() { return cDataTypeParserRuleCall_0; }
+
+		//Enum
+		public RuleCall getEnumParserRuleCall_1() { return cEnumParserRuleCall_1; }
+	}
+
+	public class ModifierElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Modifier");
+		private final UnorderedGroup cUnorderedGroup = (UnorderedGroup)rule.eContents().get(1);
+		private final Assignment cFinalAssignment_0 = (Assignment)cUnorderedGroup.eContents().get(0);
+		private final Keyword cFinalFinalKeyword_0_0 = (Keyword)cFinalAssignment_0.eContents().get(0);
+		private final Assignment cStaticAssignment_1 = (Assignment)cUnorderedGroup.eContents().get(1);
+		private final Keyword cStaticStaticKeyword_1_0 = (Keyword)cStaticAssignment_1.eContents().get(0);
+		private final Assignment cVisibilityAssignment_2 = (Assignment)cUnorderedGroup.eContents().get(2);
+		private final RuleCall cVisibilityLVisibilityEnumRuleCall_2_0 = (RuleCall)cVisibilityAssignment_2.eContents().get(0);
+		
+		//Modifier returns types::LModifier:
+		//	final?="final"? & static?="static"? & visibility=LVisibility;
+		public ParserRule getRule() { return rule; }
+
+		//final?="final"? & static?="static"? & visibility=LVisibility
+		public UnorderedGroup getUnorderedGroup() { return cUnorderedGroup; }
+
+		//final?="final"?
+		public Assignment getFinalAssignment_0() { return cFinalAssignment_0; }
+
+		//"final"
+		public Keyword getFinalFinalKeyword_0_0() { return cFinalFinalKeyword_0_0; }
+
+		//static?="static"?
+		public Assignment getStaticAssignment_1() { return cStaticAssignment_1; }
+
+		//"static"
+		public Keyword getStaticStaticKeyword_1_0() { return cStaticStaticKeyword_1_0; }
+
+		//visibility=LVisibility
+		public Assignment getVisibilityAssignment_2() { return cVisibilityAssignment_2; }
+
+		//LVisibility
+		public RuleCall getVisibilityLVisibilityEnumRuleCall_2_0() { return cVisibilityLVisibilityEnumRuleCall_2_0; }
+	}
+
+	public class EnumElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Enum");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cEnumKeyword_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 Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cLiteralsAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cLiteralsEnumLiteralParserRuleCall_3_0 = (RuleCall)cLiteralsAssignment_3.eContents().get(0);
+		private final Group cGroup_4 = (Group)cGroup.eContents().get(4);
+		private final Keyword cCommaSpaceKeyword_4_0 = (Keyword)cGroup_4.eContents().get(0);
+		private final Assignment cLiteralsAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
+		private final RuleCall cLiteralsEnumLiteralParserRuleCall_4_1_0 = (RuleCall)cLiteralsAssignment_4_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//Enum returns types::LEnum:
+		//	"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}";
+		public ParserRule getRule() { return rule; }
+
+		//"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}"
+		public Group getGroup() { return cGroup; }
+
+		//"enum"
+		public Keyword getEnumKeyword_0() { return cEnumKeyword_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//literals+=EnumLiteral
+		public Assignment getLiteralsAssignment_3() { return cLiteralsAssignment_3; }
+
+		//EnumLiteral
+		public RuleCall getLiteralsEnumLiteralParserRuleCall_3_0() { return cLiteralsEnumLiteralParserRuleCall_3_0; }
+
+		//(", " literals+=EnumLiteral)*
+		public Group getGroup_4() { return cGroup_4; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_4_0() { return cCommaSpaceKeyword_4_0; }
+
+		//literals+=EnumLiteral
+		public Assignment getLiteralsAssignment_4_1() { return cLiteralsAssignment_4_1; }
+
+		//EnumLiteral
+		public RuleCall getLiteralsEnumLiteralParserRuleCall_4_1_0() { return cLiteralsEnumLiteralParserRuleCall_4_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class EnumLiteralElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EnumLiteral");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cNameAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cNameIDTerminalRuleCall_0_0 = (RuleCall)cNameAssignment_0.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_1 = (UnorderedGroup)cGroup.eContents().get(1);
+		private final Group cGroup_1_0 = (Group)cUnorderedGroup_1.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
+		private final Assignment cDefaultAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
+		private final Keyword cDefaultAsDefaultKeyword_1_0_1_0 = (Keyword)cDefaultAssignment_1_0_1.eContents().get(0);
+		private final Group cGroup_1_1 = (Group)cUnorderedGroup_1.eContents().get(1);
+		private final Assignment cNullAssignment_1_1_0 = (Assignment)cGroup_1_1.eContents().get(0);
+		private final Keyword cNullForNullKeyword_1_1_0_0 = (Keyword)cNullAssignment_1_1_0.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_1_1_1 = (Keyword)cGroup_1_1.eContents().get(1);
+		private final Group cGroup_1_1_2 = (Group)cGroup_1_1.eContents().get(2);
+		private final Keyword cEqualsSignKeyword_1_1_2_0 = (Keyword)cGroup_1_1_2.eContents().get(0);
+		private final Assignment cValueAssignment_1_1_2_1 = (Assignment)cGroup_1_1_2.eContents().get(1);
+		private final RuleCall cValueINTTerminalRuleCall_1_1_2_1_0 = (RuleCall)cValueAssignment_1_1_2_1.eContents().get(0);
+		
+		//EnumLiteral returns types::LEnumLiteral:
+		//	name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?;
+		public ParserRule getRule() { return rule; }
+
+		//name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?
+		public Group getGroup() { return cGroup; }
+
+		//name=ID
+		public Assignment getNameAssignment_0() { return cNameAssignment_0; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_0_0() { return cNameIDTerminalRuleCall_0_0; }
+
+		//("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?
+		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
+
+		//"(" default?="asDefault"?
+		public Group getGroup_1_0() { return cGroup_1_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1_0_0() { return cLeftParenthesisKeyword_1_0_0; }
+
+		//default?="asDefault"?
+		public Assignment getDefaultAssignment_1_0_1() { return cDefaultAssignment_1_0_1; }
+
+		//"asDefault"
+		public Keyword getDefaultAsDefaultKeyword_1_0_1_0() { return cDefaultAsDefaultKeyword_1_0_1_0; }
+
+		//null?="forNull"? ")" ("=" value=INT)?
+		public Group getGroup_1_1() { return cGroup_1_1; }
+
+		//null?="forNull"?
+		public Assignment getNullAssignment_1_1_0() { return cNullAssignment_1_1_0; }
+
+		//"forNull"
+		public Keyword getNullForNullKeyword_1_1_0_0() { return cNullForNullKeyword_1_1_0_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_1_1_1() { return cRightParenthesisKeyword_1_1_1; }
+
+		//("=" value=INT)?
+		public Group getGroup_1_1_2() { return cGroup_1_1_2; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_1_1_2_0() { return cEqualsSignKeyword_1_1_2_0; }
+
+		//value=INT
+		public Assignment getValueAssignment_1_1_2_1() { return cValueAssignment_1_1_2_1; }
+
+		//INT
+		public RuleCall getValueINTTerminalRuleCall_1_1_2_1_0() { return cValueINTTerminalRuleCall_1_1_2_1_0; }
+	}
+
+	public class AnnotationDefElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AnnotationDef");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cAnnotationAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cAnnotationXAnnotationParserRuleCall_0_0 = (RuleCall)cAnnotationAssignment_0.eContents().get(0);
+		
+		//AnnotationDef returns types::LAnnotationDef:
+		//	=> (annotation=XAnnotation);
+		public ParserRule getRule() { return rule; }
+
+		//=> (annotation=XAnnotation)
+		public Group getGroup() { return cGroup; }
+
+		//annotation=XAnnotation
+		public Assignment getAnnotationAssignment_0() { return cAnnotationAssignment_0; }
+
+		//XAnnotation
+		public RuleCall getAnnotationXAnnotationParserRuleCall_0_0() { return cAnnotationXAnnotationParserRuleCall_0_0; }
+	}
+
+	public class ResultFiltersElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ResultFilters");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLResultFiltersAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cConstraintsKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final Assignment cResultFiltersAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cResultFiltersResultFilterParserRuleCall_3_0 = (RuleCall)cResultFiltersAssignment_3.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//ResultFilters returns types::LResultFilters:
+		//	{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}";
+		public ParserRule getRule() { return rule; }
+
+		//{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}"
+		public Group getGroup() { return cGroup; }
+
+		//{types::LResultFilters}
+		public Action getLResultFiltersAction_0() { return cLResultFiltersAction_0; }
+
+		//"constraints"
+		public Keyword getConstraintsKeyword_1() { return cConstraintsKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//resultFilters+=ResultFilter*
+		public Assignment getResultFiltersAssignment_3() { return cResultFiltersAssignment_3; }
+
+		//ResultFilter
+		public RuleCall getResultFiltersResultFilterParserRuleCall_3_0() { return cResultFiltersResultFilterParserRuleCall_3_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class ResultFilterElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ResultFilter");
+		private final RuleCall cAttributeMatchingConstraintParserRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//ResultFilter returns types::LResultFilter:
+		//	AttributeMatchingConstraint;
+		public ParserRule getRule() { return rule; }
+
+		//AttributeMatchingConstraint
+		public RuleCall getAttributeMatchingConstraintParserRuleCall() { return cAttributeMatchingConstraintParserRuleCall; }
+	}
+
+	public class AttributeMatchingConstraintElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "AttributeMatchingConstraint");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cAttributeAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final CrossReference cAttributeLAttributeCrossReference_0_0 = (CrossReference)cAttributeAssignment_0.eContents().get(0);
+		private final RuleCall cAttributeLAttributeIDTerminalRuleCall_0_0_1 = (RuleCall)cAttributeLAttributeCrossReference_0_0.eContents().get(1);
+		private final Assignment cComparatorTypeAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cComparatorTypeLComparatorTypeEnumRuleCall_1_0 = (RuleCall)cComparatorTypeAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Assignment cMatchingValueAssignment_2_0 = (Assignment)cAlternatives_2.eContents().get(0);
+		private final RuleCall cMatchingValueSTRINGTerminalRuleCall_2_0_0 = (RuleCall)cMatchingValueAssignment_2_0.eContents().get(0);
+		private final Assignment cMatchingLiteralAssignment_2_1 = (Assignment)cAlternatives_2.eContents().get(1);
+		private final CrossReference cMatchingLiteralLEnumLiteralCrossReference_2_1_0 = (CrossReference)cMatchingLiteralAssignment_2_1.eContents().get(0);
+		private final RuleCall cMatchingLiteralLEnumLiteralIDTerminalRuleCall_2_1_0_1 = (RuleCall)cMatchingLiteralLEnumLiteralCrossReference_2_1_0.eContents().get(1);
+		private final Keyword cSemicolonKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+		//	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+		//	matchingLiteral=[types::LEnumLiteral]) ";"?;
+		public ParserRule getRule() { return rule; }
+
+		//attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+		//matchingLiteral=[types::LEnumLiteral]) ";"?
+		public Group getGroup() { return cGroup; }
+
+		//attribute=[types::LAttribute]
+		public Assignment getAttributeAssignment_0() { return cAttributeAssignment_0; }
+
+		//[types::LAttribute]
+		public CrossReference getAttributeLAttributeCrossReference_0_0() { return cAttributeLAttributeCrossReference_0_0; }
+
+		//ID
+		public RuleCall getAttributeLAttributeIDTerminalRuleCall_0_0_1() { return cAttributeLAttributeIDTerminalRuleCall_0_0_1; }
+
+		//comparatorType=LComparatorType
+		public Assignment getComparatorTypeAssignment_1() { return cComparatorTypeAssignment_1; }
+
+		//LComparatorType
+		public RuleCall getComparatorTypeLComparatorTypeEnumRuleCall_1_0() { return cComparatorTypeLComparatorTypeEnumRuleCall_1_0; }
+
+		//matchingValue=STRING | => matchingLiteral=[types::LEnumLiteral]
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//matchingValue=STRING
+		public Assignment getMatchingValueAssignment_2_0() { return cMatchingValueAssignment_2_0; }
+
+		//STRING
+		public RuleCall getMatchingValueSTRINGTerminalRuleCall_2_0_0() { return cMatchingValueSTRINGTerminalRuleCall_2_0_0; }
+
+		//=> matchingLiteral=[types::LEnumLiteral]
+		public Assignment getMatchingLiteralAssignment_2_1() { return cMatchingLiteralAssignment_2_1; }
+
+		//[types::LEnumLiteral]
+		public CrossReference getMatchingLiteralLEnumLiteralCrossReference_2_1_0() { return cMatchingLiteralLEnumLiteralCrossReference_2_1_0; }
+
+		//ID
+		public RuleCall getMatchingLiteralLEnumLiteralIDTerminalRuleCall_2_1_0_1() { return cMatchingLiteralLEnumLiteralIDTerminalRuleCall_2_1_0_1; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3() { return cSemicolonKeyword_3; }
+	}
+
+	public class KeyAndValueElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "KeyAndValue");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cKeyKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cEqualsSignKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cKeyAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cKeySTRINGTerminalRuleCall_2_0 = (RuleCall)cKeyAssignment_2.eContents().get(0);
+		private final Keyword cValueKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Keyword cEqualsSignKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Assignment cValueAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cValueSTRINGTerminalRuleCall_5_0 = (RuleCall)cValueAssignment_5.eContents().get(0);
+		
+		//KeyAndValue returns types::LKeyAndValue:
+		//	"key" "=" key=STRING "value" "=" value=STRING;
+		public ParserRule getRule() { return rule; }
+
+		//"key" "=" key=STRING "value" "=" value=STRING
+		public Group getGroup() { return cGroup; }
+
+		//"key"
+		public Keyword getKeyKeyword_0() { return cKeyKeyword_0; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_1() { return cEqualsSignKeyword_1; }
+
+		//key=STRING
+		public Assignment getKeyAssignment_2() { return cKeyAssignment_2; }
+
+		//STRING
+		public RuleCall getKeySTRINGTerminalRuleCall_2_0() { return cKeySTRINGTerminalRuleCall_2_0; }
+
+		//"value"
+		public Keyword getValueKeyword_3() { return cValueKeyword_3; }
+
+		//"="
+		public Keyword getEqualsSignKeyword_4() { return cEqualsSignKeyword_4; }
+
+		//value=STRING
+		public Assignment getValueAssignment_5() { return cValueAssignment_5; }
+
+		//STRING
+		public RuleCall getValueSTRINGTerminalRuleCall_5_0() { return cValueSTRINGTerminalRuleCall_5_0; }
+	}
+
+	public class LQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LQualifiedNameWithWildCard");
+		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);
+		
+		//LQualifiedNameWithWildCard:
+		//	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 LFQNElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LFQN");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//LFQN:
+		//	ID ("." ID)*;
+		public ParserRule getRule() { return rule; }
+
+		//ID ("." ID)*
+		public Group getGroup() { return cGroup; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
+
+		//("." ID)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
+	}
+
+	public class TYPE_CROSS_REFERENCEElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TYPE_CROSS_REFERENCE");
+		private final RuleCall cIDTerminalRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TYPE_CROSS_REFERENCE:
+		//	ID;
+		public ParserRule getRule() { return rule; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall() { return cIDTerminalRuleCall; }
+	}
+
+	public class ValidIDWithKeywordsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidIDWithKeywords");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final Keyword cCachableKeyword_0 = (Keyword)cAlternatives.eContents().get(0);
+		private final Keyword cIdKeyword_1 = (Keyword)cAlternatives.eContents().get(1);
+		private final Keyword cUuidKeyword_2 = (Keyword)cAlternatives.eContents().get(2);
+		private final Keyword cTransientKeyword_3 = (Keyword)cAlternatives.eContents().get(3);
+		private final Keyword cVersionKeyword_4 = (Keyword)cAlternatives.eContents().get(4);
+		private final Group cGroup_5 = (Group)cAlternatives.eContents().get(5);
+		private final Keyword cDerivedKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cCollectionKeyword_5_1 = (Keyword)cGroup_5.eContents().get(1);
+		private final Keyword cRefersKeyword_6 = (Keyword)cAlternatives.eContents().get(6);
+		private final Keyword cSettingsKeyword_7 = (Keyword)cAlternatives.eContents().get(7);
+		private final Keyword cLazyKeyword_8 = (Keyword)cAlternatives.eContents().get(8);
+		private final Keyword cNotnullKeyword_9 = (Keyword)cAlternatives.eContents().get(9);
+		private final Keyword cDtoKeyword_10 = (Keyword)cAlternatives.eContents().get(10);
+		private final Keyword cDateKeyword_11 = (Keyword)cAlternatives.eContents().get(11);
+		private final Keyword cMaptoKeyword_12 = (Keyword)cAlternatives.eContents().get(12);
+		private final Keyword cRefKeyword_13 = (Keyword)cAlternatives.eContents().get(13);
+		private final Keyword cCascadeKeyword_14 = (Keyword)cAlternatives.eContents().get(14);
+		private final Keyword cVarKeyword_15 = (Keyword)cAlternatives.eContents().get(15);
+		private final RuleCall cIDTerminalRuleCall_16 = (RuleCall)cAlternatives.eContents().get(16);
+		
+		//ValidIDWithKeywords:
+		//	"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+		//	"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID;
+		public ParserRule getRule() { return rule; }
+
+		//"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+		//"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//"cachable"
+		public Keyword getCachableKeyword_0() { return cCachableKeyword_0; }
+
+		//"id"
+		public Keyword getIdKeyword_1() { return cIdKeyword_1; }
+
+		//"uuid"
+		public Keyword getUuidKeyword_2() { return cUuidKeyword_2; }
+
+		//"transient"
+		public Keyword getTransientKeyword_3() { return cTransientKeyword_3; }
+
+		//"version"
+		public Keyword getVersionKeyword_4() { return cVersionKeyword_4; }
+
+		//"derived" "collection"
+		public Group getGroup_5() { return cGroup_5; }
+
+		//"derived"
+		public Keyword getDerivedKeyword_5_0() { return cDerivedKeyword_5_0; }
+
+		//"collection"
+		public Keyword getCollectionKeyword_5_1() { return cCollectionKeyword_5_1; }
+
+		//"refers"
+		public Keyword getRefersKeyword_6() { return cRefersKeyword_6; }
+
+		//"settings"
+		public Keyword getSettingsKeyword_7() { return cSettingsKeyword_7; }
+
+		//"lazy"
+		public Keyword getLazyKeyword_8() { return cLazyKeyword_8; }
+
+		//"notnull"
+		public Keyword getNotnullKeyword_9() { return cNotnullKeyword_9; }
+
+		//"dto"
+		public Keyword getDtoKeyword_10() { return cDtoKeyword_10; }
+
+		//"date"
+		public Keyword getDateKeyword_11() { return cDateKeyword_11; }
+
+		//"mapto"
+		public Keyword getMaptoKeyword_12() { return cMaptoKeyword_12; }
+
+		//"ref"
+		public Keyword getRefKeyword_13() { return cRefKeyword_13; }
+
+		//"cascade"
+		public Keyword getCascadeKeyword_14() { return cCascadeKeyword_14; }
+
+		//"var"
+		public Keyword getVarKeyword_15() { return cVarKeyword_15; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_16() { return cIDTerminalRuleCall_16; }
+	}
+
+	public class ValidLFQNWithKeywordsElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidLFQNWithKeywords");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cValidIDWithKeywordsParserRuleCall_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 cValidIDWithKeywordsParserRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//ValidLFQNWithKeywords:
+		//	ValidIDWithKeywords ("." ValidIDWithKeywords)*;
+		public ParserRule getRule() { return rule; }
+
+		//ValidIDWithKeywords ("." ValidIDWithKeywords)*
+		public Group getGroup() { return cGroup; }
+
+		//ValidIDWithKeywords
+		public RuleCall getValidIDWithKeywordsParserRuleCall_0() { return cValidIDWithKeywordsParserRuleCall_0; }
+
+		//("." ValidIDWithKeywords)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//ValidIDWithKeywords
+		public RuleCall getValidIDWithKeywordsParserRuleCall_1_1() { return cValidIDWithKeywordsParserRuleCall_1_1; }
+	}
+
+	public class MultiplicityElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Multiplicity");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLeftSquareBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Assignment cLowerAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cLowerLowerBoundEnumRuleCall_1_0 = (RuleCall)cLowerAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cFullStopFullStopKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cUpperAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cUpperUpperBoundEnumRuleCall_2_1_0 = (RuleCall)cUpperAssignment_2_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//Multiplicity returns types::LMultiplicity:
+		//	"[" lower=LowerBound (".." upper=UpperBound)? "]";
+		public ParserRule getRule() { return rule; }
+
+		//"[" lower=LowerBound (".." upper=UpperBound)? "]"
+		public Group getGroup() { return cGroup; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_0() { return cLeftSquareBracketKeyword_0; }
+
+		//lower=LowerBound
+		public Assignment getLowerAssignment_1() { return cLowerAssignment_1; }
+
+		//LowerBound
+		public RuleCall getLowerLowerBoundEnumRuleCall_1_0() { return cLowerLowerBoundEnumRuleCall_1_0; }
+
+		//(".." upper=UpperBound)?
+		public Group getGroup_2() { return cGroup_2; }
+
+		//".."
+		public Keyword getFullStopFullStopKeyword_2_0() { return cFullStopFullStopKeyword_2_0; }
+
+		//upper=UpperBound
+		public Assignment getUpperAssignment_2_1() { return cUpperAssignment_2_1; }
+
+		//UpperBound
+		public RuleCall getUpperUpperBoundEnumRuleCall_2_1_0() { return cUpperUpperBoundEnumRuleCall_2_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_3() { return cRightSquareBracketKeyword_3; }
+	}
+
+	public class LIntElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LInt");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Alternatives cAlternatives_0 = (Alternatives)cGroup.eContents().get(0);
+		private final Keyword cPlusSignKeyword_0_0 = (Keyword)cAlternatives_0.eContents().get(0);
+		private final Keyword cHyphenMinusKeyword_0_1 = (Keyword)cAlternatives_0.eContents().get(1);
+		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
+		
+		//LInt returns ecore::EInt:
+		//	("+" | "-")? INT;
+		public ParserRule getRule() { return rule; }
+
+		//("+" | "-")? INT
+		public Group getGroup() { return cGroup; }
+
+		//("+" | "-")?
+		public Alternatives getAlternatives_0() { return cAlternatives_0; }
+
+		//"+"
+		public Keyword getPlusSignKeyword_0_0() { return cPlusSignKeyword_0_0; }
+
+		//"-"
+		public Keyword getHyphenMinusKeyword_0_1() { return cHyphenMinusKeyword_0_1; }
+
+		//INT
+		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
+	}
+
+	public class LDecimalElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LDecimal");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cLIntParserRuleCall_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);
+		
+		//LDecimal returns ecore::EFloat:
+		//	LInt ("." INT)?;
+		public ParserRule getRule() { return rule; }
+
+		//LInt ("." INT)?
+		public Group getGroup() { return cGroup; }
+
+		//LInt
+		public RuleCall getLIntParserRuleCall_0() { return cLIntParserRuleCall_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 ConstraintSeverityElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ConstraintSeverity");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cINFOEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cINFOInfoKeyword_0_0 = (Keyword)cINFOEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cWARNINGEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cWARNINGWarnKeyword_1_0 = (Keyword)cWARNINGEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cERROREnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cERRORErrorKeyword_2_0 = (Keyword)cERROREnumLiteralDeclaration_2.eContents().get(0);
+		
+		//enum ConstraintSeverity returns types::LConstraintSeverity:
+		//	INFO="info" | WARNING="warn" | ERROR="error";
+		public EnumRule getRule() { return rule; }
+
+		//INFO="info" | WARNING="warn" | ERROR="error"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//INFO="info"
+		public EnumLiteralDeclaration getINFOEnumLiteralDeclaration_0() { return cINFOEnumLiteralDeclaration_0; }
+
+		//"info"
+		public Keyword getINFOInfoKeyword_0_0() { return cINFOInfoKeyword_0_0; }
+
+		//WARNING="warn"
+		public EnumLiteralDeclaration getWARNINGEnumLiteralDeclaration_1() { return cWARNINGEnumLiteralDeclaration_1; }
+
+		//"warn"
+		public Keyword getWARNINGWarnKeyword_1_0() { return cWARNINGWarnKeyword_1_0; }
+
+		//ERROR="error"
+		public EnumLiteralDeclaration getERROREnumLiteralDeclaration_2() { return cERROREnumLiteralDeclaration_2; }
+
+		//"error"
+		public Keyword getERRORErrorKeyword_2_0() { return cERRORErrorKeyword_2_0; }
+	}
+
+	public class DateTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "DateType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDATEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDATEDateKeyword_0_0 = (Keyword)cDATEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cTIMEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cTIMETimeKeyword_1_0 = (Keyword)cTIMEEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cTIMESTAMPEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cTIMESTAMPTimestampKeyword_2_0 = (Keyword)cTIMESTAMPEnumLiteralDeclaration_2.eContents().get(0);
+		
+		//enum DateType returns types::LDateType:
+		//	DATE="date" | TIME="time" | TIMESTAMP="timestamp";
+		public EnumRule getRule() { return rule; }
+
+		//DATE="date" | TIME="time" | TIMESTAMP="timestamp"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DATE="date"
+		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_0() { return cDATEEnumLiteralDeclaration_0; }
+
+		//"date"
+		public Keyword getDATEDateKeyword_0_0() { return cDATEDateKeyword_0_0; }
+
+		//TIME="time"
+		public EnumLiteralDeclaration getTIMEEnumLiteralDeclaration_1() { return cTIMEEnumLiteralDeclaration_1; }
+
+		//"time"
+		public Keyword getTIMETimeKeyword_1_0() { return cTIMETimeKeyword_1_0; }
+
+		//TIMESTAMP="timestamp"
+		public EnumLiteralDeclaration getTIMESTAMPEnumLiteralDeclaration_2() { return cTIMESTAMPEnumLiteralDeclaration_2; }
+
+		//"timestamp"
+		public Keyword getTIMESTAMPTimestampKeyword_2_0() { return cTIMESTAMPTimestampKeyword_2_0; }
+	}
+
+	public class LVisibilityElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "LVisibility");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cPACKAGEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cPACKAGEPackageKeyword_0_0 = (Keyword)cPACKAGEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cPRIVATEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cPRIVATEPrivateKeyword_1_0 = (Keyword)cPRIVATEEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cPROTECTEDEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cPROTECTEDProtectedKeyword_2_0 = (Keyword)cPROTECTEDEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cPUBLICEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cPUBLICPublicKeyword_3_0 = (Keyword)cPUBLICEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum LVisibility returns types::LVisibility:
+		//	PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public";
+		public EnumRule getRule() { return rule; }
+
+		//PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//PACKAGE="package"
+		public EnumLiteralDeclaration getPACKAGEEnumLiteralDeclaration_0() { return cPACKAGEEnumLiteralDeclaration_0; }
+
+		//"package"
+		public Keyword getPACKAGEPackageKeyword_0_0() { return cPACKAGEPackageKeyword_0_0; }
+
+		//PRIVATE="private"
+		public EnumLiteralDeclaration getPRIVATEEnumLiteralDeclaration_1() { return cPRIVATEEnumLiteralDeclaration_1; }
+
+		//"private"
+		public Keyword getPRIVATEPrivateKeyword_1_0() { return cPRIVATEPrivateKeyword_1_0; }
+
+		//PROTECTED="protected"
+		public EnumLiteralDeclaration getPROTECTEDEnumLiteralDeclaration_2() { return cPROTECTEDEnumLiteralDeclaration_2; }
+
+		//"protected"
+		public Keyword getPROTECTEDProtectedKeyword_2_0() { return cPROTECTEDProtectedKeyword_2_0; }
+
+		//PUBLIC="public"
+		public EnumLiteralDeclaration getPUBLICEnumLiteralDeclaration_3() { return cPUBLICEnumLiteralDeclaration_3; }
+
+		//"public"
+		public Keyword getPUBLICPublicKeyword_3_0() { return cPUBLICPublicKeyword_3_0; }
+	}
+
+	public class LComparatorTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "LComparatorType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cEQUALSEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cEQUALSEqualsSignEqualsSignKeyword_0_0 = (Keyword)cEQUALSEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cGREATEREnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cGREATERGreaterThanSignKeyword_1_0 = (Keyword)cGREATEREnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cLOWEREnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cLOWERLessThanSignKeyword_2_0 = (Keyword)cLOWEREnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cGREATER_EQEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cGREATER_EQGreaterThanSignEqualsSignKeyword_3_0 = (Keyword)cGREATER_EQEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cLOWER_EQEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cLOWER_EQLessThanSignEqualsSignKeyword_4_0 = (Keyword)cLOWER_EQEnumLiteralDeclaration_4.eContents().get(0);
+		private final EnumLiteralDeclaration cNOT_EQEnumLiteralDeclaration_5 = (EnumLiteralDeclaration)cAlternatives.eContents().get(5);
+		private final Keyword cNOT_EQLessThanSignGreaterThanSignKeyword_5_0 = (Keyword)cNOT_EQEnumLiteralDeclaration_5.eContents().get(0);
+		
+		//enum LComparatorType returns types::LComparatorType:
+		//	EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>";
+		public EnumRule getRule() { return rule; }
+
+		//EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//EQUALS="=="
+		public EnumLiteralDeclaration getEQUALSEnumLiteralDeclaration_0() { return cEQUALSEnumLiteralDeclaration_0; }
+
+		//"=="
+		public Keyword getEQUALSEqualsSignEqualsSignKeyword_0_0() { return cEQUALSEqualsSignEqualsSignKeyword_0_0; }
+
+		//GREATER=">"
+		public EnumLiteralDeclaration getGREATEREnumLiteralDeclaration_1() { return cGREATEREnumLiteralDeclaration_1; }
+
+		//">"
+		public Keyword getGREATERGreaterThanSignKeyword_1_0() { return cGREATERGreaterThanSignKeyword_1_0; }
+
+		//LOWER="<"
+		public EnumLiteralDeclaration getLOWEREnumLiteralDeclaration_2() { return cLOWEREnumLiteralDeclaration_2; }
+
+		//"<"
+		public Keyword getLOWERLessThanSignKeyword_2_0() { return cLOWERLessThanSignKeyword_2_0; }
+
+		//GREATER_EQ=">="
+		public EnumLiteralDeclaration getGREATER_EQEnumLiteralDeclaration_3() { return cGREATER_EQEnumLiteralDeclaration_3; }
+
+		//">="
+		public Keyword getGREATER_EQGreaterThanSignEqualsSignKeyword_3_0() { return cGREATER_EQGreaterThanSignEqualsSignKeyword_3_0; }
+
+		//LOWER_EQ="<="
+		public EnumLiteralDeclaration getLOWER_EQEnumLiteralDeclaration_4() { return cLOWER_EQEnumLiteralDeclaration_4; }
+
+		//"<="
+		public Keyword getLOWER_EQLessThanSignEqualsSignKeyword_4_0() { return cLOWER_EQLessThanSignEqualsSignKeyword_4_0; }
+
+		//NOT_EQ="<>"
+		public EnumLiteralDeclaration getNOT_EQEnumLiteralDeclaration_5() { return cNOT_EQEnumLiteralDeclaration_5; }
+
+		//"<>"
+		public Keyword getNOT_EQLessThanSignGreaterThanSignKeyword_5_0() { return cNOT_EQLessThanSignGreaterThanSignKeyword_5_0; }
+	}
+
+	public class LowerBoundElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "LowerBound");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cMANYEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cMANYAsteriskKeyword_0_0 = (Keyword)cMANYEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cZEROEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cZERO0Keyword_1_0 = (Keyword)cZEROEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cOPTIONALEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cOPTIONALQuestionMarkKeyword_2_0 = (Keyword)cOPTIONALEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cATLEASTONEEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cATLEASTONEPlusSignKeyword_3_0 = (Keyword)cATLEASTONEEnumLiteralDeclaration_3.eContents().get(0);
+		private final EnumLiteralDeclaration cONEEnumLiteralDeclaration_4 = (EnumLiteralDeclaration)cAlternatives.eContents().get(4);
+		private final Keyword cONE1Keyword_4_0 = (Keyword)cONEEnumLiteralDeclaration_4.eContents().get(0);
+		
+		//enum LowerBound returns types::LLowerBound:
+		//	MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1";
+		public EnumRule getRule() { return rule; }
+
+		//MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//MANY="*"
+		public EnumLiteralDeclaration getMANYEnumLiteralDeclaration_0() { return cMANYEnumLiteralDeclaration_0; }
+
+		//"*"
+		public Keyword getMANYAsteriskKeyword_0_0() { return cMANYAsteriskKeyword_0_0; }
+
+		//ZERO="0"
+		public EnumLiteralDeclaration getZEROEnumLiteralDeclaration_1() { return cZEROEnumLiteralDeclaration_1; }
+
+		//"0"
+		public Keyword getZERO0Keyword_1_0() { return cZERO0Keyword_1_0; }
+
+		//OPTIONAL="?"
+		public EnumLiteralDeclaration getOPTIONALEnumLiteralDeclaration_2() { return cOPTIONALEnumLiteralDeclaration_2; }
+
+		//"?"
+		public Keyword getOPTIONALQuestionMarkKeyword_2_0() { return cOPTIONALQuestionMarkKeyword_2_0; }
+
+		//ATLEASTONE="+"
+		public EnumLiteralDeclaration getATLEASTONEEnumLiteralDeclaration_3() { return cATLEASTONEEnumLiteralDeclaration_3; }
+
+		//"+"
+		public Keyword getATLEASTONEPlusSignKeyword_3_0() { return cATLEASTONEPlusSignKeyword_3_0; }
+
+		//ONE="1"
+		public EnumLiteralDeclaration getONEEnumLiteralDeclaration_4() { return cONEEnumLiteralDeclaration_4; }
+
+		//"1"
+		public Keyword getONE1Keyword_4_0() { return cONE1Keyword_4_0; }
+	}
+
+	public class UpperBoundElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "UpperBound");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cMANYEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cMANYAsteriskKeyword_0_0 = (Keyword)cMANYEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cONEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cONE1Keyword_1_0 = (Keyword)cONEEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum UpperBound returns types::LUpperBound:
+		//	MANY="*" | ONE="1";
+		public EnumRule getRule() { return rule; }
+
+		//MANY="*" | ONE="1"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//MANY="*"
+		public EnumLiteralDeclaration getMANYEnumLiteralDeclaration_0() { return cMANYEnumLiteralDeclaration_0; }
+
+		//"*"
+		public Keyword getMANYAsteriskKeyword_0_0() { return cMANYAsteriskKeyword_0_0; }
+
+		//ONE="1"
+		public EnumLiteralDeclaration getONEEnumLiteralDeclaration_1() { return cONEEnumLiteralDeclaration_1; }
+
+		//"1"
+		public Keyword getONE1Keyword_1_0() { return cONE1Keyword_1_0; }
+	}
+	
+	private final TypedPackageElements pTypedPackage;
+	private final TypeElements pType;
+	private final ClassElements pClass;
+	private final ImportElements pImport;
+	private final DataTypeElements pDataType;
+	private final AllConstraintsElements pAllConstraints;
+	private final DataTypeConstraintElements pDataTypeConstraint;
+	private final DateConstraintElements pDateConstraint;
+	private final BlobTypeConstraintElements pBlobTypeConstraint;
+	private final ConstraintSeverityElements unknownRuleConstraintSeverity;
+	private final DtCAssertFalseElements pDtCAssertFalse;
+	private final DtCAssertTrueElements pDtCAssertTrue;
+	private final DtCDecimalMaxElements pDtCDecimalMax;
+	private final DtCDecimalMinElements pDtCDecimalMin;
+	private final DtCDigitsElements pDtCDigits;
+	private final DtCFutureElements pDtCFuture;
+	private final DtCPastElements pDtCPast;
+	private final DtCNumericMaxElements pDtCNumericMax;
+	private final DtCNumericMinElements pDtCNumericMin;
+	private final DtCNotNullElements pDtCNotNull;
+	private final DtCNullElements pDtCNull;
+	private final DtCRegExElements pDtCRegEx;
+	private final DtCSizeElements pDtCSize;
+	private final DateTypeElements unknownRuleDateType;
+	private final ScalarTypeElements pScalarType;
+	private final ModifierElements pModifier;
+	private final EnumElements pEnum;
+	private final EnumLiteralElements pEnumLiteral;
+	private final AnnotationDefElements pAnnotationDef;
+	private final LVisibilityElements unknownRuleLVisibility;
+	private final ResultFiltersElements pResultFilters;
+	private final ResultFilterElements pResultFilter;
+	private final AttributeMatchingConstraintElements pAttributeMatchingConstraint;
+	private final KeyAndValueElements pKeyAndValue;
+	private final LComparatorTypeElements unknownRuleLComparatorType;
+	private final LQualifiedNameWithWildCardElements pLQualifiedNameWithWildCard;
+	private final LFQNElements pLFQN;
+	private final TYPE_CROSS_REFERENCEElements pTYPE_CROSS_REFERENCE;
+	private final ValidIDWithKeywordsElements pValidIDWithKeywords;
+	private final ValidLFQNWithKeywordsElements pValidLFQNWithKeywords;
+	private final MultiplicityElements pMultiplicity;
+	private final LowerBoundElements unknownRuleLowerBound;
+	private final UpperBoundElements unknownRuleUpperBound;
+	private final LIntElements pLInt;
+	private final LDecimalElements pLDecimal;
+	
+	private final Grammar grammar;
+
+	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+
+	@Inject
+	public CommonGrammarGrammarAccess(GrammarProvider grammarProvider,
+		XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaXbaseWithAnnotations = gaXbaseWithAnnotations;
+		this.pTypedPackage = new TypedPackageElements();
+		this.pType = new TypeElements();
+		this.pClass = new ClassElements();
+		this.pImport = new ImportElements();
+		this.pDataType = new DataTypeElements();
+		this.pAllConstraints = new AllConstraintsElements();
+		this.pDataTypeConstraint = new DataTypeConstraintElements();
+		this.pDateConstraint = new DateConstraintElements();
+		this.pBlobTypeConstraint = new BlobTypeConstraintElements();
+		this.unknownRuleConstraintSeverity = new ConstraintSeverityElements();
+		this.pDtCAssertFalse = new DtCAssertFalseElements();
+		this.pDtCAssertTrue = new DtCAssertTrueElements();
+		this.pDtCDecimalMax = new DtCDecimalMaxElements();
+		this.pDtCDecimalMin = new DtCDecimalMinElements();
+		this.pDtCDigits = new DtCDigitsElements();
+		this.pDtCFuture = new DtCFutureElements();
+		this.pDtCPast = new DtCPastElements();
+		this.pDtCNumericMax = new DtCNumericMaxElements();
+		this.pDtCNumericMin = new DtCNumericMinElements();
+		this.pDtCNotNull = new DtCNotNullElements();
+		this.pDtCNull = new DtCNullElements();
+		this.pDtCRegEx = new DtCRegExElements();
+		this.pDtCSize = new DtCSizeElements();
+		this.unknownRuleDateType = new DateTypeElements();
+		this.pScalarType = new ScalarTypeElements();
+		this.pModifier = new ModifierElements();
+		this.pEnum = new EnumElements();
+		this.pEnumLiteral = new EnumLiteralElements();
+		this.pAnnotationDef = new AnnotationDefElements();
+		this.unknownRuleLVisibility = new LVisibilityElements();
+		this.pResultFilters = new ResultFiltersElements();
+		this.pResultFilter = new ResultFilterElements();
+		this.pAttributeMatchingConstraint = new AttributeMatchingConstraintElements();
+		this.pKeyAndValue = new KeyAndValueElements();
+		this.unknownRuleLComparatorType = new LComparatorTypeElements();
+		this.pLQualifiedNameWithWildCard = new LQualifiedNameWithWildCardElements();
+		this.pLFQN = new LFQNElements();
+		this.pTYPE_CROSS_REFERENCE = new TYPE_CROSS_REFERENCEElements();
+		this.pValidIDWithKeywords = new ValidIDWithKeywordsElements();
+		this.pValidLFQNWithKeywords = new ValidLFQNWithKeywordsElements();
+		this.pMultiplicity = new MultiplicityElements();
+		this.unknownRuleLowerBound = new LowerBoundElements();
+		this.unknownRuleUpperBound = new UpperBoundElements();
+		this.pLInt = new LIntElements();
+		this.pLDecimal = new LDecimalElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.dsl.common.xtext.CommonGrammar".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;
+	}
+
+	
+	//TypedPackage returns types::LTypedPackage:
+	//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=Type* "}")?;
+	public TypedPackageElements getTypedPackageAccess() {
+		return pTypedPackage;
+	}
+	
+	public ParserRule getTypedPackageRule() {
+		return getTypedPackageAccess().getRule();
+	}
+
+	//Type returns types::LType:
+	//	ScalarType | Class;
+	public TypeElements getTypeAccess() {
+		return pType;
+	}
+	
+	public ParserRule getTypeRule() {
+		return getTypeAccess().getRule();
+	}
+
+	/// **
+	// * Needs to be overridden by sub grammar
+	// * / Class returns types::LClass:
+	//	{types::LClass} annotations+=AnnotationDef* {types::LClass.annotationInfo=current} "class";
+	public ClassElements getClassAccess() {
+		return pClass;
+	}
+	
+	public ParserRule getClassRule() {
+		return getClassAccess().getRule();
+	}
+
+	//Import returns types::LImport:
+	//	"import" importedNamespace=LQualifiedNameWithWildCard ";"?;
+	public ImportElements getImportAccess() {
+		return pImport;
+	}
+	
+	public ParserRule getImportRule() {
+		return getImportAccess().getRule();
+	}
+
+	//DataType returns types::LDataType:
+	//	"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+	//	constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+	//	date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?;
+	public DataTypeElements getDataTypeAccess() {
+		return pDataType;
+	}
+	
+	public ParserRule getDataTypeRule() {
+		return getDataTypeAccess().getRule();
+	}
+
+	//AllConstraints returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast;
+	public AllConstraintsElements getAllConstraintsAccess() {
+		return pAllConstraints;
+	}
+	
+	public ParserRule getAllConstraintsRule() {
+		return getAllConstraintsAccess().getRule();
+	}
+
+	//DataTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize;
+	public DataTypeConstraintElements getDataTypeConstraintAccess() {
+		return pDataTypeConstraint;
+	}
+	
+	public ParserRule getDataTypeConstraintRule() {
+		return getDataTypeConstraintAccess().getRule();
+	}
+
+	//DateConstraint returns types::LDatatypeConstraint:
+	//	DtCFuture | DtCPast | DtCNotNull | DtCNull;
+	public DateConstraintElements getDateConstraintAccess() {
+		return pDateConstraint;
+	}
+	
+	public ParserRule getDateConstraintRule() {
+		return getDateConstraintAccess().getRule();
+	}
+
+	//BlobTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCNotNull | DtCNull;
+	public BlobTypeConstraintElements getBlobTypeConstraintAccess() {
+		return pBlobTypeConstraint;
+	}
+	
+	public ParserRule getBlobTypeConstraintRule() {
+		return getBlobTypeConstraintAccess().getRule();
+	}
+
+	//enum ConstraintSeverity returns types::LConstraintSeverity:
+	//	INFO="info" | WARNING="warn" | ERROR="error";
+	public ConstraintSeverityElements getConstraintSeverityAccess() {
+		return unknownRuleConstraintSeverity;
+	}
+	
+	public EnumRule getConstraintSeverityRule() {
+		return getConstraintSeverityAccess().getRule();
+	}
+
+	//DtCAssertFalse returns types::LDtCAssertFalse:
+	//	{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public DtCAssertFalseElements getDtCAssertFalseAccess() {
+		return pDtCAssertFalse;
+	}
+	
+	public ParserRule getDtCAssertFalseRule() {
+		return getDtCAssertFalseAccess().getRule();
+	}
+
+	//DtCAssertTrue returns types::LDtCAssertTrue:
+	//	{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public DtCAssertTrueElements getDtCAssertTrueAccess() {
+		return pDtCAssertTrue;
+	}
+	
+	public ParserRule getDtCAssertTrueRule() {
+		return getDtCAssertTrueAccess().getRule();
+	}
+
+	//DtCDecimalMax returns types::LDtCDecimalMax:
+	//	{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCDecimalMaxElements getDtCDecimalMaxAccess() {
+		return pDtCDecimalMax;
+	}
+	
+	public ParserRule getDtCDecimalMaxRule() {
+		return getDtCDecimalMaxAccess().getRule();
+	}
+
+	//DtCDecimalMin returns types::LDtCDecimalMin:
+	//	{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCDecimalMinElements getDtCDecimalMinAccess() {
+		return pDtCDecimalMin;
+	}
+	
+	public ParserRule getDtCDecimalMinRule() {
+		return getDtCDecimalMinAccess().getRule();
+	}
+
+	//DtCDigits returns types::LDtCDigits:
+	//	{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+	//	("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCDigitsElements getDtCDigitsAccess() {
+		return pDtCDigits;
+	}
+	
+	public ParserRule getDtCDigitsRule() {
+		return getDtCDigitsAccess().getRule();
+	}
+
+	//DtCFuture returns types::LDtCFuture:
+	//	{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public DtCFutureElements getDtCFutureAccess() {
+		return pDtCFuture;
+	}
+	
+	public ParserRule getDtCFutureRule() {
+		return getDtCFutureAccess().getRule();
+	}
+
+	//DtCPast returns types::LDtCPast:
+	//	{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public DtCPastElements getDtCPastAccess() {
+		return pDtCPast;
+	}
+	
+	public ParserRule getDtCPastRule() {
+		return getDtCPastAccess().getRule();
+	}
+
+	//DtCNumericMax returns types::LDtCNumericMax:
+	//	{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCNumericMaxElements getDtCNumericMaxAccess() {
+		return pDtCNumericMax;
+	}
+	
+	public ParserRule getDtCNumericMaxRule() {
+		return getDtCNumericMaxAccess().getRule();
+	}
+
+	//DtCNumericMin returns types::LDtCNumericMin:
+	//	{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCNumericMinElements getDtCNumericMinAccess() {
+		return pDtCNumericMin;
+	}
+	
+	public ParserRule getDtCNumericMinRule() {
+		return getDtCNumericMinAccess().getRule();
+	}
+
+	//DtCNotNull returns types::LDtCNotNull:
+	//	{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public DtCNotNullElements getDtCNotNullAccess() {
+		return pDtCNotNull;
+	}
+	
+	public ParserRule getDtCNotNullRule() {
+		return getDtCNotNullAccess().getRule();
+	}
+
+	//DtCNull returns types::LDtCNull:
+	//	{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public DtCNullElements getDtCNullAccess() {
+		return pDtCNull;
+	}
+	
+	public ParserRule getDtCNullRule() {
+		return getDtCNullAccess().getRule();
+	}
+
+	//DtCRegEx returns types::LDtCRegEx:
+	//	{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCRegExElements getDtCRegExAccess() {
+		return pDtCRegEx;
+	}
+	
+	public ParserRule getDtCRegExRule() {
+		return getDtCRegExAccess().getRule();
+	}
+
+	//DtCSize returns types::LDtCSize:
+	//	{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey"
+	//	"=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public DtCSizeElements getDtCSizeAccess() {
+		return pDtCSize;
+	}
+	
+	public ParserRule getDtCSizeRule() {
+		return getDtCSizeAccess().getRule();
+	}
+
+	//enum DateType returns types::LDateType:
+	//	DATE="date" | TIME="time" | TIMESTAMP="timestamp";
+	public DateTypeElements getDateTypeAccess() {
+		return unknownRuleDateType;
+	}
+	
+	public EnumRule getDateTypeRule() {
+		return getDateTypeAccess().getRule();
+	}
+
+	//ScalarType returns types::LScalarType:
+	//	DataType | Enum;
+	public ScalarTypeElements getScalarTypeAccess() {
+		return pScalarType;
+	}
+	
+	public ParserRule getScalarTypeRule() {
+		return getScalarTypeAccess().getRule();
+	}
+
+	//Modifier returns types::LModifier:
+	//	final?="final"? & static?="static"? & visibility=LVisibility;
+	public ModifierElements getModifierAccess() {
+		return pModifier;
+	}
+	
+	public ParserRule getModifierRule() {
+		return getModifierAccess().getRule();
+	}
+
+	//Enum returns types::LEnum:
+	//	"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}";
+	public EnumElements getEnumAccess() {
+		return pEnum;
+	}
+	
+	public ParserRule getEnumRule() {
+		return getEnumAccess().getRule();
+	}
+
+	//EnumLiteral returns types::LEnumLiteral:
+	//	name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?;
+	public EnumLiteralElements getEnumLiteralAccess() {
+		return pEnumLiteral;
+	}
+	
+	public ParserRule getEnumLiteralRule() {
+		return getEnumLiteralAccess().getRule();
+	}
+
+	//AnnotationDef returns types::LAnnotationDef:
+	//	=> (annotation=XAnnotation);
+	public AnnotationDefElements getAnnotationDefAccess() {
+		return pAnnotationDef;
+	}
+	
+	public ParserRule getAnnotationDefRule() {
+		return getAnnotationDefAccess().getRule();
+	}
+
+	//enum LVisibility returns types::LVisibility:
+	//	PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public";
+	public LVisibilityElements getLVisibilityAccess() {
+		return unknownRuleLVisibility;
+	}
+	
+	public EnumRule getLVisibilityRule() {
+		return getLVisibilityAccess().getRule();
+	}
+
+	//ResultFilters returns types::LResultFilters:
+	//	{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}";
+	public ResultFiltersElements getResultFiltersAccess() {
+		return pResultFilters;
+	}
+	
+	public ParserRule getResultFiltersRule() {
+		return getResultFiltersAccess().getRule();
+	}
+
+	//ResultFilter returns types::LResultFilter:
+	//	AttributeMatchingConstraint;
+	public ResultFilterElements getResultFilterAccess() {
+		return pResultFilter;
+	}
+	
+	public ParserRule getResultFilterRule() {
+		return getResultFilterAccess().getRule();
+	}
+
+	//AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+	//	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+	//	matchingLiteral=[types::LEnumLiteral]) ";"?;
+	public AttributeMatchingConstraintElements getAttributeMatchingConstraintAccess() {
+		return pAttributeMatchingConstraint;
+	}
+	
+	public ParserRule getAttributeMatchingConstraintRule() {
+		return getAttributeMatchingConstraintAccess().getRule();
+	}
+
+	//KeyAndValue returns types::LKeyAndValue:
+	//	"key" "=" key=STRING "value" "=" value=STRING;
+	public KeyAndValueElements getKeyAndValueAccess() {
+		return pKeyAndValue;
+	}
+	
+	public ParserRule getKeyAndValueRule() {
+		return getKeyAndValueAccess().getRule();
+	}
+
+	//enum LComparatorType returns types::LComparatorType:
+	//	EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>";
+	public LComparatorTypeElements getLComparatorTypeAccess() {
+		return unknownRuleLComparatorType;
+	}
+	
+	public EnumRule getLComparatorTypeRule() {
+		return getLComparatorTypeAccess().getRule();
+	}
+
+	//LQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public LQualifiedNameWithWildCardElements getLQualifiedNameWithWildCardAccess() {
+		return pLQualifiedNameWithWildCard;
+	}
+	
+	public ParserRule getLQualifiedNameWithWildCardRule() {
+		return getLQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//LFQN:
+	//	ID ("." ID)*;
+	public LFQNElements getLFQNAccess() {
+		return pLFQN;
+	}
+	
+	public ParserRule getLFQNRule() {
+		return getLFQNAccess().getRule();
+	}
+
+	//TYPE_CROSS_REFERENCE:
+	//	ID;
+	public TYPE_CROSS_REFERENCEElements getTYPE_CROSS_REFERENCEAccess() {
+		return pTYPE_CROSS_REFERENCE;
+	}
+	
+	public ParserRule getTYPE_CROSS_REFERENCERule() {
+		return getTYPE_CROSS_REFERENCEAccess().getRule();
+	}
+
+	//ValidIDWithKeywords:
+	//	"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+	//	"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID;
+	public ValidIDWithKeywordsElements getValidIDWithKeywordsAccess() {
+		return pValidIDWithKeywords;
+	}
+	
+	public ParserRule getValidIDWithKeywordsRule() {
+		return getValidIDWithKeywordsAccess().getRule();
+	}
+
+	//ValidLFQNWithKeywords:
+	//	ValidIDWithKeywords ("." ValidIDWithKeywords)*;
+	public ValidLFQNWithKeywordsElements getValidLFQNWithKeywordsAccess() {
+		return pValidLFQNWithKeywords;
+	}
+	
+	public ParserRule getValidLFQNWithKeywordsRule() {
+		return getValidLFQNWithKeywordsAccess().getRule();
+	}
+
+	//Multiplicity returns types::LMultiplicity:
+	//	"[" lower=LowerBound (".." upper=UpperBound)? "]";
+	public MultiplicityElements getMultiplicityAccess() {
+		return pMultiplicity;
+	}
+	
+	public ParserRule getMultiplicityRule() {
+		return getMultiplicityAccess().getRule();
+	}
+
+	//enum LowerBound returns types::LLowerBound:
+	//	MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1";
+	public LowerBoundElements getLowerBoundAccess() {
+		return unknownRuleLowerBound;
+	}
+	
+	public EnumRule getLowerBoundRule() {
+		return getLowerBoundAccess().getRule();
+	}
+
+	//enum UpperBound returns types::LUpperBound:
+	//	MANY="*" | ONE="1";
+	public UpperBoundElements getUpperBoundAccess() {
+		return unknownRuleUpperBound;
+	}
+	
+	public EnumRule getUpperBoundRule() {
+		return getUpperBoundAccess().getRule();
+	}
+
+	//LInt returns ecore::EInt:
+	//	("+" | "-")? INT;
+	public LIntElements getLIntAccess() {
+		return pLInt;
+	}
+	
+	public ParserRule getLIntRule() {
+		return getLIntAccess().getRule();
+	}
+
+	//LDecimal returns ecore::EFloat:
+	//	LInt ("." INT)?;
+	public LDecimalElements getLDecimalAccess() {
+		return pLDecimal;
+	}
+	
+	public ParserRule getLDecimalRule() {
+		return getLDecimalAccess().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();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaXbaseWithAnnotations.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().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();
+	}
+
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaXbaseWithAnnotations.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarJavaValidator.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarJavaValidator.java
new file mode 100644
index 0000000..5921770
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/common/xtext/validation/AbstractCommonGrammarJavaValidator.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractCommonGrammarJavaValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsJavaValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    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.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java
new file mode 100644
index 0000000..2cd1c22
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationDef.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LAnnotation Def</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#isExclude <em>Exclude</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAnnotationDef()
+ * @generated
+ */
+public interface LAnnotationDef extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Exclude</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Exclude</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Exclude</em>' attribute.
+	 * @see #setExclude(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAnnotationDef_Exclude()
+	 * @generated
+	 */
+	boolean isExclude();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#isExclude <em>Exclude</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Exclude</em>' attribute.
+	 * @see #isExclude()
+	 * @generated
+	 */
+	void setExclude(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Annotation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Annotation</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>Annotation</em>' containment reference.
+	 * @see #setAnnotation(XAnnotation)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAnnotationDef_Annotation()
+	 * @generated
+	 */
+	XAnnotation getAnnotation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#getAnnotation <em>Annotation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Annotation</em>' containment reference.
+	 * @see #getAnnotation()
+	 * @generated
+	 */
+	void setAnnotation(XAnnotation value);
+
+} // LAnnotationDef
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java
new file mode 100644
index 0000000..e2ea818
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAnnotationTarget.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LAnnotation Target</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget#getAnnotations <em>Annotations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAnnotationTarget()
+ * @generated
+ */
+public interface LAnnotationTarget extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Annotations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Annotations</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>Annotations</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAnnotationTarget_Annotations()
+	 * @generated
+	 */
+	EList<LAnnotationDef> getAnnotations();
+
+} // LAnnotationTarget
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
new file mode 100644
index 0000000..8917725
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttribute.java
@@ -0,0 +1,407 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LAttribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isUuid <em>Uuid</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isVersion <em>Version</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isTransient <em>Transient</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDerived <em>Derived</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDirty <em>Dirty</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainKey <em>Domain Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainDescription <em>Domain Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getDerivedGetterExpression <em>Derived Getter Expression</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getConstraints <em>Constraints</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute()
+ * @generated
+ */
+public interface LAttribute extends LFeature {
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Id()
+	 * @generated
+	 */
+	boolean isId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #isId()
+	 * @generated
+	 */
+	void setId(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Uuid</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Uuid</em>' attribute.
+	 * @see #setUuid(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Uuid()
+	 * @generated
+	 */
+	boolean isUuid();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isUuid <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Uuid</em>' attribute.
+	 * @see #isUuid()
+	 * @generated
+	 */
+	void setUuid(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Version</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Version</em>' attribute.
+	 * @see #setVersion(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Version()
+	 * @generated
+	 */
+	boolean isVersion();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isVersion <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Version</em>' attribute.
+	 * @see #isVersion()
+	 * @generated
+	 */
+	void setVersion(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lazy</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lazy</em>' attribute.
+	 * @see #setLazy(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Lazy()
+	 * @generated
+	 */
+	boolean isLazy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isLazy <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lazy</em>' attribute.
+	 * @see #isLazy()
+	 * @generated
+	 */
+	void setLazy(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cascading</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cascading</em>' attribute.
+	 * @see #setCascading(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Cascading()
+	 * @generated
+	 */
+	boolean isCascading();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isCascading <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cascading</em>' attribute.
+	 * @see #isCascading()
+	 * @generated
+	 */
+	void setCascading(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Transient</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Transient</em>' attribute.
+	 * @see #setTransient(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Transient()
+	 * @generated
+	 */
+	boolean isTransient();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isTransient <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Transient</em>' attribute.
+	 * @see #isTransient()
+	 * @generated
+	 */
+	void setTransient(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Derived</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Derived</em>' attribute.
+	 * @see #setDerived(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Derived()
+	 * @generated
+	 */
+	boolean isDerived();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDerived <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Derived</em>' attribute.
+	 * @see #isDerived()
+	 * @generated
+	 */
+	void setDerived(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dirty</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dirty</em>' attribute.
+	 * @see #setDirty(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Dirty()
+	 * @generated
+	 */
+	boolean isDirty();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDirty <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dirty</em>' attribute.
+	 * @see #isDirty()
+	 * @generated
+	 */
+	void setDirty(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * The domainKey is a human readable value for a dto or entity
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Domain Key</em>' attribute.
+	 * @see #setDomainKey(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_DomainKey()
+	 * @generated
+	 */
+	boolean isDomainKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainKey <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Domain Key</em>' attribute.
+	 * @see #isDomainKey()
+	 * @generated
+	 */
+	void setDomainKey(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * The domainKey is the human readable description for a dto or entity
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Domain Description</em>' attribute.
+	 * @see #setDomainDescription(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_DomainDescription()
+	 * @generated
+	 */
+	boolean isDomainDescription();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainDescription <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Domain Description</em>' attribute.
+	 * @see #isDomainDescription()
+	 * @generated
+	 */
+	void setDomainDescription(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Derived Getter Expression</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>Derived Getter Expression</em>' containment reference.
+	 * @see #setDerivedGetterExpression(XExpression)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_DerivedGetterExpression()
+	 * @generated
+	 */
+	XExpression getDerivedGetterExpression();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getDerivedGetterExpression <em>Derived Getter Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Derived Getter Expression</em>' containment reference.
+	 * @see #getDerivedGetterExpression()
+	 * @generated
+	 */
+	void setDerivedGetterExpression(XExpression value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' reference.
+	 * @see #setType(LScalarType)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Type()
+	 * @generated
+	 */
+	LScalarType getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getType <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(LScalarType value);
+
+	/**
+	 * Returns the value of the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #setTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_TypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getTypeJvm <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #getTypeJvm()
+	 * @generated
+	 */
+	void setTypeJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue}.
+	 * <!-- 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.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Properties()
+	 * @generated
+	 */
+	EList<LKeyAndValue> getProperties();
+
+	/**
+	 * Returns the value of the '<em><b>Constraints</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Constraints</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>Constraints</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttribute_Constraints()
+	 * @generated
+	 */
+	EList<LDatatypeConstraint> getConstraints();
+
+} // LAttribute
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java
new file mode 100644
index 0000000..a89f1e0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LAttributeMatchingConstraint.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LAttribute Matching Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getComparatorType <em>Comparator Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingValue <em>Matching Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingLiteral <em>Matching Literal</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttributeMatchingConstraint()
+ * @generated
+ */
+public interface LAttributeMatchingConstraint extends LResultFilter {
+	/**
+	 * Returns the value of the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Attribute</em>' reference.
+	 * @see #setAttribute(LAttribute)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttributeMatchingConstraint_Attribute()
+	 * @generated
+	 */
+	LAttribute getAttribute();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getAttribute <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute</em>' reference.
+	 * @see #getAttribute()
+	 * @generated
+	 */
+	void setAttribute(LAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Comparator Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LComparatorType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Comparator Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Comparator Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LComparatorType
+	 * @see #setComparatorType(LComparatorType)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttributeMatchingConstraint_ComparatorType()
+	 * @generated
+	 */
+	LComparatorType getComparatorType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getComparatorType <em>Comparator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Comparator Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LComparatorType
+	 * @see #getComparatorType()
+	 * @generated
+	 */
+	void setComparatorType(LComparatorType value);
+
+	/**
+	 * Returns the value of the '<em><b>Matching Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Matching 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>Matching Value</em>' attribute.
+	 * @see #setMatchingValue(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttributeMatchingConstraint_MatchingValue()
+	 * @generated
+	 */
+	String getMatchingValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingValue <em>Matching Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Matching Value</em>' attribute.
+	 * @see #getMatchingValue()
+	 * @generated
+	 */
+	void setMatchingValue(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Matching Literal</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Matching Literal</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Matching Literal</em>' reference.
+	 * @see #setMatchingLiteral(LEnumLiteral)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLAttributeMatchingConstraint_MatchingLiteral()
+	 * @generated
+	 */
+	LEnumLiteral getMatchingLiteral();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingLiteral <em>Matching Literal</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Matching Literal</em>' reference.
+	 * @see #getMatchingLiteral()
+	 * @generated
+	 */
+	void setMatchingLiteral(LEnumLiteral value);
+
+} // LAttributeMatchingConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java
new file mode 100644
index 0000000..7b0e5fc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LBlobConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LBlob Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLBlobConstraint()
+ * @generated
+ */
+public interface LBlobConstraint extends LDatatypeConstraint {
+} // LBlobConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java
new file mode 100644
index 0000000..0c01d3f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LBooleanConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LBoolean Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLBooleanConstraint()
+ * @generated
+ */
+public interface LBooleanConstraint extends LDatatypeConstraint {
+} // LBooleanConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
new file mode 100644
index 0000000..22f1aa0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LClass.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LClass</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isAbstract <em>Abstract</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isSerializable <em>Serializable</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#getShortName <em>Short Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLClass()
+ * @generated
+ */
+public interface LClass extends LType {
+	/**
+	 * Returns the value of the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Abstract</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Abstract</em>' attribute.
+	 * @see #setAbstract(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLClass_Abstract()
+	 * @generated
+	 */
+	boolean isAbstract();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isAbstract <em>Abstract</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Abstract</em>' attribute.
+	 * @see #isAbstract()
+	 * @generated
+	 */
+	void setAbstract(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Serializable</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Serializable</em>' attribute.
+	 * @see #setSerializable(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLClass_Serializable()
+	 * @generated
+	 */
+	boolean isSerializable();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isSerializable <em>Serializable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Serializable</em>' attribute.
+	 * @see #isSerializable()
+	 * @generated
+	 */
+	void setSerializable(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Short 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>Short Name</em>' attribute.
+	 * @see #setShortName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLClass_ShortName()
+	 * @generated
+	 */
+	String getShortName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#getShortName <em>Short Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Short Name</em>' attribute.
+	 * @see #getShortName()
+	 * @generated
+	 */
+	void setShortName(String value);
+
+} // LClass
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java
new file mode 100644
index 0000000..25d375c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LCommonModel.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LCommon Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LCommonModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLCommonModel()
+ * @generated
+ */
+public interface LCommonModel extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage}.
+	 * <!-- 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.dsl.semantic.common.types.OSBPTypesPackage#getLCommonModel_Packages()
+	 * @generated
+	 */
+	EList<LTypedPackage> getPackages();
+
+} // LCommonModel
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java
new file mode 100644
index 0000000..79a4af2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LComparatorType.java
@@ -0,0 +1,315 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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>LComparator Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLComparatorType()
+ * @generated
+ */
+public enum LComparatorType 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>GREATER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREATER(0, "GREATER", ">"),
+
+	/**
+	 * The '<em><b>LOWER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOWER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOWER(0, "LOWER", "<"),
+
+	/**
+	 * The '<em><b>GREATER EQ</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_EQ_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	GREATER_EQ(0, "GREATER_EQ", ">="),
+
+	/**
+	 * The '<em><b>LOWER EQ</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LOWER_EQ_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LOWER_EQ(0, "LOWER_EQ", "<="),
+
+	/**
+	 * The '<em><b>NOT EQ</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NOT_EQ_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NOT_EQ(0, "NOT_EQ", "<>");
+
+	/**
+	 * 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
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EQUALS_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
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREATER_VALUE = 0;
+
+	/**
+	 * The '<em><b>LOWER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LOWER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LOWER
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOWER_VALUE = 0;
+
+	/**
+	 * The '<em><b>GREATER EQ</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>GREATER EQ</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #GREATER_EQ
+	 * @generated
+	 * @ordered
+	 */
+	public static final int GREATER_EQ_VALUE = 0;
+
+	/**
+	 * The '<em><b>LOWER EQ</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>LOWER EQ</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LOWER_EQ
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LOWER_EQ_VALUE = 0;
+
+	/**
+	 * The '<em><b>NOT EQ</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NOT EQ</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NOT_EQ
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NOT_EQ_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>LComparator Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LComparatorType[] VALUES_ARRAY =
+		new LComparatorType[] {
+			EQUALS,
+			GREATER,
+			LOWER,
+			GREATER_EQ,
+			LOWER_EQ,
+			NOT_EQ,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LComparator Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LComparatorType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LComparator Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LComparatorType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LComparatorType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LComparator Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LComparatorType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LComparatorType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LComparator Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LComparatorType 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 LComparatorType(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;
+	}
+	
+} //LComparatorType
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java
new file mode 100644
index 0000000..45d2c0b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LConstraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLConstraint()
+ * @generated
+ */
+public interface LConstraint extends LLazyResolver {
+} // LConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java
new file mode 100644
index 0000000..a72b67d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LConstraintSeverity.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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>LConstraint Severity</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLConstraintSeverity()
+ * @generated
+ */
+public enum LConstraintSeverity implements Enumerator {
+	/**
+	 * The '<em><b>INFO</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INFO_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INFO(0, "INFO", "INFO"),
+
+	/**
+	 * The '<em><b>WARNING</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WARNING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WARNING(0, "WARNING", "WARNING"),
+
+	/**
+	 * The '<em><b>ERROR</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ERROR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ERROR(0, "ERROR", "ERROR");
+
+	/**
+	 * The '<em><b>INFO</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INFO</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INFO
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INFO_VALUE = 0;
+
+	/**
+	 * The '<em><b>WARNING</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>WARNING</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WARNING
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WARNING_VALUE = 0;
+
+	/**
+	 * The '<em><b>ERROR</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ERROR</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ERROR
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ERROR_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>LConstraint Severity</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LConstraintSeverity[] VALUES_ARRAY =
+		new LConstraintSeverity[] {
+			INFO,
+			WARNING,
+			ERROR,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LConstraint Severity</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LConstraintSeverity> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LConstraint Severity</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LConstraintSeverity get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LConstraintSeverity result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LConstraint Severity</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LConstraintSeverity getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LConstraintSeverity result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LConstraint Severity</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LConstraintSeverity get(int value) {
+		switch (value) {
+			case INFO_VALUE: return INFO;
+		}
+		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 LConstraintSeverity(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;
+	}
+	
+} //LConstraintSeverity
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java
new file mode 100644
index 0000000..291ee7d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDataType.java
@@ -0,0 +1,330 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LData Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getJvmTypeReference <em>Jvm Type Reference</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsPrimitive <em>As Primitive</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isDate <em>Date</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsBlob <em>As Blob</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getLength <em>Length</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getDateType <em>Date Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isSyntheticFlag <em>Synthetic Flag</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticSelector <em>Synthetic Selector</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticTypeReference <em>Synthetic Type Reference</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticType <em>Synthetic Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getConstraints <em>Constraints</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType()
+ * @generated
+ */
+public interface LDataType extends LScalarType {
+	/**
+	 * Returns the value of the '<em><b>Jvm Type Reference</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Jvm Type Reference</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>Jvm Type Reference</em>' containment reference.
+	 * @see #setJvmTypeReference(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_JvmTypeReference()
+	 * @generated
+	 */
+	JvmTypeReference getJvmTypeReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getJvmTypeReference <em>Jvm Type Reference</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Jvm Type Reference</em>' containment reference.
+	 * @see #getJvmTypeReference()
+	 * @generated
+	 */
+	void setJvmTypeReference(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>As Primitive</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>As Primitive</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>As Primitive</em>' attribute.
+	 * @see #setAsPrimitive(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_AsPrimitive()
+	 * @generated
+	 */
+	boolean isAsPrimitive();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsPrimitive <em>As Primitive</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>As Primitive</em>' attribute.
+	 * @see #isAsPrimitive()
+	 * @generated
+	 */
+	void setAsPrimitive(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Date</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</em>' attribute.
+	 * @see #setDate(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_Date()
+	 * @generated
+	 */
+	boolean isDate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isDate <em>Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Date</em>' attribute.
+	 * @see #isDate()
+	 * @generated
+	 */
+	void setDate(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>As Blob</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>As Blob</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>As Blob</em>' attribute.
+	 * @see #setAsBlob(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_AsBlob()
+	 * @generated
+	 */
+	boolean isAsBlob();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsBlob <em>As Blob</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>As Blob</em>' attribute.
+	 * @see #isAsBlob()
+	 * @generated
+	 */
+	void setAsBlob(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Length</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Length</em>' attribute.
+	 * @see #setLength(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_Length()
+	 * @generated
+	 */
+	int getLength();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getLength <em>Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Length</em>' attribute.
+	 * @see #getLength()
+	 * @generated
+	 */
+	void setLength(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Date Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LDateType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Date Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Date Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+	 * @see #setDateType(LDateType)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_DateType()
+	 * @generated
+	 */
+	LDateType getDateType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getDateType <em>Date Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Date Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+	 * @see #getDateType()
+	 * @generated
+	 */
+	void setDateType(LDateType value);
+
+	/**
+	 * Returns the value of the '<em><b>Synthetic Flag</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Attention: synthetic must only be used inside the same resource
+	 * <!-- end-model-doc -->
+	 * @return the value of the '<em>Synthetic Flag</em>' attribute.
+	 * @see #setSyntheticFlag(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_SyntheticFlag()
+	 * @generated
+	 */
+	boolean isSyntheticFlag();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isSyntheticFlag <em>Synthetic Flag</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Synthetic Flag</em>' attribute.
+	 * @see #isSyntheticFlag()
+	 * @generated
+	 */
+	void setSyntheticFlag(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Synthetic Selector</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Synthetic Selector</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Synthetic Selector</em>' attribute.
+	 * @see #setSyntheticSelector(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_SyntheticSelector()
+	 * @generated
+	 */
+	String getSyntheticSelector();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticSelector <em>Synthetic Selector</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Synthetic Selector</em>' attribute.
+	 * @see #getSyntheticSelector()
+	 * @generated
+	 */
+	void setSyntheticSelector(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Synthetic Type Reference</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Synthetic Type Reference</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Synthetic Type Reference</em>' reference.
+	 * @see #setSyntheticTypeReference(LFeature)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_SyntheticTypeReference()
+	 * @generated
+	 */
+	LFeature getSyntheticTypeReference();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticTypeReference <em>Synthetic Type Reference</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Synthetic Type Reference</em>' reference.
+	 * @see #getSyntheticTypeReference()
+	 * @generated
+	 */
+	void setSyntheticTypeReference(LFeature value);
+
+	/**
+	 * Returns the value of the '<em><b>Synthetic Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Synthetic Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Synthetic Type</em>' reference.
+	 * @see #setSyntheticType(LType)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_SyntheticType()
+	 * @generated
+	 */
+	LType getSyntheticType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticType <em>Synthetic Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Synthetic Type</em>' reference.
+	 * @see #getSyntheticType()
+	 * @generated
+	 */
+	void setSyntheticType(LType value);
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue}.
+	 * <!-- 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.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_Properties()
+	 * @generated
+	 */
+	EList<LKeyAndValue> getProperties();
+
+	/**
+	 * Returns the value of the '<em><b>Constraints</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Constraints</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>Constraints</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDataType_Constraints()
+	 * @generated
+	 */
+	EList<LDatatypeConstraint> getConstraints();
+
+} // LDataType
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java
new file mode 100644
index 0000000..09ea39b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDatatypeConstraint.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDatatype Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * *
+ * DatatypeConstraints are used to create javax.validation constraint annotations.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDatatypeConstraint()
+ * @generated
+ */
+public interface LDatatypeConstraint extends LConstraint {
+	/**
+	 * Returns the value of the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Msg Code</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Msg Code</em>' attribute.
+	 * @see #setMsgCode(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDatatypeConstraint_MsgCode()
+	 * @generated
+	 */
+	String getMsgCode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgCode <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Msg Code</em>' attribute.
+	 * @see #getMsgCode()
+	 * @generated
+	 */
+	void setMsgCode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Msg I1 8n Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Msg I1 8n Key</em>' attribute.
+	 * @see #setMsgI18nKey(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDatatypeConstraint_MsgI18nKey()
+	 * @generated
+	 */
+	String getMsgI18nKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgI18nKey <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Msg I1 8n Key</em>' attribute.
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 */
+	void setMsgI18nKey(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Severity</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Severity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Severity</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity
+	 * @see #setSeverity(LConstraintSeverity)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDatatypeConstraint_Severity()
+	 * @generated
+	 */
+	LConstraintSeverity getSeverity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getSeverity <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Severity</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity
+	 * @see #getSeverity()
+	 * @generated
+	 */
+	void setSeverity(LConstraintSeverity value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns true, if the constraint can be used for primitive datatypes.
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDatatypeConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java
new file mode 100644
index 0000000..9c46f5f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDate Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDateConstraint()
+ * @generated
+ */
+public interface LDateConstraint extends LDatatypeConstraint {
+} // LDateConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java
new file mode 100644
index 0000000..ead1ed0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDateType.java
@@ -0,0 +1,240 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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>LDate Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDateType()
+ * @generated
+ */
+public enum LDateType implements Enumerator {
+	/**
+	 * The '<em><b>DATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DATE(0, "DATE", "DATE"),
+
+	/**
+	 * The '<em><b>TIME</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TIME_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TIME(0, "TIME", "TIME"),
+
+	/**
+	 * The '<em><b>TIMESTAMP</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #TIMESTAMP_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	TIMESTAMP(0, "TIMESTAMP", "TIMESTAMP");
+
+	/**
+	 * The '<em><b>DATE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>DATE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #DATE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DATE_VALUE = 0;
+
+	/**
+	 * The '<em><b>TIME</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TIME</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TIME
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TIME_VALUE = 0;
+
+	/**
+	 * The '<em><b>TIMESTAMP</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>TIMESTAMP</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #TIMESTAMP
+	 * @generated
+	 * @ordered
+	 */
+	public static final int TIMESTAMP_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>LDate Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LDateType[] VALUES_ARRAY =
+		new LDateType[] {
+			DATE,
+			TIME,
+			TIMESTAMP,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LDate Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LDateType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LDate Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LDateType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LDateType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LDate Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LDateType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LDateType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LDate Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LDateType get(int value) {
+		switch (value) {
+			case DATE_VALUE: return DATE;
+		}
+		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 LDateType(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;
+	}
+	
+} //LDateType
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java
new file mode 100644
index 0000000..66a6223
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDecimalConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDecimal Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDecimalConstraint()
+ * @generated
+ */
+public interface LDecimalConstraint extends LDatatypeConstraint {
+} // LDecimalConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java
new file mode 100644
index 0000000..3e30052
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertFalse.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CAssert False</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCAssertFalse()
+ * @generated
+ */
+public interface LDtCAssertFalse extends LBooleanConstraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCAssertFalse
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java
new file mode 100644
index 0000000..8037a33
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCAssertTrue.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CAssert True</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCAssertTrue()
+ * @generated
+ */
+public interface LDtCAssertTrue extends LBooleanConstraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCAssertTrue
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java
new file mode 100644
index 0000000..8781344
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMax.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CDecimal Max</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax#getMax <em>Max</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDecimalMax()
+ * @generated
+ */
+public interface LDtCDecimalMax extends LDecimalConstraint {
+	/**
+	 * Returns the value of the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max</em>' attribute.
+	 * @see #setMax(float)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDecimalMax_Max()
+	 * @generated
+	 */
+	float getMax();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax#getMax <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max</em>' attribute.
+	 * @see #getMax()
+	 * @generated
+	 */
+	void setMax(float value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCDecimalMax
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java
new file mode 100644
index 0000000..3a5cad7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDecimalMin.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CDecimal Min</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin#getMin <em>Min</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDecimalMin()
+ * @generated
+ */
+public interface LDtCDecimalMin extends LDecimalConstraint {
+	/**
+	 * Returns the value of the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min</em>' attribute.
+	 * @see #setMin(float)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDecimalMin_Min()
+	 * @generated
+	 */
+	float getMin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin#getMin <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min</em>' attribute.
+	 * @see #getMin()
+	 * @generated
+	 */
+	void setMin(float value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCDecimalMin
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java
new file mode 100644
index 0000000..53b2f65
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCDigits.java
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CDigits</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getIntDigits <em>Int Digits</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getFractionDigits <em>Fraction Digits</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDigits()
+ * @generated
+ */
+public interface LDtCDigits extends LDecimalConstraint {
+	/**
+	 * Returns the value of the '<em><b>Int Digits</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Int Digits</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Int Digits</em>' attribute.
+	 * @see #setIntDigits(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDigits_IntDigits()
+	 * @generated
+	 */
+	int getIntDigits();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getIntDigits <em>Int Digits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Int Digits</em>' attribute.
+	 * @see #getIntDigits()
+	 * @generated
+	 */
+	void setIntDigits(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Fraction Digits</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Fraction Digits</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fraction Digits</em>' attribute.
+	 * @see #setFractionDigits(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCDigits_FractionDigits()
+	 * @generated
+	 */
+	int getFractionDigits();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getFractionDigits <em>Fraction Digits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Fraction Digits</em>' attribute.
+	 * @see #getFractionDigits()
+	 * @generated
+	 */
+	void setFractionDigits(int value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCDigits
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java
new file mode 100644
index 0000000..14fd1ae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCFuture.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CFuture</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCFuture()
+ * @generated
+ */
+public interface LDtCFuture extends LDateConstraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCFuture
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java
new file mode 100644
index 0000000..dfad9d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNotNull.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CNot Null</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCNotNull()
+ * @generated
+ */
+public interface LDtCNotNull extends LBlobConstraint, LDateConstraint, LStringConstraint, LBooleanConstraint, LDecimalConstraint, LNumericConstraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCNotNull
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java
new file mode 100644
index 0000000..26e1a1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNull.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CNull</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCNull()
+ * @generated
+ */
+public interface LDtCNull extends LBlobConstraint, LDateConstraint, LStringConstraint, LBooleanConstraint, LDecimalConstraint, LNumericConstraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCNull
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java
new file mode 100644
index 0000000..2d454cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMax.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CNumeric Max</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax#getMax <em>Max</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCNumericMax()
+ * @generated
+ */
+public interface LDtCNumericMax extends LNumericConstraint {
+	/**
+	 * Returns the value of the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max</em>' attribute.
+	 * @see #setMax(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCNumericMax_Max()
+	 * @generated
+	 */
+	int getMax();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax#getMax <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max</em>' attribute.
+	 * @see #getMax()
+	 * @generated
+	 */
+	void setMax(int value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCNumericMax
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java
new file mode 100644
index 0000000..b4f35dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCNumericMin.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CNumeric Min</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin#getMin <em>Min</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCNumericMin()
+ * @generated
+ */
+public interface LDtCNumericMin extends LNumericConstraint {
+	/**
+	 * Returns the value of the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min</em>' attribute.
+	 * @see #setMin(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCNumericMin_Min()
+	 * @generated
+	 */
+	int getMin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin#getMin <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min</em>' attribute.
+	 * @see #getMin()
+	 * @generated
+	 */
+	void setMin(int value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCNumericMin
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java
new file mode 100644
index 0000000..232d4fe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCPast.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CPast</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCPast()
+ * @generated
+ */
+public interface LDtCPast extends LDateConstraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCPast
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java
new file mode 100644
index 0000000..7d72a5d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCRegEx.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CReg Ex</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCRegEx()
+ * @generated
+ */
+public interface LDtCRegEx extends LStringConstraint {
+	/**
+	 * Returns the value of the '<em><b>Pattern</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pattern</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pattern</em>' attribute.
+	 * @see #setPattern(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCRegEx_Pattern()
+	 * @generated
+	 */
+	String getPattern();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx#getPattern <em>Pattern</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pattern</em>' attribute.
+	 * @see #getPattern()
+	 * @generated
+	 */
+	void setPattern(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCRegEx
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java
new file mode 100644
index 0000000..c3033b6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LDtCSize.java
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDt CSize</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMin <em>Min</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMax <em>Max</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCSize()
+ * @generated
+ */
+public interface LDtCSize extends LStringConstraint {
+	/**
+	 * Returns the value of the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min</em>' attribute.
+	 * @see #setMin(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCSize_Min()
+	 * @generated
+	 */
+	int getMin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMin <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min</em>' attribute.
+	 * @see #getMin()
+	 * @generated
+	 */
+	void setMin(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max</em>' attribute.
+	 * @see #setMax(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLDtCSize_Max()
+	 * @generated
+	 */
+	int getMax();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMax <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max</em>' attribute.
+	 * @see #getMax()
+	 * @generated
+	 */
+	void setMax(int value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	boolean isForPrimitives();
+
+} // LDtCSize
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java
new file mode 100644
index 0000000..9d6f394
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnum.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEnum</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LEnum#getLiterals <em>Literals</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLEnum()
+ * @generated
+ */
+public interface LEnum extends LScalarType {
+	/**
+	 * Returns the value of the '<em><b>Literals</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Literals</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>Literals</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLEnum_Literals()
+	 * @generated
+	 */
+	EList<LEnumLiteral> getLiterals();
+
+} // LEnum
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java
new file mode 100644
index 0000000..4f47a7f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LEnumLiteral.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEnum Literal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isDefault <em>Default</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isNull <em>Null</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLEnumLiteral()
+ * @generated
+ */
+public interface LEnumLiteral extends LLazyResolver {
+	/**
+	 * 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.dsl.semantic.common.types.OSBPTypesPackage#getLEnumLiteral_Name()
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#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);
+
+	/**
+	 * Returns the value of the '<em><b>Default</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Default</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</em>' attribute.
+	 * @see #setDefault(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLEnumLiteral_Default()
+	 * @generated
+	 */
+	boolean isDefault();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isDefault <em>Default</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Default</em>' attribute.
+	 * @see #isDefault()
+	 * @generated
+	 */
+	void setDefault(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Null</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Null</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Null</em>' attribute.
+	 * @see #setNull(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLEnumLiteral_Null()
+	 * @generated
+	 */
+	boolean isNull();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isNull <em>Null</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Null</em>' attribute.
+	 * @see #isNull()
+	 * @generated
+	 */
+	void setNull(boolean 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(int)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLEnumLiteral_Value()
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#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);
+
+} // LEnumLiteral
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java
new file mode 100644
index 0000000..d1d2225
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeature.java
@@ -0,0 +1,122 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LFeature</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getAnnotationInfo <em>Annotation Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLFeature()
+ * @generated
+ */
+public interface LFeature extends LAnnotationTarget {
+	/**
+	 * 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.dsl.semantic.common.types.OSBPTypesPackage#getLFeature_Name()
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#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);
+
+	/**
+	 * Returns the value of the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Multiplicity</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>Multiplicity</em>' containment reference.
+	 * @see #setMultiplicity(LMultiplicity)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLFeature_Multiplicity()
+	 * @generated
+	 */
+	LMultiplicity getMultiplicity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getMultiplicity <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Multiplicity</em>' containment reference.
+	 * @see #getMultiplicity()
+	 * @generated
+	 */
+	void setMultiplicity(LMultiplicity value);
+
+	/**
+	 * Returns the value of the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Annotation Info</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>Annotation Info</em>' containment reference.
+	 * @see #setAnnotationInfo(LAnnotationTarget)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLFeature_AnnotationInfo()
+	 * @generated
+	 */
+	LAnnotationTarget getAnnotationInfo();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getAnnotationInfo <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Annotation Info</em>' containment reference.
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 */
+	void setAnnotationInfo(LAnnotationTarget value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Delegates the annotation request to the target element.
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	EList<LAnnotationDef> getResolvedAnnotations();
+
+} // LFeature
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java
new file mode 100644
index 0000000..f719912
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LFeaturesHolder.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LFeatures Holder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLFeaturesHolder()
+ * @generated
+ */
+public interface LFeaturesHolder extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns the features of the holder
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<? extends LFeature> getFeatures();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<? extends LFeature> getAllFeatures();
+
+} // LFeaturesHolder
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java
new file mode 100644
index 0000000..c331985
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LImport.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LImport</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LImport#getImportedNamespace <em>Imported Namespace</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLImport()
+ * @generated
+ */
+public interface LImport extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Imported Namespace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Imported Namespace</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Imported Namespace</em>' attribute.
+	 * @see #setImportedNamespace(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLImport_ImportedNamespace()
+	 * @generated
+	 */
+	String getImportedNamespace();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LImport#getImportedNamespace <em>Imported Namespace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Imported Namespace</em>' attribute.
+	 * @see #getImportedNamespace()
+	 * @generated
+	 */
+	void setImportedNamespace(String value);
+
+} // LImport
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java
new file mode 100644
index 0000000..1657478
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LKeyAndValue.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LKey And Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLKeyAndValue()
+ * @generated
+ */
+public interface LKeyAndValue extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Key</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Key</em>' attribute.
+	 * @see #setKey(String)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLKeyAndValue_Key()
+	 * @generated
+	 */
+	String getKey();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getKey <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Key</em>' attribute.
+	 * @see #getKey()
+	 * @generated
+	 */
+	void setKey(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.dsl.semantic.common.types.OSBPTypesPackage#getLKeyAndValue_Value()
+	 * @generated
+	 */
+	String getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#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);
+
+} // LKeyAndValue
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java
new file mode 100644
index 0000000..849dad3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LLazyResolver.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LLazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLLazyResolver()
+ * @generated
+ */
+public interface LLazyResolver extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EObject eResolveProxy(InternalEObject proxy);
+
+} // LLazyResolver
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java
new file mode 100644
index 0000000..568c604
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LLowerBound.java
@@ -0,0 +1,320 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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>LLower Bound</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLLowerBound()
+ * @generated
+ */
+public enum LLowerBound implements Enumerator {
+	/**
+	 * The '<em><b>NULL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NULL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NULL(0, "NULL", "NULL"),
+
+	/**
+	 * The '<em><b>MANY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MANY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MANY(1, "MANY", "MANY"),
+
+	/**
+	 * The '<em><b>OPTIONAL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OPTIONAL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OPTIONAL(2, "OPTIONAL", "OPTIONAL"),
+
+	/**
+	 * The '<em><b>ATLEASTONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ATLEASTONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ATLEASTONE(3, "ATLEASTONE", "ATLEASTONE"),
+
+	/**
+	 * The '<em><b>ZERO</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ZERO_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ZERO(4, "ZERO", "ZERO"),
+
+	/**
+	 * The '<em><b>ONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ONE(5, "ONE", "ONE");
+
+	/**
+	 * The '<em><b>NULL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NULL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NULL
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NULL_VALUE = 0;
+
+	/**
+	 * The '<em><b>MANY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MANY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MANY
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MANY_VALUE = 1;
+
+	/**
+	 * The '<em><b>OPTIONAL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>OPTIONAL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OPTIONAL
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OPTIONAL_VALUE = 2;
+
+	/**
+	 * The '<em><b>ATLEASTONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ATLEASTONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ATLEASTONE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ATLEASTONE_VALUE = 3;
+
+	/**
+	 * The '<em><b>ZERO</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ZERO</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ZERO
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ZERO_VALUE = 4;
+
+	/**
+	 * The '<em><b>ONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ONE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ONE_VALUE = 5;
+
+	/**
+	 * An array of all the '<em><b>LLower Bound</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LLowerBound[] VALUES_ARRAY =
+		new LLowerBound[] {
+			NULL,
+			MANY,
+			OPTIONAL,
+			ATLEASTONE,
+			ZERO,
+			ONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LLower Bound</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LLowerBound> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LLower Bound</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LLowerBound get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LLowerBound result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LLower Bound</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LLowerBound getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LLowerBound result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LLower Bound</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LLowerBound get(int value) {
+		switch (value) {
+			case NULL_VALUE: return NULL;
+			case MANY_VALUE: return MANY;
+			case OPTIONAL_VALUE: return OPTIONAL;
+			case ATLEASTONE_VALUE: return ATLEASTONE;
+			case ZERO_VALUE: return ZERO;
+			case ONE_VALUE: return ONE;
+		}
+		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 LLowerBound(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;
+	}
+	
+} //LLowerBound
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java
new file mode 100644
index 0000000..cec5340
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LModifier.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LModifier</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#isFinal <em>Final</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#isStatic <em>Static</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLModifier()
+ * @generated
+ */
+public interface LModifier extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Final</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Final</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Final</em>' attribute.
+	 * @see #setFinal(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLModifier_Final()
+	 * @generated
+	 */
+	boolean isFinal();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#isFinal <em>Final</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Final</em>' attribute.
+	 * @see #isFinal()
+	 * @generated
+	 */
+	void setFinal(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Static</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Static</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Static</em>' attribute.
+	 * @see #setStatic(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLModifier_Static()
+	 * @generated
+	 */
+	boolean isStatic();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#isStatic <em>Static</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Static</em>' attribute.
+	 * @see #isStatic()
+	 * @generated
+	 */
+	void setStatic(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Visibility</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LVisibility}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Visibility</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Visibility</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LVisibility
+	 * @see #setVisibility(LVisibility)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLModifier_Visibility()
+	 * @generated
+	 */
+	LVisibility getVisibility();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#getVisibility <em>Visibility</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Visibility</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LVisibility
+	 * @see #getVisibility()
+	 * @generated
+	 */
+	void setVisibility(LVisibility value);
+
+} // LModifier
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java
new file mode 100644
index 0000000..afea496
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LMultiplicity.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LMultiplicity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getLower <em>Lower</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getUpper <em>Upper</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getToMultiplicityString <em>To Multiplicity String</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLMultiplicity()
+ * @generated
+ */
+public interface LMultiplicity extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Lower</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LLowerBound}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lower</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lower</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLowerBound
+	 * @see #setLower(LLowerBound)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLMultiplicity_Lower()
+	 * @generated
+	 */
+	LLowerBound getLower();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getLower <em>Lower</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lower</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLowerBound
+	 * @see #getLower()
+	 * @generated
+	 */
+	void setLower(LLowerBound value);
+
+	/**
+	 * Returns the value of the '<em><b>Upper</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LUpperBound}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Upper</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Upper</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LUpperBound
+	 * @see #setUpper(LUpperBound)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLMultiplicity_Upper()
+	 * @generated
+	 */
+	LUpperBound getUpper();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getUpper <em>Upper</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Upper</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LUpperBound
+	 * @see #getUpper()
+	 * @generated
+	 */
+	void setUpper(LUpperBound value);
+
+	/**
+	 * Returns the value of the '<em><b>To Multiplicity String</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>To Multiplicity String</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>To Multiplicity String</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLMultiplicity_ToMultiplicityString()
+	 * @generated
+	 */
+	String getToMultiplicityString();
+
+} // LMultiplicity
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java
new file mode 100644
index 0000000..12622f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LNumericConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LNumeric Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLNumericConstraint()
+ * @generated
+ */
+public interface LNumericConstraint extends LDatatypeConstraint {
+} // LNumericConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java
new file mode 100644
index 0000000..6d0ad5a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LOperation.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LOperation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getModifier <em>Modifier</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getParams <em>Params</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLOperation()
+ * @generated
+ */
+public interface LOperation extends LAnnotationTarget {
+	/**
+	 * Returns the value of the '<em><b>Modifier</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Modifier</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>Modifier</em>' containment reference.
+	 * @see #setModifier(LModifier)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLOperation_Modifier()
+	 * @generated
+	 */
+	LModifier getModifier();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getModifier <em>Modifier</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Modifier</em>' containment reference.
+	 * @see #getModifier()
+	 * @generated
+	 */
+	void setModifier(LModifier value);
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>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>Type</em>' containment reference.
+	 * @see #setType(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLOperation_Type()
+	 * @generated
+	 */
+	JvmTypeReference getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getType <em>Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' containment reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Params</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.xtext.common.types.JvmFormalParameter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Params</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>Params</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLOperation_Params()
+	 * @generated
+	 */
+	EList<JvmFormalParameter> getParams();
+
+	/**
+	 * Returns the value of the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Body</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>Body</em>' containment reference.
+	 * @see #setBody(XExpression)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLOperation_Body()
+	 * @generated
+	 */
+	XExpression getBody();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getBody <em>Body</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Body</em>' containment reference.
+	 * @see #getBody()
+	 * @generated
+	 */
+	void setBody(XExpression value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Method to generalize naming conventions for annotation access
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	EList<LAnnotationDef> getResolvedAnnotations();
+
+} // LOperation
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java
new file mode 100644
index 0000000..68d4d35
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LPackage.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LPackage</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage#getImports <em>Imports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLPackage()
+ * @generated
+ */
+public interface LPackage extends LLazyResolver {
+	/**
+	 * 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.dsl.semantic.common.types.OSBPTypesPackage#getLPackage_Name()
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage#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);
+
+	/**
+	 * Returns the value of the '<em><b>Imports</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LImport}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Imports</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>Imports</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLPackage_Imports()
+	 * @generated
+	 */
+	EList<LImport> getImports();
+
+} // LPackage
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
new file mode 100644
index 0000000..7877e43
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LReference.java
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LReference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#getConstraints <em>Constraints</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference()
+ * @generated
+ */
+public interface LReference extends LFeature {
+	/**
+	 * Returns the value of the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lazy</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lazy</em>' attribute.
+	 * @see #setLazy(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_Lazy()
+	 * @generated
+	 */
+	boolean isLazy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isLazy <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lazy</em>' attribute.
+	 * @see #isLazy()
+	 * @generated
+	 */
+	void setLazy(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cascading</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cascading</em>' attribute.
+	 * @see #setCascading(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_Cascading()
+	 * @generated
+	 */
+	boolean isCascading();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isCascading <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cascading</em>' attribute.
+	 * @see #isCascading()
+	 * @generated
+	 */
+	void setCascading(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Properties</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue}.
+	 * <!-- 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.dsl.semantic.common.types.OSBPTypesPackage#getLReference_Properties()
+	 * @generated
+	 */
+	EList<LKeyAndValue> getProperties();
+
+	/**
+	 * Returns the value of the '<em><b>Constraints</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Constraints</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>Constraints</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLReference_Constraints()
+	 * @generated
+	 */
+	EList<LDatatypeConstraint> getConstraints();
+
+} // LReference
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java
new file mode 100644
index 0000000..486cea9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilter.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LResult Filter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLResultFilter()
+ * @generated
+ */
+public interface LResultFilter extends LConstraint {
+} // LResultFilter
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java
new file mode 100644
index 0000000..b399877
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LResultFilters.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LResult Filters</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * *
+ * ResultFilters are used to filter the possible results for a reference.
+ * May be used by UI to filter unwanted entries.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters#getResultFilters <em>Result Filters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLResultFilters()
+ * @generated
+ */
+public interface LResultFilters extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Result Filters</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilter}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Result Filters</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>Result Filters</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLResultFilters_ResultFilters()
+	 * @generated
+	 */
+	EList<LResultFilter> getResultFilters();
+
+} // LResultFilters
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java
new file mode 100644
index 0000000..33c1ae1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LScalarType.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LScalar Type</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLScalarType()
+ * @generated
+ */
+public interface LScalarType extends LType {
+} // LScalarType
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java
new file mode 100644
index 0000000..baebe84
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LStringConstraint.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LString Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLStringConstraint()
+ * @generated
+ */
+public interface LStringConstraint extends LDatatypeConstraint {
+} // LStringConstraint
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java
new file mode 100644
index 0000000..9a4c45e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LType.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LType</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LType#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LType#getAnnotationInfo <em>Annotation Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLType()
+ * @generated
+ */
+public interface LType extends LAnnotationTarget {
+	/**
+	 * 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.dsl.semantic.common.types.OSBPTypesPackage#getLType_Name()
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LType#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);
+
+	/**
+	 * Returns the value of the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Annotation Info</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>Annotation Info</em>' containment reference.
+	 * @see #setAnnotationInfo(LAnnotationTarget)
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLType_AnnotationInfo()
+	 * @generated
+	 */
+	LAnnotationTarget getAnnotationInfo();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.common.types.LType#getAnnotationInfo <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Annotation Info</em>' containment reference.
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 */
+	void setAnnotationInfo(LAnnotationTarget value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Delegates the annotation request to the target element.
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	EList<LAnnotationDef> getResolvedAnnotations();
+
+} // LType
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java
new file mode 100644
index 0000000..0a0934d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LTypedPackage.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LTyped Package</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLTypedPackage()
+ * @generated
+ */
+public interface LTypedPackage extends LPackage {
+	/**
+	 * Returns the value of the '<em><b>Types</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Types</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>Types</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLTypedPackage_Types()
+	 * @generated
+	 */
+	EList<LType> getTypes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String getResourceSimpleName();
+
+} // LTypedPackage
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java
new file mode 100644
index 0000000..712fb70
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LUpperBound.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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>LUpper Bound</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLUpperBound()
+ * @generated
+ */
+public enum LUpperBound implements Enumerator {
+	/**
+	 * The '<em><b>NULL</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NULL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NULL(0, "NULL", "NULL"),
+
+	/**
+	 * The '<em><b>MANY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #MANY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	MANY(1, "MANY", "MANY"),
+
+	/**
+	 * The '<em><b>ONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ONE(2, "ONE", "ONE");
+
+	/**
+	 * The '<em><b>NULL</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>NULL</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NULL
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NULL_VALUE = 0;
+
+	/**
+	 * The '<em><b>MANY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>MANY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #MANY
+	 * @generated
+	 * @ordered
+	 */
+	public static final int MANY_VALUE = 1;
+
+	/**
+	 * The '<em><b>ONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ONE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ONE_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>LUpper Bound</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LUpperBound[] VALUES_ARRAY =
+		new LUpperBound[] {
+			NULL,
+			MANY,
+			ONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LUpper Bound</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LUpperBound> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LUpper Bound</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LUpperBound get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LUpperBound result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LUpper Bound</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LUpperBound getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LUpperBound result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LUpper Bound</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LUpperBound get(int value) {
+		switch (value) {
+			case NULL_VALUE: return NULL;
+			case MANY_VALUE: return MANY;
+			case ONE_VALUE: return ONE;
+		}
+		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 LUpperBound(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;
+	}
+	
+} //LUpperBound
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java
new file mode 100644
index 0000000..5762e11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/LVisibility.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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>LVisibility</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage#getLVisibility()
+ * @generated
+ */
+public enum LVisibility implements Enumerator {
+	/**
+	 * The '<em><b>PACKAGE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PACKAGE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PACKAGE(0, "PACKAGE", "PACKAGE"),
+
+	/**
+	 * The '<em><b>PRIVATE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PRIVATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PRIVATE(1, "PRIVATE", "PRIVATE"),
+
+	/**
+	 * The '<em><b>PROTECTED</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PROTECTED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PROTECTED(2, "PROTECTED", "PROTECTED"),
+
+	/**
+	 * The '<em><b>PUBLIC</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PUBLIC_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PUBLIC(3, "PUBLIC", "PUBLIC");
+
+	/**
+	 * The '<em><b>PACKAGE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PACKAGE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PACKAGE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PACKAGE_VALUE = 0;
+
+	/**
+	 * The '<em><b>PRIVATE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PRIVATE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PRIVATE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PRIVATE_VALUE = 1;
+
+	/**
+	 * The '<em><b>PROTECTED</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PROTECTED</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PROTECTED
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PROTECTED_VALUE = 2;
+
+	/**
+	 * The '<em><b>PUBLIC</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>PUBLIC</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PUBLIC
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PUBLIC_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>LVisibility</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LVisibility[] VALUES_ARRAY =
+		new LVisibility[] {
+			PACKAGE,
+			PRIVATE,
+			PROTECTED,
+			PUBLIC,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LVisibility</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LVisibility> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LVisibility</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LVisibility get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LVisibility result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LVisibility</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LVisibility getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LVisibility result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LVisibility</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LVisibility get(int value) {
+		switch (value) {
+			case PACKAGE_VALUE: return PACKAGE;
+			case PRIVATE_VALUE: return PRIVATE;
+			case PROTECTED_VALUE: return PROTECTED;
+			case PUBLIC_VALUE: return PUBLIC;
+		}
+		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 LVisibility(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;
+	}
+	
+} //LVisibility
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java
new file mode 100644
index 0000000..b9defcc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesFactory.java
@@ -0,0 +1,332 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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.dsl.semantic.common.types.OSBPTypesPackage
+ * @generated
+ */
+public interface OSBPTypesFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPTypesFactory eINSTANCE = org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>LCommon Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LCommon Model</em>'.
+	 * @generated
+	 */
+	LCommonModel createLCommonModel();
+
+	/**
+	 * Returns a new object of class '<em>LLazy Resolver</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LLazy Resolver</em>'.
+	 * @generated
+	 */
+	LLazyResolver createLLazyResolver();
+
+	/**
+	 * Returns a new object of class '<em>LPackage</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LPackage</em>'.
+	 * @generated
+	 */
+	LPackage createLPackage();
+
+	/**
+	 * Returns a new object of class '<em>LTyped Package</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LTyped Package</em>'.
+	 * @generated
+	 */
+	LTypedPackage createLTypedPackage();
+
+	/**
+	 * Returns a new object of class '<em>LImport</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LImport</em>'.
+	 * @generated
+	 */
+	LImport createLImport();
+
+	/**
+	 * Returns a new object of class '<em>LType</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LType</em>'.
+	 * @generated
+	 */
+	LType createLType();
+
+	/**
+	 * Returns a new object of class '<em>LAnnotation Def</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LAnnotation Def</em>'.
+	 * @generated
+	 */
+	LAnnotationDef createLAnnotationDef();
+
+	/**
+	 * Returns a new object of class '<em>LAnnotation Target</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LAnnotation Target</em>'.
+	 * @generated
+	 */
+	LAnnotationTarget createLAnnotationTarget();
+
+	/**
+	 * Returns a new object of class '<em>LScalar Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LScalar Type</em>'.
+	 * @generated
+	 */
+	LScalarType createLScalarType();
+
+	/**
+	 * Returns a new object of class '<em>LData Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LData Type</em>'.
+	 * @generated
+	 */
+	LDataType createLDataType();
+
+	/**
+	 * Returns a new object of class '<em>LEnum</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEnum</em>'.
+	 * @generated
+	 */
+	LEnum createLEnum();
+
+	/**
+	 * Returns a new object of class '<em>LEnum Literal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEnum Literal</em>'.
+	 * @generated
+	 */
+	LEnumLiteral createLEnumLiteral();
+
+	/**
+	 * Returns a new object of class '<em>LClass</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LClass</em>'.
+	 * @generated
+	 */
+	LClass createLClass();
+
+	/**
+	 * Returns a new object of class '<em>LKey And Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LKey And Value</em>'.
+	 * @generated
+	 */
+	LKeyAndValue createLKeyAndValue();
+
+	/**
+	 * Returns a new object of class '<em>LOperation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LOperation</em>'.
+	 * @generated
+	 */
+	LOperation createLOperation();
+
+	/**
+	 * Returns a new object of class '<em>LModifier</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LModifier</em>'.
+	 * @generated
+	 */
+	LModifier createLModifier();
+
+	/**
+	 * Returns a new object of class '<em>LMultiplicity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LMultiplicity</em>'.
+	 * @generated
+	 */
+	LMultiplicity createLMultiplicity();
+
+	/**
+	 * Returns a new object of class '<em>LResult Filters</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LResult Filters</em>'.
+	 * @generated
+	 */
+	LResultFilters createLResultFilters();
+
+	/**
+	 * Returns a new object of class '<em>LAttribute Matching Constraint</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LAttribute Matching Constraint</em>'.
+	 * @generated
+	 */
+	LAttributeMatchingConstraint createLAttributeMatchingConstraint();
+
+	/**
+	 * Returns a new object of class '<em>LDt CAssert False</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CAssert False</em>'.
+	 * @generated
+	 */
+	LDtCAssertFalse createLDtCAssertFalse();
+
+	/**
+	 * Returns a new object of class '<em>LDt CAssert True</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CAssert True</em>'.
+	 * @generated
+	 */
+	LDtCAssertTrue createLDtCAssertTrue();
+
+	/**
+	 * Returns a new object of class '<em>LDt CDecimal Max</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CDecimal Max</em>'.
+	 * @generated
+	 */
+	LDtCDecimalMax createLDtCDecimalMax();
+
+	/**
+	 * Returns a new object of class '<em>LDt CDecimal Min</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CDecimal Min</em>'.
+	 * @generated
+	 */
+	LDtCDecimalMin createLDtCDecimalMin();
+
+	/**
+	 * Returns a new object of class '<em>LDt CDigits</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CDigits</em>'.
+	 * @generated
+	 */
+	LDtCDigits createLDtCDigits();
+
+	/**
+	 * Returns a new object of class '<em>LDt CFuture</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CFuture</em>'.
+	 * @generated
+	 */
+	LDtCFuture createLDtCFuture();
+
+	/**
+	 * Returns a new object of class '<em>LDt CPast</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CPast</em>'.
+	 * @generated
+	 */
+	LDtCPast createLDtCPast();
+
+	/**
+	 * Returns a new object of class '<em>LDt CNumeric Max</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CNumeric Max</em>'.
+	 * @generated
+	 */
+	LDtCNumericMax createLDtCNumericMax();
+
+	/**
+	 * Returns a new object of class '<em>LDt CNumeric Min</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CNumeric Min</em>'.
+	 * @generated
+	 */
+	LDtCNumericMin createLDtCNumericMin();
+
+	/**
+	 * Returns a new object of class '<em>LDt CNot Null</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CNot Null</em>'.
+	 * @generated
+	 */
+	LDtCNotNull createLDtCNotNull();
+
+	/**
+	 * Returns a new object of class '<em>LDt CNull</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CNull</em>'.
+	 * @generated
+	 */
+	LDtCNull createLDtCNull();
+
+	/**
+	 * Returns a new object of class '<em>LDt CReg Ex</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CReg Ex</em>'.
+	 * @generated
+	 */
+	LDtCRegEx createLDtCRegEx();
+
+	/**
+	 * Returns a new object of class '<em>LDt CSize</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDt CSize</em>'.
+	 * @generated
+	 */
+	LDtCSize createLDtCSize();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	OSBPTypesPackage getOSBPTypesPackage();
+
+} //OSBPTypesFactory
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
new file mode 100644
index 0000000..8292f42
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/OSBPTypesPackage.java
@@ -0,0 +1,6599 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types;
+
+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;
+
+/**
+ * <!-- 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.dsl.semantic.common.types.OSBPTypesFactory
+ * @generated
+ */
+public interface OSBPTypesPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "types";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/dsl/common/types/v1";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "types";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPTypesPackage eINSTANCE = org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl <em>LLazy Resolver</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLLazyResolver()
+	 * @generated
+	 */
+	int LLAZY_RESOLVER = 1;
+
+	/**
+	 * The number of structural features of the '<em>LLazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LLAZY_RESOLVER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = 0;
+
+	/**
+	 * The number of operations of the '<em>LLazy Resolver</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LLAZY_RESOLVER_OPERATION_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LCommonModelImpl <em>LCommon Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LCommonModelImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLCommonModel()
+	 * @generated
+	 */
+	int LCOMMON_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCOMMON_MODEL__PACKAGES = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LCommon Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCOMMON_MODEL_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCOMMON_MODEL___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LCommon Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCOMMON_MODEL_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl <em>LPackage</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLPackage()
+	 * @generated
+	 */
+	int LPACKAGE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LPACKAGE__NAME = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LPACKAGE__IMPORTS = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LPackage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LPACKAGE_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LPackage</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LPACKAGE_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypedPackageImpl <em>LTyped Package</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LTypedPackageImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLTypedPackage()
+	 * @generated
+	 */
+	int LTYPED_PACKAGE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE__NAME = LPACKAGE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Imports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE__IMPORTS = LPACKAGE__IMPORTS;
+
+	/**
+	 * The feature id for the '<em><b>Types</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE__TYPES = LPACKAGE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LTyped Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE_FEATURE_COUNT = LPACKAGE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resource Simple Name</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE___GET_RESOURCE_SIMPLE_NAME = LPACKAGE_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LTyped Package</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPED_PACKAGE_OPERATION_COUNT = LPACKAGE_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LImportImpl <em>LImport</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LImportImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLImport()
+	 * @generated
+	 */
+	int LIMPORT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Imported Namespace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LIMPORT__IMPORTED_NAMESPACE = 0;
+
+	/**
+	 * The number of structural features of the '<em>LImport</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LIMPORT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>LImport</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LIMPORT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl <em>LAnnotation Target</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAnnotationTarget()
+	 * @generated
+	 */
+	int LANNOTATION_TARGET = 7;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_TARGET__ANNOTATIONS = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LAnnotation Target</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_TARGET_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_TARGET___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LAnnotation Target</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_TARGET_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypeImpl <em>LType</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LTypeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLType()
+	 * @generated
+	 */
+	int LTYPE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE__ANNOTATIONS = LANNOTATION_TARGET__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE__NAME = LANNOTATION_TARGET_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE__ANNOTATION_INFO = LANNOTATION_TARGET_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LType</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE_FEATURE_COUNT = LANNOTATION_TARGET_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE___ERESOLVE_PROXY__INTERNALEOBJECT = LANNOTATION_TARGET___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE___GET_RESOLVED_ANNOTATIONS = LANNOTATION_TARGET_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LType</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTYPE_OPERATION_COUNT = LANNOTATION_TARGET_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationDefImpl <em>LAnnotation Def</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationDefImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAnnotationDef()
+	 * @generated
+	 */
+	int LANNOTATION_DEF = 6;
+
+	/**
+	 * The feature id for the '<em><b>Exclude</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_DEF__EXCLUDE = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Annotation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_DEF__ANNOTATION = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LAnnotation Def</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_DEF_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_DEF___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LAnnotation Def</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LANNOTATION_DEF_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LScalarTypeImpl <em>LScalar Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LScalarTypeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLScalarType()
+	 * @generated
+	 */
+	int LSCALAR_TYPE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE__ANNOTATIONS = LTYPE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE__NAME = LTYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE__ANNOTATION_INFO = LTYPE__ANNOTATION_INFO;
+
+	/**
+	 * The number of structural features of the '<em>LScalar Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE_FEATURE_COUNT = LTYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = LTYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE___GET_RESOLVED_ANNOTATIONS = LTYPE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The number of operations of the '<em>LScalar Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSCALAR_TYPE_OPERATION_COUNT = LTYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl <em>LData Type</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDataType()
+	 * @generated
+	 */
+	int LDATA_TYPE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__ANNOTATIONS = LSCALAR_TYPE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__NAME = LSCALAR_TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__ANNOTATION_INFO = LSCALAR_TYPE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Jvm Type Reference</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__JVM_TYPE_REFERENCE = LSCALAR_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>As Primitive</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__AS_PRIMITIVE = LSCALAR_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Date</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__DATE = LSCALAR_TYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>As Blob</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__AS_BLOB = LSCALAR_TYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Length</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__LENGTH = LSCALAR_TYPE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Date Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__DATE_TYPE = LSCALAR_TYPE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Synthetic Flag</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__SYNTHETIC_FLAG = LSCALAR_TYPE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Synthetic Selector</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__SYNTHETIC_SELECTOR = LSCALAR_TYPE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Synthetic Type Reference</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE = LSCALAR_TYPE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Synthetic Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__SYNTHETIC_TYPE = LSCALAR_TYPE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__PROPERTIES = LSCALAR_TYPE_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE__CONSTRAINTS = LSCALAR_TYPE_FEATURE_COUNT + 11;
+
+	/**
+	 * The number of structural features of the '<em>LData Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE_FEATURE_COUNT = LSCALAR_TYPE_FEATURE_COUNT + 12;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT = LSCALAR_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE___GET_RESOLVED_ANNOTATIONS = LSCALAR_TYPE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The number of operations of the '<em>LData Type</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATA_TYPE_OPERATION_COUNT = LSCALAR_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumImpl <em>LEnum</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLEnum()
+	 * @generated
+	 */
+	int LENUM = 10;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM__ANNOTATIONS = LSCALAR_TYPE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM__NAME = LSCALAR_TYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM__ANNOTATION_INFO = LSCALAR_TYPE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Literals</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM__LITERALS = LSCALAR_TYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LEnum</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_FEATURE_COUNT = LSCALAR_TYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM___ERESOLVE_PROXY__INTERNALEOBJECT = LSCALAR_TYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM___GET_RESOLVED_ANNOTATIONS = LSCALAR_TYPE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The number of operations of the '<em>LEnum</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_OPERATION_COUNT = LSCALAR_TYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl <em>LEnum Literal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLEnumLiteral()
+	 * @generated
+	 */
+	int LENUM_LITERAL = 11;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL__NAME = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Default</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL__DEFAULT = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Null</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL__NULL = LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL__VALUE = LLAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LEnum Literal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LEnum Literal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENUM_LITERAL_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl <em>LClass</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLClass()
+	 * @generated
+	 */
+	int LCLASS = 12;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS__ANNOTATIONS = LTYPE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS__NAME = LTYPE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS__ANNOTATION_INFO = LTYPE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS__ABSTRACT = LTYPE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS__SERIALIZABLE = LTYPE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS__SHORT_NAME = LTYPE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LClass</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS_FEATURE_COUNT = LTYPE_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS___ERESOLVE_PROXY__INTERNALEOBJECT = LTYPE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS___GET_RESOLVED_ANNOTATIONS = LTYPE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The number of operations of the '<em>LClass</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCLASS_OPERATION_COUNT = LTYPE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLFeaturesHolder()
+	 * @generated
+	 */
+	int LFEATURES_HOLDER = 13;
+
+	/**
+	 * The number of structural features of the '<em>LFeatures Holder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURES_HOLDER_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>Get Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURES_HOLDER___GET_FEATURES = 0;
+
+	/**
+	 * The operation id for the '<em>Get All Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURES_HOLDER___GET_ALL_FEATURES = 1;
+
+	/**
+	 * The number of operations of the '<em>LFeatures Holder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURES_HOLDER_OPERATION_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLFeature()
+	 * @generated
+	 */
+	int LFEATURE = 14;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE__ANNOTATIONS = LANNOTATION_TARGET__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE__NAME = LANNOTATION_TARGET_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE__MULTIPLICITY = LANNOTATION_TARGET_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE__ANNOTATION_INFO = LANNOTATION_TARGET_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LFeature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE_FEATURE_COUNT = LANNOTATION_TARGET_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE___ERESOLVE_PROXY__INTERNALEOBJECT = LANNOTATION_TARGET___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE___GET_RESOLVED_ANNOTATIONS = LANNOTATION_TARGET_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LFeature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFEATURE_OPERATION_COUNT = LANNOTATION_TARGET_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference <em>LReference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLReference()
+	 * @generated
+	 */
+	int LREFERENCE = 15;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__ANNOTATIONS = LFEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__NAME = LFEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__MULTIPLICITY = LFEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__ANNOTATION_INFO = LFEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__LAZY = LFEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__CASCADING = LFEATURE_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 LREFERENCE__PROPERTIES = LFEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE__CONSTRAINTS = LFEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LReference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE___ERESOLVE_PROXY__INTERNALEOBJECT = LFEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE___GET_RESOLVED_ANNOTATIONS = LFEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The number of operations of the '<em>LReference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LREFERENCE_OPERATION_COUNT = LFEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAttribute()
+	 * @generated
+	 */
+	int LATTRIBUTE = 16;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__ANNOTATIONS = LFEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__NAME = LFEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__MULTIPLICITY = LFEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__ANNOTATION_INFO = LFEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__ID = LFEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__UUID = LFEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__VERSION = LFEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__LAZY = LFEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__CASCADING = LFEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__TRANSIENT = LFEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__DERIVED = LFEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__DIRTY = LFEATURE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__DOMAIN_KEY = LFEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__DOMAIN_DESCRIPTION = LFEATURE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__DERIVED_GETTER_EXPRESSION = LFEATURE_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__TYPE = LFEATURE_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__TYPE_JVM = LFEATURE_FEATURE_COUNT + 12;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__PROPERTIES = LFEATURE_FEATURE_COUNT + 13;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE__CONSTRAINTS = LFEATURE_FEATURE_COUNT + 14;
+
+	/**
+	 * The number of structural features of the '<em>LAttribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_FEATURE_COUNT = LFEATURE_FEATURE_COUNT + 15;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = LFEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE___GET_RESOLVED_ANNOTATIONS = LFEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The number of operations of the '<em>LAttribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_OPERATION_COUNT = LFEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LKeyAndValueImpl <em>LKey And Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LKeyAndValueImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLKeyAndValue()
+	 * @generated
+	 */
+	int LKEY_AND_VALUE = 17;
+
+	/**
+	 * The feature id for the '<em><b>Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LKEY_AND_VALUE__KEY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LKEY_AND_VALUE__VALUE = 1;
+
+	/**
+	 * The number of structural features of the '<em>LKey And Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LKEY_AND_VALUE_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>LKey And Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LKEY_AND_VALUE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl <em>LOperation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLOperation()
+	 * @generated
+	 */
+	int LOPERATION = 18;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__ANNOTATIONS = LANNOTATION_TARGET__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Modifier</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__MODIFIER = LANNOTATION_TARGET_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__TYPE = LANNOTATION_TARGET_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__PARAMS = LANNOTATION_TARGET_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__BODY = LANNOTATION_TARGET_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LOperation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION_FEATURE_COUNT = LANNOTATION_TARGET_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION___ERESOLVE_PROXY__INTERNALEOBJECT = LANNOTATION_TARGET___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION___GET_RESOLVED_ANNOTATIONS = LANNOTATION_TARGET_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LOperation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION_OPERATION_COUNT = LANNOTATION_TARGET_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl <em>LModifier</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLModifier()
+	 * @generated
+	 */
+	int LMODIFIER = 19;
+
+	/**
+	 * The feature id for the '<em><b>Final</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMODIFIER__FINAL = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Static</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMODIFIER__STATIC = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Visibility</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMODIFIER__VISIBILITY = LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LModifier</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMODIFIER_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMODIFIER___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LModifier</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMODIFIER_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl <em>LMultiplicity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLMultiplicity()
+	 * @generated
+	 */
+	int LMULTIPLICITY = 20;
+
+	/**
+	 * The feature id for the '<em><b>Lower</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMULTIPLICITY__LOWER = 0;
+
+	/**
+	 * The feature id for the '<em><b>Upper</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMULTIPLICITY__UPPER = 1;
+
+	/**
+	 * The feature id for the '<em><b>To Multiplicity String</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMULTIPLICITY__TO_MULTIPLICITY_STRING = 2;
+
+	/**
+	 * The number of structural features of the '<em>LMultiplicity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMULTIPLICITY_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>LMultiplicity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LMULTIPLICITY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraint <em>LConstraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLConstraint()
+	 * @generated
+	 */
+	int LCONSTRAINT = 21;
+
+	/**
+	 * The number of structural features of the '<em>LConstraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCONSTRAINT_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LConstraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCONSTRAINT_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LResultFiltersImpl <em>LResult Filters</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LResultFiltersImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLResultFilters()
+	 * @generated
+	 */
+	int LRESULT_FILTERS = 22;
+
+	/**
+	 * The feature id for the '<em><b>Result Filters</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTERS__RESULT_FILTERS = LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LResult Filters</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTERS_FEATURE_COUNT = LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTERS___ERESOLVE_PROXY__INTERNALEOBJECT = LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LResult Filters</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTERS_OPERATION_COUNT = LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilter <em>LResult Filter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LResultFilter
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLResultFilter()
+	 * @generated
+	 */
+	int LRESULT_FILTER = 23;
+
+	/**
+	 * The number of structural features of the '<em>LResult Filter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTER_FEATURE_COUNT = LCONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTER___ERESOLVE_PROXY__INTERNALEOBJECT = LCONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LResult Filter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LRESULT_FILTER_OPERATION_COUNT = LCONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl <em>LAttribute Matching Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAttributeMatchingConstraint()
+	 * @generated
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT = 24;
+
+	/**
+	 * The feature id for the '<em><b>Attribute</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE = LRESULT_FILTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Comparator Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE = LRESULT_FILTER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Matching Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE = LRESULT_FILTER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Matching Literal</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL = LRESULT_FILTER_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LAttribute Matching Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT_FEATURE_COUNT = LRESULT_FILTER_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LRESULT_FILTER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LAttribute Matching Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LATTRIBUTE_MATCHING_CONSTRAINT_OPERATION_COUNT = LRESULT_FILTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint <em>LDatatype Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDatatypeConstraint()
+	 * @generated
+	 */
+	int LDATATYPE_CONSTRAINT = 25;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT__MSG_CODE = LCONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY = LCONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT__SEVERITY = LCONSTRAINT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LDatatype Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT_FEATURE_COUNT = LCONSTRAINT_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LCONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES = LCONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDatatype Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATATYPE_CONSTRAINT_OPERATION_COUNT = LCONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint <em>LString Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLStringConstraint()
+	 * @generated
+	 */
+	int LSTRING_CONSTRAINT = 26;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT__MSG_CODE = LDATATYPE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT__MSG_I1_8N_KEY = LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT__SEVERITY = LDATATYPE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LString Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT_FEATURE_COUNT = LDATATYPE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT___IS_FOR_PRIMITIVES = LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES;
+
+	/**
+	 * The number of operations of the '<em>LString Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTRING_CONSTRAINT_OPERATION_COUNT = LDATATYPE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint <em>LNumeric Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLNumericConstraint()
+	 * @generated
+	 */
+	int LNUMERIC_CONSTRAINT = 27;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT__MSG_CODE = LDATATYPE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT__MSG_I1_8N_KEY = LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT__SEVERITY = LDATATYPE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LNumeric Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT_FEATURE_COUNT = LDATATYPE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT___IS_FOR_PRIMITIVES = LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES;
+
+	/**
+	 * The number of operations of the '<em>LNumeric Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LNUMERIC_CONSTRAINT_OPERATION_COUNT = LDATATYPE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint <em>LDecimal Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDecimalConstraint()
+	 * @generated
+	 */
+	int LDECIMAL_CONSTRAINT = 28;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT__MSG_CODE = LDATATYPE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT__MSG_I1_8N_KEY = LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT__SEVERITY = LDATATYPE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDecimal Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT_FEATURE_COUNT = LDATATYPE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT___IS_FOR_PRIMITIVES = LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES;
+
+	/**
+	 * The number of operations of the '<em>LDecimal Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDECIMAL_CONSTRAINT_OPERATION_COUNT = LDATATYPE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint <em>LDate Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDateConstraint()
+	 * @generated
+	 */
+	int LDATE_CONSTRAINT = 29;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT__MSG_CODE = LDATATYPE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT__MSG_I1_8N_KEY = LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT__SEVERITY = LDATATYPE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDate Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT_FEATURE_COUNT = LDATATYPE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT___IS_FOR_PRIMITIVES = LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES;
+
+	/**
+	 * The number of operations of the '<em>LDate Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDATE_CONSTRAINT_OPERATION_COUNT = LDATATYPE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint <em>LBoolean Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLBooleanConstraint()
+	 * @generated
+	 */
+	int LBOOLEAN_CONSTRAINT = 30;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT__MSG_CODE = LDATATYPE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT__MSG_I1_8N_KEY = LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT__SEVERITY = LDATATYPE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LBoolean Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT_FEATURE_COUNT = LDATATYPE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT___IS_FOR_PRIMITIVES = LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES;
+
+	/**
+	 * The number of operations of the '<em>LBoolean Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBOOLEAN_CONSTRAINT_OPERATION_COUNT = LDATATYPE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint <em>LBlob Constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLBlobConstraint()
+	 * @generated
+	 */
+	int LBLOB_CONSTRAINT = 31;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT__MSG_CODE = LDATATYPE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT__MSG_I1_8N_KEY = LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT__SEVERITY = LDATATYPE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LBlob Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT_FEATURE_COUNT = LDATATYPE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT = LDATATYPE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT___IS_FOR_PRIMITIVES = LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES;
+
+	/**
+	 * The number of operations of the '<em>LBlob Constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBLOB_CONSTRAINT_OPERATION_COUNT = LDATATYPE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl <em>LDt CAssert False</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCAssertFalse()
+	 * @generated
+	 */
+	int LDT_CASSERT_FALSE = 32;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE__MSG_CODE = LBOOLEAN_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE__MSG_I1_8N_KEY = LBOOLEAN_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE__SEVERITY = LBOOLEAN_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDt CAssert False</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE_FEATURE_COUNT = LBOOLEAN_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE___ERESOLVE_PROXY__INTERNALEOBJECT = LBOOLEAN_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE___IS_FOR_PRIMITIVES = LBOOLEAN_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CAssert False</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_FALSE_OPERATION_COUNT = LBOOLEAN_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl <em>LDt CAssert True</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCAssertTrue()
+	 * @generated
+	 */
+	int LDT_CASSERT_TRUE = 33;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE__MSG_CODE = LBOOLEAN_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE__MSG_I1_8N_KEY = LBOOLEAN_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE__SEVERITY = LBOOLEAN_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDt CAssert True</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE_FEATURE_COUNT = LBOOLEAN_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE___ERESOLVE_PROXY__INTERNALEOBJECT = LBOOLEAN_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE___IS_FOR_PRIMITIVES = LBOOLEAN_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CAssert True</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CASSERT_TRUE_OPERATION_COUNT = LBOOLEAN_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl <em>LDt CDecimal Max</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCDecimalMax()
+	 * @generated
+	 */
+	int LDT_CDECIMAL_MAX = 34;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX__MSG_CODE = LDECIMAL_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX__MSG_I1_8N_KEY = LDECIMAL_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX__SEVERITY = LDECIMAL_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX__MAX = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDt CDecimal Max</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX_FEATURE_COUNT = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX___ERESOLVE_PROXY__INTERNALEOBJECT = LDECIMAL_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX___IS_FOR_PRIMITIVES = LDECIMAL_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CDecimal Max</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MAX_OPERATION_COUNT = LDECIMAL_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl <em>LDt CDecimal Min</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCDecimalMin()
+	 * @generated
+	 */
+	int LDT_CDECIMAL_MIN = 35;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN__MSG_CODE = LDECIMAL_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN__MSG_I1_8N_KEY = LDECIMAL_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN__SEVERITY = LDECIMAL_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN__MIN = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDt CDecimal Min</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN_FEATURE_COUNT = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN___ERESOLVE_PROXY__INTERNALEOBJECT = LDECIMAL_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN___IS_FOR_PRIMITIVES = LDECIMAL_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CDecimal Min</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDECIMAL_MIN_OPERATION_COUNT = LDECIMAL_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl <em>LDt CDigits</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCDigits()
+	 * @generated
+	 */
+	int LDT_CDIGITS = 36;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS__MSG_CODE = LDECIMAL_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS__MSG_I1_8N_KEY = LDECIMAL_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS__SEVERITY = LDECIMAL_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Int Digits</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS__INT_DIGITS = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Fraction Digits</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS__FRACTION_DIGITS = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LDt CDigits</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS_FEATURE_COUNT = LDECIMAL_CONSTRAINT_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS___ERESOLVE_PROXY__INTERNALEOBJECT = LDECIMAL_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS___IS_FOR_PRIMITIVES = LDECIMAL_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CDigits</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CDIGITS_OPERATION_COUNT = LDECIMAL_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl <em>LDt CFuture</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCFuture()
+	 * @generated
+	 */
+	int LDT_CFUTURE = 37;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE__MSG_CODE = LDATE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE__MSG_I1_8N_KEY = LDATE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE__SEVERITY = LDATE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDt CFuture</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE_FEATURE_COUNT = LDATE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE___ERESOLVE_PROXY__INTERNALEOBJECT = LDATE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE___IS_FOR_PRIMITIVES = LDATE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CFuture</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CFUTURE_OPERATION_COUNT = LDATE_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl <em>LDt CPast</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCPast()
+	 * @generated
+	 */
+	int LDT_CPAST = 38;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST__MSG_CODE = LDATE_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST__MSG_I1_8N_KEY = LDATE_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST__SEVERITY = LDATE_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDt CPast</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST_FEATURE_COUNT = LDATE_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST___ERESOLVE_PROXY__INTERNALEOBJECT = LDATE_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST___IS_FOR_PRIMITIVES = LDATE_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CPast</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CPAST_OPERATION_COUNT = LDATE_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl <em>LDt CNumeric Max</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNumericMax()
+	 * @generated
+	 */
+	int LDT_CNUMERIC_MAX = 39;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX__MSG_CODE = LNUMERIC_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX__MSG_I1_8N_KEY = LNUMERIC_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX__SEVERITY = LNUMERIC_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX__MAX = LNUMERIC_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDt CNumeric Max</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX_FEATURE_COUNT = LNUMERIC_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX___ERESOLVE_PROXY__INTERNALEOBJECT = LNUMERIC_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX___IS_FOR_PRIMITIVES = LNUMERIC_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CNumeric Max</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MAX_OPERATION_COUNT = LNUMERIC_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl <em>LDt CNumeric Min</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNumericMin()
+	 * @generated
+	 */
+	int LDT_CNUMERIC_MIN = 40;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN__MSG_CODE = LNUMERIC_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN__MSG_I1_8N_KEY = LNUMERIC_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN__SEVERITY = LNUMERIC_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN__MIN = LNUMERIC_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDt CNumeric Min</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN_FEATURE_COUNT = LNUMERIC_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN___ERESOLVE_PROXY__INTERNALEOBJECT = LNUMERIC_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN___IS_FOR_PRIMITIVES = LNUMERIC_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CNumeric Min</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNUMERIC_MIN_OPERATION_COUNT = LNUMERIC_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl <em>LDt CNot Null</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNotNull()
+	 * @generated
+	 */
+	int LDT_CNOT_NULL = 41;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL__MSG_CODE = LBLOB_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL__MSG_I1_8N_KEY = LBLOB_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL__SEVERITY = LBLOB_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDt CNot Null</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL_FEATURE_COUNT = LBLOB_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL___ERESOLVE_PROXY__INTERNALEOBJECT = LBLOB_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL___IS_FOR_PRIMITIVES = LBLOB_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CNot Null</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNOT_NULL_OPERATION_COUNT = LBLOB_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl <em>LDt CNull</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNull()
+	 * @generated
+	 */
+	int LDT_CNULL = 42;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL__MSG_CODE = LBLOB_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL__MSG_I1_8N_KEY = LBLOB_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL__SEVERITY = LBLOB_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The number of structural features of the '<em>LDt CNull</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL_FEATURE_COUNT = LBLOB_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL___ERESOLVE_PROXY__INTERNALEOBJECT = LBLOB_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL___IS_FOR_PRIMITIVES = LBLOB_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CNull</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CNULL_OPERATION_COUNT = LBLOB_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl <em>LDt CReg Ex</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCRegEx()
+	 * @generated
+	 */
+	int LDT_CREG_EX = 43;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX__MSG_CODE = LSTRING_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX__MSG_I1_8N_KEY = LSTRING_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX__SEVERITY = LSTRING_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Pattern</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX__PATTERN = LSTRING_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDt CReg Ex</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX_FEATURE_COUNT = LSTRING_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX___ERESOLVE_PROXY__INTERNALEOBJECT = LSTRING_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX___IS_FOR_PRIMITIVES = LSTRING_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CReg Ex</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CREG_EX_OPERATION_COUNT = LSTRING_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl <em>LDt CSize</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCSize()
+	 * @generated
+	 */
+	int LDT_CSIZE = 44;
+
+	/**
+	 * The feature id for the '<em><b>Msg Code</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE__MSG_CODE = LSTRING_CONSTRAINT__MSG_CODE;
+
+	/**
+	 * The feature id for the '<em><b>Msg I1 8n Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE__MSG_I1_8N_KEY = LSTRING_CONSTRAINT__MSG_I1_8N_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Severity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE__SEVERITY = LSTRING_CONSTRAINT__SEVERITY;
+
+	/**
+	 * The feature id for the '<em><b>Min</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE__MIN = LSTRING_CONSTRAINT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Max</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE__MAX = LSTRING_CONSTRAINT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LDt CSize</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE_FEATURE_COUNT = LSTRING_CONSTRAINT_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE___ERESOLVE_PROXY__INTERNALEOBJECT = LSTRING_CONSTRAINT___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Is For Primitives</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE___IS_FOR_PRIMITIVES = LSTRING_CONSTRAINT_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LDt CSize</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDT_CSIZE_OPERATION_COUNT = LSTRING_CONSTRAINT_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateType <em>LDate Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDateType()
+	 * @generated
+	 */
+	int LDATE_TYPE = 45;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LVisibility <em>LVisibility</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LVisibility
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLVisibility()
+	 * @generated
+	 */
+	int LVISIBILITY = 46;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LLowerBound <em>LLower Bound</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLowerBound
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLLowerBound()
+	 * @generated
+	 */
+	int LLOWER_BOUND = 47;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LUpperBound <em>LUpper Bound</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LUpperBound
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLUpperBound()
+	 * @generated
+	 */
+	int LUPPER_BOUND = 48;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LComparatorType <em>LComparator Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LComparatorType
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLComparatorType()
+	 * @generated
+	 */
+	int LCOMPARATOR_TYPE = 49;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity <em>LConstraint Severity</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLConstraintSeverity()
+	 * @generated
+	 */
+	int LCONSTRAINT_SEVERITY = 50;
+
+	/**
+	 * The meta object id for the '<em>Operations List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getOperationsList()
+	 * @generated
+	 */
+	int OPERATIONS_LIST = 51;
+
+	/**
+	 * The meta object id for the '<em>Features List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getFeaturesList()
+	 * @generated
+	 */
+	int FEATURES_LIST = 52;
+
+	/**
+	 * The meta object id for the '<em>Annotation List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.common.util.EList
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getAnnotationList()
+	 * @generated
+	 */
+	int ANNOTATION_LIST = 53;
+
+	/**
+	 * 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.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 54;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LCommonModel <em>LCommon Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LCommon Model</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LCommonModel
+	 * @generated
+	 */
+	EClass getLCommonModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LCommonModel#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.dsl.semantic.common.types.LCommonModel#getPackages()
+	 * @see #getLCommonModel()
+	 * @generated
+	 */
+	EReference getLCommonModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver <em>LLazy Resolver</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LLazy Resolver</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver
+	 * @generated
+	 */
+	EClass getLLazyResolver();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver#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.dsl.semantic.common.types.LLazyResolver#eResolveProxy(org.eclipse.emf.ecore.InternalEObject)
+	 * @generated
+	 */
+	EOperation getLLazyResolver__EResolveProxy__InternalEObject();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage <em>LPackage</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LPackage</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LPackage
+	 * @generated
+	 */
+	EClass getLPackage();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LPackage#getName()
+	 * @see #getLPackage()
+	 * @generated
+	 */
+	EAttribute getLPackage_Name();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LPackage#getImports <em>Imports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Imports</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LPackage#getImports()
+	 * @see #getLPackage()
+	 * @generated
+	 */
+	EReference getLPackage_Imports();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage <em>LTyped Package</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LTyped Package</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+	 * @generated
+	 */
+	EClass getLTypedPackage();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage#getTypes <em>Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Types</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage#getTypes()
+	 * @see #getLTypedPackage()
+	 * @generated
+	 */
+	EReference getLTypedPackage_Types();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage#getResourceSimpleName() <em>Get Resource Simple Name</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Resource Simple Name</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage#getResourceSimpleName()
+	 * @generated
+	 */
+	EOperation getLTypedPackage__GetResourceSimpleName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LImport <em>LImport</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LImport</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LImport
+	 * @generated
+	 */
+	EClass getLImport();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LImport#getImportedNamespace <em>Imported Namespace</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Imported Namespace</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LImport#getImportedNamespace()
+	 * @see #getLImport()
+	 * @generated
+	 */
+	EAttribute getLImport_ImportedNamespace();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LType <em>LType</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LType</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LType
+	 * @generated
+	 */
+	EClass getLType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LType#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LType#getName()
+	 * @see #getLType()
+	 * @generated
+	 */
+	EAttribute getLType_Name();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LType#getAnnotationInfo <em>Annotation Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Annotation Info</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LType#getAnnotationInfo()
+	 * @see #getLType()
+	 * @generated
+	 */
+	EReference getLType_AnnotationInfo();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LType#getResolvedAnnotations() <em>Get Resolved Annotations</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Resolved Annotations</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LType#getResolvedAnnotations()
+	 * @generated
+	 */
+	EOperation getLType__GetResolvedAnnotations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef <em>LAnnotation Def</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LAnnotation Def</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef
+	 * @generated
+	 */
+	EClass getLAnnotationDef();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#isExclude <em>Exclude</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Exclude</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#isExclude()
+	 * @see #getLAnnotationDef()
+	 * @generated
+	 */
+	EAttribute getLAnnotationDef_Exclude();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#getAnnotation <em>Annotation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Annotation</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef#getAnnotation()
+	 * @see #getLAnnotationDef()
+	 * @generated
+	 */
+	EReference getLAnnotationDef_Annotation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget <em>LAnnotation Target</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LAnnotation Target</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget
+	 * @generated
+	 */
+	EClass getLAnnotationTarget();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget#getAnnotations <em>Annotations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Annotations</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget#getAnnotations()
+	 * @see #getLAnnotationTarget()
+	 * @generated
+	 */
+	EReference getLAnnotationTarget_Annotations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType <em>LScalar Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LScalar Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LScalarType
+	 * @generated
+	 */
+	EClass getLScalarType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType <em>LData Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LData Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType
+	 * @generated
+	 */
+	EClass getLDataType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getJvmTypeReference <em>Jvm Type Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Jvm Type Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getJvmTypeReference()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EReference getLDataType_JvmTypeReference();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsPrimitive <em>As Primitive</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>As Primitive</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsPrimitive()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_AsPrimitive();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isDate <em>Date</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Date</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#isDate()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_Date();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsBlob <em>As Blob</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>As Blob</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#isAsBlob()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_AsBlob();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getLength <em>Length</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Length</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getLength()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_Length();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getDateType <em>Date Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Date Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getDateType()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_DateType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#isSyntheticFlag <em>Synthetic Flag</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Synthetic Flag</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#isSyntheticFlag()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_SyntheticFlag();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticSelector <em>Synthetic Selector</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Synthetic Selector</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticSelector()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EAttribute getLDataType_SyntheticSelector();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticTypeReference <em>Synthetic Type Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Synthetic Type Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticTypeReference()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EReference getLDataType_SyntheticTypeReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticType <em>Synthetic Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Synthetic Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getSyntheticType()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EReference getLDataType_SyntheticType();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#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.dsl.semantic.common.types.LDataType#getProperties()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EReference getLDataType_Properties();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType#getConstraints <em>Constraints</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Constraints</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDataType#getConstraints()
+	 * @see #getLDataType()
+	 * @generated
+	 */
+	EReference getLDataType_Constraints();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnum <em>LEnum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEnum</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnum
+	 * @generated
+	 */
+	EClass getLEnum();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnum#getLiterals <em>Literals</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Literals</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnum#getLiterals()
+	 * @see #getLEnum()
+	 * @generated
+	 */
+	EReference getLEnum_Literals();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral <em>LEnum Literal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEnum Literal</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral
+	 * @generated
+	 */
+	EClass getLEnumLiteral();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#getName()
+	 * @see #getLEnumLiteral()
+	 * @generated
+	 */
+	EAttribute getLEnumLiteral_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isDefault <em>Default</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Default</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isDefault()
+	 * @see #getLEnumLiteral()
+	 * @generated
+	 */
+	EAttribute getLEnumLiteral_Default();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isNull <em>Null</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Null</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#isNull()
+	 * @see #getLEnumLiteral()
+	 * @generated
+	 */
+	EAttribute getLEnumLiteral_Null();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral#getValue()
+	 * @see #getLEnumLiteral()
+	 * @generated
+	 */
+	EAttribute getLEnumLiteral_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass <em>LClass</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LClass</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LClass
+	 * @generated
+	 */
+	EClass getLClass();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isAbstract <em>Abstract</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Abstract</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LClass#isAbstract()
+	 * @see #getLClass()
+	 * @generated
+	 */
+	EAttribute getLClass_Abstract();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#isSerializable <em>Serializable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Serializable</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LClass#isSerializable()
+	 * @see #getLClass()
+	 * @generated
+	 */
+	EAttribute getLClass_Serializable();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass#getShortName <em>Short Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Short Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LClass#getShortName()
+	 * @see #getLClass()
+	 * @generated
+	 */
+	EAttribute getLClass_ShortName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LFeatures Holder</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder
+	 * @generated
+	 */
+	EClass getLFeaturesHolder();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder#getFeatures() <em>Get Features</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Features</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder#getFeatures()
+	 * @generated
+	 */
+	EOperation getLFeaturesHolder__GetFeatures();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder#getAllFeatures() <em>Get All Features</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All Features</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder#getAllFeatures()
+	 * @generated
+	 */
+	EOperation getLFeaturesHolder__GetAllFeatures();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LFeature</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature
+	 * @generated
+	 */
+	EClass getLFeature();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature#getName()
+	 * @see #getLFeature()
+	 * @generated
+	 */
+	EAttribute getLFeature_Name();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getMultiplicity <em>Multiplicity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Multiplicity</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature#getMultiplicity()
+	 * @see #getLFeature()
+	 * @generated
+	 */
+	EReference getLFeature_Multiplicity();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getAnnotationInfo <em>Annotation Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Annotation Info</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature#getAnnotationInfo()
+	 * @see #getLFeature()
+	 * @generated
+	 */
+	EReference getLFeature_AnnotationInfo();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature#getResolvedAnnotations() <em>Get Resolved Annotations</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Resolved Annotations</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature#getResolvedAnnotations()
+	 * @generated
+	 */
+	EOperation getLFeature__GetResolvedAnnotations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference <em>LReference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LReference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference
+	 * @generated
+	 */
+	EClass getLReference();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isLazy <em>Lazy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lazy</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isLazy()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_Lazy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#isCascading <em>Cascading</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cascading</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#isCascading()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EAttribute getLReference_Cascading();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#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.dsl.semantic.common.types.LReference#getProperties()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EReference getLReference_Properties();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference#getConstraints <em>Constraints</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Constraints</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference#getConstraints()
+	 * @see #getLReference()
+	 * @generated
+	 */
+	EReference getLReference_Constraints();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LAttribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+	 * @generated
+	 */
+	EClass getLAttribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isId()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Id();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isUuid <em>Uuid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Uuid</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isUuid()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Uuid();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isVersion <em>Version</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Version</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isVersion()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Version();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isLazy <em>Lazy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lazy</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isLazy()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Lazy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isCascading <em>Cascading</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cascading</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isCascading()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Cascading();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isTransient <em>Transient</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Transient</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isTransient()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Transient();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDerived <em>Derived</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Derived</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDerived()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Derived();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDirty <em>Dirty</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dirty</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDirty()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_Dirty();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainKey <em>Domain Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Domain Key</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainKey()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_DomainKey();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainDescription <em>Domain Description</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Domain Description</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#isDomainDescription()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EAttribute getLAttribute_DomainDescription();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getDerivedGetterExpression <em>Derived Getter Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Derived Getter Expression</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getDerivedGetterExpression()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EReference getLAttribute_DerivedGetterExpression();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getType()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EReference getLAttribute_Type();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getTypeJvm <em>Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getTypeJvm()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EReference getLAttribute_TypeJvm();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#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.dsl.semantic.common.types.LAttribute#getProperties()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EReference getLAttribute_Properties();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getConstraints <em>Constraints</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Constraints</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute#getConstraints()
+	 * @see #getLAttribute()
+	 * @generated
+	 */
+	EReference getLAttribute_Constraints();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue <em>LKey And Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LKey And Value</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue
+	 * @generated
+	 */
+	EClass getLKeyAndValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getKey <em>Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Key</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getKey()
+	 * @see #getLKeyAndValue()
+	 * @generated
+	 */
+	EAttribute getLKeyAndValue_Key();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue#getValue()
+	 * @see #getLKeyAndValue()
+	 * @generated
+	 */
+	EAttribute getLKeyAndValue_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation <em>LOperation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LOperation</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LOperation
+	 * @generated
+	 */
+	EClass getLOperation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getModifier <em>Modifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Modifier</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LOperation#getModifier()
+	 * @see #getLOperation()
+	 * @generated
+	 */
+	EReference getLOperation_Modifier();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LOperation#getType()
+	 * @see #getLOperation()
+	 * @generated
+	 */
+	EReference getLOperation_Type();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getParams <em>Params</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Params</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LOperation#getParams()
+	 * @see #getLOperation()
+	 * @generated
+	 */
+	EReference getLOperation_Params();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getBody <em>Body</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Body</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LOperation#getBody()
+	 * @see #getLOperation()
+	 * @generated
+	 */
+	EReference getLOperation_Body();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation#getResolvedAnnotations() <em>Get Resolved Annotations</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Resolved Annotations</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LOperation#getResolvedAnnotations()
+	 * @generated
+	 */
+	EOperation getLOperation__GetResolvedAnnotations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier <em>LModifier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LModifier</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LModifier
+	 * @generated
+	 */
+	EClass getLModifier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#isFinal <em>Final</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Final</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LModifier#isFinal()
+	 * @see #getLModifier()
+	 * @generated
+	 */
+	EAttribute getLModifier_Final();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#isStatic <em>Static</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Static</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LModifier#isStatic()
+	 * @see #getLModifier()
+	 * @generated
+	 */
+	EAttribute getLModifier_Static();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier#getVisibility <em>Visibility</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Visibility</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LModifier#getVisibility()
+	 * @see #getLModifier()
+	 * @generated
+	 */
+	EAttribute getLModifier_Visibility();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity <em>LMultiplicity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LMultiplicity</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity
+	 * @generated
+	 */
+	EClass getLMultiplicity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getLower <em>Lower</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lower</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getLower()
+	 * @see #getLMultiplicity()
+	 * @generated
+	 */
+	EAttribute getLMultiplicity_Lower();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getUpper <em>Upper</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Upper</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getUpper()
+	 * @see #getLMultiplicity()
+	 * @generated
+	 */
+	EAttribute getLMultiplicity_Upper();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getToMultiplicityString <em>To Multiplicity String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>To Multiplicity String</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity#getToMultiplicityString()
+	 * @see #getLMultiplicity()
+	 * @generated
+	 */
+	EAttribute getLMultiplicity_ToMultiplicityString();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraint <em>LConstraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LConstraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraint
+	 * @generated
+	 */
+	EClass getLConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters <em>LResult Filters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LResult Filters</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LResultFilters
+	 * @generated
+	 */
+	EClass getLResultFilters();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters#getResultFilters <em>Result Filters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Result Filters</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LResultFilters#getResultFilters()
+	 * @see #getLResultFilters()
+	 * @generated
+	 */
+	EReference getLResultFilters_ResultFilters();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilter <em>LResult Filter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LResult Filter</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LResultFilter
+	 * @generated
+	 */
+	EClass getLResultFilter();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint <em>LAttribute Matching Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LAttribute Matching Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint
+	 * @generated
+	 */
+	EClass getLAttributeMatchingConstraint();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getAttribute <em>Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Attribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getAttribute()
+	 * @see #getLAttributeMatchingConstraint()
+	 * @generated
+	 */
+	EReference getLAttributeMatchingConstraint_Attribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getComparatorType <em>Comparator Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Comparator Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getComparatorType()
+	 * @see #getLAttributeMatchingConstraint()
+	 * @generated
+	 */
+	EAttribute getLAttributeMatchingConstraint_ComparatorType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingValue <em>Matching Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Matching Value</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingValue()
+	 * @see #getLAttributeMatchingConstraint()
+	 * @generated
+	 */
+	EAttribute getLAttributeMatchingConstraint_MatchingValue();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingLiteral <em>Matching Literal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Matching Literal</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint#getMatchingLiteral()
+	 * @see #getLAttributeMatchingConstraint()
+	 * @generated
+	 */
+	EReference getLAttributeMatchingConstraint_MatchingLiteral();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint <em>LDatatype Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDatatype Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint
+	 * @generated
+	 */
+	EClass getLDatatypeConstraint();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgCode <em>Msg Code</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Msg Code</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgCode()
+	 * @see #getLDatatypeConstraint()
+	 * @generated
+	 */
+	EAttribute getLDatatypeConstraint_MsgCode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgI18nKey <em>Msg I1 8n Key</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Msg I1 8n Key</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getMsgI18nKey()
+	 * @see #getLDatatypeConstraint()
+	 * @generated
+	 */
+	EAttribute getLDatatypeConstraint_MsgI18nKey();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getSeverity <em>Severity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Severity</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#getSeverity()
+	 * @see #getLDatatypeConstraint()
+	 * @generated
+	 */
+	EAttribute getLDatatypeConstraint_Severity();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDatatypeConstraint__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint <em>LString Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LString Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint
+	 * @generated
+	 */
+	EClass getLStringConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint <em>LNumeric Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LNumeric Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint
+	 * @generated
+	 */
+	EClass getLNumericConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint <em>LDecimal Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDecimal Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint
+	 * @generated
+	 */
+	EClass getLDecimalConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint <em>LDate Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDate Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint
+	 * @generated
+	 */
+	EClass getLDateConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint <em>LBoolean Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LBoolean Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint
+	 * @generated
+	 */
+	EClass getLBooleanConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint <em>LBlob Constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LBlob Constraint</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint
+	 * @generated
+	 */
+	EClass getLBlobConstraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse <em>LDt CAssert False</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CAssert False</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse
+	 * @generated
+	 */
+	EClass getLDtCAssertFalse();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCAssertFalse__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue <em>LDt CAssert True</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CAssert True</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue
+	 * @generated
+	 */
+	EClass getLDtCAssertTrue();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCAssertTrue__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax <em>LDt CDecimal Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CDecimal Max</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax
+	 * @generated
+	 */
+	EClass getLDtCDecimalMax();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax#getMax <em>Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax#getMax()
+	 * @see #getLDtCDecimalMax()
+	 * @generated
+	 */
+	EAttribute getLDtCDecimalMax_Max();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCDecimalMax__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin <em>LDt CDecimal Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CDecimal Min</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin
+	 * @generated
+	 */
+	EClass getLDtCDecimalMin();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin#getMin <em>Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin#getMin()
+	 * @see #getLDtCDecimalMin()
+	 * @generated
+	 */
+	EAttribute getLDtCDecimalMin_Min();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCDecimalMin__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits <em>LDt CDigits</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CDigits</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits
+	 * @generated
+	 */
+	EClass getLDtCDigits();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getIntDigits <em>Int Digits</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Int Digits</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getIntDigits()
+	 * @see #getLDtCDigits()
+	 * @generated
+	 */
+	EAttribute getLDtCDigits_IntDigits();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getFractionDigits <em>Fraction Digits</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Fraction Digits</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#getFractionDigits()
+	 * @see #getLDtCDigits()
+	 * @generated
+	 */
+	EAttribute getLDtCDigits_FractionDigits();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCDigits__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture <em>LDt CFuture</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CFuture</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture
+	 * @generated
+	 */
+	EClass getLDtCFuture();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCFuture__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCPast <em>LDt CPast</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CPast</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCPast
+	 * @generated
+	 */
+	EClass getLDtCPast();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCPast#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCPast#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCPast__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax <em>LDt CNumeric Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CNumeric Max</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax
+	 * @generated
+	 */
+	EClass getLDtCNumericMax();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax#getMax <em>Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax#getMax()
+	 * @see #getLDtCNumericMax()
+	 * @generated
+	 */
+	EAttribute getLDtCNumericMax_Max();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCNumericMax__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin <em>LDt CNumeric Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CNumeric Min</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin
+	 * @generated
+	 */
+	EClass getLDtCNumericMin();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin#getMin <em>Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin#getMin()
+	 * @see #getLDtCNumericMin()
+	 * @generated
+	 */
+	EAttribute getLDtCNumericMin_Min();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCNumericMin__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull <em>LDt CNot Null</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CNot Null</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull
+	 * @generated
+	 */
+	EClass getLDtCNotNull();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCNotNull__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNull <em>LDt CNull</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CNull</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNull
+	 * @generated
+	 */
+	EClass getLDtCNull();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNull#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCNull#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCNull__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx <em>LDt CReg Ex</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CReg Ex</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx
+	 * @generated
+	 */
+	EClass getLDtCRegEx();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx#getPattern <em>Pattern</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Pattern</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx#getPattern()
+	 * @see #getLDtCRegEx()
+	 * @generated
+	 */
+	EAttribute getLDtCRegEx_Pattern();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCRegEx__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize <em>LDt CSize</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDt CSize</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCSize
+	 * @generated
+	 */
+	EClass getLDtCSize();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMin <em>Min</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMin()
+	 * @see #getLDtCSize()
+	 * @generated
+	 */
+	EAttribute getLDtCSize_Min();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMax <em>Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#getMax()
+	 * @see #getLDtCSize()
+	 * @generated
+	 */
+	EAttribute getLDtCSize_Max();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#isForPrimitives() <em>Is For Primitives</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Is For Primitives</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDtCSize#isForPrimitives()
+	 * @generated
+	 */
+	EOperation getLDtCSize__IsForPrimitives();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateType <em>LDate Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LDate Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+	 * @generated
+	 */
+	EEnum getLDateType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.common.types.LVisibility <em>LVisibility</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LVisibility</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LVisibility
+	 * @generated
+	 */
+	EEnum getLVisibility();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.common.types.LLowerBound <em>LLower Bound</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LLower Bound</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LLowerBound
+	 * @generated
+	 */
+	EEnum getLLowerBound();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.common.types.LUpperBound <em>LUpper Bound</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LUpper Bound</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LUpperBound
+	 * @generated
+	 */
+	EEnum getLUpperBound();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.common.types.LComparatorType <em>LComparator Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LComparator Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LComparatorType
+	 * @generated
+	 */
+	EEnum getLComparatorType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity <em>LConstraint Severity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LConstraint Severity</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity
+	 * @generated
+	 */
+	EEnum getLConstraintSeverity();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Operations List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Operations List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getOperationsList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Features List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Features List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getFeaturesList();
+
+	/**
+	 * Returns the meta object for data type '{@link org.eclipse.emf.common.util.EList <em>Annotation List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Annotation List</em>'.
+	 * @see org.eclipse.emf.common.util.EList
+	 * @generated
+	 */
+	EDataType getAnnotationList();
+
+	/**
+	 * 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
+	 * @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
+	 */
+	OSBPTypesFactory getOSBPTypesFactory();
+
+	/**
+	 * <!-- 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.dsl.semantic.common.types.impl.LCommonModelImpl <em>LCommon Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LCommonModelImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLCommonModel()
+		 * @generated
+		 */
+		EClass LCOMMON_MODEL = eINSTANCE.getLCommonModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LCOMMON_MODEL__PACKAGES = eINSTANCE.getLCommonModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl <em>LLazy Resolver</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLLazyResolver()
+		 * @generated
+		 */
+		EClass LLAZY_RESOLVER = eINSTANCE.getLLazyResolver();
+
+		/**
+		 * The meta object literal for the '<em><b>EResolve Proxy</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT = eINSTANCE.getLLazyResolver__EResolveProxy__InternalEObject();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl <em>LPackage</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLPackage()
+		 * @generated
+		 */
+		EClass LPACKAGE = eINSTANCE.getLPackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LPACKAGE__NAME = eINSTANCE.getLPackage_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Imports</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LPACKAGE__IMPORTS = eINSTANCE.getLPackage_Imports();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypedPackageImpl <em>LTyped Package</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LTypedPackageImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLTypedPackage()
+		 * @generated
+		 */
+		EClass LTYPED_PACKAGE = eINSTANCE.getLTypedPackage();
+
+		/**
+		 * The meta object literal for the '<em><b>Types</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LTYPED_PACKAGE__TYPES = eINSTANCE.getLTypedPackage_Types();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Resource Simple Name</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LTYPED_PACKAGE___GET_RESOURCE_SIMPLE_NAME = eINSTANCE.getLTypedPackage__GetResourceSimpleName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LImportImpl <em>LImport</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LImportImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLImport()
+		 * @generated
+		 */
+		EClass LIMPORT = eINSTANCE.getLImport();
+
+		/**
+		 * The meta object literal for the '<em><b>Imported Namespace</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LIMPORT__IMPORTED_NAMESPACE = eINSTANCE.getLImport_ImportedNamespace();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypeImpl <em>LType</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LTypeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLType()
+		 * @generated
+		 */
+		EClass LTYPE = eINSTANCE.getLType();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTYPE__NAME = eINSTANCE.getLType_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Annotation Info</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LTYPE__ANNOTATION_INFO = eINSTANCE.getLType_AnnotationInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Resolved Annotations</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LTYPE___GET_RESOLVED_ANNOTATIONS = eINSTANCE.getLType__GetResolvedAnnotations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationDefImpl <em>LAnnotation Def</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationDefImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAnnotationDef()
+		 * @generated
+		 */
+		EClass LANNOTATION_DEF = eINSTANCE.getLAnnotationDef();
+
+		/**
+		 * The meta object literal for the '<em><b>Exclude</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LANNOTATION_DEF__EXCLUDE = eINSTANCE.getLAnnotationDef_Exclude();
+
+		/**
+		 * The meta object literal for the '<em><b>Annotation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LANNOTATION_DEF__ANNOTATION = eINSTANCE.getLAnnotationDef_Annotation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl <em>LAnnotation Target</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAnnotationTarget()
+		 * @generated
+		 */
+		EClass LANNOTATION_TARGET = eINSTANCE.getLAnnotationTarget();
+
+		/**
+		 * The meta object literal for the '<em><b>Annotations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LANNOTATION_TARGET__ANNOTATIONS = eINSTANCE.getLAnnotationTarget_Annotations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LScalarTypeImpl <em>LScalar Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LScalarTypeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLScalarType()
+		 * @generated
+		 */
+		EClass LSCALAR_TYPE = eINSTANCE.getLScalarType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl <em>LData Type</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDataType()
+		 * @generated
+		 */
+		EClass LDATA_TYPE = eINSTANCE.getLDataType();
+
+		/**
+		 * The meta object literal for the '<em><b>Jvm Type Reference</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDATA_TYPE__JVM_TYPE_REFERENCE = eINSTANCE.getLDataType_JvmTypeReference();
+
+		/**
+		 * The meta object literal for the '<em><b>As Primitive</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__AS_PRIMITIVE = eINSTANCE.getLDataType_AsPrimitive();
+
+		/**
+		 * The meta object literal for the '<em><b>Date</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__DATE = eINSTANCE.getLDataType_Date();
+
+		/**
+		 * The meta object literal for the '<em><b>As Blob</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__AS_BLOB = eINSTANCE.getLDataType_AsBlob();
+
+		/**
+		 * The meta object literal for the '<em><b>Length</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__LENGTH = eINSTANCE.getLDataType_Length();
+
+		/**
+		 * The meta object literal for the '<em><b>Date Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__DATE_TYPE = eINSTANCE.getLDataType_DateType();
+
+		/**
+		 * The meta object literal for the '<em><b>Synthetic Flag</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__SYNTHETIC_FLAG = eINSTANCE.getLDataType_SyntheticFlag();
+
+		/**
+		 * The meta object literal for the '<em><b>Synthetic Selector</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATA_TYPE__SYNTHETIC_SELECTOR = eINSTANCE.getLDataType_SyntheticSelector();
+
+		/**
+		 * The meta object literal for the '<em><b>Synthetic Type Reference</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE = eINSTANCE.getLDataType_SyntheticTypeReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Synthetic Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDATA_TYPE__SYNTHETIC_TYPE = eINSTANCE.getLDataType_SyntheticType();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDATA_TYPE__PROPERTIES = eINSTANCE.getLDataType_Properties();
+
+		/**
+		 * The meta object literal for the '<em><b>Constraints</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDATA_TYPE__CONSTRAINTS = eINSTANCE.getLDataType_Constraints();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumImpl <em>LEnum</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLEnum()
+		 * @generated
+		 */
+		EClass LENUM = eINSTANCE.getLEnum();
+
+		/**
+		 * The meta object literal for the '<em><b>Literals</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENUM__LITERALS = eINSTANCE.getLEnum_Literals();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl <em>LEnum Literal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLEnumLiteral()
+		 * @generated
+		 */
+		EClass LENUM_LITERAL = eINSTANCE.getLEnumLiteral();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENUM_LITERAL__NAME = eINSTANCE.getLEnumLiteral_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Default</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENUM_LITERAL__DEFAULT = eINSTANCE.getLEnumLiteral_Default();
+
+		/**
+		 * The meta object literal for the '<em><b>Null</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENUM_LITERAL__NULL = eINSTANCE.getLEnumLiteral_Null();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENUM_LITERAL__VALUE = eINSTANCE.getLEnumLiteral_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl <em>LClass</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLClass()
+		 * @generated
+		 */
+		EClass LCLASS = eINSTANCE.getLClass();
+
+		/**
+		 * The meta object literal for the '<em><b>Abstract</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LCLASS__ABSTRACT = eINSTANCE.getLClass_Abstract();
+
+		/**
+		 * The meta object literal for the '<em><b>Serializable</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LCLASS__SERIALIZABLE = eINSTANCE.getLClass_Serializable();
+
+		/**
+		 * The meta object literal for the '<em><b>Short Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LCLASS__SHORT_NAME = eINSTANCE.getLClass_ShortName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLFeaturesHolder()
+		 * @generated
+		 */
+		EClass LFEATURES_HOLDER = eINSTANCE.getLFeaturesHolder();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Features</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LFEATURES_HOLDER___GET_FEATURES = eINSTANCE.getLFeaturesHolder__GetFeatures();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All Features</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LFEATURES_HOLDER___GET_ALL_FEATURES = eINSTANCE.getLFeaturesHolder__GetAllFeatures();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LFeature
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLFeature()
+		 * @generated
+		 */
+		EClass LFEATURE = eINSTANCE.getLFeature();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LFEATURE__NAME = eINSTANCE.getLFeature_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Multiplicity</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LFEATURE__MULTIPLICITY = eINSTANCE.getLFeature_Multiplicity();
+
+		/**
+		 * The meta object literal for the '<em><b>Annotation Info</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LFEATURE__ANNOTATION_INFO = eINSTANCE.getLFeature_AnnotationInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Resolved Annotations</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LFEATURE___GET_RESOLVED_ANNOTATIONS = eINSTANCE.getLFeature__GetResolvedAnnotations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference <em>LReference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LReference
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLReference()
+		 * @generated
+		 */
+		EClass LREFERENCE = eINSTANCE.getLReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Lazy</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__LAZY = eINSTANCE.getLReference_Lazy();
+
+		/**
+		 * The meta object literal for the '<em><b>Cascading</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LREFERENCE__CASCADING = eINSTANCE.getLReference_Cascading();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LREFERENCE__PROPERTIES = eINSTANCE.getLReference_Properties();
+
+		/**
+		 * The meta object literal for the '<em><b>Constraints</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LREFERENCE__CONSTRAINTS = eINSTANCE.getLReference_Constraints();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAttribute()
+		 * @generated
+		 */
+		EClass LATTRIBUTE = eINSTANCE.getLAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__ID = eINSTANCE.getLAttribute_Id();
+
+		/**
+		 * The meta object literal for the '<em><b>Uuid</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__UUID = eINSTANCE.getLAttribute_Uuid();
+
+		/**
+		 * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__VERSION = eINSTANCE.getLAttribute_Version();
+
+		/**
+		 * The meta object literal for the '<em><b>Lazy</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__LAZY = eINSTANCE.getLAttribute_Lazy();
+
+		/**
+		 * The meta object literal for the '<em><b>Cascading</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__CASCADING = eINSTANCE.getLAttribute_Cascading();
+
+		/**
+		 * The meta object literal for the '<em><b>Transient</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__TRANSIENT = eINSTANCE.getLAttribute_Transient();
+
+		/**
+		 * The meta object literal for the '<em><b>Derived</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__DERIVED = eINSTANCE.getLAttribute_Derived();
+
+		/**
+		 * The meta object literal for the '<em><b>Dirty</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__DIRTY = eINSTANCE.getLAttribute_Dirty();
+
+		/**
+		 * The meta object literal for the '<em><b>Domain Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__DOMAIN_KEY = eINSTANCE.getLAttribute_DomainKey();
+
+		/**
+		 * The meta object literal for the '<em><b>Domain Description</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE__DOMAIN_DESCRIPTION = eINSTANCE.getLAttribute_DomainDescription();
+
+		/**
+		 * The meta object literal for the '<em><b>Derived Getter Expression</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE__DERIVED_GETTER_EXPRESSION = eINSTANCE.getLAttribute_DerivedGetterExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE__TYPE = eINSTANCE.getLAttribute_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE__TYPE_JVM = eINSTANCE.getLAttribute_TypeJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Properties</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE__PROPERTIES = eINSTANCE.getLAttribute_Properties();
+
+		/**
+		 * The meta object literal for the '<em><b>Constraints</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE__CONSTRAINTS = eINSTANCE.getLAttribute_Constraints();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LKeyAndValueImpl <em>LKey And Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LKeyAndValueImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLKeyAndValue()
+		 * @generated
+		 */
+		EClass LKEY_AND_VALUE = eINSTANCE.getLKeyAndValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LKEY_AND_VALUE__KEY = eINSTANCE.getLKeyAndValue_Key();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LKEY_AND_VALUE__VALUE = eINSTANCE.getLKeyAndValue_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl <em>LOperation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLOperation()
+		 * @generated
+		 */
+		EClass LOPERATION = eINSTANCE.getLOperation();
+
+		/**
+		 * The meta object literal for the '<em><b>Modifier</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LOPERATION__MODIFIER = eINSTANCE.getLOperation_Modifier();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LOPERATION__TYPE = eINSTANCE.getLOperation_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Params</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LOPERATION__PARAMS = eINSTANCE.getLOperation_Params();
+
+		/**
+		 * The meta object literal for the '<em><b>Body</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LOPERATION__BODY = eINSTANCE.getLOperation_Body();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Resolved Annotations</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LOPERATION___GET_RESOLVED_ANNOTATIONS = eINSTANCE.getLOperation__GetResolvedAnnotations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl <em>LModifier</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLModifier()
+		 * @generated
+		 */
+		EClass LMODIFIER = eINSTANCE.getLModifier();
+
+		/**
+		 * The meta object literal for the '<em><b>Final</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LMODIFIER__FINAL = eINSTANCE.getLModifier_Final();
+
+		/**
+		 * The meta object literal for the '<em><b>Static</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LMODIFIER__STATIC = eINSTANCE.getLModifier_Static();
+
+		/**
+		 * The meta object literal for the '<em><b>Visibility</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LMODIFIER__VISIBILITY = eINSTANCE.getLModifier_Visibility();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl <em>LMultiplicity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLMultiplicity()
+		 * @generated
+		 */
+		EClass LMULTIPLICITY = eINSTANCE.getLMultiplicity();
+
+		/**
+		 * The meta object literal for the '<em><b>Lower</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LMULTIPLICITY__LOWER = eINSTANCE.getLMultiplicity_Lower();
+
+		/**
+		 * The meta object literal for the '<em><b>Upper</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LMULTIPLICITY__UPPER = eINSTANCE.getLMultiplicity_Upper();
+
+		/**
+		 * The meta object literal for the '<em><b>To Multiplicity String</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LMULTIPLICITY__TO_MULTIPLICITY_STRING = eINSTANCE.getLMultiplicity_ToMultiplicityString();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraint <em>LConstraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLConstraint()
+		 * @generated
+		 */
+		EClass LCONSTRAINT = eINSTANCE.getLConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LResultFiltersImpl <em>LResult Filters</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LResultFiltersImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLResultFilters()
+		 * @generated
+		 */
+		EClass LRESULT_FILTERS = eINSTANCE.getLResultFilters();
+
+		/**
+		 * The meta object literal for the '<em><b>Result Filters</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LRESULT_FILTERS__RESULT_FILTERS = eINSTANCE.getLResultFilters_ResultFilters();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilter <em>LResult Filter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LResultFilter
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLResultFilter()
+		 * @generated
+		 */
+		EClass LRESULT_FILTER = eINSTANCE.getLResultFilter();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl <em>LAttribute Matching Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLAttributeMatchingConstraint()
+		 * @generated
+		 */
+		EClass LATTRIBUTE_MATCHING_CONSTRAINT = eINSTANCE.getLAttributeMatchingConstraint();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE = eINSTANCE.getLAttributeMatchingConstraint_Attribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Comparator Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE = eINSTANCE.getLAttributeMatchingConstraint_ComparatorType();
+
+		/**
+		 * The meta object literal for the '<em><b>Matching Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE = eINSTANCE.getLAttributeMatchingConstraint_MatchingValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Matching Literal</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL = eINSTANCE.getLAttributeMatchingConstraint_MatchingLiteral();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint <em>LDatatype Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDatatypeConstraint()
+		 * @generated
+		 */
+		EClass LDATATYPE_CONSTRAINT = eINSTANCE.getLDatatypeConstraint();
+
+		/**
+		 * The meta object literal for the '<em><b>Msg Code</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATATYPE_CONSTRAINT__MSG_CODE = eINSTANCE.getLDatatypeConstraint_MsgCode();
+
+		/**
+		 * The meta object literal for the '<em><b>Msg I1 8n Key</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY = eINSTANCE.getLDatatypeConstraint_MsgI18nKey();
+
+		/**
+		 * The meta object literal for the '<em><b>Severity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDATATYPE_CONSTRAINT__SEVERITY = eINSTANCE.getLDatatypeConstraint_Severity();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES = eINSTANCE.getLDatatypeConstraint__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint <em>LString Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLStringConstraint()
+		 * @generated
+		 */
+		EClass LSTRING_CONSTRAINT = eINSTANCE.getLStringConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint <em>LNumeric Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLNumericConstraint()
+		 * @generated
+		 */
+		EClass LNUMERIC_CONSTRAINT = eINSTANCE.getLNumericConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint <em>LDecimal Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDecimalConstraint()
+		 * @generated
+		 */
+		EClass LDECIMAL_CONSTRAINT = eINSTANCE.getLDecimalConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint <em>LDate Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDateConstraint()
+		 * @generated
+		 */
+		EClass LDATE_CONSTRAINT = eINSTANCE.getLDateConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint <em>LBoolean Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLBooleanConstraint()
+		 * @generated
+		 */
+		EClass LBOOLEAN_CONSTRAINT = eINSTANCE.getLBooleanConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint <em>LBlob Constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLBlobConstraint()
+		 * @generated
+		 */
+		EClass LBLOB_CONSTRAINT = eINSTANCE.getLBlobConstraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl <em>LDt CAssert False</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCAssertFalse()
+		 * @generated
+		 */
+		EClass LDT_CASSERT_FALSE = eINSTANCE.getLDtCAssertFalse();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CASSERT_FALSE___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCAssertFalse__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl <em>LDt CAssert True</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCAssertTrue()
+		 * @generated
+		 */
+		EClass LDT_CASSERT_TRUE = eINSTANCE.getLDtCAssertTrue();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CASSERT_TRUE___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCAssertTrue__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl <em>LDt CDecimal Max</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCDecimalMax()
+		 * @generated
+		 */
+		EClass LDT_CDECIMAL_MAX = eINSTANCE.getLDtCDecimalMax();
+
+		/**
+		 * The meta object literal for the '<em><b>Max</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CDECIMAL_MAX__MAX = eINSTANCE.getLDtCDecimalMax_Max();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CDECIMAL_MAX___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCDecimalMax__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl <em>LDt CDecimal Min</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCDecimalMin()
+		 * @generated
+		 */
+		EClass LDT_CDECIMAL_MIN = eINSTANCE.getLDtCDecimalMin();
+
+		/**
+		 * The meta object literal for the '<em><b>Min</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CDECIMAL_MIN__MIN = eINSTANCE.getLDtCDecimalMin_Min();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CDECIMAL_MIN___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCDecimalMin__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl <em>LDt CDigits</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCDigits()
+		 * @generated
+		 */
+		EClass LDT_CDIGITS = eINSTANCE.getLDtCDigits();
+
+		/**
+		 * The meta object literal for the '<em><b>Int Digits</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CDIGITS__INT_DIGITS = eINSTANCE.getLDtCDigits_IntDigits();
+
+		/**
+		 * The meta object literal for the '<em><b>Fraction Digits</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CDIGITS__FRACTION_DIGITS = eINSTANCE.getLDtCDigits_FractionDigits();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CDIGITS___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCDigits__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl <em>LDt CFuture</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCFuture()
+		 * @generated
+		 */
+		EClass LDT_CFUTURE = eINSTANCE.getLDtCFuture();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CFUTURE___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCFuture__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl <em>LDt CPast</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCPast()
+		 * @generated
+		 */
+		EClass LDT_CPAST = eINSTANCE.getLDtCPast();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CPAST___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCPast__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl <em>LDt CNumeric Max</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNumericMax()
+		 * @generated
+		 */
+		EClass LDT_CNUMERIC_MAX = eINSTANCE.getLDtCNumericMax();
+
+		/**
+		 * The meta object literal for the '<em><b>Max</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CNUMERIC_MAX__MAX = eINSTANCE.getLDtCNumericMax_Max();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CNUMERIC_MAX___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCNumericMax__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl <em>LDt CNumeric Min</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNumericMin()
+		 * @generated
+		 */
+		EClass LDT_CNUMERIC_MIN = eINSTANCE.getLDtCNumericMin();
+
+		/**
+		 * The meta object literal for the '<em><b>Min</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CNUMERIC_MIN__MIN = eINSTANCE.getLDtCNumericMin_Min();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CNUMERIC_MIN___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCNumericMin__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl <em>LDt CNot Null</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNotNull()
+		 * @generated
+		 */
+		EClass LDT_CNOT_NULL = eINSTANCE.getLDtCNotNull();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CNOT_NULL___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCNotNull__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl <em>LDt CNull</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCNull()
+		 * @generated
+		 */
+		EClass LDT_CNULL = eINSTANCE.getLDtCNull();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CNULL___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCNull__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl <em>LDt CReg Ex</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCRegEx()
+		 * @generated
+		 */
+		EClass LDT_CREG_EX = eINSTANCE.getLDtCRegEx();
+
+		/**
+		 * The meta object literal for the '<em><b>Pattern</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CREG_EX__PATTERN = eINSTANCE.getLDtCRegEx_Pattern();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CREG_EX___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCRegEx__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl <em>LDt CSize</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDtCSize()
+		 * @generated
+		 */
+		EClass LDT_CSIZE = eINSTANCE.getLDtCSize();
+
+		/**
+		 * The meta object literal for the '<em><b>Min</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CSIZE__MIN = eINSTANCE.getLDtCSize_Min();
+
+		/**
+		 * The meta object literal for the '<em><b>Max</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDT_CSIZE__MAX = eINSTANCE.getLDtCSize_Max();
+
+		/**
+		 * The meta object literal for the '<em><b>Is For Primitives</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LDT_CSIZE___IS_FOR_PRIMITIVES = eINSTANCE.getLDtCSize__IsForPrimitives();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateType <em>LDate Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLDateType()
+		 * @generated
+		 */
+		EEnum LDATE_TYPE = eINSTANCE.getLDateType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LVisibility <em>LVisibility</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LVisibility
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLVisibility()
+		 * @generated
+		 */
+		EEnum LVISIBILITY = eINSTANCE.getLVisibility();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LLowerBound <em>LLower Bound</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LLowerBound
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLLowerBound()
+		 * @generated
+		 */
+		EEnum LLOWER_BOUND = eINSTANCE.getLLowerBound();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LUpperBound <em>LUpper Bound</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LUpperBound
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLUpperBound()
+		 * @generated
+		 */
+		EEnum LUPPER_BOUND = eINSTANCE.getLUpperBound();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LComparatorType <em>LComparator Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LComparatorType
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLComparatorType()
+		 * @generated
+		 */
+		EEnum LCOMPARATOR_TYPE = eINSTANCE.getLComparatorType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity <em>LConstraint Severity</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getLConstraintSeverity()
+		 * @generated
+		 */
+		EEnum LCONSTRAINT_SEVERITY = eINSTANCE.getLConstraintSeverity();
+
+		/**
+		 * The meta object literal for the '<em>Operations List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getOperationsList()
+		 * @generated
+		 */
+		EDataType OPERATIONS_LIST = eINSTANCE.getOperationsList();
+
+		/**
+		 * The meta object literal for the '<em>Features List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getFeaturesList()
+		 * @generated
+		 */
+		EDataType FEATURES_LIST = eINSTANCE.getFeaturesList();
+
+		/**
+		 * The meta object literal for the '<em>Annotation List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.emf.common.util.EList
+		 * @see org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getAnnotationList()
+		 * @generated
+		 */
+		EDataType ANNOTATION_LIST = eINSTANCE.getAnnotationList();
+
+		/**
+		 * 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.dsl.semantic.common.types.impl.OSBPTypesPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+	}
+
+} //OSBPTypesPackage
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java
new file mode 100644
index 0000000..f2f8bee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationDefImpl.java
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LAnnotation Def</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationDefImpl#isExclude <em>Exclude</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationDefImpl#getAnnotation <em>Annotation</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LAnnotationDefImpl extends LLazyResolverImpl implements LAnnotationDef {
+	/**
+	 * The default value of the '{@link #isExclude() <em>Exclude</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExclude()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean EXCLUDE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isExclude() <em>Exclude</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isExclude()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean exclude = EXCLUDE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAnnotation() <em>Annotation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotation()
+	 * @generated
+	 * @ordered
+	 */
+	protected XAnnotation annotation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAnnotationDefImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LANNOTATION_DEF;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isExclude() {
+		return exclude;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setExclude(boolean newExclude) {
+		boolean oldExclude = exclude;
+		exclude = newExclude;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LANNOTATION_DEF__EXCLUDE, oldExclude, exclude));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XAnnotation getAnnotation() {
+		return annotation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotation(XAnnotation newAnnotation, NotificationChain msgs) {
+		XAnnotation oldAnnotation = annotation;
+		annotation = newAnnotation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION, oldAnnotation, newAnnotation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotation(XAnnotation newAnnotation) {
+		if (newAnnotation != annotation) {
+			NotificationChain msgs = null;
+			if (annotation != null)
+				msgs = ((InternalEObject)annotation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION, null, msgs);
+			if (newAnnotation != null)
+				msgs = ((InternalEObject)newAnnotation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION, null, msgs);
+			msgs = basicSetAnnotation(newAnnotation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION, newAnnotation, newAnnotation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION:
+				return basicSetAnnotation(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 OSBPTypesPackage.LANNOTATION_DEF__EXCLUDE:
+				return isExclude();
+			case OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION:
+				return getAnnotation();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_DEF__EXCLUDE:
+				setExclude((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION:
+				setAnnotation((XAnnotation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_DEF__EXCLUDE:
+				setExclude(EXCLUDE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION:
+				setAnnotation((XAnnotation)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_DEF__EXCLUDE:
+				return exclude != EXCLUDE_EDEFAULT;
+			case OSBPTypesPackage.LANNOTATION_DEF__ANNOTATION:
+				return annotation != 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(" (exclude: ");
+		result.append(exclude);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LAnnotationDefImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java
new file mode 100644
index 0000000..dd9927e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAnnotationTargetImpl.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LAnnotation Target</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl#getAnnotations <em>Annotations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LAnnotationTargetImpl extends LLazyResolverImpl implements LAnnotationTarget {
+	/**
+	 * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LAnnotationDef> annotations;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAnnotationTargetImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LANNOTATION_TARGET;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (annotations == null) {
+			annotations = new EObjectContainmentEList<LAnnotationDef>(LAnnotationDef.class, this, OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS);
+		}
+		return annotations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS:
+				return ((InternalEList<?>)getAnnotations()).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 OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS:
+				return getAnnotations();
+		}
+		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 OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS:
+				getAnnotations().clear();
+				getAnnotations().addAll((Collection<? extends LAnnotationDef>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS:
+				getAnnotations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LANNOTATION_TARGET__ANNOTATIONS:
+				return annotations != null && !annotations.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LAnnotationTargetImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java
new file mode 100644
index 0000000..d4e7007
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LAttributeMatchingConstraintImpl.java
@@ -0,0 +1,351 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LComparatorType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LAttribute Matching Constraint</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl#getAttribute <em>Attribute</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl#getComparatorType <em>Comparator Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl#getMatchingValue <em>Matching Value</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LAttributeMatchingConstraintImpl#getMatchingLiteral <em>Matching Literal</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LAttributeMatchingConstraintImpl extends LLazyResolverImpl implements LAttributeMatchingConstraint {
+	/**
+	 * The cached value of the '{@link #getAttribute() <em>Attribute</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttribute()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAttribute attribute;
+
+	/**
+	 * The default value of the '{@link #getComparatorType() <em>Comparator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComparatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LComparatorType COMPARATOR_TYPE_EDEFAULT = LComparatorType.EQUALS;
+
+	/**
+	 * The cached value of the '{@link #getComparatorType() <em>Comparator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComparatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LComparatorType comparatorType = COMPARATOR_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMatchingValue() <em>Matching Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMatchingValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MATCHING_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMatchingValue() <em>Matching Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMatchingValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String matchingValue = MATCHING_VALUE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getMatchingLiteral() <em>Matching Literal</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMatchingLiteral()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEnumLiteral matchingLiteral;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAttributeMatchingConstraintImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAttribute getAttribute() {
+		if (attribute != null && attribute.eIsProxy()) {
+			InternalEObject oldAttribute = (InternalEObject)attribute;
+			attribute = (LAttribute)eResolveProxy(oldAttribute);
+			if (attribute != oldAttribute) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE, oldAttribute, attribute));
+			}
+		}
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAttribute basicGetAttribute() {
+		return attribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttribute(LAttribute newAttribute) {
+		LAttribute oldAttribute = attribute;
+		attribute = newAttribute;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE, oldAttribute, attribute));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LComparatorType getComparatorType() {
+		return comparatorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComparatorType(LComparatorType newComparatorType) {
+		LComparatorType oldComparatorType = comparatorType;
+		comparatorType = newComparatorType == null ? COMPARATOR_TYPE_EDEFAULT : newComparatorType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE, oldComparatorType, comparatorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMatchingValue() {
+		return matchingValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMatchingValue(String newMatchingValue) {
+		String oldMatchingValue = matchingValue;
+		matchingValue = newMatchingValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE, oldMatchingValue, matchingValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEnumLiteral getMatchingLiteral() {
+		if (matchingLiteral != null && matchingLiteral.eIsProxy()) {
+			InternalEObject oldMatchingLiteral = (InternalEObject)matchingLiteral;
+			matchingLiteral = (LEnumLiteral)eResolveProxy(oldMatchingLiteral);
+			if (matchingLiteral != oldMatchingLiteral) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL, oldMatchingLiteral, matchingLiteral));
+			}
+		}
+		return matchingLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEnumLiteral basicGetMatchingLiteral() {
+		return matchingLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMatchingLiteral(LEnumLiteral newMatchingLiteral) {
+		LEnumLiteral oldMatchingLiteral = matchingLiteral;
+		matchingLiteral = newMatchingLiteral;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL, oldMatchingLiteral, matchingLiteral));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE:
+				if (resolve) return getAttribute();
+				return basicGetAttribute();
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE:
+				return getComparatorType();
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE:
+				return getMatchingValue();
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL:
+				if (resolve) return getMatchingLiteral();
+				return basicGetMatchingLiteral();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE:
+				setAttribute((LAttribute)newValue);
+				return;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE:
+				setComparatorType((LComparatorType)newValue);
+				return;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE:
+				setMatchingValue((String)newValue);
+				return;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL:
+				setMatchingLiteral((LEnumLiteral)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE:
+				setAttribute((LAttribute)null);
+				return;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE:
+				setComparatorType(COMPARATOR_TYPE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE:
+				setMatchingValue(MATCHING_VALUE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL:
+				setMatchingLiteral((LEnumLiteral)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE:
+				return attribute != null;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE:
+				return comparatorType != COMPARATOR_TYPE_EDEFAULT;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE:
+				return MATCHING_VALUE_EDEFAULT == null ? matchingValue != null : !MATCHING_VALUE_EDEFAULT.equals(matchingValue);
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL:
+				return matchingLiteral != 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(" (comparatorType: ");
+		result.append(comparatorType);
+		result.append(", matchingValue: ");
+		result.append(matchingValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LAttributeMatchingConstraintImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
new file mode 100644
index 0000000..944f2c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LClassImpl.java
@@ -0,0 +1,281 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LClass</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl#isAbstract <em>Abstract</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl#isSerializable <em>Serializable</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl#getShortName <em>Short Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LClassImpl extends LTypeImpl implements LClass {
+	/**
+	 * The default value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAbstract()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ABSTRACT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAbstract() <em>Abstract</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAbstract()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean abstract_ = ABSTRACT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isSerializable() <em>Serializable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSerializable()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SERIALIZABLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSerializable() <em>Serializable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSerializable()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean serializable = SERIALIZABLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getShortName() <em>Short Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getShortName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SHORT_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getShortName() <em>Short Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getShortName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String shortName = SHORT_NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LClassImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LCLASS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAbstract() {
+		return abstract_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAbstract(boolean newAbstract) {
+		boolean oldAbstract = abstract_;
+		abstract_ = newAbstract;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LCLASS__ABSTRACT, oldAbstract, abstract_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSerializable() {
+		return serializable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSerializable(boolean newSerializable) {
+		boolean oldSerializable = serializable;
+		serializable = newSerializable;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LCLASS__SERIALIZABLE, oldSerializable, serializable));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getShortName() {
+		return shortName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setShortName(String newShortName) {
+		String oldShortName = shortName;
+		shortName = newShortName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LCLASS__SHORT_NAME, oldShortName, shortName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCLASS__ABSTRACT:
+				return isAbstract();
+			case OSBPTypesPackage.LCLASS__SERIALIZABLE:
+				return isSerializable();
+			case OSBPTypesPackage.LCLASS__SHORT_NAME:
+				return getShortName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCLASS__ABSTRACT:
+				setAbstract((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LCLASS__SERIALIZABLE:
+				setSerializable((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LCLASS__SHORT_NAME:
+				setShortName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCLASS__ABSTRACT:
+				setAbstract(ABSTRACT_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LCLASS__SERIALIZABLE:
+				setSerializable(SERIALIZABLE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LCLASS__SHORT_NAME:
+				setShortName(SHORT_NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCLASS__ABSTRACT:
+				return abstract_ != ABSTRACT_EDEFAULT;
+			case OSBPTypesPackage.LCLASS__SERIALIZABLE:
+				return serializable != SERIALIZABLE_EDEFAULT;
+			case OSBPTypesPackage.LCLASS__SHORT_NAME:
+				return SHORT_NAME_EDEFAULT == null ? shortName != null : !SHORT_NAME_EDEFAULT.equals(shortName);
+		}
+		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(" (abstract: ");
+		result.append(abstract_);
+		result.append(", serializable: ");
+		result.append(serializable);
+		result.append(", shortName: ");
+		result.append(shortName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LClassImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java
new file mode 100644
index 0000000..dd8dd18
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LCommonModelImpl.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.LCommonModel;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LCommon Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LCommonModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LCommonModelImpl extends LLazyResolverImpl implements LCommonModel {
+	/**
+	 * 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<LTypedPackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LCommonModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LCOMMON_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LTypedPackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<LTypedPackage>(LTypedPackage.class, this, OSBPTypesPackage.LCOMMON_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCOMMON_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 OSBPTypesPackage.LCOMMON_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 OSBPTypesPackage.LCOMMON_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends LTypedPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCOMMON_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LCOMMON_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LCommonModelImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java
new file mode 100644
index 0000000..e557b7a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDataTypeImpl.java
@@ -0,0 +1,784 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LDateType;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LData Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getJvmTypeReference <em>Jvm Type Reference</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#isAsPrimitive <em>As Primitive</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#isDate <em>Date</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#isAsBlob <em>As Blob</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getLength <em>Length</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getDateType <em>Date Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#isSyntheticFlag <em>Synthetic Flag</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getSyntheticSelector <em>Synthetic Selector</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getSyntheticTypeReference <em>Synthetic Type Reference</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getSyntheticType <em>Synthetic Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDataTypeImpl#getConstraints <em>Constraints</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDataTypeImpl extends LScalarTypeImpl implements LDataType {
+	/**
+	 * The cached value of the '{@link #getJvmTypeReference() <em>Jvm Type Reference</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getJvmTypeReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference jvmTypeReference;
+
+	/**
+	 * The default value of the '{@link #isAsPrimitive() <em>As Primitive</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsPrimitive()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean AS_PRIMITIVE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAsPrimitive() <em>As Primitive</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsPrimitive()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean asPrimitive = AS_PRIMITIVE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDate() <em>Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DATE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDate() <em>Date</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDate()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean date = DATE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAsBlob() <em>As Blob</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsBlob()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean AS_BLOB_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAsBlob() <em>As Blob</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAsBlob()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean asBlob = AS_BLOB_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLength() <em>Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int LENGTH_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getLength() <em>Length</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLength()
+	 * @generated
+	 * @ordered
+	 */
+	protected int length = LENGTH_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDateType() <em>Date Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LDateType DATE_TYPE_EDEFAULT = LDateType.DATE;
+
+	/**
+	 * The cached value of the '{@link #getDateType() <em>Date Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDateType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDateType dateType = DATE_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isSyntheticFlag() <em>Synthetic Flag</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSyntheticFlag()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SYNTHETIC_FLAG_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSyntheticFlag() <em>Synthetic Flag</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSyntheticFlag()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean syntheticFlag = SYNTHETIC_FLAG_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSyntheticSelector() <em>Synthetic Selector</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSyntheticSelector()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SYNTHETIC_SELECTOR_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSyntheticSelector() <em>Synthetic Selector</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSyntheticSelector()
+	 * @generated
+	 * @ordered
+	 */
+	protected String syntheticSelector = SYNTHETIC_SELECTOR_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSyntheticTypeReference() <em>Synthetic Type Reference</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSyntheticTypeReference()
+	 * @generated
+	 * @ordered
+	 */
+	protected LFeature syntheticTypeReference;
+
+	/**
+	 * The cached value of the '{@link #getSyntheticType() <em>Synthetic Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSyntheticType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LType syntheticType;
+
+	/**
+	 * 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<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDataTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDATA_TYPE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getJvmTypeReference() {
+		return jvmTypeReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetJvmTypeReference(JvmTypeReference newJvmTypeReference, NotificationChain msgs) {
+		JvmTypeReference oldJvmTypeReference = jvmTypeReference;
+		jvmTypeReference = newJvmTypeReference;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE, oldJvmTypeReference, newJvmTypeReference);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setJvmTypeReference(JvmTypeReference newJvmTypeReference) {
+		if (newJvmTypeReference != jvmTypeReference) {
+			NotificationChain msgs = null;
+			if (jvmTypeReference != null)
+				msgs = ((InternalEObject)jvmTypeReference).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE, null, msgs);
+			if (newJvmTypeReference != null)
+				msgs = ((InternalEObject)newJvmTypeReference).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE, null, msgs);
+			msgs = basicSetJvmTypeReference(newJvmTypeReference, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE, newJvmTypeReference, newJvmTypeReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAsPrimitive() {
+		return asPrimitive;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAsPrimitive(boolean newAsPrimitive) {
+		boolean oldAsPrimitive = asPrimitive;
+		asPrimitive = newAsPrimitive;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__AS_PRIMITIVE, oldAsPrimitive, asPrimitive));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDate() {
+		return date;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDate(boolean newDate) {
+		boolean oldDate = date;
+		date = newDate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__DATE, oldDate, date));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isAsBlob() {
+		return asBlob;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAsBlob(boolean newAsBlob) {
+		boolean oldAsBlob = asBlob;
+		asBlob = newAsBlob;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__AS_BLOB, oldAsBlob, asBlob));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getLength() {
+		return length;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLength(int newLength) {
+		int oldLength = length;
+		length = newLength;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__LENGTH, oldLength, length));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDateType getDateType() {
+		return dateType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDateType(LDateType newDateType) {
+		LDateType oldDateType = dateType;
+		dateType = newDateType == null ? DATE_TYPE_EDEFAULT : newDateType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__DATE_TYPE, oldDateType, dateType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSyntheticFlag() {
+		return syntheticFlag;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSyntheticFlag(boolean newSyntheticFlag) {
+		boolean oldSyntheticFlag = syntheticFlag;
+		syntheticFlag = newSyntheticFlag;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_FLAG, oldSyntheticFlag, syntheticFlag));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSyntheticSelector() {
+		return syntheticSelector;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSyntheticSelector(String newSyntheticSelector) {
+		String oldSyntheticSelector = syntheticSelector;
+		syntheticSelector = newSyntheticSelector;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_SELECTOR, oldSyntheticSelector, syntheticSelector));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFeature getSyntheticTypeReference() {
+		if (syntheticTypeReference != null && syntheticTypeReference.eIsProxy()) {
+			InternalEObject oldSyntheticTypeReference = (InternalEObject)syntheticTypeReference;
+			syntheticTypeReference = (LFeature)eResolveProxy(oldSyntheticTypeReference);
+			if (syntheticTypeReference != oldSyntheticTypeReference) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE, oldSyntheticTypeReference, syntheticTypeReference));
+			}
+		}
+		return syntheticTypeReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFeature basicGetSyntheticTypeReference() {
+		return syntheticTypeReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSyntheticTypeReference(LFeature newSyntheticTypeReference) {
+		LFeature oldSyntheticTypeReference = syntheticTypeReference;
+		syntheticTypeReference = newSyntheticTypeReference;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE, oldSyntheticTypeReference, syntheticTypeReference));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType getSyntheticType() {
+		if (syntheticType != null && syntheticType.eIsProxy()) {
+			InternalEObject oldSyntheticType = (InternalEObject)syntheticType;
+			syntheticType = (LType)eResolveProxy(oldSyntheticType);
+			if (syntheticType != oldSyntheticType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE, oldSyntheticType, syntheticType));
+			}
+		}
+		return syntheticType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType basicGetSyntheticType() {
+		return syntheticType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSyntheticType(LType newSyntheticType) {
+		LType oldSyntheticType = syntheticType;
+		syntheticType = newSyntheticType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE, oldSyntheticType, syntheticType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPTypesPackage.LDATA_TYPE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE:
+				return basicSetJvmTypeReference(null, msgs);
+			case OSBPTypesPackage.LDATA_TYPE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).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 OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE:
+				return getJvmTypeReference();
+			case OSBPTypesPackage.LDATA_TYPE__AS_PRIMITIVE:
+				return isAsPrimitive();
+			case OSBPTypesPackage.LDATA_TYPE__DATE:
+				return isDate();
+			case OSBPTypesPackage.LDATA_TYPE__AS_BLOB:
+				return isAsBlob();
+			case OSBPTypesPackage.LDATA_TYPE__LENGTH:
+				return getLength();
+			case OSBPTypesPackage.LDATA_TYPE__DATE_TYPE:
+				return getDateType();
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_FLAG:
+				return isSyntheticFlag();
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_SELECTOR:
+				return getSyntheticSelector();
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE:
+				if (resolve) return getSyntheticTypeReference();
+				return basicGetSyntheticTypeReference();
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE:
+				if (resolve) return getSyntheticType();
+				return basicGetSyntheticType();
+			case OSBPTypesPackage.LDATA_TYPE__PROPERTIES:
+				return getProperties();
+			case OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS:
+				return getConstraints();
+		}
+		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 OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE:
+				setJvmTypeReference((JvmTypeReference)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__AS_PRIMITIVE:
+				setAsPrimitive((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__DATE:
+				setDate((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__AS_BLOB:
+				setAsBlob((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__LENGTH:
+				setLength((Integer)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__DATE_TYPE:
+				setDateType((LDateType)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_FLAG:
+				setSyntheticFlag((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_SELECTOR:
+				setSyntheticSelector((String)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE:
+				setSyntheticTypeReference((LFeature)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE:
+				setSyntheticType((LType)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE:
+				setJvmTypeReference((JvmTypeReference)null);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__AS_PRIMITIVE:
+				setAsPrimitive(AS_PRIMITIVE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__DATE:
+				setDate(DATE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__AS_BLOB:
+				setAsBlob(AS_BLOB_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__LENGTH:
+				setLength(LENGTH_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__DATE_TYPE:
+				setDateType(DATE_TYPE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_FLAG:
+				setSyntheticFlag(SYNTHETIC_FLAG_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_SELECTOR:
+				setSyntheticSelector(SYNTHETIC_SELECTOR_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE:
+				setSyntheticTypeReference((LFeature)null);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE:
+				setSyntheticType((LType)null);
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDATA_TYPE__JVM_TYPE_REFERENCE:
+				return jvmTypeReference != null;
+			case OSBPTypesPackage.LDATA_TYPE__AS_PRIMITIVE:
+				return asPrimitive != AS_PRIMITIVE_EDEFAULT;
+			case OSBPTypesPackage.LDATA_TYPE__DATE:
+				return date != DATE_EDEFAULT;
+			case OSBPTypesPackage.LDATA_TYPE__AS_BLOB:
+				return asBlob != AS_BLOB_EDEFAULT;
+			case OSBPTypesPackage.LDATA_TYPE__LENGTH:
+				return length != LENGTH_EDEFAULT;
+			case OSBPTypesPackage.LDATA_TYPE__DATE_TYPE:
+				return dateType != DATE_TYPE_EDEFAULT;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_FLAG:
+				return syntheticFlag != SYNTHETIC_FLAG_EDEFAULT;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_SELECTOR:
+				return SYNTHETIC_SELECTOR_EDEFAULT == null ? syntheticSelector != null : !SYNTHETIC_SELECTOR_EDEFAULT.equals(syntheticSelector);
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE:
+				return syntheticTypeReference != null;
+			case OSBPTypesPackage.LDATA_TYPE__SYNTHETIC_TYPE:
+				return syntheticType != null;
+			case OSBPTypesPackage.LDATA_TYPE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPTypesPackage.LDATA_TYPE__CONSTRAINTS:
+				return constraints != null && !constraints.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(" (asPrimitive: ");
+		result.append(asPrimitive);
+		result.append(", date: ");
+		result.append(date);
+		result.append(", asBlob: ");
+		result.append(asBlob);
+		result.append(", length: ");
+		result.append(length);
+		result.append(", dateType: ");
+		result.append(dateType);
+		result.append(", syntheticFlag: ");
+		result.append(syntheticFlag);
+		result.append(", syntheticSelector: ");
+		result.append(syntheticSelector);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDataTypeImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java
new file mode 100644
index 0000000..571772b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertFalseImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CAssert False</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertFalseImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCAssertFalseImpl extends LLazyResolverImpl implements LDtCAssertFalse {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCAssertFalseImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CASSERT_FALSE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CASSERT_FALSE__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CASSERT_FALSE__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CASSERT_FALSE___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCAssertFalseImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java
new file mode 100644
index 0000000..608e0fa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCAssertTrueImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CAssert True</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCAssertTrueImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCAssertTrueImpl extends LLazyResolverImpl implements LDtCAssertTrue {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCAssertTrueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CASSERT_TRUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CASSERT_TRUE__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CASSERT_TRUE__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CASSERT_TRUE___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCAssertTrueImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java
new file mode 100644
index 0000000..859dd57
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMaxImpl.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CDecimal Max</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMaxImpl#getMax <em>Max</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCDecimalMaxImpl extends LLazyResolverImpl implements LDtCDecimalMax {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float MAX_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected float max = MAX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCDecimalMaxImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CDECIMAL_MAX;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MAX__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getMax() {
+		return max;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMax(float newMax) {
+		float oldMax = max;
+		max = newMax;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MAX__MAX, oldMax, max));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MAX:
+				return getMax();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MAX:
+				setMax((Float)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MAX:
+				setMax(MAX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX__MAX:
+				return max != MAX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", max: ");
+		result.append(max);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCDecimalMaxImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java
new file mode 100644
index 0000000..877ff81
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDecimalMinImpl.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CDecimal Min</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDecimalMinImpl#getMin <em>Min</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCDecimalMinImpl extends LLazyResolverImpl implements LDtCDecimalMin {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final float MIN_EDEFAULT = 0.0F;
+
+	/**
+	 * The cached value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected float min = MIN_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCDecimalMinImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CDECIMAL_MIN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MIN__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public float getMin() {
+		return min;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMin(float newMin) {
+		float oldMin = min;
+		min = newMin;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDECIMAL_MIN__MIN, oldMin, min));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MIN:
+				return getMin();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MIN:
+				setMin((Float)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MIN:
+				setMin(MIN_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN__MIN:
+				return min != MIN_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", min: ");
+		result.append(min);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCDecimalMinImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java
new file mode 100644
index 0000000..8b17492
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCDigitsImpl.java
@@ -0,0 +1,417 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CDigits</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl#getIntDigits <em>Int Digits</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCDigitsImpl#getFractionDigits <em>Fraction Digits</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCDigitsImpl extends LLazyResolverImpl implements LDtCDigits {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getIntDigits() <em>Int Digits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIntDigits()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int INT_DIGITS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIntDigits() <em>Int Digits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIntDigits()
+	 * @generated
+	 * @ordered
+	 */
+	protected int intDigits = INT_DIGITS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFractionDigits() <em>Fraction Digits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFractionDigits()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int FRACTION_DIGITS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getFractionDigits() <em>Fraction Digits</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFractionDigits()
+	 * @generated
+	 * @ordered
+	 */
+	protected int fractionDigits = FRACTION_DIGITS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCDigitsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CDIGITS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDIGITS__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDIGITS__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDIGITS__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getIntDigits() {
+		return intDigits;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setIntDigits(int newIntDigits) {
+		int oldIntDigits = intDigits;
+		intDigits = newIntDigits;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDIGITS__INT_DIGITS, oldIntDigits, intDigits));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getFractionDigits() {
+		return fractionDigits;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFractionDigits(int newFractionDigits) {
+		int oldFractionDigits = fractionDigits;
+		fractionDigits = newFractionDigits;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CDIGITS__FRACTION_DIGITS, oldFractionDigits, fractionDigits));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CDIGITS__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CDIGITS__INT_DIGITS:
+				return getIntDigits();
+			case OSBPTypesPackage.LDT_CDIGITS__FRACTION_DIGITS:
+				return getFractionDigits();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__INT_DIGITS:
+				setIntDigits((Integer)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__FRACTION_DIGITS:
+				setFractionDigits((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__INT_DIGITS:
+				setIntDigits(INT_DIGITS_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CDIGITS__FRACTION_DIGITS:
+				setFractionDigits(FRACTION_DIGITS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CDIGITS__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CDIGITS__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CDIGITS__INT_DIGITS:
+				return intDigits != INT_DIGITS_EDEFAULT;
+			case OSBPTypesPackage.LDT_CDIGITS__FRACTION_DIGITS:
+				return fractionDigits != FRACTION_DIGITS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CDIGITS___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", intDigits: ");
+		result.append(intDigits);
+		result.append(", fractionDigits: ");
+		result.append(fractionDigits);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCDigitsImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java
new file mode 100644
index 0000000..07bfac1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCFutureImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CFuture</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCFutureImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCFutureImpl extends LLazyResolverImpl implements LDtCFuture {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCFutureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CFUTURE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CFUTURE__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CFUTURE__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CFUTURE__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return false;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CFUTURE__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CFUTURE__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CFUTURE__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CFUTURE__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CFUTURE__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CFUTURE___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCFutureImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java
new file mode 100644
index 0000000..d2f3613
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNotNullImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CNot Null</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNotNullImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCNotNullImpl extends LLazyResolverImpl implements LDtCNotNull {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNotNullImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CNOT_NULL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNOT_NULL__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNOT_NULL__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNOT_NULL__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return false;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CNOT_NULL__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNOT_NULL__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNOT_NULL__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CNOT_NULL__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CNOT_NULL__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CNOT_NULL___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCNotNullImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java
new file mode 100644
index 0000000..6207b95
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNullImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CNull</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNullImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCNullImpl extends LLazyResolverImpl implements LDtCNull {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNullImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CNULL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNULL__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNULL__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNULL__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return false;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNULL__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CNULL__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CNULL__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNULL__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNULL__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNULL__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNULL__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNULL__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNULL__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNULL__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CNULL__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CNULL__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CNULL___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCNullImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java
new file mode 100644
index 0000000..834e50d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMaxImpl.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CNumeric Max</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMaxImpl#getMax <em>Max</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCNumericMaxImpl extends LLazyResolverImpl implements LDtCNumericMax {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MAX_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected int max = MAX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNumericMaxImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CNUMERIC_MAX;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MAX__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMax() {
+		return max;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMax(int newMax) {
+		int oldMax = max;
+		max = newMax;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MAX__MAX, oldMax, max));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MAX:
+				return getMax();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MAX:
+				setMax((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MAX:
+				setMax(MAX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX__MAX:
+				return max != MAX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", max: ");
+		result.append(max);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCNumericMaxImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java
new file mode 100644
index 0000000..1c04f01
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCNumericMinImpl.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CNumeric Min</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCNumericMinImpl#getMin <em>Min</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCNumericMinImpl extends LLazyResolverImpl implements LDtCNumericMin {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MIN_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected int min = MIN_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCNumericMinImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CNUMERIC_MIN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MIN__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMin() {
+		return min;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMin(int newMin) {
+		int oldMin = min;
+		min = newMin;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CNUMERIC_MIN__MIN, oldMin, min));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MIN:
+				return getMin();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MIN:
+				setMin((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MIN:
+				setMin(MIN_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN__MIN:
+				return min != MIN_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", min: ");
+		result.append(min);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCNumericMinImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java
new file mode 100644
index 0000000..b44d039
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCPastImpl.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CPast</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCPastImpl#getSeverity <em>Severity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCPastImpl extends LLazyResolverImpl implements LDtCPast {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCPastImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CPAST;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CPAST__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CPAST__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CPAST__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return false;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CPAST__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CPAST__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CPAST__SEVERITY:
+				return getSeverity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CPAST__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CPAST__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CPAST__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CPAST__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CPAST__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CPAST__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CPAST__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CPAST__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CPAST__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CPAST___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCPastImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java
new file mode 100644
index 0000000..405d6f7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCRegExImpl.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CReg Ex</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCRegExImpl#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCRegExImpl extends LLazyResolverImpl implements LDtCRegEx {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPattern()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PATTERN_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPattern()
+	 * @generated
+	 * @ordered
+	 */
+	protected String pattern = PATTERN_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCRegExImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CREG_EX;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CREG_EX__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CREG_EX__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CREG_EX__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPattern() {
+		return pattern;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPattern(String newPattern) {
+		String oldPattern = pattern;
+		pattern = newPattern;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CREG_EX__PATTERN, oldPattern, pattern));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CREG_EX__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CREG_EX__PATTERN:
+				return getPattern();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CREG_EX__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CREG_EX__PATTERN:
+				setPattern((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CREG_EX__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CREG_EX__PATTERN:
+				setPattern(PATTERN_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CREG_EX__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CREG_EX__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CREG_EX__PATTERN:
+				return PATTERN_EDEFAULT == null ? pattern != null : !PATTERN_EDEFAULT.equals(pattern);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CREG_EX___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", pattern: ");
+		result.append(pattern);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCRegExImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java
new file mode 100644
index 0000000..bbbe000
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LDtCSizeImpl.java
@@ -0,0 +1,417 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDt CSize</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl#getMsgCode <em>Msg Code</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl#getMsgI18nKey <em>Msg I1 8n Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl#getSeverity <em>Severity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl#getMin <em>Min</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LDtCSizeImpl#getMax <em>Max</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtCSizeImpl extends LLazyResolverImpl implements LDtCSize {
+	/**
+	 * The default value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_CODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgCode() <em>Msg Code</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgCode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgCode = MSG_CODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MSG_I1_8N_KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMsgI18nKey() <em>Msg I1 8n Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMsgI18nKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String msgI18nKey = MSG_I1_8N_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LConstraintSeverity SEVERITY_EDEFAULT = LConstraintSeverity.INFO;
+
+	/**
+	 * The cached value of the '{@link #getSeverity() <em>Severity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeverity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LConstraintSeverity severity = SEVERITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MIN_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMin() <em>Min</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin()
+	 * @generated
+	 * @ordered
+	 */
+	protected int min = MIN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int MAX_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getMax() <em>Max</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax()
+	 * @generated
+	 * @ordered
+	 */
+	protected int max = MAX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtCSizeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LDT_CSIZE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgCode() {
+		return msgCode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgCode(String newMsgCode) {
+		String oldMsgCode = msgCode;
+		msgCode = newMsgCode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CSIZE__MSG_CODE, oldMsgCode, msgCode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getMsgI18nKey() {
+		return msgI18nKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMsgI18nKey(String newMsgI18nKey) {
+		String oldMsgI18nKey = msgI18nKey;
+		msgI18nKey = newMsgI18nKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CSIZE__MSG_I1_8N_KEY, oldMsgI18nKey, msgI18nKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity getSeverity() {
+		return severity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSeverity(LConstraintSeverity newSeverity) {
+		LConstraintSeverity oldSeverity = severity;
+		severity = newSeverity == null ? SEVERITY_EDEFAULT : newSeverity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CSIZE__SEVERITY, oldSeverity, severity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMin() {
+		return min;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMin(int newMin) {
+		int oldMin = min;
+		min = newMin;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CSIZE__MIN, oldMin, min));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getMax() {
+		return max;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMax(int newMax) {
+		int oldMax = max;
+		max = newMax;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LDT_CSIZE__MAX, oldMax, max));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isForPrimitives() {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CSIZE__MSG_CODE:
+				return getMsgCode();
+			case OSBPTypesPackage.LDT_CSIZE__MSG_I1_8N_KEY:
+				return getMsgI18nKey();
+			case OSBPTypesPackage.LDT_CSIZE__SEVERITY:
+				return getSeverity();
+			case OSBPTypesPackage.LDT_CSIZE__MIN:
+				return getMin();
+			case OSBPTypesPackage.LDT_CSIZE__MAX:
+				return getMax();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CSIZE__MSG_CODE:
+				setMsgCode((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__MSG_I1_8N_KEY:
+				setMsgI18nKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__SEVERITY:
+				setSeverity((LConstraintSeverity)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__MIN:
+				setMin((Integer)newValue);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__MAX:
+				setMax((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CSIZE__MSG_CODE:
+				setMsgCode(MSG_CODE_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__MSG_I1_8N_KEY:
+				setMsgI18nKey(MSG_I1_8N_KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__SEVERITY:
+				setSeverity(SEVERITY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__MIN:
+				setMin(MIN_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LDT_CSIZE__MAX:
+				setMax(MAX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LDT_CSIZE__MSG_CODE:
+				return MSG_CODE_EDEFAULT == null ? msgCode != null : !MSG_CODE_EDEFAULT.equals(msgCode);
+			case OSBPTypesPackage.LDT_CSIZE__MSG_I1_8N_KEY:
+				return MSG_I1_8N_KEY_EDEFAULT == null ? msgI18nKey != null : !MSG_I1_8N_KEY_EDEFAULT.equals(msgI18nKey);
+			case OSBPTypesPackage.LDT_CSIZE__SEVERITY:
+				return severity != SEVERITY_EDEFAULT;
+			case OSBPTypesPackage.LDT_CSIZE__MIN:
+				return min != MIN_EDEFAULT;
+			case OSBPTypesPackage.LDT_CSIZE__MAX:
+				return max != MAX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LDT_CSIZE___IS_FOR_PRIMITIVES:
+				return isForPrimitives();
+		}
+		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(" (msgCode: ");
+		result.append(msgCode);
+		result.append(", msgI18nKey: ");
+		result.append(msgI18nKey);
+		result.append(", severity: ");
+		result.append(severity);
+		result.append(", min: ");
+		result.append(min);
+		result.append(", max: ");
+		result.append(max);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtCSizeImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java
new file mode 100644
index 0000000..a39ca20
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumImpl.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEnum</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumImpl#getLiterals <em>Literals</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEnumImpl extends LScalarTypeImpl implements LEnum {
+	/**
+	 * The cached value of the '{@link #getLiterals() <em>Literals</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLiterals()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LEnumLiteral> literals;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEnumImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LENUM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LEnumLiteral> getLiterals() {
+		if (literals == null) {
+			literals = new EObjectContainmentEList<LEnumLiteral>(LEnumLiteral.class, this, OSBPTypesPackage.LENUM__LITERALS);
+		}
+		return literals;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LENUM__LITERALS:
+				return ((InternalEList<?>)getLiterals()).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 OSBPTypesPackage.LENUM__LITERALS:
+				return getLiterals();
+		}
+		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 OSBPTypesPackage.LENUM__LITERALS:
+				getLiterals().clear();
+				getLiterals().addAll((Collection<? extends LEnumLiteral>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LENUM__LITERALS:
+				getLiterals().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LENUM__LITERALS:
+				return literals != null && !literals.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LEnumImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java
new file mode 100644
index 0000000..c5eca68
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LEnumLiteralImpl.java
@@ -0,0 +1,335 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEnum Literal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl#isDefault <em>Default</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl#isNull <em>Null</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LEnumLiteralImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEnumLiteralImpl extends LLazyResolverImpl implements LEnumLiteral {
+	/**
+	 * 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 default value of the '{@link #isDefault() <em>Default</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDefault()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DEFAULT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDefault() <em>Default</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDefault()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean default_ = DEFAULT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isNull() <em>Null</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isNull()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean NULL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isNull() <em>Null</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isNull()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean null_ = NULL_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 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 LEnumLiteralImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LENUM_LITERAL;
+	}
+
+	/**
+	 * <!-- 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, OSBPTypesPackage.LENUM_LITERAL__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDefault() {
+		return default_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDefault(boolean newDefault) {
+		boolean oldDefault = default_;
+		default_ = newDefault;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LENUM_LITERAL__DEFAULT, oldDefault, default_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isNull() {
+		return null_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setNull(boolean newNull) {
+		boolean oldNull = null_;
+		null_ = newNull;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LENUM_LITERAL__NULL, oldNull, null_));
+	}
+
+	/**
+	 * <!-- 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, OSBPTypesPackage.LENUM_LITERAL__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LENUM_LITERAL__NAME:
+				return getName();
+			case OSBPTypesPackage.LENUM_LITERAL__DEFAULT:
+				return isDefault();
+			case OSBPTypesPackage.LENUM_LITERAL__NULL:
+				return isNull();
+			case OSBPTypesPackage.LENUM_LITERAL__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 OSBPTypesPackage.LENUM_LITERAL__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPTypesPackage.LENUM_LITERAL__DEFAULT:
+				setDefault((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LENUM_LITERAL__NULL:
+				setNull((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LENUM_LITERAL__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 OSBPTypesPackage.LENUM_LITERAL__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LENUM_LITERAL__DEFAULT:
+				setDefault(DEFAULT_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LENUM_LITERAL__NULL:
+				setNull(NULL_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LENUM_LITERAL__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LENUM_LITERAL__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPTypesPackage.LENUM_LITERAL__DEFAULT:
+				return default_ != DEFAULT_EDEFAULT;
+			case OSBPTypesPackage.LENUM_LITERAL__NULL:
+				return null_ != NULL_EDEFAULT;
+			case OSBPTypesPackage.LENUM_LITERAL__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(" (name: ");
+		result.append(name);
+		result.append(", default: ");
+		result.append(default_);
+		result.append(", null: ");
+		result.append(null_);
+		result.append(", value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LEnumLiteralImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java
new file mode 100644
index 0000000..f1b6bf8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LImportImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LImport</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LImportImpl#getImportedNamespace <em>Imported Namespace</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LImportImpl extends MinimalEObjectImpl.Container implements LImport {
+	/**
+	 * The default value of the '{@link #getImportedNamespace() <em>Imported Namespace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImportedNamespace()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String IMPORTED_NAMESPACE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getImportedNamespace() <em>Imported Namespace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImportedNamespace()
+	 * @generated
+	 * @ordered
+	 */
+	protected String importedNamespace = IMPORTED_NAMESPACE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LImportImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LIMPORT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getImportedNamespace() {
+		return importedNamespace;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setImportedNamespace(String newImportedNamespace) {
+		String oldImportedNamespace = importedNamespace;
+		importedNamespace = newImportedNamespace;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LIMPORT__IMPORTED_NAMESPACE, oldImportedNamespace, importedNamespace));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LIMPORT__IMPORTED_NAMESPACE:
+				return getImportedNamespace();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LIMPORT__IMPORTED_NAMESPACE:
+				setImportedNamespace((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LIMPORT__IMPORTED_NAMESPACE:
+				setImportedNamespace(IMPORTED_NAMESPACE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LIMPORT__IMPORTED_NAMESPACE:
+				return IMPORTED_NAMESPACE_EDEFAULT == null ? importedNamespace != null : !IMPORTED_NAMESPACE_EDEFAULT.equals(importedNamespace);
+		}
+		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(" (importedNamespace: ");
+		result.append(importedNamespace);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LImportImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java
new file mode 100644
index 0000000..67c33f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LKeyAndValueImpl.java
@@ -0,0 +1,228 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LKey And Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LKeyAndValueImpl#getKey <em>Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LKeyAndValueImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LKeyAndValueImpl extends MinimalEObjectImpl.Container implements LKeyAndValue {
+	/**
+	 * The default value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KEY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKey() <em>Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected String key = KEY_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;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LKeyAndValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LKEY_AND_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getKey() {
+		return key;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setKey(String newKey) {
+		String oldKey = key;
+		key = newKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LKEY_AND_VALUE__KEY, oldKey, key));
+	}
+
+	/**
+	 * <!-- 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, OSBPTypesPackage.LKEY_AND_VALUE__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LKEY_AND_VALUE__KEY:
+				return getKey();
+			case OSBPTypesPackage.LKEY_AND_VALUE__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 OSBPTypesPackage.LKEY_AND_VALUE__KEY:
+				setKey((String)newValue);
+				return;
+			case OSBPTypesPackage.LKEY_AND_VALUE__VALUE:
+				setValue((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LKEY_AND_VALUE__KEY:
+				setKey(KEY_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LKEY_AND_VALUE__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LKEY_AND_VALUE__KEY:
+				return KEY_EDEFAULT == null ? key != null : !KEY_EDEFAULT.equals(key);
+			case OSBPTypesPackage.LKEY_AND_VALUE__VALUE:
+				return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (key: ");
+		result.append(key);
+		result.append(", value: ");
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LKeyAndValueImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java
new file mode 100644
index 0000000..39c9b17
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LLazyResolverImpl.java
@@ -0,0 +1,91 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LLazy Resolver</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LLazyResolverImpl extends MinimalEObjectImpl.Container implements LLazyResolver {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LLazyResolverImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LLAZY_RESOLVER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject eResolveProxy(final InternalEObject proxy) {
+		Resource _eResource = this.eResource();
+		ResourceSet _resourceSet = null;
+		if (_eResource!=null) {
+			_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 OSBPTypesPackage.LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT:
+				return eResolveProxy((InternalEObject)arguments.get(0));
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //LLazyResolverImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java
new file mode 100644
index 0000000..ba8f5fc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LModifierImpl.java
@@ -0,0 +1,282 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LVisibility;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LModifier</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl#isFinal <em>Final</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl#isStatic <em>Static</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LModifierImpl#getVisibility <em>Visibility</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LModifierImpl extends LLazyResolverImpl implements LModifier {
+	/**
+	 * The default value of the '{@link #isFinal() <em>Final</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFinal()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FINAL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFinal() <em>Final</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFinal()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean final_ = FINAL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isStatic() <em>Static</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isStatic()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean STATIC_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isStatic() <em>Static</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isStatic()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean static_ = STATIC_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getVisibility() <em>Visibility</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVisibility()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LVisibility VISIBILITY_EDEFAULT = LVisibility.PACKAGE;
+
+	/**
+	 * The cached value of the '{@link #getVisibility() <em>Visibility</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVisibility()
+	 * @generated
+	 * @ordered
+	 */
+	protected LVisibility visibility = VISIBILITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LModifierImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LMODIFIER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isFinal() {
+		return final_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFinal(boolean newFinal) {
+		boolean oldFinal = final_;
+		final_ = newFinal;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LMODIFIER__FINAL, oldFinal, final_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isStatic() {
+		return static_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setStatic(boolean newStatic) {
+		boolean oldStatic = static_;
+		static_ = newStatic;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LMODIFIER__STATIC, oldStatic, static_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LVisibility getVisibility() {
+		return visibility;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVisibility(LVisibility newVisibility) {
+		LVisibility oldVisibility = visibility;
+		visibility = newVisibility == null ? VISIBILITY_EDEFAULT : newVisibility;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LMODIFIER__VISIBILITY, oldVisibility, visibility));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMODIFIER__FINAL:
+				return isFinal();
+			case OSBPTypesPackage.LMODIFIER__STATIC:
+				return isStatic();
+			case OSBPTypesPackage.LMODIFIER__VISIBILITY:
+				return getVisibility();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMODIFIER__FINAL:
+				setFinal((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LMODIFIER__STATIC:
+				setStatic((Boolean)newValue);
+				return;
+			case OSBPTypesPackage.LMODIFIER__VISIBILITY:
+				setVisibility((LVisibility)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMODIFIER__FINAL:
+				setFinal(FINAL_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LMODIFIER__STATIC:
+				setStatic(STATIC_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LMODIFIER__VISIBILITY:
+				setVisibility(VISIBILITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMODIFIER__FINAL:
+				return final_ != FINAL_EDEFAULT;
+			case OSBPTypesPackage.LMODIFIER__STATIC:
+				return static_ != STATIC_EDEFAULT;
+			case OSBPTypesPackage.LMODIFIER__VISIBILITY:
+				return visibility != VISIBILITY_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(" (final: ");
+		result.append(final_);
+		result.append(", static: ");
+		result.append(static_);
+		result.append(", visibility: ");
+		result.append(visibility);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LModifierImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java
new file mode 100644
index 0000000..61c1de7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LMultiplicityImpl.java
@@ -0,0 +1,257 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.dsl.semantic.common.helper.Bounds;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLowerBound;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LUpperBound;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LMultiplicity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl#getLower <em>Lower</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl#getUpper <em>Upper</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LMultiplicityImpl#getToMultiplicityString <em>To Multiplicity String</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LMultiplicityImpl extends MinimalEObjectImpl.Container implements LMultiplicity {
+	/**
+	 * The default value of the '{@link #getLower() <em>Lower</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LLowerBound LOWER_EDEFAULT = LLowerBound.NULL;
+
+	/**
+	 * The cached value of the '{@link #getLower() <em>Lower</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLower()
+	 * @generated
+	 * @ordered
+	 */
+	protected LLowerBound lower = LOWER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getUpper() <em>Upper</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUpper()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LUpperBound UPPER_EDEFAULT = LUpperBound.NULL;
+
+	/**
+	 * The cached value of the '{@link #getUpper() <em>Upper</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUpper()
+	 * @generated
+	 * @ordered
+	 */
+	protected LUpperBound upper = UPPER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getToMultiplicityString() <em>To Multiplicity String</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getToMultiplicityString()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TO_MULTIPLICITY_STRING_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LMultiplicityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LMULTIPLICITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LLowerBound getLower() {
+		return lower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLower(LLowerBound newLower) {
+		LLowerBound oldLower = lower;
+		lower = newLower == null ? LOWER_EDEFAULT : newLower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LMULTIPLICITY__LOWER, oldLower, lower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LUpperBound getUpper() {
+		return upper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUpper(LUpperBound newUpper) {
+		LUpperBound oldUpper = upper;
+		upper = newUpper == null ? UPPER_EDEFAULT : newUpper;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LMULTIPLICITY__UPPER, oldUpper, upper));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getToMultiplicityString() {
+		Bounds _createFor = Bounds.createFor(this);
+		return _createFor.toBoundsString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMULTIPLICITY__LOWER:
+				return getLower();
+			case OSBPTypesPackage.LMULTIPLICITY__UPPER:
+				return getUpper();
+			case OSBPTypesPackage.LMULTIPLICITY__TO_MULTIPLICITY_STRING:
+				return getToMultiplicityString();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMULTIPLICITY__LOWER:
+				setLower((LLowerBound)newValue);
+				return;
+			case OSBPTypesPackage.LMULTIPLICITY__UPPER:
+				setUpper((LUpperBound)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMULTIPLICITY__LOWER:
+				setLower(LOWER_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LMULTIPLICITY__UPPER:
+				setUpper(UPPER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LMULTIPLICITY__LOWER:
+				return lower != LOWER_EDEFAULT;
+			case OSBPTypesPackage.LMULTIPLICITY__UPPER:
+				return upper != UPPER_EDEFAULT;
+			case OSBPTypesPackage.LMULTIPLICITY__TO_MULTIPLICITY_STRING:
+				return TO_MULTIPLICITY_STRING_EDEFAULT == null ? getToMultiplicityString() != null : !TO_MULTIPLICITY_STRING_EDEFAULT.equals(getToMultiplicityString());
+		}
+		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(" (lower: ");
+		result.append(lower);
+		result.append(", upper: ");
+		result.append(upper);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LMultiplicityImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java
new file mode 100644
index 0000000..46d083a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LOperationImpl.java
@@ -0,0 +1,393 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.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.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.xtext.common.types.JvmFormalParameter;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LOperation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl#getModifier <em>Modifier</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl#getParams <em>Params</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl#getBody <em>Body</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LOperationImpl extends LAnnotationTargetImpl implements LOperation {
+	/**
+	 * The cached value of the '{@link #getModifier() <em>Modifier</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModifier()
+	 * @generated
+	 * @ordered
+	 */
+	protected LModifier modifier;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference type;
+
+	/**
+	 * The cached value of the '{@link #getParams() <em>Params</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getParams()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<JvmFormalParameter> params;
+
+	/**
+	 * The cached value of the '{@link #getBody() <em>Body</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBody()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression body;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LOperationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LOPERATION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LModifier getModifier() {
+		return modifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetModifier(LModifier newModifier, NotificationChain msgs) {
+		LModifier oldModifier = modifier;
+		modifier = newModifier;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LOPERATION__MODIFIER, oldModifier, newModifier);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setModifier(LModifier newModifier) {
+		if (newModifier != modifier) {
+			NotificationChain msgs = null;
+			if (modifier != null)
+				msgs = ((InternalEObject)modifier).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LOPERATION__MODIFIER, null, msgs);
+			if (newModifier != null)
+				msgs = ((InternalEObject)newModifier).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LOPERATION__MODIFIER, null, msgs);
+			msgs = basicSetModifier(newModifier, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LOPERATION__MODIFIER, newModifier, newModifier));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetType(JvmTypeReference newType, NotificationChain msgs) {
+		JvmTypeReference oldType = type;
+		type = newType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LOPERATION__TYPE, oldType, newType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(JvmTypeReference newType) {
+		if (newType != type) {
+			NotificationChain msgs = null;
+			if (type != null)
+				msgs = ((InternalEObject)type).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LOPERATION__TYPE, null, msgs);
+			if (newType != null)
+				msgs = ((InternalEObject)newType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LOPERATION__TYPE, null, msgs);
+			msgs = basicSetType(newType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LOPERATION__TYPE, newType, newType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<JvmFormalParameter> getParams() {
+		if (params == null) {
+			params = new EObjectContainmentEList<JvmFormalParameter>(JvmFormalParameter.class, this, OSBPTypesPackage.LOPERATION__PARAMS);
+		}
+		return params;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getBody() {
+		return body;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetBody(XExpression newBody, NotificationChain msgs) {
+		XExpression oldBody = body;
+		body = newBody;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LOPERATION__BODY, oldBody, newBody);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBody(XExpression newBody) {
+		if (newBody != body) {
+			NotificationChain msgs = null;
+			if (body != null)
+				msgs = ((InternalEObject)body).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LOPERATION__BODY, null, msgs);
+			if (newBody != null)
+				msgs = ((InternalEObject)newBody).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LOPERATION__BODY, null, msgs);
+			msgs = basicSetBody(newBody, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LOPERATION__BODY, newBody, newBody));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		return this.getAnnotations();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LOPERATION__MODIFIER:
+				return basicSetModifier(null, msgs);
+			case OSBPTypesPackage.LOPERATION__TYPE:
+				return basicSetType(null, msgs);
+			case OSBPTypesPackage.LOPERATION__PARAMS:
+				return ((InternalEList<?>)getParams()).basicRemove(otherEnd, msgs);
+			case OSBPTypesPackage.LOPERATION__BODY:
+				return basicSetBody(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 OSBPTypesPackage.LOPERATION__MODIFIER:
+				return getModifier();
+			case OSBPTypesPackage.LOPERATION__TYPE:
+				return getType();
+			case OSBPTypesPackage.LOPERATION__PARAMS:
+				return getParams();
+			case OSBPTypesPackage.LOPERATION__BODY:
+				return getBody();
+		}
+		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 OSBPTypesPackage.LOPERATION__MODIFIER:
+				setModifier((LModifier)newValue);
+				return;
+			case OSBPTypesPackage.LOPERATION__TYPE:
+				setType((JvmTypeReference)newValue);
+				return;
+			case OSBPTypesPackage.LOPERATION__PARAMS:
+				getParams().clear();
+				getParams().addAll((Collection<? extends JvmFormalParameter>)newValue);
+				return;
+			case OSBPTypesPackage.LOPERATION__BODY:
+				setBody((XExpression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LOPERATION__MODIFIER:
+				setModifier((LModifier)null);
+				return;
+			case OSBPTypesPackage.LOPERATION__TYPE:
+				setType((JvmTypeReference)null);
+				return;
+			case OSBPTypesPackage.LOPERATION__PARAMS:
+				getParams().clear();
+				return;
+			case OSBPTypesPackage.LOPERATION__BODY:
+				setBody((XExpression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LOPERATION__MODIFIER:
+				return modifier != null;
+			case OSBPTypesPackage.LOPERATION__TYPE:
+				return type != null;
+			case OSBPTypesPackage.LOPERATION__PARAMS:
+				return params != null && !params.isEmpty();
+			case OSBPTypesPackage.LOPERATION__BODY:
+				return body != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LOPERATION___GET_RESOLVED_ANNOTATIONS:
+				return getResolvedAnnotations();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //LOperationImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java
new file mode 100644
index 0000000..f88a4fb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LPackageImpl.java
@@ -0,0 +1,232 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LPackage</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LPackageImpl#getImports <em>Imports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LPackageImpl extends LLazyResolverImpl implements LPackage {
+	/**
+	 * 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 #getImports() <em>Imports</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImports()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LImport> imports;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LPackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LPACKAGE;
+	}
+
+	/**
+	 * <!-- 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, OSBPTypesPackage.LPACKAGE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LImport> getImports() {
+		if (imports == null) {
+			imports = new EObjectContainmentEList<LImport>(LImport.class, this, OSBPTypesPackage.LPACKAGE__IMPORTS);
+		}
+		return imports;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LPACKAGE__IMPORTS:
+				return ((InternalEList<?>)getImports()).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 OSBPTypesPackage.LPACKAGE__NAME:
+				return getName();
+			case OSBPTypesPackage.LPACKAGE__IMPORTS:
+				return getImports();
+		}
+		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 OSBPTypesPackage.LPACKAGE__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPTypesPackage.LPACKAGE__IMPORTS:
+				getImports().clear();
+				getImports().addAll((Collection<? extends LImport>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LPACKAGE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LPACKAGE__IMPORTS:
+				getImports().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LPACKAGE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPTypesPackage.LPACKAGE__IMPORTS:
+				return imports != null && !imports.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();
+	}
+
+} //LPackageImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java
new file mode 100644
index 0000000..5165d6e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LResultFiltersImpl.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.LResultFilter;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LResult Filters</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LResultFiltersImpl#getResultFilters <em>Result Filters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LResultFiltersImpl extends LLazyResolverImpl implements LResultFilters {
+	/**
+	 * The cached value of the '{@link #getResultFilters() <em>Result Filters</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getResultFilters()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LResultFilter> resultFilters;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LResultFiltersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LRESULT_FILTERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LResultFilter> getResultFilters() {
+		if (resultFilters == null) {
+			resultFilters = new EObjectContainmentEList<LResultFilter>(LResultFilter.class, this, OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS);
+		}
+		return resultFilters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS:
+				return ((InternalEList<?>)getResultFilters()).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 OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS:
+				return getResultFilters();
+		}
+		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 OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS:
+				getResultFilters().clear();
+				getResultFilters().addAll((Collection<? extends LResultFilter>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS:
+				getResultFilters().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LRESULT_FILTERS__RESULT_FILTERS:
+				return resultFilters != null && !resultFilters.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LResultFiltersImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java
new file mode 100644
index 0000000..32b181c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LScalarTypeImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LScalar Type</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LScalarTypeImpl extends LTypeImpl implements LScalarType {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LScalarTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LSCALAR_TYPE;
+	}
+
+} //LScalarTypeImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java
new file mode 100644
index 0000000..c7fc54c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypeImpl.java
@@ -0,0 +1,294 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import com.google.common.base.Objects;
+
+import java.lang.reflect.InvocationTargetException;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LType</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypeImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypeImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LTypeImpl extends LAnnotationTargetImpl implements LType {
+	/**
+	 * 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 #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTypeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LTYPE;
+	}
+
+	/**
+	 * <!-- 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, OSBPTypesPackage.LTYPE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LTYPE__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LTYPE__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPTypesPackage.LTYPE__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPTypesPackage.LTYPE__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPE__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(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 OSBPTypesPackage.LTYPE__NAME:
+				return getName();
+			case OSBPTypesPackage.LTYPE__ANNOTATION_INFO:
+				return getAnnotationInfo();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPE__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPTypesPackage.LTYPE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPTypesPackage.LTYPE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPTypesPackage.LTYPE__ANNOTATION_INFO:
+				return annotationInfo != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LTYPE___GET_RESOLVED_ANNOTATIONS:
+				return getResolvedAnnotations();
+		}
+		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();
+	}
+
+} //LTypeImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java
new file mode 100644
index 0000000..a8a0296
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/LTypedPackageImpl.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import com.google.common.base.Objects;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LTyped Package</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.common.types.impl.LTypedPackageImpl#getTypes <em>Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LTypedPackageImpl extends LPackageImpl implements LTypedPackage {
+	/**
+	 * The cached value of the '{@link #getTypes() <em>Types</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LType> types;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTypedPackageImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPTypesPackage.Literals.LTYPED_PACKAGE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LType> getTypes() {
+		if (types == null) {
+			types = new EObjectContainmentEList<LType>(LType.class, this, OSBPTypesPackage.LTYPED_PACKAGE__TYPES);
+		}
+		return types;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getResourceSimpleName() {
+		final Resource resource = this.eResource();
+		boolean _equals = Objects.equal(resource, null);
+		if (_equals) {
+			return "";
+		}
+		URI _uRI = resource.getURI();
+		String _lastSegment = _uRI.lastSegment();
+		String _plus = (_lastSegment + " - ");
+		String _name = this.getName();
+		return (_plus + _name);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPED_PACKAGE__TYPES:
+				return ((InternalEList<?>)getTypes()).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 OSBPTypesPackage.LTYPED_PACKAGE__TYPES:
+				return getTypes();
+		}
+		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 OSBPTypesPackage.LTYPED_PACKAGE__TYPES:
+				getTypes().clear();
+				getTypes().addAll((Collection<? extends LType>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPED_PACKAGE__TYPES:
+				getTypes().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPTypesPackage.LTYPED_PACKAGE__TYPES:
+				return types != null && !types.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPTypesPackage.LTYPED_PACKAGE___GET_RESOURCE_SIMPLE_NAME:
+				return getResourceSimpleName();
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //LTypedPackageImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java
new file mode 100644
index 0000000..633d758
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesFactoryImpl.java
@@ -0,0 +1,714 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+
+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.dsl.semantic.common.types.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPTypesFactoryImpl extends EFactoryImpl implements OSBPTypesFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OSBPTypesFactory init() {
+		try {
+			OSBPTypesFactory theOSBPTypesFactory = (OSBPTypesFactory)EPackage.Registry.INSTANCE.getEFactory(OSBPTypesPackage.eNS_URI);
+			if (theOSBPTypesFactory != null) {
+				return theOSBPTypesFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new OSBPTypesFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPTypesFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case OSBPTypesPackage.LCOMMON_MODEL: return createLCommonModel();
+			case OSBPTypesPackage.LLAZY_RESOLVER: return createLLazyResolver();
+			case OSBPTypesPackage.LPACKAGE: return createLPackage();
+			case OSBPTypesPackage.LTYPED_PACKAGE: return createLTypedPackage();
+			case OSBPTypesPackage.LIMPORT: return createLImport();
+			case OSBPTypesPackage.LTYPE: return createLType();
+			case OSBPTypesPackage.LANNOTATION_DEF: return createLAnnotationDef();
+			case OSBPTypesPackage.LANNOTATION_TARGET: return createLAnnotationTarget();
+			case OSBPTypesPackage.LSCALAR_TYPE: return createLScalarType();
+			case OSBPTypesPackage.LDATA_TYPE: return createLDataType();
+			case OSBPTypesPackage.LENUM: return createLEnum();
+			case OSBPTypesPackage.LENUM_LITERAL: return createLEnumLiteral();
+			case OSBPTypesPackage.LCLASS: return createLClass();
+			case OSBPTypesPackage.LKEY_AND_VALUE: return createLKeyAndValue();
+			case OSBPTypesPackage.LOPERATION: return createLOperation();
+			case OSBPTypesPackage.LMODIFIER: return createLModifier();
+			case OSBPTypesPackage.LMULTIPLICITY: return createLMultiplicity();
+			case OSBPTypesPackage.LRESULT_FILTERS: return createLResultFilters();
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT: return createLAttributeMatchingConstraint();
+			case OSBPTypesPackage.LDT_CASSERT_FALSE: return createLDtCAssertFalse();
+			case OSBPTypesPackage.LDT_CASSERT_TRUE: return createLDtCAssertTrue();
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX: return createLDtCDecimalMax();
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN: return createLDtCDecimalMin();
+			case OSBPTypesPackage.LDT_CDIGITS: return createLDtCDigits();
+			case OSBPTypesPackage.LDT_CFUTURE: return createLDtCFuture();
+			case OSBPTypesPackage.LDT_CPAST: return createLDtCPast();
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX: return createLDtCNumericMax();
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN: return createLDtCNumericMin();
+			case OSBPTypesPackage.LDT_CNOT_NULL: return createLDtCNotNull();
+			case OSBPTypesPackage.LDT_CNULL: return createLDtCNull();
+			case OSBPTypesPackage.LDT_CREG_EX: return createLDtCRegEx();
+			case OSBPTypesPackage.LDT_CSIZE: return createLDtCSize();
+			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 OSBPTypesPackage.LDATE_TYPE:
+				return createLDateTypeFromString(eDataType, initialValue);
+			case OSBPTypesPackage.LVISIBILITY:
+				return createLVisibilityFromString(eDataType, initialValue);
+			case OSBPTypesPackage.LLOWER_BOUND:
+				return createLLowerBoundFromString(eDataType, initialValue);
+			case OSBPTypesPackage.LUPPER_BOUND:
+				return createLUpperBoundFromString(eDataType, initialValue);
+			case OSBPTypesPackage.LCOMPARATOR_TYPE:
+				return createLComparatorTypeFromString(eDataType, initialValue);
+			case OSBPTypesPackage.LCONSTRAINT_SEVERITY:
+				return createLConstraintSeverityFromString(eDataType, initialValue);
+			case OSBPTypesPackage.OPERATIONS_LIST:
+				return createOperationsListFromString(eDataType, initialValue);
+			case OSBPTypesPackage.FEATURES_LIST:
+				return createFeaturesListFromString(eDataType, initialValue);
+			case OSBPTypesPackage.ANNOTATION_LIST:
+				return createAnnotationListFromString(eDataType, initialValue);
+			case OSBPTypesPackage.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 OSBPTypesPackage.LDATE_TYPE:
+				return convertLDateTypeToString(eDataType, instanceValue);
+			case OSBPTypesPackage.LVISIBILITY:
+				return convertLVisibilityToString(eDataType, instanceValue);
+			case OSBPTypesPackage.LLOWER_BOUND:
+				return convertLLowerBoundToString(eDataType, instanceValue);
+			case OSBPTypesPackage.LUPPER_BOUND:
+				return convertLUpperBoundToString(eDataType, instanceValue);
+			case OSBPTypesPackage.LCOMPARATOR_TYPE:
+				return convertLComparatorTypeToString(eDataType, instanceValue);
+			case OSBPTypesPackage.LCONSTRAINT_SEVERITY:
+				return convertLConstraintSeverityToString(eDataType, instanceValue);
+			case OSBPTypesPackage.OPERATIONS_LIST:
+				return convertOperationsListToString(eDataType, instanceValue);
+			case OSBPTypesPackage.FEATURES_LIST:
+				return convertFeaturesListToString(eDataType, instanceValue);
+			case OSBPTypesPackage.ANNOTATION_LIST:
+				return convertAnnotationListToString(eDataType, instanceValue);
+			case OSBPTypesPackage.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 LCommonModel createLCommonModel() {
+		LCommonModelImpl lCommonModel = new LCommonModelImpl();
+		return lCommonModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LLazyResolver createLLazyResolver() {
+		LLazyResolverImpl lLazyResolver = new LLazyResolverImpl();
+		return lLazyResolver;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LPackage createLPackage() {
+		LPackageImpl lPackage = new LPackageImpl();
+		return lPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTypedPackage createLTypedPackage() {
+		LTypedPackageImpl lTypedPackage = new LTypedPackageImpl();
+		return lTypedPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LImport createLImport() {
+		LImportImpl lImport = new LImportImpl();
+		return lImport;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType createLType() {
+		LTypeImpl lType = new LTypeImpl();
+		return lType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationDef createLAnnotationDef() {
+		LAnnotationDefImpl lAnnotationDef = new LAnnotationDefImpl();
+		return lAnnotationDef;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget createLAnnotationTarget() {
+		LAnnotationTargetImpl lAnnotationTarget = new LAnnotationTargetImpl();
+		return lAnnotationTarget;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType createLScalarType() {
+		LScalarTypeImpl lScalarType = new LScalarTypeImpl();
+		return lScalarType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDataType createLDataType() {
+		LDataTypeImpl lDataType = new LDataTypeImpl();
+		return lDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEnum createLEnum() {
+		LEnumImpl lEnum = new LEnumImpl();
+		return lEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEnumLiteral createLEnumLiteral() {
+		LEnumLiteralImpl lEnumLiteral = new LEnumLiteralImpl();
+		return lEnumLiteral;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LClass createLClass() {
+		LClassImpl lClass = new LClassImpl();
+		return lClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LKeyAndValue createLKeyAndValue() {
+		LKeyAndValueImpl lKeyAndValue = new LKeyAndValueImpl();
+		return lKeyAndValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LOperation createLOperation() {
+		LOperationImpl lOperation = new LOperationImpl();
+		return lOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LModifier createLModifier() {
+		LModifierImpl lModifier = new LModifierImpl();
+		return lModifier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity createLMultiplicity() {
+		LMultiplicityImpl lMultiplicity = new LMultiplicityImpl();
+		return lMultiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LResultFilters createLResultFilters() {
+		LResultFiltersImpl lResultFilters = new LResultFiltersImpl();
+		return lResultFilters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAttributeMatchingConstraint createLAttributeMatchingConstraint() {
+		LAttributeMatchingConstraintImpl lAttributeMatchingConstraint = new LAttributeMatchingConstraintImpl();
+		return lAttributeMatchingConstraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCAssertFalse createLDtCAssertFalse() {
+		LDtCAssertFalseImpl lDtCAssertFalse = new LDtCAssertFalseImpl();
+		return lDtCAssertFalse;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCAssertTrue createLDtCAssertTrue() {
+		LDtCAssertTrueImpl lDtCAssertTrue = new LDtCAssertTrueImpl();
+		return lDtCAssertTrue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCDecimalMax createLDtCDecimalMax() {
+		LDtCDecimalMaxImpl lDtCDecimalMax = new LDtCDecimalMaxImpl();
+		return lDtCDecimalMax;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCDecimalMin createLDtCDecimalMin() {
+		LDtCDecimalMinImpl lDtCDecimalMin = new LDtCDecimalMinImpl();
+		return lDtCDecimalMin;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCDigits createLDtCDigits() {
+		LDtCDigitsImpl lDtCDigits = new LDtCDigitsImpl();
+		return lDtCDigits;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCFuture createLDtCFuture() {
+		LDtCFutureImpl lDtCFuture = new LDtCFutureImpl();
+		return lDtCFuture;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCPast createLDtCPast() {
+		LDtCPastImpl lDtCPast = new LDtCPastImpl();
+		return lDtCPast;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNumericMax createLDtCNumericMax() {
+		LDtCNumericMaxImpl lDtCNumericMax = new LDtCNumericMaxImpl();
+		return lDtCNumericMax;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNumericMin createLDtCNumericMin() {
+		LDtCNumericMinImpl lDtCNumericMin = new LDtCNumericMinImpl();
+		return lDtCNumericMin;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNotNull createLDtCNotNull() {
+		LDtCNotNullImpl lDtCNotNull = new LDtCNotNullImpl();
+		return lDtCNotNull;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCNull createLDtCNull() {
+		LDtCNullImpl lDtCNull = new LDtCNullImpl();
+		return lDtCNull;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCRegEx createLDtCRegEx() {
+		LDtCRegExImpl lDtCRegEx = new LDtCRegExImpl();
+		return lDtCRegEx;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtCSize createLDtCSize() {
+		LDtCSizeImpl lDtCSize = new LDtCSizeImpl();
+		return lDtCSize;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDateType createLDateTypeFromString(EDataType eDataType, String initialValue) {
+		LDateType result = LDateType.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 convertLDateTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LVisibility createLVisibilityFromString(EDataType eDataType, String initialValue) {
+		LVisibility result = LVisibility.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 convertLVisibilityToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LLowerBound createLLowerBoundFromString(EDataType eDataType, String initialValue) {
+		LLowerBound result = LLowerBound.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 convertLLowerBoundToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LUpperBound createLUpperBoundFromString(EDataType eDataType, String initialValue) {
+		LUpperBound result = LUpperBound.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 convertLUpperBoundToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LComparatorType createLComparatorTypeFromString(EDataType eDataType, String initialValue) {
+		LComparatorType result = LComparatorType.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 convertLComparatorTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LConstraintSeverity createLConstraintSeverityFromString(EDataType eDataType, String initialValue) {
+		LConstraintSeverity result = LConstraintSeverity.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 convertLConstraintSeverityToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LOperation> createOperationsListFromString(EDataType eDataType, String initialValue) {
+		return (List<LOperation>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertOperationsListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<? extends LFeature> createFeaturesListFromString(EDataType eDataType, String initialValue) {
+		return (List<? extends LFeature>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertFeaturesListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public EList<LAnnotationDef> createAnnotationListFromString(EDataType eDataType, String initialValue) {
+		return (EList<LAnnotationDef>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertAnnotationListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- 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 OSBPTypesPackage getOSBPTypesPackage() {
+		return (OSBPTypesPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static OSBPTypesPackage getPackage() {
+		return OSBPTypesPackage.eINSTANCE;
+	}
+
+} //OSBPTypesFactoryImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
new file mode 100644
index 0000000..34d5913
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/impl/OSBPTypesPackageImpl.java
@@ -0,0 +1,2566 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+
+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.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LCommonModel;
+import org.eclipse.osbp.dsl.semantic.common.types.LComparatorType;
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraintSeverity;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LDateType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LLowerBound;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilter;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.LUpperBound;
+import org.eclipse.osbp.dsl.semantic.common.types.LVisibility;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.xtext.common.types.TypesPackage;
+
+import org.eclipse.xtext.xbase.XbasePackage;
+
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPTypesPackageImpl extends EPackageImpl implements OSBPTypesPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lCommonModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lLazyResolverEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lPackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lTypedPackageEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lImportEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lAnnotationDefEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lAnnotationTargetEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lScalarTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDataTypeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEnumEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEnumLiteralEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lClassEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lFeaturesHolderEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lFeatureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lKeyAndValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lOperationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lModifierEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lMultiplicityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lResultFiltersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lResultFilterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lAttributeMatchingConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDatatypeConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lStringConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lNumericConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDecimalConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDateConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lBooleanConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lBlobConstraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCAssertFalseEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCAssertTrueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCDecimalMaxEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCDecimalMinEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCDigitsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCFutureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCPastEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCNumericMaxEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCNumericMinEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCNotNullEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCNullEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCRegExEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtCSizeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lDateTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lVisibilityEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lLowerBoundEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lUpperBoundEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lComparatorTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lConstraintSeverityEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType operationsListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType featuresListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType annotationListEDataType = 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.dsl.semantic.common.types.OSBPTypesPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private OSBPTypesPackageImpl() {
+		super(eNS_URI, OSBPTypesFactory.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 OSBPTypesPackage#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 OSBPTypesPackage init() {
+		if (isInited) return (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+
+		// Obtain or create and register package
+		OSBPTypesPackageImpl theOSBPTypesPackage = (OSBPTypesPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof OSBPTypesPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new OSBPTypesPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XAnnotationsPackage.eINSTANCE.eClass();
+		EcorePackage.eINSTANCE.eClass();
+		XbasePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theOSBPTypesPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theOSBPTypesPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theOSBPTypesPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(OSBPTypesPackage.eNS_URI, theOSBPTypesPackage);
+		return theOSBPTypesPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLCommonModel() {
+		return lCommonModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLCommonModel_Packages() {
+		return (EReference)lCommonModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLLazyResolver() {
+		return lLazyResolverEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLLazyResolver__EResolveProxy__InternalEObject() {
+		return lLazyResolverEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLPackage() {
+		return lPackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLPackage_Name() {
+		return (EAttribute)lPackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLPackage_Imports() {
+		return (EReference)lPackageEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLTypedPackage() {
+		return lTypedPackageEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLTypedPackage_Types() {
+		return (EReference)lTypedPackageEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLTypedPackage__GetResourceSimpleName() {
+		return lTypedPackageEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLImport() {
+		return lImportEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLImport_ImportedNamespace() {
+		return (EAttribute)lImportEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLType() {
+		return lTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLType_Name() {
+		return (EAttribute)lTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLType_AnnotationInfo() {
+		return (EReference)lTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLType__GetResolvedAnnotations() {
+		return lTypeEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLAnnotationDef() {
+		return lAnnotationDefEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAnnotationDef_Exclude() {
+		return (EAttribute)lAnnotationDefEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAnnotationDef_Annotation() {
+		return (EReference)lAnnotationDefEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLAnnotationTarget() {
+		return lAnnotationTargetEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAnnotationTarget_Annotations() {
+		return (EReference)lAnnotationTargetEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLScalarType() {
+		return lScalarTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDataType() {
+		return lDataTypeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDataType_JvmTypeReference() {
+		return (EReference)lDataTypeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_AsPrimitive() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_Date() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_AsBlob() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_Length() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_DateType() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_SyntheticFlag() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDataType_SyntheticSelector() {
+		return (EAttribute)lDataTypeEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDataType_SyntheticTypeReference() {
+		return (EReference)lDataTypeEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDataType_SyntheticType() {
+		return (EReference)lDataTypeEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDataType_Properties() {
+		return (EReference)lDataTypeEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDataType_Constraints() {
+		return (EReference)lDataTypeEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEnum() {
+		return lEnumEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEnum_Literals() {
+		return (EReference)lEnumEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEnumLiteral() {
+		return lEnumLiteralEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEnumLiteral_Name() {
+		return (EAttribute)lEnumLiteralEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEnumLiteral_Default() {
+		return (EAttribute)lEnumLiteralEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEnumLiteral_Null() {
+		return (EAttribute)lEnumLiteralEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEnumLiteral_Value() {
+		return (EAttribute)lEnumLiteralEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLClass() {
+		return lClassEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLClass_Abstract() {
+		return (EAttribute)lClassEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLClass_Serializable() {
+		return (EAttribute)lClassEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLClass_ShortName() {
+		return (EAttribute)lClassEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLFeaturesHolder() {
+		return lFeaturesHolderEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLFeaturesHolder__GetFeatures() {
+		return lFeaturesHolderEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLFeaturesHolder__GetAllFeatures() {
+		return lFeaturesHolderEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLFeature() {
+		return lFeatureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLFeature_Name() {
+		return (EAttribute)lFeatureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLFeature_Multiplicity() {
+		return (EReference)lFeatureEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLFeature_AnnotationInfo() {
+		return (EReference)lFeatureEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLFeature__GetResolvedAnnotations() {
+		return lFeatureEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLReference() {
+		return lReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLReference_Lazy() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLReference_Cascading() {
+		return (EAttribute)lReferenceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLReference_Properties() {
+		return (EReference)lReferenceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLReference_Constraints() {
+		return (EReference)lReferenceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLAttribute() {
+		return lAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Id() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Uuid() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Version() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Lazy() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Cascading() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Transient() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Derived() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_Dirty() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_DomainKey() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttribute_DomainDescription() {
+		return (EAttribute)lAttributeEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttribute_DerivedGetterExpression() {
+		return (EReference)lAttributeEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttribute_Type() {
+		return (EReference)lAttributeEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttribute_TypeJvm() {
+		return (EReference)lAttributeEClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttribute_Properties() {
+		return (EReference)lAttributeEClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttribute_Constraints() {
+		return (EReference)lAttributeEClass.getEStructuralFeatures().get(14);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLKeyAndValue() {
+		return lKeyAndValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLKeyAndValue_Key() {
+		return (EAttribute)lKeyAndValueEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLKeyAndValue_Value() {
+		return (EAttribute)lKeyAndValueEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLOperation() {
+		return lOperationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLOperation_Modifier() {
+		return (EReference)lOperationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLOperation_Type() {
+		return (EReference)lOperationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLOperation_Params() {
+		return (EReference)lOperationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLOperation_Body() {
+		return (EReference)lOperationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLOperation__GetResolvedAnnotations() {
+		return lOperationEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLModifier() {
+		return lModifierEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLModifier_Final() {
+		return (EAttribute)lModifierEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLModifier_Static() {
+		return (EAttribute)lModifierEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLModifier_Visibility() {
+		return (EAttribute)lModifierEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLMultiplicity() {
+		return lMultiplicityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLMultiplicity_Lower() {
+		return (EAttribute)lMultiplicityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLMultiplicity_Upper() {
+		return (EAttribute)lMultiplicityEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLMultiplicity_ToMultiplicityString() {
+		return (EAttribute)lMultiplicityEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLConstraint() {
+		return lConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLResultFilters() {
+		return lResultFiltersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLResultFilters_ResultFilters() {
+		return (EReference)lResultFiltersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLResultFilter() {
+		return lResultFilterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLAttributeMatchingConstraint() {
+		return lAttributeMatchingConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttributeMatchingConstraint_Attribute() {
+		return (EReference)lAttributeMatchingConstraintEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttributeMatchingConstraint_ComparatorType() {
+		return (EAttribute)lAttributeMatchingConstraintEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLAttributeMatchingConstraint_MatchingValue() {
+		return (EAttribute)lAttributeMatchingConstraintEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLAttributeMatchingConstraint_MatchingLiteral() {
+		return (EReference)lAttributeMatchingConstraintEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDatatypeConstraint() {
+		return lDatatypeConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDatatypeConstraint_MsgCode() {
+		return (EAttribute)lDatatypeConstraintEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDatatypeConstraint_MsgI18nKey() {
+		return (EAttribute)lDatatypeConstraintEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDatatypeConstraint_Severity() {
+		return (EAttribute)lDatatypeConstraintEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDatatypeConstraint__IsForPrimitives() {
+		return lDatatypeConstraintEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLStringConstraint() {
+		return lStringConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLNumericConstraint() {
+		return lNumericConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDecimalConstraint() {
+		return lDecimalConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDateConstraint() {
+		return lDateConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLBooleanConstraint() {
+		return lBooleanConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLBlobConstraint() {
+		return lBlobConstraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCAssertFalse() {
+		return lDtCAssertFalseEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCAssertFalse__IsForPrimitives() {
+		return lDtCAssertFalseEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCAssertTrue() {
+		return lDtCAssertTrueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCAssertTrue__IsForPrimitives() {
+		return lDtCAssertTrueEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCDecimalMax() {
+		return lDtCDecimalMaxEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCDecimalMax_Max() {
+		return (EAttribute)lDtCDecimalMaxEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCDecimalMax__IsForPrimitives() {
+		return lDtCDecimalMaxEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCDecimalMin() {
+		return lDtCDecimalMinEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCDecimalMin_Min() {
+		return (EAttribute)lDtCDecimalMinEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCDecimalMin__IsForPrimitives() {
+		return lDtCDecimalMinEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCDigits() {
+		return lDtCDigitsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCDigits_IntDigits() {
+		return (EAttribute)lDtCDigitsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCDigits_FractionDigits() {
+		return (EAttribute)lDtCDigitsEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCDigits__IsForPrimitives() {
+		return lDtCDigitsEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCFuture() {
+		return lDtCFutureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCFuture__IsForPrimitives() {
+		return lDtCFutureEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCPast() {
+		return lDtCPastEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCPast__IsForPrimitives() {
+		return lDtCPastEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCNumericMax() {
+		return lDtCNumericMaxEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCNumericMax_Max() {
+		return (EAttribute)lDtCNumericMaxEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCNumericMax__IsForPrimitives() {
+		return lDtCNumericMaxEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCNumericMin() {
+		return lDtCNumericMinEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCNumericMin_Min() {
+		return (EAttribute)lDtCNumericMinEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCNumericMin__IsForPrimitives() {
+		return lDtCNumericMinEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCNotNull() {
+		return lDtCNotNullEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCNotNull__IsForPrimitives() {
+		return lDtCNotNullEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCNull() {
+		return lDtCNullEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCNull__IsForPrimitives() {
+		return lDtCNullEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCRegEx() {
+		return lDtCRegExEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCRegEx_Pattern() {
+		return (EAttribute)lDtCRegExEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCRegEx__IsForPrimitives() {
+		return lDtCRegExEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtCSize() {
+		return lDtCSizeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCSize_Min() {
+		return (EAttribute)lDtCSizeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDtCSize_Max() {
+		return (EAttribute)lDtCSizeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLDtCSize__IsForPrimitives() {
+		return lDtCSizeEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLDateType() {
+		return lDateTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLVisibility() {
+		return lVisibilityEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLLowerBound() {
+		return lLowerBoundEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLUpperBound() {
+		return lUpperBoundEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLComparatorType() {
+		return lComparatorTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLConstraintSeverity() {
+		return lConstraintSeverityEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getOperationsList() {
+		return operationsListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getFeaturesList() {
+		return featuresListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getAnnotationList() {
+		return annotationListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPTypesFactory getOSBPTypesFactory() {
+		return (OSBPTypesFactory)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
+		lCommonModelEClass = createEClass(LCOMMON_MODEL);
+		createEReference(lCommonModelEClass, LCOMMON_MODEL__PACKAGES);
+
+		lLazyResolverEClass = createEClass(LLAZY_RESOLVER);
+		createEOperation(lLazyResolverEClass, LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT);
+
+		lPackageEClass = createEClass(LPACKAGE);
+		createEAttribute(lPackageEClass, LPACKAGE__NAME);
+		createEReference(lPackageEClass, LPACKAGE__IMPORTS);
+
+		lTypedPackageEClass = createEClass(LTYPED_PACKAGE);
+		createEReference(lTypedPackageEClass, LTYPED_PACKAGE__TYPES);
+		createEOperation(lTypedPackageEClass, LTYPED_PACKAGE___GET_RESOURCE_SIMPLE_NAME);
+
+		lImportEClass = createEClass(LIMPORT);
+		createEAttribute(lImportEClass, LIMPORT__IMPORTED_NAMESPACE);
+
+		lTypeEClass = createEClass(LTYPE);
+		createEAttribute(lTypeEClass, LTYPE__NAME);
+		createEReference(lTypeEClass, LTYPE__ANNOTATION_INFO);
+		createEOperation(lTypeEClass, LTYPE___GET_RESOLVED_ANNOTATIONS);
+
+		lAnnotationDefEClass = createEClass(LANNOTATION_DEF);
+		createEAttribute(lAnnotationDefEClass, LANNOTATION_DEF__EXCLUDE);
+		createEReference(lAnnotationDefEClass, LANNOTATION_DEF__ANNOTATION);
+
+		lAnnotationTargetEClass = createEClass(LANNOTATION_TARGET);
+		createEReference(lAnnotationTargetEClass, LANNOTATION_TARGET__ANNOTATIONS);
+
+		lScalarTypeEClass = createEClass(LSCALAR_TYPE);
+
+		lDataTypeEClass = createEClass(LDATA_TYPE);
+		createEReference(lDataTypeEClass, LDATA_TYPE__JVM_TYPE_REFERENCE);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__AS_PRIMITIVE);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__DATE);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__AS_BLOB);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__LENGTH);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__DATE_TYPE);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__SYNTHETIC_FLAG);
+		createEAttribute(lDataTypeEClass, LDATA_TYPE__SYNTHETIC_SELECTOR);
+		createEReference(lDataTypeEClass, LDATA_TYPE__SYNTHETIC_TYPE_REFERENCE);
+		createEReference(lDataTypeEClass, LDATA_TYPE__SYNTHETIC_TYPE);
+		createEReference(lDataTypeEClass, LDATA_TYPE__PROPERTIES);
+		createEReference(lDataTypeEClass, LDATA_TYPE__CONSTRAINTS);
+
+		lEnumEClass = createEClass(LENUM);
+		createEReference(lEnumEClass, LENUM__LITERALS);
+
+		lEnumLiteralEClass = createEClass(LENUM_LITERAL);
+		createEAttribute(lEnumLiteralEClass, LENUM_LITERAL__NAME);
+		createEAttribute(lEnumLiteralEClass, LENUM_LITERAL__DEFAULT);
+		createEAttribute(lEnumLiteralEClass, LENUM_LITERAL__NULL);
+		createEAttribute(lEnumLiteralEClass, LENUM_LITERAL__VALUE);
+
+		lClassEClass = createEClass(LCLASS);
+		createEAttribute(lClassEClass, LCLASS__ABSTRACT);
+		createEAttribute(lClassEClass, LCLASS__SERIALIZABLE);
+		createEAttribute(lClassEClass, LCLASS__SHORT_NAME);
+
+		lFeaturesHolderEClass = createEClass(LFEATURES_HOLDER);
+		createEOperation(lFeaturesHolderEClass, LFEATURES_HOLDER___GET_FEATURES);
+		createEOperation(lFeaturesHolderEClass, LFEATURES_HOLDER___GET_ALL_FEATURES);
+
+		lFeatureEClass = createEClass(LFEATURE);
+		createEAttribute(lFeatureEClass, LFEATURE__NAME);
+		createEReference(lFeatureEClass, LFEATURE__MULTIPLICITY);
+		createEReference(lFeatureEClass, LFEATURE__ANNOTATION_INFO);
+		createEOperation(lFeatureEClass, LFEATURE___GET_RESOLVED_ANNOTATIONS);
+
+		lReferenceEClass = createEClass(LREFERENCE);
+		createEAttribute(lReferenceEClass, LREFERENCE__LAZY);
+		createEAttribute(lReferenceEClass, LREFERENCE__CASCADING);
+		createEReference(lReferenceEClass, LREFERENCE__PROPERTIES);
+		createEReference(lReferenceEClass, LREFERENCE__CONSTRAINTS);
+
+		lAttributeEClass = createEClass(LATTRIBUTE);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__ID);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__UUID);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__VERSION);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__LAZY);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__CASCADING);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__TRANSIENT);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__DERIVED);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__DIRTY);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__DOMAIN_KEY);
+		createEAttribute(lAttributeEClass, LATTRIBUTE__DOMAIN_DESCRIPTION);
+		createEReference(lAttributeEClass, LATTRIBUTE__DERIVED_GETTER_EXPRESSION);
+		createEReference(lAttributeEClass, LATTRIBUTE__TYPE);
+		createEReference(lAttributeEClass, LATTRIBUTE__TYPE_JVM);
+		createEReference(lAttributeEClass, LATTRIBUTE__PROPERTIES);
+		createEReference(lAttributeEClass, LATTRIBUTE__CONSTRAINTS);
+
+		lKeyAndValueEClass = createEClass(LKEY_AND_VALUE);
+		createEAttribute(lKeyAndValueEClass, LKEY_AND_VALUE__KEY);
+		createEAttribute(lKeyAndValueEClass, LKEY_AND_VALUE__VALUE);
+
+		lOperationEClass = createEClass(LOPERATION);
+		createEReference(lOperationEClass, LOPERATION__MODIFIER);
+		createEReference(lOperationEClass, LOPERATION__TYPE);
+		createEReference(lOperationEClass, LOPERATION__PARAMS);
+		createEReference(lOperationEClass, LOPERATION__BODY);
+		createEOperation(lOperationEClass, LOPERATION___GET_RESOLVED_ANNOTATIONS);
+
+		lModifierEClass = createEClass(LMODIFIER);
+		createEAttribute(lModifierEClass, LMODIFIER__FINAL);
+		createEAttribute(lModifierEClass, LMODIFIER__STATIC);
+		createEAttribute(lModifierEClass, LMODIFIER__VISIBILITY);
+
+		lMultiplicityEClass = createEClass(LMULTIPLICITY);
+		createEAttribute(lMultiplicityEClass, LMULTIPLICITY__LOWER);
+		createEAttribute(lMultiplicityEClass, LMULTIPLICITY__UPPER);
+		createEAttribute(lMultiplicityEClass, LMULTIPLICITY__TO_MULTIPLICITY_STRING);
+
+		lConstraintEClass = createEClass(LCONSTRAINT);
+
+		lResultFiltersEClass = createEClass(LRESULT_FILTERS);
+		createEReference(lResultFiltersEClass, LRESULT_FILTERS__RESULT_FILTERS);
+
+		lResultFilterEClass = createEClass(LRESULT_FILTER);
+
+		lAttributeMatchingConstraintEClass = createEClass(LATTRIBUTE_MATCHING_CONSTRAINT);
+		createEReference(lAttributeMatchingConstraintEClass, LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE);
+		createEAttribute(lAttributeMatchingConstraintEClass, LATTRIBUTE_MATCHING_CONSTRAINT__COMPARATOR_TYPE);
+		createEAttribute(lAttributeMatchingConstraintEClass, LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_VALUE);
+		createEReference(lAttributeMatchingConstraintEClass, LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL);
+
+		lDatatypeConstraintEClass = createEClass(LDATATYPE_CONSTRAINT);
+		createEAttribute(lDatatypeConstraintEClass, LDATATYPE_CONSTRAINT__MSG_CODE);
+		createEAttribute(lDatatypeConstraintEClass, LDATATYPE_CONSTRAINT__MSG_I1_8N_KEY);
+		createEAttribute(lDatatypeConstraintEClass, LDATATYPE_CONSTRAINT__SEVERITY);
+		createEOperation(lDatatypeConstraintEClass, LDATATYPE_CONSTRAINT___IS_FOR_PRIMITIVES);
+
+		lStringConstraintEClass = createEClass(LSTRING_CONSTRAINT);
+
+		lNumericConstraintEClass = createEClass(LNUMERIC_CONSTRAINT);
+
+		lDecimalConstraintEClass = createEClass(LDECIMAL_CONSTRAINT);
+
+		lDateConstraintEClass = createEClass(LDATE_CONSTRAINT);
+
+		lBooleanConstraintEClass = createEClass(LBOOLEAN_CONSTRAINT);
+
+		lBlobConstraintEClass = createEClass(LBLOB_CONSTRAINT);
+
+		lDtCAssertFalseEClass = createEClass(LDT_CASSERT_FALSE);
+		createEOperation(lDtCAssertFalseEClass, LDT_CASSERT_FALSE___IS_FOR_PRIMITIVES);
+
+		lDtCAssertTrueEClass = createEClass(LDT_CASSERT_TRUE);
+		createEOperation(lDtCAssertTrueEClass, LDT_CASSERT_TRUE___IS_FOR_PRIMITIVES);
+
+		lDtCDecimalMaxEClass = createEClass(LDT_CDECIMAL_MAX);
+		createEAttribute(lDtCDecimalMaxEClass, LDT_CDECIMAL_MAX__MAX);
+		createEOperation(lDtCDecimalMaxEClass, LDT_CDECIMAL_MAX___IS_FOR_PRIMITIVES);
+
+		lDtCDecimalMinEClass = createEClass(LDT_CDECIMAL_MIN);
+		createEAttribute(lDtCDecimalMinEClass, LDT_CDECIMAL_MIN__MIN);
+		createEOperation(lDtCDecimalMinEClass, LDT_CDECIMAL_MIN___IS_FOR_PRIMITIVES);
+
+		lDtCDigitsEClass = createEClass(LDT_CDIGITS);
+		createEAttribute(lDtCDigitsEClass, LDT_CDIGITS__INT_DIGITS);
+		createEAttribute(lDtCDigitsEClass, LDT_CDIGITS__FRACTION_DIGITS);
+		createEOperation(lDtCDigitsEClass, LDT_CDIGITS___IS_FOR_PRIMITIVES);
+
+		lDtCFutureEClass = createEClass(LDT_CFUTURE);
+		createEOperation(lDtCFutureEClass, LDT_CFUTURE___IS_FOR_PRIMITIVES);
+
+		lDtCPastEClass = createEClass(LDT_CPAST);
+		createEOperation(lDtCPastEClass, LDT_CPAST___IS_FOR_PRIMITIVES);
+
+		lDtCNumericMaxEClass = createEClass(LDT_CNUMERIC_MAX);
+		createEAttribute(lDtCNumericMaxEClass, LDT_CNUMERIC_MAX__MAX);
+		createEOperation(lDtCNumericMaxEClass, LDT_CNUMERIC_MAX___IS_FOR_PRIMITIVES);
+
+		lDtCNumericMinEClass = createEClass(LDT_CNUMERIC_MIN);
+		createEAttribute(lDtCNumericMinEClass, LDT_CNUMERIC_MIN__MIN);
+		createEOperation(lDtCNumericMinEClass, LDT_CNUMERIC_MIN___IS_FOR_PRIMITIVES);
+
+		lDtCNotNullEClass = createEClass(LDT_CNOT_NULL);
+		createEOperation(lDtCNotNullEClass, LDT_CNOT_NULL___IS_FOR_PRIMITIVES);
+
+		lDtCNullEClass = createEClass(LDT_CNULL);
+		createEOperation(lDtCNullEClass, LDT_CNULL___IS_FOR_PRIMITIVES);
+
+		lDtCRegExEClass = createEClass(LDT_CREG_EX);
+		createEAttribute(lDtCRegExEClass, LDT_CREG_EX__PATTERN);
+		createEOperation(lDtCRegExEClass, LDT_CREG_EX___IS_FOR_PRIMITIVES);
+
+		lDtCSizeEClass = createEClass(LDT_CSIZE);
+		createEAttribute(lDtCSizeEClass, LDT_CSIZE__MIN);
+		createEAttribute(lDtCSizeEClass, LDT_CSIZE__MAX);
+		createEOperation(lDtCSizeEClass, LDT_CSIZE___IS_FOR_PRIMITIVES);
+
+		// Create enums
+		lDateTypeEEnum = createEEnum(LDATE_TYPE);
+		lVisibilityEEnum = createEEnum(LVISIBILITY);
+		lLowerBoundEEnum = createEEnum(LLOWER_BOUND);
+		lUpperBoundEEnum = createEEnum(LUPPER_BOUND);
+		lComparatorTypeEEnum = createEEnum(LCOMPARATOR_TYPE);
+		lConstraintSeverityEEnum = createEEnum(LCONSTRAINT_SEVERITY);
+
+		// Create data types
+		operationsListEDataType = createEDataType(OPERATIONS_LIST);
+		featuresListEDataType = createEDataType(FEATURES_LIST);
+		annotationListEDataType = createEDataType(ANNOTATION_LIST);
+		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);
+		XAnnotationsPackage theXAnnotationsPackage = (XAnnotationsPackage)EPackage.Registry.INSTANCE.getEPackage(XAnnotationsPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		XbasePackage theXbasePackage = (XbasePackage)EPackage.Registry.INSTANCE.getEPackage(XbasePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		lCommonModelEClass.getESuperTypes().add(this.getLLazyResolver());
+		lPackageEClass.getESuperTypes().add(this.getLLazyResolver());
+		lTypedPackageEClass.getESuperTypes().add(this.getLPackage());
+		lTypeEClass.getESuperTypes().add(this.getLAnnotationTarget());
+		lAnnotationDefEClass.getESuperTypes().add(this.getLLazyResolver());
+		lAnnotationTargetEClass.getESuperTypes().add(this.getLLazyResolver());
+		lScalarTypeEClass.getESuperTypes().add(this.getLType());
+		lDataTypeEClass.getESuperTypes().add(this.getLScalarType());
+		lEnumEClass.getESuperTypes().add(this.getLScalarType());
+		lEnumLiteralEClass.getESuperTypes().add(this.getLLazyResolver());
+		lClassEClass.getESuperTypes().add(this.getLType());
+		lFeatureEClass.getESuperTypes().add(this.getLAnnotationTarget());
+		lReferenceEClass.getESuperTypes().add(this.getLFeature());
+		lAttributeEClass.getESuperTypes().add(this.getLFeature());
+		lOperationEClass.getESuperTypes().add(this.getLAnnotationTarget());
+		lModifierEClass.getESuperTypes().add(this.getLLazyResolver());
+		lConstraintEClass.getESuperTypes().add(this.getLLazyResolver());
+		lResultFiltersEClass.getESuperTypes().add(this.getLLazyResolver());
+		lResultFilterEClass.getESuperTypes().add(this.getLConstraint());
+		lAttributeMatchingConstraintEClass.getESuperTypes().add(this.getLResultFilter());
+		lDatatypeConstraintEClass.getESuperTypes().add(this.getLConstraint());
+		lStringConstraintEClass.getESuperTypes().add(this.getLDatatypeConstraint());
+		lNumericConstraintEClass.getESuperTypes().add(this.getLDatatypeConstraint());
+		lDecimalConstraintEClass.getESuperTypes().add(this.getLDatatypeConstraint());
+		lDateConstraintEClass.getESuperTypes().add(this.getLDatatypeConstraint());
+		lBooleanConstraintEClass.getESuperTypes().add(this.getLDatatypeConstraint());
+		lBlobConstraintEClass.getESuperTypes().add(this.getLDatatypeConstraint());
+		lDtCAssertFalseEClass.getESuperTypes().add(this.getLBooleanConstraint());
+		lDtCAssertTrueEClass.getESuperTypes().add(this.getLBooleanConstraint());
+		lDtCDecimalMaxEClass.getESuperTypes().add(this.getLDecimalConstraint());
+		lDtCDecimalMinEClass.getESuperTypes().add(this.getLDecimalConstraint());
+		lDtCDigitsEClass.getESuperTypes().add(this.getLDecimalConstraint());
+		lDtCFutureEClass.getESuperTypes().add(this.getLDateConstraint());
+		lDtCPastEClass.getESuperTypes().add(this.getLDateConstraint());
+		lDtCNumericMaxEClass.getESuperTypes().add(this.getLNumericConstraint());
+		lDtCNumericMinEClass.getESuperTypes().add(this.getLNumericConstraint());
+		lDtCNotNullEClass.getESuperTypes().add(this.getLBlobConstraint());
+		lDtCNotNullEClass.getESuperTypes().add(this.getLDateConstraint());
+		lDtCNotNullEClass.getESuperTypes().add(this.getLStringConstraint());
+		lDtCNotNullEClass.getESuperTypes().add(this.getLBooleanConstraint());
+		lDtCNotNullEClass.getESuperTypes().add(this.getLDecimalConstraint());
+		lDtCNotNullEClass.getESuperTypes().add(this.getLNumericConstraint());
+		lDtCNullEClass.getESuperTypes().add(this.getLBlobConstraint());
+		lDtCNullEClass.getESuperTypes().add(this.getLDateConstraint());
+		lDtCNullEClass.getESuperTypes().add(this.getLStringConstraint());
+		lDtCNullEClass.getESuperTypes().add(this.getLBooleanConstraint());
+		lDtCNullEClass.getESuperTypes().add(this.getLDecimalConstraint());
+		lDtCNullEClass.getESuperTypes().add(this.getLNumericConstraint());
+		lDtCRegExEClass.getESuperTypes().add(this.getLStringConstraint());
+		lDtCSizeEClass.getESuperTypes().add(this.getLStringConstraint());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(lCommonModelEClass, LCommonModel.class, "LCommonModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLCommonModel_Packages(), this.getLTypedPackage(), null, "packages", null, 0, -1, LCommonModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lLazyResolverEClass, LLazyResolver.class, "LLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		EOperation op = initEOperation(getLLazyResolver__EResolveProxy__InternalEObject(), theEcorePackage.getEObject(), "eResolveProxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lPackageEClass, LPackage.class, "LPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLPackage_Name(), theEcorePackage.getEString(), "name", null, 0, 1, LPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLPackage_Imports(), this.getLImport(), null, "imports", null, 0, -1, LPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lTypedPackageEClass, LTypedPackage.class, "LTypedPackage", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLTypedPackage_Types(), this.getLType(), null, "types", null, 0, -1, LTypedPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLTypedPackage__GetResourceSimpleName(), theEcorePackage.getEString(), "getResourceSimpleName", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lImportEClass, LImport.class, "LImport", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLImport_ImportedNamespace(), theEcorePackage.getEString(), "importedNamespace", null, 0, 1, LImport.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lTypeEClass, LType.class, "LType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLType_Name(), theEcorePackage.getEString(), "name", null, 0, 1, LType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLType_AnnotationInfo(), this.getLAnnotationTarget(), null, "annotationInfo", null, 0, 1, LType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLType__GetResolvedAnnotations(), this.getAnnotationList(), "getResolvedAnnotations", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lAnnotationDefEClass, LAnnotationDef.class, "LAnnotationDef", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLAnnotationDef_Exclude(), theEcorePackage.getEBoolean(), "exclude", null, 0, 1, LAnnotationDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAnnotationDef_Annotation(), theXAnnotationsPackage.getXAnnotation(), null, "annotation", null, 0, 1, LAnnotationDef.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lAnnotationTargetEClass, LAnnotationTarget.class, "LAnnotationTarget", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLAnnotationTarget_Annotations(), this.getLAnnotationDef(), null, "annotations", null, 0, -1, LAnnotationTarget.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lScalarTypeEClass, LScalarType.class, "LScalarType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lDataTypeEClass, LDataType.class, "LDataType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDataType_JvmTypeReference(), theTypesPackage.getJvmTypeReference(), null, "jvmTypeReference", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_AsPrimitive(), theEcorePackage.getEBoolean(), "asPrimitive", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_Date(), theEcorePackage.getEBoolean(), "date", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_AsBlob(), theEcorePackage.getEBoolean(), "asBlob", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_Length(), theEcorePackage.getEInt(), "length", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_DateType(), this.getLDateType(), "dateType", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_SyntheticFlag(), theEcorePackage.getEBoolean(), "syntheticFlag", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDataType_SyntheticSelector(), theEcorePackage.getEString(), "syntheticSelector", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDataType_SyntheticTypeReference(), this.getLFeature(), null, "syntheticTypeReference", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDataType_SyntheticType(), this.getLType(), null, "syntheticType", null, 0, 1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDataType_Properties(), this.getLKeyAndValue(), null, "properties", null, 0, -1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDataType_Constraints(), this.getLDatatypeConstraint(), null, "constraints", null, 0, -1, LDataType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lEnumEClass, LEnum.class, "LEnum", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLEnum_Literals(), this.getLEnumLiteral(), null, "literals", null, 0, -1, LEnum.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lEnumLiteralEClass, LEnumLiteral.class, "LEnumLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLEnumLiteral_Name(), theEcorePackage.getEString(), "name", null, 0, 1, LEnumLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEnumLiteral_Default(), theEcorePackage.getEBoolean(), "default", null, 0, 1, LEnumLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEnumLiteral_Null(), theEcorePackage.getEBoolean(), "null", null, 0, 1, LEnumLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEnumLiteral_Value(), theEcorePackage.getEInt(), "value", null, 0, 1, LEnumLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lClassEClass, LClass.class, "LClass", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLClass_Abstract(), theEcorePackage.getEBoolean(), "abstract", null, 0, 1, LClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLClass_Serializable(), theEcorePackage.getEBoolean(), "serializable", null, 0, 1, LClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLClass_ShortName(), theEcorePackage.getEString(), "shortName", null, 0, 1, LClass.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lFeaturesHolderEClass, LFeaturesHolder.class, "LFeaturesHolder", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLFeaturesHolder__GetFeatures(), this.getFeaturesList(), "getFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLFeaturesHolder__GetAllFeatures(), this.getFeaturesList(), "getAllFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lFeatureEClass, LFeature.class, "LFeature", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLFeature_Name(), theEcorePackage.getEString(), "name", null, 0, 1, LFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLFeature_Multiplicity(), this.getLMultiplicity(), null, "multiplicity", null, 0, 1, LFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLFeature_AnnotationInfo(), this.getLAnnotationTarget(), null, "annotationInfo", null, 0, 1, LFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLFeature__GetResolvedAnnotations(), this.getAnnotationList(), "getResolvedAnnotations", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lReferenceEClass, LReference.class, "LReference", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLReference_Lazy(), theEcorePackage.getEBoolean(), "lazy", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLReference_Cascading(), theEcorePackage.getEBoolean(), "cascading", null, 0, 1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLReference_Properties(), this.getLKeyAndValue(), null, "properties", null, 0, -1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLReference_Constraints(), this.getLDatatypeConstraint(), null, "constraints", null, 0, -1, LReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lAttributeEClass, LAttribute.class, "LAttribute", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLAttribute_Id(), theEcorePackage.getEBoolean(), "id", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Uuid(), theEcorePackage.getEBoolean(), "uuid", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Version(), theEcorePackage.getEBoolean(), "version", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Lazy(), theEcorePackage.getEBoolean(), "lazy", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Cascading(), theEcorePackage.getEBoolean(), "cascading", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Transient(), theEcorePackage.getEBoolean(), "transient", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Derived(), theEcorePackage.getEBoolean(), "derived", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_Dirty(), theEcorePackage.getEBoolean(), "dirty", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_DomainKey(), theEcorePackage.getEBoolean(), "domainKey", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttribute_DomainDescription(), theEcorePackage.getEBoolean(), "domainDescription", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAttribute_DerivedGetterExpression(), theXbasePackage.getXExpression(), null, "derivedGetterExpression", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAttribute_Type(), this.getLScalarType(), null, "type", null, 0, 1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAttribute_TypeJvm(), theTypesPackage.getJvmTypeReference(), null, "typeJvm", null, 0, 1, LAttribute.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAttribute_Properties(), this.getLKeyAndValue(), null, "properties", null, 0, -1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAttribute_Constraints(), this.getLDatatypeConstraint(), null, "constraints", null, 0, -1, LAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lKeyAndValueEClass, LKeyAndValue.class, "LKeyAndValue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLKeyAndValue_Key(), theEcorePackage.getEString(), "key", null, 0, 1, LKeyAndValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLKeyAndValue_Value(), theEcorePackage.getEString(), "value", null, 0, 1, LKeyAndValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lOperationEClass, LOperation.class, "LOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLOperation_Modifier(), this.getLModifier(), null, "modifier", null, 0, 1, LOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLOperation_Type(), theTypesPackage.getJvmTypeReference(), null, "type", null, 0, 1, LOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLOperation_Params(), theTypesPackage.getJvmFormalParameter(), null, "params", null, 0, -1, LOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLOperation_Body(), theXbasePackage.getXExpression(), null, "body", null, 0, 1, LOperation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLOperation__GetResolvedAnnotations(), this.getAnnotationList(), "getResolvedAnnotations", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lModifierEClass, LModifier.class, "LModifier", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLModifier_Final(), theEcorePackage.getEBoolean(), "final", null, 0, 1, LModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLModifier_Static(), theEcorePackage.getEBoolean(), "static", null, 0, 1, LModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLModifier_Visibility(), this.getLVisibility(), "visibility", null, 0, 1, LModifier.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lMultiplicityEClass, LMultiplicity.class, "LMultiplicity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLMultiplicity_Lower(), this.getLLowerBound(), "lower", null, 0, 1, LMultiplicity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLMultiplicity_Upper(), this.getLUpperBound(), "upper", null, 0, 1, LMultiplicity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLMultiplicity_ToMultiplicityString(), theEcorePackage.getEString(), "toMultiplicityString", null, 0, 1, LMultiplicity.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+		initEClass(lConstraintEClass, LConstraint.class, "LConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lResultFiltersEClass, LResultFilters.class, "LResultFilters", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLResultFilters_ResultFilters(), this.getLResultFilter(), null, "resultFilters", null, 0, -1, LResultFilters.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lResultFilterEClass, LResultFilter.class, "LResultFilter", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lAttributeMatchingConstraintEClass, LAttributeMatchingConstraint.class, "LAttributeMatchingConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLAttributeMatchingConstraint_Attribute(), this.getLAttribute(), null, "attribute", null, 0, 1, LAttributeMatchingConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttributeMatchingConstraint_ComparatorType(), this.getLComparatorType(), "comparatorType", null, 0, 1, LAttributeMatchingConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLAttributeMatchingConstraint_MatchingValue(), theEcorePackage.getEString(), "matchingValue", null, 0, 1, LAttributeMatchingConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLAttributeMatchingConstraint_MatchingLiteral(), this.getLEnumLiteral(), null, "matchingLiteral", null, 0, 1, LAttributeMatchingConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lDatatypeConstraintEClass, LDatatypeConstraint.class, "LDatatypeConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDatatypeConstraint_MsgCode(), theEcorePackage.getEString(), "msgCode", null, 0, 1, LDatatypeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDatatypeConstraint_MsgI18nKey(), theEcorePackage.getEString(), "msgI18nKey", null, 0, 1, LDatatypeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDatatypeConstraint_Severity(), this.getLConstraintSeverity(), "severity", null, 0, 1, LDatatypeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDatatypeConstraint__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lStringConstraintEClass, LStringConstraint.class, "LStringConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lNumericConstraintEClass, LNumericConstraint.class, "LNumericConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lDecimalConstraintEClass, LDecimalConstraint.class, "LDecimalConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lDateConstraintEClass, LDateConstraint.class, "LDateConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lBooleanConstraintEClass, LBooleanConstraint.class, "LBooleanConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lBlobConstraintEClass, LBlobConstraint.class, "LBlobConstraint", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lDtCAssertFalseEClass, LDtCAssertFalse.class, "LDtCAssertFalse", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLDtCAssertFalse__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCAssertTrueEClass, LDtCAssertTrue.class, "LDtCAssertTrue", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLDtCAssertTrue__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCDecimalMaxEClass, LDtCDecimalMax.class, "LDtCDecimalMax", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCDecimalMax_Max(), theEcorePackage.getEFloat(), "max", null, 0, 1, LDtCDecimalMax.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCDecimalMax__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCDecimalMinEClass, LDtCDecimalMin.class, "LDtCDecimalMin", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCDecimalMin_Min(), theEcorePackage.getEFloat(), "min", null, 0, 1, LDtCDecimalMin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCDecimalMin__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCDigitsEClass, LDtCDigits.class, "LDtCDigits", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCDigits_IntDigits(), theEcorePackage.getEInt(), "intDigits", null, 0, 1, LDtCDigits.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDtCDigits_FractionDigits(), theEcorePackage.getEInt(), "fractionDigits", null, 0, 1, LDtCDigits.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCDigits__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCFutureEClass, LDtCFuture.class, "LDtCFuture", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLDtCFuture__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCPastEClass, LDtCPast.class, "LDtCPast", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLDtCPast__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCNumericMaxEClass, LDtCNumericMax.class, "LDtCNumericMax", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCNumericMax_Max(), theEcorePackage.getEInt(), "max", null, 0, 1, LDtCNumericMax.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCNumericMax__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCNumericMinEClass, LDtCNumericMin.class, "LDtCNumericMin", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCNumericMin_Min(), theEcorePackage.getEInt(), "min", null, 0, 1, LDtCNumericMin.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCNumericMin__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCNotNullEClass, LDtCNotNull.class, "LDtCNotNull", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLDtCNotNull__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCNullEClass, LDtCNull.class, "LDtCNull", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLDtCNull__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCRegExEClass, LDtCRegEx.class, "LDtCRegEx", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCRegEx_Pattern(), theEcorePackage.getEString(), "pattern", null, 0, 1, LDtCRegEx.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCRegEx__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtCSizeEClass, LDtCSize.class, "LDtCSize", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLDtCSize_Min(), theEcorePackage.getEInt(), "min", null, 0, 1, LDtCSize.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDtCSize_Max(), theEcorePackage.getEInt(), "max", null, 0, 1, LDtCSize.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLDtCSize__IsForPrimitives(), theEcorePackage.getEBoolean(), "isForPrimitives", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(lDateTypeEEnum, LDateType.class, "LDateType");
+		addEEnumLiteral(lDateTypeEEnum, LDateType.DATE);
+		addEEnumLiteral(lDateTypeEEnum, LDateType.TIME);
+		addEEnumLiteral(lDateTypeEEnum, LDateType.TIMESTAMP);
+
+		initEEnum(lVisibilityEEnum, LVisibility.class, "LVisibility");
+		addEEnumLiteral(lVisibilityEEnum, LVisibility.PACKAGE);
+		addEEnumLiteral(lVisibilityEEnum, LVisibility.PRIVATE);
+		addEEnumLiteral(lVisibilityEEnum, LVisibility.PROTECTED);
+		addEEnumLiteral(lVisibilityEEnum, LVisibility.PUBLIC);
+
+		initEEnum(lLowerBoundEEnum, LLowerBound.class, "LLowerBound");
+		addEEnumLiteral(lLowerBoundEEnum, LLowerBound.NULL);
+		addEEnumLiteral(lLowerBoundEEnum, LLowerBound.MANY);
+		addEEnumLiteral(lLowerBoundEEnum, LLowerBound.OPTIONAL);
+		addEEnumLiteral(lLowerBoundEEnum, LLowerBound.ATLEASTONE);
+		addEEnumLiteral(lLowerBoundEEnum, LLowerBound.ZERO);
+		addEEnumLiteral(lLowerBoundEEnum, LLowerBound.ONE);
+
+		initEEnum(lUpperBoundEEnum, LUpperBound.class, "LUpperBound");
+		addEEnumLiteral(lUpperBoundEEnum, LUpperBound.NULL);
+		addEEnumLiteral(lUpperBoundEEnum, LUpperBound.MANY);
+		addEEnumLiteral(lUpperBoundEEnum, LUpperBound.ONE);
+
+		initEEnum(lComparatorTypeEEnum, LComparatorType.class, "LComparatorType");
+		addEEnumLiteral(lComparatorTypeEEnum, LComparatorType.EQUALS);
+		addEEnumLiteral(lComparatorTypeEEnum, LComparatorType.GREATER);
+		addEEnumLiteral(lComparatorTypeEEnum, LComparatorType.LOWER);
+		addEEnumLiteral(lComparatorTypeEEnum, LComparatorType.GREATER_EQ);
+		addEEnumLiteral(lComparatorTypeEEnum, LComparatorType.LOWER_EQ);
+		addEEnumLiteral(lComparatorTypeEEnum, LComparatorType.NOT_EQ);
+
+		initEEnum(lConstraintSeverityEEnum, LConstraintSeverity.class, "LConstraintSeverity");
+		addEEnumLiteral(lConstraintSeverityEEnum, LConstraintSeverity.INFO);
+		addEEnumLiteral(lConstraintSeverityEEnum, LConstraintSeverity.WARNING);
+		addEEnumLiteral(lConstraintSeverityEEnum, LConstraintSeverity.ERROR);
+
+		// Initialize data types
+		initEDataType(operationsListEDataType, List.class, "OperationsList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.common.types.LOperation>");
+		initEDataType(featuresListEDataType, List.class, "FeaturesList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<? extends org.eclipse.osbp.dsl.semantic.common.types.LFeature>");
+		initEDataType(annotationListEDataType, EList.class, "AnnotationList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "org.eclipse.emf.common.util.EList<org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef>");
+		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", "types"
+		   });
+	}
+
+} //OSBPTypesPackageImpl
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java
new file mode 100644
index 0000000..40e02c3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesAdapterFactory.java
@@ -0,0 +1,923 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.*;
+
+/**
+ * <!-- 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.dsl.semantic.common.types.OSBPTypesPackage
+ * @generated
+ */
+public class OSBPTypesAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPTypesPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPTypesAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = OSBPTypesPackage.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 OSBPTypesSwitch<Adapter> modelSwitch =
+		new OSBPTypesSwitch<Adapter>() {
+			@Override
+			public Adapter caseLCommonModel(LCommonModel object) {
+				return createLCommonModelAdapter();
+			}
+			@Override
+			public Adapter caseLLazyResolver(LLazyResolver object) {
+				return createLLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseLPackage(LPackage object) {
+				return createLPackageAdapter();
+			}
+			@Override
+			public Adapter caseLTypedPackage(LTypedPackage object) {
+				return createLTypedPackageAdapter();
+			}
+			@Override
+			public Adapter caseLImport(LImport object) {
+				return createLImportAdapter();
+			}
+			@Override
+			public Adapter caseLType(LType object) {
+				return createLTypeAdapter();
+			}
+			@Override
+			public Adapter caseLAnnotationDef(LAnnotationDef object) {
+				return createLAnnotationDefAdapter();
+			}
+			@Override
+			public Adapter caseLAnnotationTarget(LAnnotationTarget object) {
+				return createLAnnotationTargetAdapter();
+			}
+			@Override
+			public Adapter caseLScalarType(LScalarType object) {
+				return createLScalarTypeAdapter();
+			}
+			@Override
+			public Adapter caseLDataType(LDataType object) {
+				return createLDataTypeAdapter();
+			}
+			@Override
+			public Adapter caseLEnum(LEnum object) {
+				return createLEnumAdapter();
+			}
+			@Override
+			public Adapter caseLEnumLiteral(LEnumLiteral object) {
+				return createLEnumLiteralAdapter();
+			}
+			@Override
+			public Adapter caseLClass(LClass object) {
+				return createLClassAdapter();
+			}
+			@Override
+			public Adapter caseLFeaturesHolder(LFeaturesHolder object) {
+				return createLFeaturesHolderAdapter();
+			}
+			@Override
+			public Adapter caseLFeature(LFeature object) {
+				return createLFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLReference(LReference object) {
+				return createLReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLAttribute(LAttribute object) {
+				return createLAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLKeyAndValue(LKeyAndValue object) {
+				return createLKeyAndValueAdapter();
+			}
+			@Override
+			public Adapter caseLOperation(LOperation object) {
+				return createLOperationAdapter();
+			}
+			@Override
+			public Adapter caseLModifier(LModifier object) {
+				return createLModifierAdapter();
+			}
+			@Override
+			public Adapter caseLMultiplicity(LMultiplicity object) {
+				return createLMultiplicityAdapter();
+			}
+			@Override
+			public Adapter caseLConstraint(LConstraint object) {
+				return createLConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLResultFilters(LResultFilters object) {
+				return createLResultFiltersAdapter();
+			}
+			@Override
+			public Adapter caseLResultFilter(LResultFilter object) {
+				return createLResultFilterAdapter();
+			}
+			@Override
+			public Adapter caseLAttributeMatchingConstraint(LAttributeMatchingConstraint object) {
+				return createLAttributeMatchingConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLDatatypeConstraint(LDatatypeConstraint object) {
+				return createLDatatypeConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLStringConstraint(LStringConstraint object) {
+				return createLStringConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLNumericConstraint(LNumericConstraint object) {
+				return createLNumericConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLDecimalConstraint(LDecimalConstraint object) {
+				return createLDecimalConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLDateConstraint(LDateConstraint object) {
+				return createLDateConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLBooleanConstraint(LBooleanConstraint object) {
+				return createLBooleanConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLBlobConstraint(LBlobConstraint object) {
+				return createLBlobConstraintAdapter();
+			}
+			@Override
+			public Adapter caseLDtCAssertFalse(LDtCAssertFalse object) {
+				return createLDtCAssertFalseAdapter();
+			}
+			@Override
+			public Adapter caseLDtCAssertTrue(LDtCAssertTrue object) {
+				return createLDtCAssertTrueAdapter();
+			}
+			@Override
+			public Adapter caseLDtCDecimalMax(LDtCDecimalMax object) {
+				return createLDtCDecimalMaxAdapter();
+			}
+			@Override
+			public Adapter caseLDtCDecimalMin(LDtCDecimalMin object) {
+				return createLDtCDecimalMinAdapter();
+			}
+			@Override
+			public Adapter caseLDtCDigits(LDtCDigits object) {
+				return createLDtCDigitsAdapter();
+			}
+			@Override
+			public Adapter caseLDtCFuture(LDtCFuture object) {
+				return createLDtCFutureAdapter();
+			}
+			@Override
+			public Adapter caseLDtCPast(LDtCPast object) {
+				return createLDtCPastAdapter();
+			}
+			@Override
+			public Adapter caseLDtCNumericMax(LDtCNumericMax object) {
+				return createLDtCNumericMaxAdapter();
+			}
+			@Override
+			public Adapter caseLDtCNumericMin(LDtCNumericMin object) {
+				return createLDtCNumericMinAdapter();
+			}
+			@Override
+			public Adapter caseLDtCNotNull(LDtCNotNull object) {
+				return createLDtCNotNullAdapter();
+			}
+			@Override
+			public Adapter caseLDtCNull(LDtCNull object) {
+				return createLDtCNullAdapter();
+			}
+			@Override
+			public Adapter caseLDtCRegEx(LDtCRegEx object) {
+				return createLDtCRegExAdapter();
+			}
+			@Override
+			public Adapter caseLDtCSize(LDtCSize object) {
+				return createLDtCSizeAdapter();
+			}
+			@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.dsl.semantic.common.types.LCommonModel <em>LCommon 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.dsl.semantic.common.types.LCommonModel
+	 * @generated
+	 */
+	public Adapter createLCommonModelAdapter() {
+		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 an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage <em>LTyped 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.dsl.semantic.common.types.LTypedPackage
+	 * @generated
+	 */
+	public Adapter createLTypedPackageAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LImport <em>LImport</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.LImport
+	 * @generated
+	 */
+	public Adapter createLImportAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LType <em>LType</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.LType
+	 * @generated
+	 */
+	public Adapter createLTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef <em>LAnnotation Def</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.LAnnotationDef
+	 * @generated
+	 */
+	public Adapter createLAnnotationDefAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget <em>LAnnotation Target</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.LAnnotationTarget
+	 * @generated
+	 */
+	public Adapter createLAnnotationTargetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType <em>LScalar 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.dsl.semantic.common.types.LScalarType
+	 * @generated
+	 */
+	public Adapter createLScalarTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDataType <em>LData 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.dsl.semantic.common.types.LDataType
+	 * @generated
+	 */
+	public Adapter createLDataTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnum <em>LEnum</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.LEnum
+	 * @generated
+	 */
+	public Adapter createLEnumAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral <em>LEnum Literal</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.LEnumLiteral
+	 * @generated
+	 */
+	public Adapter createLEnumLiteralAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass <em>LClass</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.LClass
+	 * @generated
+	 */
+	public Adapter createLClassAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</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.LFeaturesHolder
+	 * @generated
+	 */
+	public Adapter createLFeaturesHolderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</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.LFeature
+	 * @generated
+	 */
+	public Adapter createLFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference <em>LReference</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.LReference
+	 * @generated
+	 */
+	public Adapter createLReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</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.LAttribute
+	 * @generated
+	 */
+	public Adapter createLAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue <em>LKey And Value</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.LKeyAndValue
+	 * @generated
+	 */
+	public Adapter createLKeyAndValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation <em>LOperation</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.LOperation
+	 * @generated
+	 */
+	public Adapter createLOperationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LModifier <em>LModifier</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.LModifier
+	 * @generated
+	 */
+	public Adapter createLModifierAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity <em>LMultiplicity</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.LMultiplicity
+	 * @generated
+	 */
+	public Adapter createLMultiplicityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LConstraint <em>LConstraint</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.LConstraint
+	 * @generated
+	 */
+	public Adapter createLConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilters <em>LResult Filters</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.LResultFilters
+	 * @generated
+	 */
+	public Adapter createLResultFiltersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LResultFilter <em>LResult 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.dsl.semantic.common.types.LResultFilter
+	 * @generated
+	 */
+	public Adapter createLResultFilterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint <em>LAttribute Matching Constraint</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.LAttributeMatchingConstraint
+	 * @generated
+	 */
+	public Adapter createLAttributeMatchingConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint <em>LDatatype Constraint</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.LDatatypeConstraint
+	 * @generated
+	 */
+	public Adapter createLDatatypeConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LStringConstraint <em>LString Constraint</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.LStringConstraint
+	 * @generated
+	 */
+	public Adapter createLStringConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LNumericConstraint <em>LNumeric Constraint</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.LNumericConstraint
+	 * @generated
+	 */
+	public Adapter createLNumericConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDecimalConstraint <em>LDecimal Constraint</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.LDecimalConstraint
+	 * @generated
+	 */
+	public Adapter createLDecimalConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDateConstraint <em>LDate Constraint</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.LDateConstraint
+	 * @generated
+	 */
+	public Adapter createLDateConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LBooleanConstraint <em>LBoolean Constraint</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.LBooleanConstraint
+	 * @generated
+	 */
+	public Adapter createLBooleanConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LBlobConstraint <em>LBlob Constraint</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.LBlobConstraint
+	 * @generated
+	 */
+	public Adapter createLBlobConstraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse <em>LDt CAssert False</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.LDtCAssertFalse
+	 * @generated
+	 */
+	public Adapter createLDtCAssertFalseAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue <em>LDt CAssert True</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.LDtCAssertTrue
+	 * @generated
+	 */
+	public Adapter createLDtCAssertTrueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax <em>LDt CDecimal Max</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.LDtCDecimalMax
+	 * @generated
+	 */
+	public Adapter createLDtCDecimalMaxAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin <em>LDt CDecimal Min</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.LDtCDecimalMin
+	 * @generated
+	 */
+	public Adapter createLDtCDecimalMinAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits <em>LDt CDigits</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.LDtCDigits
+	 * @generated
+	 */
+	public Adapter createLDtCDigitsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture <em>LDt CFuture</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.LDtCFuture
+	 * @generated
+	 */
+	public Adapter createLDtCFutureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCPast <em>LDt CPast</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.LDtCPast
+	 * @generated
+	 */
+	public Adapter createLDtCPastAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax <em>LDt CNumeric Max</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.LDtCNumericMax
+	 * @generated
+	 */
+	public Adapter createLDtCNumericMaxAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin <em>LDt CNumeric Min</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.LDtCNumericMin
+	 * @generated
+	 */
+	public Adapter createLDtCNumericMinAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull <em>LDt CNot Null</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.LDtCNotNull
+	 * @generated
+	 */
+	public Adapter createLDtCNotNullAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCNull <em>LDt CNull</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.LDtCNull
+	 * @generated
+	 */
+	public Adapter createLDtCNullAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx <em>LDt CReg Ex</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.LDtCRegEx
+	 * @generated
+	 */
+	public Adapter createLDtCRegExAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LDtCSize <em>LDt CSize</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.LDtCSize
+	 * @generated
+	 */
+	public Adapter createLDtCSizeAdapter() {
+		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;
+	}
+
+} //OSBPTypesAdapterFactory
diff --git a/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java
new file mode 100644
index 0000000..5b6afa8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src-gen/org/eclipse/osbp/dsl/semantic/common/types/util/OSBPTypesSwitch.java
@@ -0,0 +1,1168 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.common.types.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.*;
+
+/**
+ * <!-- 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.dsl.semantic.common.types.OSBPTypesPackage
+ * @generated
+ */
+public class OSBPTypesSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPTypesPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPTypesSwitch() {
+		if (modelPackage == null) {
+			modelPackage = OSBPTypesPackage.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 OSBPTypesPackage.LCOMMON_MODEL: {
+				LCommonModel lCommonModel = (LCommonModel)theEObject;
+				T result = caseLCommonModel(lCommonModel);
+				if (result == null) result = caseLLazyResolver(lCommonModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LLAZY_RESOLVER: {
+				LLazyResolver lLazyResolver = (LLazyResolver)theEObject;
+				T result = caseLLazyResolver(lLazyResolver);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LPACKAGE: {
+				LPackage lPackage = (LPackage)theEObject;
+				T result = caseLPackage(lPackage);
+				if (result == null) result = caseLLazyResolver(lPackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LTYPED_PACKAGE: {
+				LTypedPackage lTypedPackage = (LTypedPackage)theEObject;
+				T result = caseLTypedPackage(lTypedPackage);
+				if (result == null) result = caseLPackage(lTypedPackage);
+				if (result == null) result = caseLLazyResolver(lTypedPackage);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LIMPORT: {
+				LImport lImport = (LImport)theEObject;
+				T result = caseLImport(lImport);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LTYPE: {
+				LType lType = (LType)theEObject;
+				T result = caseLType(lType);
+				if (result == null) result = caseLAnnotationTarget(lType);
+				if (result == null) result = caseLLazyResolver(lType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LANNOTATION_DEF: {
+				LAnnotationDef lAnnotationDef = (LAnnotationDef)theEObject;
+				T result = caseLAnnotationDef(lAnnotationDef);
+				if (result == null) result = caseLLazyResolver(lAnnotationDef);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LANNOTATION_TARGET: {
+				LAnnotationTarget lAnnotationTarget = (LAnnotationTarget)theEObject;
+				T result = caseLAnnotationTarget(lAnnotationTarget);
+				if (result == null) result = caseLLazyResolver(lAnnotationTarget);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LSCALAR_TYPE: {
+				LScalarType lScalarType = (LScalarType)theEObject;
+				T result = caseLScalarType(lScalarType);
+				if (result == null) result = caseLType(lScalarType);
+				if (result == null) result = caseLAnnotationTarget(lScalarType);
+				if (result == null) result = caseLLazyResolver(lScalarType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDATA_TYPE: {
+				LDataType lDataType = (LDataType)theEObject;
+				T result = caseLDataType(lDataType);
+				if (result == null) result = caseLScalarType(lDataType);
+				if (result == null) result = caseLType(lDataType);
+				if (result == null) result = caseLAnnotationTarget(lDataType);
+				if (result == null) result = caseLLazyResolver(lDataType);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LENUM: {
+				LEnum lEnum = (LEnum)theEObject;
+				T result = caseLEnum(lEnum);
+				if (result == null) result = caseLScalarType(lEnum);
+				if (result == null) result = caseLType(lEnum);
+				if (result == null) result = caseLAnnotationTarget(lEnum);
+				if (result == null) result = caseLLazyResolver(lEnum);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LENUM_LITERAL: {
+				LEnumLiteral lEnumLiteral = (LEnumLiteral)theEObject;
+				T result = caseLEnumLiteral(lEnumLiteral);
+				if (result == null) result = caseLLazyResolver(lEnumLiteral);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LCLASS: {
+				LClass lClass = (LClass)theEObject;
+				T result = caseLClass(lClass);
+				if (result == null) result = caseLType(lClass);
+				if (result == null) result = caseLAnnotationTarget(lClass);
+				if (result == null) result = caseLLazyResolver(lClass);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LFEATURES_HOLDER: {
+				LFeaturesHolder lFeaturesHolder = (LFeaturesHolder)theEObject;
+				T result = caseLFeaturesHolder(lFeaturesHolder);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LFEATURE: {
+				LFeature lFeature = (LFeature)theEObject;
+				T result = caseLFeature(lFeature);
+				if (result == null) result = caseLAnnotationTarget(lFeature);
+				if (result == null) result = caseLLazyResolver(lFeature);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LREFERENCE: {
+				LReference lReference = (LReference)theEObject;
+				T result = caseLReference(lReference);
+				if (result == null) result = caseLFeature(lReference);
+				if (result == null) result = caseLAnnotationTarget(lReference);
+				if (result == null) result = caseLLazyResolver(lReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LATTRIBUTE: {
+				LAttribute lAttribute = (LAttribute)theEObject;
+				T result = caseLAttribute(lAttribute);
+				if (result == null) result = caseLFeature(lAttribute);
+				if (result == null) result = caseLAnnotationTarget(lAttribute);
+				if (result == null) result = caseLLazyResolver(lAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LKEY_AND_VALUE: {
+				LKeyAndValue lKeyAndValue = (LKeyAndValue)theEObject;
+				T result = caseLKeyAndValue(lKeyAndValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LOPERATION: {
+				LOperation lOperation = (LOperation)theEObject;
+				T result = caseLOperation(lOperation);
+				if (result == null) result = caseLAnnotationTarget(lOperation);
+				if (result == null) result = caseLLazyResolver(lOperation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LMODIFIER: {
+				LModifier lModifier = (LModifier)theEObject;
+				T result = caseLModifier(lModifier);
+				if (result == null) result = caseLLazyResolver(lModifier);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LMULTIPLICITY: {
+				LMultiplicity lMultiplicity = (LMultiplicity)theEObject;
+				T result = caseLMultiplicity(lMultiplicity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LCONSTRAINT: {
+				LConstraint lConstraint = (LConstraint)theEObject;
+				T result = caseLConstraint(lConstraint);
+				if (result == null) result = caseLLazyResolver(lConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LRESULT_FILTERS: {
+				LResultFilters lResultFilters = (LResultFilters)theEObject;
+				T result = caseLResultFilters(lResultFilters);
+				if (result == null) result = caseLLazyResolver(lResultFilters);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LRESULT_FILTER: {
+				LResultFilter lResultFilter = (LResultFilter)theEObject;
+				T result = caseLResultFilter(lResultFilter);
+				if (result == null) result = caseLConstraint(lResultFilter);
+				if (result == null) result = caseLLazyResolver(lResultFilter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT: {
+				LAttributeMatchingConstraint lAttributeMatchingConstraint = (LAttributeMatchingConstraint)theEObject;
+				T result = caseLAttributeMatchingConstraint(lAttributeMatchingConstraint);
+				if (result == null) result = caseLResultFilter(lAttributeMatchingConstraint);
+				if (result == null) result = caseLConstraint(lAttributeMatchingConstraint);
+				if (result == null) result = caseLLazyResolver(lAttributeMatchingConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDATATYPE_CONSTRAINT: {
+				LDatatypeConstraint lDatatypeConstraint = (LDatatypeConstraint)theEObject;
+				T result = caseLDatatypeConstraint(lDatatypeConstraint);
+				if (result == null) result = caseLConstraint(lDatatypeConstraint);
+				if (result == null) result = caseLLazyResolver(lDatatypeConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LSTRING_CONSTRAINT: {
+				LStringConstraint lStringConstraint = (LStringConstraint)theEObject;
+				T result = caseLStringConstraint(lStringConstraint);
+				if (result == null) result = caseLDatatypeConstraint(lStringConstraint);
+				if (result == null) result = caseLConstraint(lStringConstraint);
+				if (result == null) result = caseLLazyResolver(lStringConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LNUMERIC_CONSTRAINT: {
+				LNumericConstraint lNumericConstraint = (LNumericConstraint)theEObject;
+				T result = caseLNumericConstraint(lNumericConstraint);
+				if (result == null) result = caseLDatatypeConstraint(lNumericConstraint);
+				if (result == null) result = caseLConstraint(lNumericConstraint);
+				if (result == null) result = caseLLazyResolver(lNumericConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDECIMAL_CONSTRAINT: {
+				LDecimalConstraint lDecimalConstraint = (LDecimalConstraint)theEObject;
+				T result = caseLDecimalConstraint(lDecimalConstraint);
+				if (result == null) result = caseLDatatypeConstraint(lDecimalConstraint);
+				if (result == null) result = caseLConstraint(lDecimalConstraint);
+				if (result == null) result = caseLLazyResolver(lDecimalConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDATE_CONSTRAINT: {
+				LDateConstraint lDateConstraint = (LDateConstraint)theEObject;
+				T result = caseLDateConstraint(lDateConstraint);
+				if (result == null) result = caseLDatatypeConstraint(lDateConstraint);
+				if (result == null) result = caseLConstraint(lDateConstraint);
+				if (result == null) result = caseLLazyResolver(lDateConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LBOOLEAN_CONSTRAINT: {
+				LBooleanConstraint lBooleanConstraint = (LBooleanConstraint)theEObject;
+				T result = caseLBooleanConstraint(lBooleanConstraint);
+				if (result == null) result = caseLDatatypeConstraint(lBooleanConstraint);
+				if (result == null) result = caseLConstraint(lBooleanConstraint);
+				if (result == null) result = caseLLazyResolver(lBooleanConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LBLOB_CONSTRAINT: {
+				LBlobConstraint lBlobConstraint = (LBlobConstraint)theEObject;
+				T result = caseLBlobConstraint(lBlobConstraint);
+				if (result == null) result = caseLDatatypeConstraint(lBlobConstraint);
+				if (result == null) result = caseLConstraint(lBlobConstraint);
+				if (result == null) result = caseLLazyResolver(lBlobConstraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CASSERT_FALSE: {
+				LDtCAssertFalse lDtCAssertFalse = (LDtCAssertFalse)theEObject;
+				T result = caseLDtCAssertFalse(lDtCAssertFalse);
+				if (result == null) result = caseLBooleanConstraint(lDtCAssertFalse);
+				if (result == null) result = caseLDatatypeConstraint(lDtCAssertFalse);
+				if (result == null) result = caseLConstraint(lDtCAssertFalse);
+				if (result == null) result = caseLLazyResolver(lDtCAssertFalse);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CASSERT_TRUE: {
+				LDtCAssertTrue lDtCAssertTrue = (LDtCAssertTrue)theEObject;
+				T result = caseLDtCAssertTrue(lDtCAssertTrue);
+				if (result == null) result = caseLBooleanConstraint(lDtCAssertTrue);
+				if (result == null) result = caseLDatatypeConstraint(lDtCAssertTrue);
+				if (result == null) result = caseLConstraint(lDtCAssertTrue);
+				if (result == null) result = caseLLazyResolver(lDtCAssertTrue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX: {
+				LDtCDecimalMax lDtCDecimalMax = (LDtCDecimalMax)theEObject;
+				T result = caseLDtCDecimalMax(lDtCDecimalMax);
+				if (result == null) result = caseLDecimalConstraint(lDtCDecimalMax);
+				if (result == null) result = caseLDatatypeConstraint(lDtCDecimalMax);
+				if (result == null) result = caseLConstraint(lDtCDecimalMax);
+				if (result == null) result = caseLLazyResolver(lDtCDecimalMax);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN: {
+				LDtCDecimalMin lDtCDecimalMin = (LDtCDecimalMin)theEObject;
+				T result = caseLDtCDecimalMin(lDtCDecimalMin);
+				if (result == null) result = caseLDecimalConstraint(lDtCDecimalMin);
+				if (result == null) result = caseLDatatypeConstraint(lDtCDecimalMin);
+				if (result == null) result = caseLConstraint(lDtCDecimalMin);
+				if (result == null) result = caseLLazyResolver(lDtCDecimalMin);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CDIGITS: {
+				LDtCDigits lDtCDigits = (LDtCDigits)theEObject;
+				T result = caseLDtCDigits(lDtCDigits);
+				if (result == null) result = caseLDecimalConstraint(lDtCDigits);
+				if (result == null) result = caseLDatatypeConstraint(lDtCDigits);
+				if (result == null) result = caseLConstraint(lDtCDigits);
+				if (result == null) result = caseLLazyResolver(lDtCDigits);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CFUTURE: {
+				LDtCFuture lDtCFuture = (LDtCFuture)theEObject;
+				T result = caseLDtCFuture(lDtCFuture);
+				if (result == null) result = caseLDateConstraint(lDtCFuture);
+				if (result == null) result = caseLDatatypeConstraint(lDtCFuture);
+				if (result == null) result = caseLConstraint(lDtCFuture);
+				if (result == null) result = caseLLazyResolver(lDtCFuture);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CPAST: {
+				LDtCPast lDtCPast = (LDtCPast)theEObject;
+				T result = caseLDtCPast(lDtCPast);
+				if (result == null) result = caseLDateConstraint(lDtCPast);
+				if (result == null) result = caseLDatatypeConstraint(lDtCPast);
+				if (result == null) result = caseLConstraint(lDtCPast);
+				if (result == null) result = caseLLazyResolver(lDtCPast);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX: {
+				LDtCNumericMax lDtCNumericMax = (LDtCNumericMax)theEObject;
+				T result = caseLDtCNumericMax(lDtCNumericMax);
+				if (result == null) result = caseLNumericConstraint(lDtCNumericMax);
+				if (result == null) result = caseLDatatypeConstraint(lDtCNumericMax);
+				if (result == null) result = caseLConstraint(lDtCNumericMax);
+				if (result == null) result = caseLLazyResolver(lDtCNumericMax);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN: {
+				LDtCNumericMin lDtCNumericMin = (LDtCNumericMin)theEObject;
+				T result = caseLDtCNumericMin(lDtCNumericMin);
+				if (result == null) result = caseLNumericConstraint(lDtCNumericMin);
+				if (result == null) result = caseLDatatypeConstraint(lDtCNumericMin);
+				if (result == null) result = caseLConstraint(lDtCNumericMin);
+				if (result == null) result = caseLLazyResolver(lDtCNumericMin);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CNOT_NULL: {
+				LDtCNotNull lDtCNotNull = (LDtCNotNull)theEObject;
+				T result = caseLDtCNotNull(lDtCNotNull);
+				if (result == null) result = caseLBlobConstraint(lDtCNotNull);
+				if (result == null) result = caseLDateConstraint(lDtCNotNull);
+				if (result == null) result = caseLStringConstraint(lDtCNotNull);
+				if (result == null) result = caseLBooleanConstraint(lDtCNotNull);
+				if (result == null) result = caseLDecimalConstraint(lDtCNotNull);
+				if (result == null) result = caseLNumericConstraint(lDtCNotNull);
+				if (result == null) result = caseLDatatypeConstraint(lDtCNotNull);
+				if (result == null) result = caseLConstraint(lDtCNotNull);
+				if (result == null) result = caseLLazyResolver(lDtCNotNull);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CNULL: {
+				LDtCNull lDtCNull = (LDtCNull)theEObject;
+				T result = caseLDtCNull(lDtCNull);
+				if (result == null) result = caseLBlobConstraint(lDtCNull);
+				if (result == null) result = caseLDateConstraint(lDtCNull);
+				if (result == null) result = caseLStringConstraint(lDtCNull);
+				if (result == null) result = caseLBooleanConstraint(lDtCNull);
+				if (result == null) result = caseLDecimalConstraint(lDtCNull);
+				if (result == null) result = caseLNumericConstraint(lDtCNull);
+				if (result == null) result = caseLDatatypeConstraint(lDtCNull);
+				if (result == null) result = caseLConstraint(lDtCNull);
+				if (result == null) result = caseLLazyResolver(lDtCNull);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CREG_EX: {
+				LDtCRegEx lDtCRegEx = (LDtCRegEx)theEObject;
+				T result = caseLDtCRegEx(lDtCRegEx);
+				if (result == null) result = caseLStringConstraint(lDtCRegEx);
+				if (result == null) result = caseLDatatypeConstraint(lDtCRegEx);
+				if (result == null) result = caseLConstraint(lDtCRegEx);
+				if (result == null) result = caseLLazyResolver(lDtCRegEx);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPTypesPackage.LDT_CSIZE: {
+				LDtCSize lDtCSize = (LDtCSize)theEObject;
+				T result = caseLDtCSize(lDtCSize);
+				if (result == null) result = caseLStringConstraint(lDtCSize);
+				if (result == null) result = caseLDatatypeConstraint(lDtCSize);
+				if (result == null) result = caseLConstraint(lDtCSize);
+				if (result == null) result = caseLLazyResolver(lDtCSize);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LCommon 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>LCommon Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLCommonModel(LCommonModel 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>LTyped 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>LTyped Package</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLTypedPackage(LTypedPackage object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LImport</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>LImport</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLImport(LImport object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LType</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>LType</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLType(LType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAnnotation Def</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>LAnnotation Def</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAnnotationDef(LAnnotationDef object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAnnotation Target</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>LAnnotation Target</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAnnotationTarget(LAnnotationTarget object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LScalar 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>LScalar Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLScalarType(LScalarType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LData 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>LData Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDataType(LDataType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEnum</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>LEnum</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEnum(LEnum object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEnum Literal</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>LEnum Literal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEnumLiteral(LEnumLiteral object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LClass</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>LClass</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLClass(LClass object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeatures Holder</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>LFeatures Holder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeaturesHolder(LFeaturesHolder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeature</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>LFeature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeature(LFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LReference</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>LReference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLReference(LReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAttribute</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>LAttribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAttribute(LAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LKey And Value</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>LKey And Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLKeyAndValue(LKeyAndValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LOperation</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>LOperation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLOperation(LOperation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LModifier</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>LModifier</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLModifier(LModifier object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LMultiplicity</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>LMultiplicity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLMultiplicity(LMultiplicity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LConstraint</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>LConstraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLConstraint(LConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LResult Filters</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>LResult Filters</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLResultFilters(LResultFilters object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LResult 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>LResult Filter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLResultFilter(LResultFilter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAttribute Matching Constraint</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>LAttribute Matching Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAttributeMatchingConstraint(LAttributeMatchingConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDatatype Constraint</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>LDatatype Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDatatypeConstraint(LDatatypeConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LString Constraint</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>LString Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLStringConstraint(LStringConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LNumeric Constraint</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>LNumeric Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLNumericConstraint(LNumericConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDecimal Constraint</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>LDecimal Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDecimalConstraint(LDecimalConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDate Constraint</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>LDate Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDateConstraint(LDateConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LBoolean Constraint</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>LBoolean Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLBooleanConstraint(LBooleanConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LBlob Constraint</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>LBlob Constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLBlobConstraint(LBlobConstraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CAssert False</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>LDt CAssert False</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCAssertFalse(LDtCAssertFalse object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CAssert True</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>LDt CAssert True</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCAssertTrue(LDtCAssertTrue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CDecimal Max</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>LDt CDecimal Max</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCDecimalMax(LDtCDecimalMax object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CDecimal Min</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>LDt CDecimal Min</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCDecimalMin(LDtCDecimalMin object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CDigits</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>LDt CDigits</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCDigits(LDtCDigits object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CFuture</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>LDt CFuture</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCFuture(LDtCFuture object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CPast</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>LDt CPast</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCPast(LDtCPast object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CNumeric Max</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>LDt CNumeric Max</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCNumericMax(LDtCNumericMax object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CNumeric Min</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>LDt CNumeric Min</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCNumericMin(LDtCNumericMin object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CNot Null</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>LDt CNot Null</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCNotNull(LDtCNotNull object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CNull</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>LDt CNull</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCNull(LDtCNull object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CReg Ex</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>LDt CReg Ex</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCRegEx(LDtCRegEx object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDt CSize</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>LDt CSize</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtCSize(LDtCSize 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;
+	}
+
+} //OSBPTypesSwitch
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammar.xtext b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammar.xtext
new file mode 100644
index 0000000..106c22e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammar.xtext
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar org.eclipse.osbp.dsl.common.xtext.CommonGrammar with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+
+import "http://osbp.eclipse.org/dsl/common/types/v1" as types
+import "http://www.eclipse.org/emf/2002/Ecore" as ecore
+
+TypedPackage returns types::LTypedPackage:
+	{types::LTypedPackage}
+	'package' name=QualifiedName ('{'
+	(imports+=Import)*
+	(types+=Type)*
+	'}')?;
+
+Type returns types::LType:
+	ScalarType | Class;
+
+	/**
+ * Needs to be overridden by sub grammar
+ */
+Class returns types::LClass:
+	{types::LClass} annotations+=AnnotationDef*
+	{types::LClass.annotationInfo=current}
+	'class';
+
+Import returns types::LImport:
+	'import' importedNamespace=LQualifiedNameWithWildCard ';'?;
+
+DataType returns types::LDataType:
+	'datatype' name=ValidIDWithKeywords
+	(('jvmType' jvmTypeReference=JvmTypeReference (asPrimitive?='as primitive')? constraints+=DataTypeConstraint* ('properties' '(' properties+=KeyAndValue (', '
+	properties+=KeyAndValue)* ')')?)
+	|
+	(date?='dateType' dateType=DateType constraints+=DateConstraint*  ('properties' '(' properties+=KeyAndValue (', '
+	properties+=KeyAndValue)* ')')?)
+	|
+	(asBlob?='as blob' constraints+=BlobTypeConstraint*  ('properties' '(' properties+=KeyAndValue (', '
+	properties+=KeyAndValue)* ')')?))
+	';'?;
+
+AllConstraints returns types::LDatatypeConstraint:
+	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits |
+	DtCNumericMax | DtCNumericMin | DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast
+;
+
+DataTypeConstraint returns types::LDatatypeConstraint:
+	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits |
+	DtCNumericMax | DtCNumericMin | DtCNotNull | DtCNull | DtCRegEx | DtCSize
+;
+
+DateConstraint returns types::LDatatypeConstraint:
+	DtCFuture | DtCPast | DtCNotNull | DtCNull
+;
+
+BlobTypeConstraint returns types::LDatatypeConstraint:
+	DtCNotNull | DtCNull
+;
+
+enum ConstraintSeverity returns types::LConstraintSeverity:
+	INFO = "info" | WARNING ="warn" | ERROR = "error" 
+; 
+
+DtCAssertFalse returns types::LDtCAssertFalse:
+	{types::LDtCAssertFalse}
+	'isFalse' ('['('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?;
+
+DtCAssertTrue returns types::LDtCAssertTrue:
+	{types::LDtCAssertTrue}
+	'isTrue' ('['('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?;
+
+DtCDecimalMax returns types::LDtCDecimalMax:
+	{types::LDtCDecimalMax}
+	'maxDecimal' '('max=LDecimal ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+DtCDecimalMin returns types::LDtCDecimalMin:
+	{types::LDtCDecimalMin}
+	'minDecimal' '('min=LDecimal ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+DtCDigits returns types::LDtCDigits:
+	{types::LDtCDigits}
+	'digits' '(' intDigits=INT ', ' fractionDigits=INT ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+DtCFuture returns types::LDtCFuture:
+	{types::LDtCFuture}
+	'isFuture' ('['('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?;
+
+DtCPast returns types::LDtCPast:
+	{types::LDtCPast}
+	'isPast' ('['('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?;
+
+DtCNumericMax returns types::LDtCNumericMax:
+	{types::LDtCNumericMax}
+	'maxNumber' '(' max=LInt ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+DtCNumericMin returns types::LDtCNumericMin:
+	{types::LDtCNumericMin}
+	'minNumber' '(' min=LInt ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+DtCNotNull returns types::LDtCNotNull:
+	{types::LDtCNotNull}
+	'isNotNull' ('['('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?;
+
+DtCNull returns types::LDtCNull:
+	{types::LDtCNull}
+	'isNull' ('['('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?;
+
+DtCRegEx returns types::LDtCRegEx:
+	{types::LDtCRegEx}
+	'regex' '(' pattern=STRING ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+DtCSize returns types::LDtCSize:
+	{types::LDtCSize}
+	'minMaxSize' '('min=INT ', ' max=INT ('[' ('msgCode' '=' msgCode=QualifiedName)? & ('msgI18nKey' '=' msgI18nKey=QualifiedName)? &('severity' '=' severity=ConstraintSeverity)? ']')?')';
+
+enum DateType returns types::LDateType:
+	DATE='date' | TIME='time' | TIMESTAMP='timestamp';
+
+ScalarType returns types::LScalarType:
+	DataType | Enum;
+
+Modifier returns types::LModifier:
+	final?='final'? & static?='static'? & visibility=LVisibility;
+
+Enum returns types::LEnum:
+	'enum' name=ID
+	'{'
+	literals+=EnumLiteral (', ' literals+=EnumLiteral)*
+	'}';
+
+EnumLiteral returns types::LEnumLiteral:
+	name=ID ('(' default?='asDefault'? & null?='forNull'? ')' ('=' value=INT)?)?;
+
+AnnotationDef returns types::LAnnotationDef:
+	=> (annotation=XAnnotation);
+
+enum LVisibility returns types::LVisibility:
+	PACKAGE='package' | PRIVATE='private' | PROTECTED='protected' | PUBLIC='public';
+
+ResultFilters returns types::LResultFilters:
+	{types::LResultFilters}
+	'constraints' '{'
+		resultFilters+=ResultFilter*
+	'}';
+
+ResultFilter returns types::LResultFilter:
+	AttributeMatchingConstraint;
+
+AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+	matchingLiteral=[types::LEnumLiteral]) ';'?;
+
+KeyAndValue returns types::LKeyAndValue:
+	'key' '=' key=STRING 'value' '=' value=STRING;
+
+enum LComparatorType returns types::LComparatorType:
+	EQUALS='==' |
+	GREATER='>' |
+	LOWER='<' |
+	GREATER_EQ='>=' |
+	LOWER_EQ='<=' |
+	NOT_EQ='<>';
+
+LQualifiedNameWithWildCard:
+	QualifiedName ('.' '*')?;
+
+LFQN:
+	ID ('.' ID)*;
+	
+TYPE_CROSS_REFERENCE:
+	ID;
+
+ValidIDWithKeywords:
+	'cachable' | 'id' | 'uuid' | 'transient' | 'version' | 'derived'
+	'collection' | 'refers' | 'settings' | 'lazy' |
+	'notnull' | 'dto' | 'date' | 'mapto' | 'ref' | 'cascade' | 'var' |
+	ID;
+
+ValidLFQNWithKeywords:
+	ValidIDWithKeywords ('.' ValidIDWithKeywords)*;
+
+Multiplicity returns types::LMultiplicity:
+	'[' (lower=LowerBound) ('..' upper=UpperBound)? ']';
+
+enum LowerBound returns types::LLowerBound:
+	MANY='*' | ZERO='0' | OPTIONAL='?' | ATLEASTONE='+' | ONE='1';
+
+enum UpperBound returns types::LUpperBound:
+	MANY='*' | ONE='1';
+
+LInt returns ecore::EInt:
+	('+'|'-')? INT;
+
+LDecimal returns ecore::EFloat:
+	LInt ('.' INT)?
+;
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarBundleSpaceModule.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarBundleSpaceModule.java
new file mode 100644
index 0000000..e16ba2b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarBundleSpaceModule.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext;
+
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+@SuppressWarnings("restriction")
+public class CommonGrammarBundleSpaceModule extends
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	public Class<? extends AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarBundleSpaceSetup.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarBundleSpaceSetup.java
new file mode 100644
index 0000000..cc15ecd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarBundleSpaceSetup.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext;
+
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseWithAnnotationsBundleSpaceStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * Initialization support for running Xtext languages without equinox extension
+ * registry
+ */
+@SuppressWarnings("restriction")
+public class CommonGrammarBundleSpaceSetup extends CommonGrammarStandaloneSetup {
+
+	public static void doSetup() {
+		new CommonGrammarBundleSpaceSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseWithAnnotationsBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	public Injector createInjector() {
+		return Guice
+				.createInjector(new org.eclipse.osbp.dsl.common.xtext.CommonGrammarBundleSpaceModule());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarRuntimeModule.java
new file mode 100644
index 0000000..e9caa34
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarRuntimeModule.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext;
+
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.FastLinkingService;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+public class CommonGrammarRuntimeModule extends
+		org.eclipse.osbp.dsl.common.xtext.AbstractCommonGrammarRuntimeModule {
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+	
+	public Class<? extends ILinkingService> bindILinkingService() {
+		return FastLinkingService.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarStandaloneSetup.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarStandaloneSetup.java
new file mode 100644
index 0000000..f6e516f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammarStandaloneSetup.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class CommonGrammarStandaloneSetup extends CommonGrammarStandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new CommonGrammarStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/GenerateCommonGrammar.mwe2 b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/GenerateCommonGrammar.mwe2
new file mode 100644
index 0000000..9fdf86b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/GenerateCommonGrammar.mwe2
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+module org.eclipse.osbp.dsl.common.xtext.GenerateCommonGrammar
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.xtext.generator.parser.antlr.*
+import org.eclipse.xtext.resource.XtextResourceSet
+
+var fileExtensions = "type"
+var projectName = "org.eclipse.osbp.dsl.common.xtext"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/dsl/common/xtext/CommonGrammar.xtext"
+var runtimeProject = "../${projectName}"
+var backtrack = false
+var memoize = false
+
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+ 
+	bean = org.eclipse.osbp.dsl.mwe.SemanticModelSetupComponent {
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/common/types/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl"
+		}
+	}
+
+	bean = org.eclipse.osbp.dsl.mwe.MavenStandaloneSetup {
+		scanClassPath = true
+		platformUri = "${runtimeProject}/.."
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}/src-gen"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		encoding = "UTF-8"
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		pathTestProject = "${runtimeProject}.tests"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			uri = grammarURI
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "150"
+					methodsPerClass = "300"
+				}
+			}
+			fragment = DebugAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			fragment = validation.JavaValidatorFragment {}
+			fragment = generator.GeneratorFragment {}
+			fragment = scoping.ImportNamespacesScopingFragment {}
+			fragment = builder.BuilderIntegrationFragment {}
+			fragment = quickfix.QuickfixProviderFragment {}
+			fragment = labeling.LabelProviderFragment {
+				generateStub = false
+			}
+			fragment = outline.OutlineTreeProviderFragment {}
+			fragment = outline.QuickOutlineFragment {}
+			fragment = compare.CompareFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "100"
+					methodsPerClass = "200"
+				}
+			}
+			fragment = refactoring.RefactorElementNameFragment {
+				useJdtRefactoring = true
+			}
+			fragment = types.TypesGeneratorFragment {}
+			fragment = xbase.XbaseGeneratorFragment {
+				generateXtendInferrer = true
+			}
+			fragment = templates.CodetemplatesGeneratorFragment {}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/AnnotationExtension.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/AnnotationExtension.xtend
new file mode 100644
index 0000000..15e8d9b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/AnnotationExtension.xtend
@@ -0,0 +1,333 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+ 
+package org.eclipse.osbp.dsl.common.xtext.extensions
+
+import com.google.inject.Inject
+import java.beans.Transient
+import java.util.List
+import java.util.Map
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.xtext.common.types.JvmAnnotationReference
+import org.eclipse.xtext.common.types.JvmAnnotationTarget
+import org.eclipse.xtext.common.types.JvmAnnotationType
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmEnumerationLiteral
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.TypesFactory
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+
+@SuppressWarnings("restriction")
+class AnnotationExtension {
+
+	@Inject extension JvmTypesBuilder
+	@Inject
+	private TypesFactory typesFactory;
+	@Inject
+	private TypeReferences references;
+
+	/**
+	 * Creates an enum annotation value and adds it the the given annotation reference
+	 */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name, Enum<?>... enums) {
+
+		// create the parameter
+		val value = typesFactory.createJvmEnumAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(enums.get(0).declaringClass, context) as JvmDeclaredType
+		for (Enum<?> enumxx : enums) {
+
+			// create the operation
+			val JvmOperation op = typesFactory.createJvmOperation
+			op.setSimpleName(name)
+			op.setDeclaringType(declaredType)
+			value.setOperation(op)
+
+			// create the literal
+			val JvmEnumerationLiteral literal = typesFactory.createJvmEnumerationLiteral
+			literal.setDeclaringType(declaredType)
+			literal.setSimpleName(enumxx.name)
+			value.values += literal
+		}
+
+		return value
+	}
+
+	/**
+	 * Creates an enum annotation value and adds it the the given type reference
+	 */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name, JvmTypeReference typeReference) {
+
+		// create the parameter
+		val value = typesFactory.createJvmTypeAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(typeof(JvmTypeReference), context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+		
+		value.values += typeReference
+
+		return value
+	}
+
+	/**
+	 * Creates an enum annotation value and adds it the the given annotation reference
+	 */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name, Enum<?> enumX) {
+
+		// create the parameter
+		val value = typesFactory.createJvmEnumAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(enumX.declaringClass, context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+
+		// create the literal
+		val JvmEnumerationLiteral literal = typesFactory.createJvmEnumerationLiteral
+		literal.setDeclaringType(declaredType)
+		literal.setSimpleName(enumX.name)
+		value.values += literal
+
+		return value
+	}
+
+	/**
+     * Creates a boolean annotation value and adds it the the given annotation reference
+     */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name, boolean booleanValue) {
+
+		// create the parameter
+		val value = typesFactory.createJvmBooleanAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(typeof(Boolean), context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+		value.values += booleanValue
+
+		return value
+	}
+
+	/**
+     * Creates a string annotation value and adds it the the given annotation reference
+     */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name, String stringValue) {
+
+		// create the parameter
+		val value = typesFactory.createJvmStringAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(typeof(String), context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+		value.values += stringValue
+
+		return value
+	}
+
+	def addAnno(LAnnotationTarget target, JvmAnnotationTarget jvmType, JvmAnnotationReference anno) {
+		val annoDef = target.annotations.findFirst[annotation.annotationType == anno.annotation]
+		if (annoDef == null || !annoDef.exclude) {
+			jvmType.annotations += anno
+		}
+	}
+
+	/**
+     * Creates a string annotation value and adds it the the given annotation reference
+     */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name, int intValue) {
+
+		// create the parameter
+		val value = typesFactory.createJvmIntAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(typeof(Integer), context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+		value.values += intValue
+
+		return value
+	}
+
+	/**
+     * Creates a string annotation value and adds it the the given annotation reference
+     */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name,
+		JvmAnnotationReference annotationValue) {
+
+		// create the parameter
+		val value = typesFactory.createJvmAnnotationAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(typeof(JvmAnnotationReference), context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+		value.values += annotationValue
+
+		return value
+	}
+
+	/**
+     * Creates a string annotation value and adds it the the given annotation reference
+     */
+	def dispatch addAnnAttr(JvmAnnotationReference annRef, EObject context, String name,
+		JvmAnnotationReference... annotationValues) {
+
+		// create the parameter
+		val value = typesFactory.createJvmAnnotationAnnotationValue
+		annRef.explicitValues += value
+
+		// create the enum type
+		val declaredType = references.findDeclaredType(typeof(JvmAnnotationReference), context) as JvmDeclaredType
+
+		// create the operation
+		val JvmOperation op = typesFactory.createJvmOperation
+		op.setSimpleName(name)
+		op.setDeclaringType(declaredType)
+		value.setOperation(op)
+		value.values.addAll(annotationValues)
+
+		return value
+	}
+
+	/**
+	 * Returns a map with all excluded types
+	 */
+	def Map<String, LAnnotationDef> excludedTypes(List<LAnnotationDef> defs) {
+		return defs.filter([exclude]).toMap(
+			[
+				val anno = it.annotation
+				if (anno.annotationType != null) {
+					return anno.annotationType.qualifiedName
+				}
+				return ""
+			])
+	}
+
+	/**
+	 * Returns a map with all included types
+	 */
+	def Map<String, LAnnotationDef> redefinedTypes(List<LAnnotationDef> defs) {
+		return defs.filter([!exclude]).toMap(
+			[
+				val anno = it.annotation
+				if (anno.annotationType != null) {
+					return anno.annotationType.qualifiedName
+				}
+				return ""
+			])
+	}
+
+	/**
+	 * Returns true, if the clazz.canonicalName exists in the excluded types of defs
+	 */
+	def isExcluded(Class<?> clazz, List<LAnnotationDef> defs) {
+		if (defs == null) {
+			return false;
+		}
+		return defs.excludedTypes.containsKey(clazz.canonicalName)
+	}
+
+	/**
+	 * Returns true, if the clazz.canonicalName exists in the included types of defs
+	 */
+	def isRedefined(Class<?> clazz, List<LAnnotationDef> defs) {
+		if (defs == null) {
+			return false;
+		}
+		return clazz.getRedefined(defs) != null
+	}
+
+	/**
+	 * Returns true, if the clazz.canonicalName exists in the included types of defs
+	 */
+	def getRedefined(Class<?> clazz, List<LAnnotationDef> defs) {
+		if (defs == null) {
+			return null;
+		}
+		return defs.redefinedTypes.get(clazz.canonicalName)
+	}
+
+	def boolean isTransientAnnoExcluded(LFeature member) {
+		return typeof(Transient).isExcluded(member.annotations)
+	}
+
+	def boolean isTransientAnnoRedefined(LFeature member) {
+		return typeof(Transient).isRedefined(member.annotations)
+	}
+
+	def boolean isTransientAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Transient), context)
+	}
+
+	def LAnnotationDef getTransientAnnoRedefine(LFeature member) {
+		return typeof(Transient).getRedefined(member.annotations)
+	}
+
+	def boolean containsAnnotation(JvmAnnotationTarget target, Class<?> type, EObject context) {
+		for (anno : target.annotations) {
+			var JvmAnnotationType resolved
+			val JvmAnnotationType xan = anno.annotation;
+			if (xan != null) {
+				if (xan.eIsProxy) {
+					resolved = EcoreUtil::resolve(xan, context) as JvmAnnotationType
+				} else {
+					resolved = xan
+				}
+				if (resolved.qualifiedName != null) {
+					if (resolved.qualifiedName.equals(type.canonicalName)) {
+						return true;
+					}
+				}
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend
new file mode 100644
index 0000000..b0f4ce1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/ModelExtensions.xtend
@@ -0,0 +1,277 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.Date
+import java.util.List
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.semantic.common.helper.Bounds
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+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.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType
+
+class ModelExtensions {
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension JvmTypesBuilder
+
+	@Inject TypeReferences references;
+
+	def dispatch JvmTypeReference toTypeReference(LType type) {
+		if (type == null || type.fullyQualifiedName == null) {
+			return null
+		}
+		return type.newTypeRef(type.fullyQualifiedName.toString)
+	}
+
+	def dispatch JvmTypeReference toTypeReference(LDataType type) {
+		if (type.syntheticFlag) {
+			return type.toSyntheticTypeReference
+		} else if (type.date) {
+			return references.findDeclaredType(typeof(Date), type).newTypeRef()
+		} else if (type.asBlob) {
+			val typeRef = references.findDeclaredType(Byte::TYPE, type).newTypeRef()
+			return references.createArrayType(typeRef)
+		} else if (type.asPrimitive) {
+			val fqn = type?.jvmTypeReference?.type?.fullyQualifiedName
+			switch (fqn.toString) {
+				case typeof(Integer).name: references.findDeclaredType(Integer::TYPE, type).newTypeRef()
+				case typeof(Boolean).name: references.findDeclaredType(Boolean::TYPE, type).newTypeRef()
+				case typeof(Short).name: references.findDeclaredType(Short::TYPE, type).newTypeRef()
+				case typeof(Long).name: references.findDeclaredType(Long::TYPE, type).newTypeRef()
+				case typeof(Double).name: references.findDeclaredType(Double::TYPE, type).newTypeRef()
+				case typeof(Float).name: references.findDeclaredType(Float::TYPE, type).newTypeRef()
+				case typeof(Character).name: references.findDeclaredType(Character::TYPE, type).newTypeRef()
+				case typeof(Byte).name: references.findDeclaredType(Byte::TYPE, type).newTypeRef()
+				case typeof(Boolean).name: references.findDeclaredType(Boolean::TYPE, type).newTypeRef()
+				default: type?.jvmTypeReference
+			}
+		} else {
+			return type.jvmTypeReference.cloneWithProxies
+		}
+	}
+
+	def boolean isBool(LDataType type) {
+		if (type.asPrimitive) {
+			val fqn = type?.jvmTypeReference?.type?.fullyQualifiedName
+			switch (fqn.toString) {
+				case typeof(Boolean).name: return true
+				default: return false
+			}
+		}
+		return false
+	}
+
+	def boolean isString(LDataType type) {
+		val fqn = type?.jvmTypeReference?.type?.qualifiedName
+		return "java.lang.String".equals(fqn)
+	}
+	
+	def boolean isDate(LDataType type) {
+		return type.isDate
+	}
+
+	def dispatch boolean isPrimitive(LDataType type) {
+		return type.asPrimitive;
+	}
+	
+	def dispatch boolean isPrimitive(LScalarType type) {
+		return false;
+	}
+	
+	
+
+	def boolean isBasedOnDatatype(LFeature feature) {
+		if (feature instanceof LAttribute) {
+			return feature.type instanceof LDataType
+		}
+		return false
+	}
+
+	def LDataType getDatatype(LFeature feature) {
+		if (feature instanceof LAttribute) {
+			if (feature.type instanceof LDataType) {
+				return feature.type as LDataType
+			}
+		}
+		return null
+	}
+
+	def JvmTypeReference toSyntheticTypeReference(LDataType type) {
+	}
+
+	/**
+	 * Returns true if jvm type proxies should be avoided for special datatypes like date or blob
+	 */
+	def boolean isAvoidJvmTypeProxiesForDatatype(LAttribute prop) {
+		if (prop.type instanceof LDataType) {
+
+			//			val LDataType lDt = prop.type as LDataType
+			//			return lDt.asBlob || lDt.date
+			return true
+		}
+		return false
+	}
+
+	/**
+	 * Creates a jvmTypeReference based on the datatype.
+	 */
+	def JvmTypeReference toDataTypeTypeReference(LAttribute prop) {
+		val LDataType lDt = prop.type as LDataType
+		return lDt.toTypeReference
+	}
+
+	def dispatch JvmTypeReference toTypeReference(LAttribute prop) {
+		if (isAvoidJvmTypeProxiesForDatatype(prop)) {
+			return prop.toDataTypeTypeReference
+		}
+
+		// use the jvm type proxy
+		return prop.typeJvm.cloneWithProxies
+	}
+
+	/**
+	 * Create a type reference with respect to many multiplicity
+	 */
+	def dispatch JvmTypeReference toTypeReferenceWithMultiplicity(LAnnotationTarget context) {
+		var typeRef = context.toTypeReference
+		if (typeRef != null && context.bounds.toMany) {
+			typeRef = context.toListTypeReference(typeRef)
+		}
+		return typeRef
+	}
+
+	def toListTypeReference(EObject context, JvmTypeReference jvmTypeRef) {
+		newTypeRef(context, typeof(List), jvmTypeRef);
+	}
+
+	def dispatch Bounds getBounds(LFeature prop) {
+		Bounds::createFor(prop)
+	}
+
+	def dispatch Bounds getBounds(LAnnotationTarget context) {
+		Bounds::createZeroToOne
+	}
+
+	def dispatch Bounds getBounds(Void context) {
+		Bounds::createZeroToOne
+	}
+
+	def isToMany(LFeature prop) {
+		prop.bounds.toMany
+	}
+
+	def dispatch isCascading(LAttribute prop) {
+		prop.cascading
+	}
+
+	def dispatch isCascading(LReference prop) {
+		prop.cascading
+	}
+
+	def typeIsBoolean(LFeature prop) {
+		val LDataType dt = prop.datatype
+		if (dt == null) {
+			return false
+		}
+		val typeRef = dt.jvmTypeReference
+		return typeRef != null && !typeRef.eIsProxy() && typeRef.getType() != null && !typeRef.getType().eIsProxy() &&
+			"boolean".equals(typeRef.getType().getIdentifier())
+	}
+
+	def typeIsEnum(LAttribute prop) {
+		return prop.type instanceof LEnum
+	}
+
+	/**
+   	 * Returns true, if toCheck can be cast to superType
+   	 */
+	def boolean nameEquals(LClass toCheck, LClass superType) {
+		val String toCheckFqn = toCheck.fullyQualifiedName.toString
+		val String superTypeFqn = superType.fullyQualifiedName.toString
+		return toCheckFqn.equals(superTypeFqn);
+	}
+
+	/**
+	 * Returns the {@link LPackage} for the given type.
+	 * 
+	 * @param lType
+	 * @return
+	 */
+	def LPackage getPackage(LType lType) {
+		var EObject current = lType;
+		while (current != null && !(current instanceof LPackage)) {
+			current = current.eContainer();
+		}
+		return current as LPackage;
+	}
+
+	def dispatch String toName(LFeature feature) {
+		if(feature == null || feature.name == null) return ""
+		return feature.name.replace("^", "")
+	}
+
+	def dispatch String toName(LClass clazz) {
+		if (clazz == null || clazz.name == null) {
+			return ""
+		}
+		return clazz.name.replace("^", "")
+	}
+
+	def dispatch String toName(LType clazz) {
+		if (clazz == null || clazz.name == null) {
+			return ""
+		}
+		return clazz.name.replace("^", "")
+	}
+
+	def toQualifiedName(LType type) {
+		val LPackage pkg = type.getPackage
+		return pkg.name + "." + type.name
+	}
+
+	/**
+	 * The binary <code>+</code> operator that concatenates two strings.
+	 * 
+	 * @param a
+	 *            a string.
+	 * @param b
+	 *            another string.
+	 * @return <code>a + b</code>
+	 */
+	def static String operator_plus(String a, String b) {
+		return a.concat(b);
+	}
+
+	def String toDtoPackageName(LTypedPackage pkg) {
+		if(pkg == null) {
+			return "notDefined"
+		}
+		if (pkg.name.contains("entities")) {
+			return pkg.name.replace("entities", "dtos")
+		} else {
+			return pkg.name + ".dtos"
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/NamingExtensions.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/NamingExtensions.xtend
new file mode 100644
index 0000000..253cbbe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/NamingExtensions.xtend
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.extensions
+
+import com.google.inject.Inject
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+
+class NamingExtensions {
+
+	@Inject extension ModelExtensions;
+
+	def toSetterName(LFeature prop) {
+		if (prop == null || prop.toName == null) {
+			return "setMISSING_NAME"
+		}
+		"set".concat(prop.toName.toFirstUpper);
+	}
+
+	def toGetterName(LFeature prop) {
+		if (prop == null || prop.toName == null) {
+			return "getMISSING_NAME"
+		}
+		if(prop.typeIsBoolean) "is".concat(prop.toName.toFirstUpper) else "get".concat(prop.toName.toFirstUpper);
+	}
+
+	def toBooleanGetterName(LFeature prop) {
+		if (prop == null || prop.toName == null) {
+			return "isMISSING_NAME"
+		}
+		val propName = prop.toName.toFirstLower
+		if (propName.startsWith("is") || propName.startsWith("has")) {
+			return propName
+		}
+		return "is".concat(prop.toName.toFirstUpper);
+	}
+
+	def toCollectionAdderName(LFeature collectionProp) {
+		return "addTo".concat(collectionProp.toName.toFirstUpper);
+	}
+
+	def toCollectionRemoverName(LFeature collectionProp) {
+		return "removeFrom".concat(collectionProp.toName.toFirstUpper);
+	}
+
+	def toCollectionInternalGetterName(LFeature collectionProp) {
+		return "internalGet".concat(collectionProp.toName.toFirstUpper);
+	}
+
+	def toCollectionInternalAdderName(LFeature collectionProp) {
+		return "internalAddTo".concat(collectionProp.toName.toFirstUpper);
+	}
+
+	def toCollectionInternalRemoverName(LFeature collectionProp) {
+		return "internalRemoveFrom".concat(collectionProp.toName.toFirstUpper);
+	}
+
+	def toInternalSetterName(LFeature ref) {
+		return "internalSet".concat(ref.toName?.toFirstUpper);
+	}
+
+	/** 
+	 * Returns the property name that is used for method signatures.
+	 */
+	def String toMethodParamName(LFeature prop) {
+		return prop.toGeneratorDefaultMethodParamName;
+	}
+
+	/**
+	 * Returns the generator default method param name.
+	 */
+	def String toGeneratorDefaultMethodParamName(LFeature sourceElement) {
+		return toMethodParamName(sourceElement.toName)
+	}
+
+	/** 
+	 * Returns the property name that is used for method signatures.
+	 */
+	def String toMethodParamName(String name) {
+		return String::format("%s", name);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/TreeAppendableExtensions.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/TreeAppendableExtensions.java
new file mode 100644
index 0000000..cd1be41
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/extensions/TreeAppendableExtensions.java
@@ -0,0 +1,180 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.extensions;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.xbase.compiler.ImportManager;
+import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This is an extension library for {@link ITreeAppendable}s. It provides some
+ * overloaded operators especially for handling automatic type imports.
+ *
+ * @author Robert Handschmann
+ * @see ITreeAppendable
+ * @see ImportManager
+ */
+@SuppressWarnings("restriction")
+public class TreeAppendableExtensions {
+
+	/**
+	 * The operator {@code +=} appends the specified string.
+	 *
+	 * @param p
+	 *            the p
+	 * @param s
+	 *            the s
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_add(ITreeAppendable p, CharSequence s) {
+		if (s == null){
+			return p;
+		}
+		
+		return p.append(s);
+	}
+	
+	/**
+	 * The operator {@code >>} appends the specified string.
+	 *
+	 * @param p
+	 *            the p
+	 * @param s
+	 *            the s
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_doubleGreaterThan(ITreeAppendable p, CharSequence s) {
+		if (s == null){
+			return p;
+		}
+		return p.append(s);
+	}
+	
+	/**
+	 * The operator {@code >>>} is used to begin a code block. It is usually
+	 * called with a "{". It appends the specified string then increases the
+	 * indent and adds a new line.
+	 *
+	 * @param p
+	 *            the p
+	 * @param s
+	 *            the s
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_tripleGreaterThan(ITreeAppendable p, CharSequence s) {
+		if (s == null){
+			return p;
+		}
+		
+		p.append(s);
+		p.increaseIndentation().newLine(); 
+		return p;
+	}
+	
+	/**
+	 * The operator {@code <<<} is used to end a code block. It is usually
+	 * called with a "}". It decreases the indent, adds a new line, then appends
+	 * the specified string and adds a final new line.
+	 *
+	 * @param p
+	 *            the p
+	 * @param s
+	 *            the s
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_tripleLessThan(ITreeAppendable p, CharSequence s) {
+		if (s == null) {
+			return p;
+		}
+		p.decreaseIndentation().newLine();
+		p.append(s).newLine();
+		return p;
+	}
+
+	/**
+	 * The operator {@code +=} appends the specified {@link JvmType} and thereby
+	 * imports it.
+	 *
+	 * @param p
+	 *            the p
+	 * @param jvmType
+	 *            the jvm type
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_add(ITreeAppendable p, JvmType jvmType) {
+		return p.append(jvmType);
+	}
+	
+	/**
+	 * The operator {@code >>} appends the specified {@link JvmType} and thereby
+	 * imports it.
+	 *
+	 * @param p
+	 *            the p
+	 * @param jvmType
+	 *            the jvm type
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_doubleGreaterThan(ITreeAppendable p, JvmType jvmType) {
+		return p.append(jvmType);
+	}
+
+	/**
+	 * The operator {@code +=} appends the specified {@link JvmTypeReference}
+	 * and thereby imports it. A {@link JvmParameterizedTypeReference} is
+	 * handled as well, i.e. appends "Map&lt;Foo, Bar&gt;" and imports
+	 * "java.util.Map" and both "Foo" and "Bar".
+	 *
+	 * @param p
+	 *            the p
+	 * @param jvmTypeRef
+	 *            the jvm type ref
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_add(ITreeAppendable p, JvmTypeReference jvmTypeRef) {
+		p.append(jvmTypeRef.getType());
+		if (jvmTypeRef instanceof JvmParameterizedTypeReference) {
+			JvmParameterizedTypeReference ptf = (JvmParameterizedTypeReference) jvmTypeRef;
+			EList<JvmTypeReference> params = ptf.getArguments();
+			if (!params.isEmpty()) {
+				p.append("<");
+				String sep = "";
+				for (JvmTypeReference param: params) {
+					p.append(sep);
+					p.append(param.getType());
+					sep = ", ";
+				}
+				p.append(">");
+			}
+		}
+		return p;
+	}
+	
+	/**
+	 * Operator_double greater than.
+	 *
+	 * @param p
+	 *            the p
+	 * @param jvmTypeRef
+	 *            the jvm type ref
+	 * @return the i tree appendable
+	 */
+	public ITreeAppendable operator_doubleGreaterThan(ITreeAppendable p, JvmTypeReference jvmTypeRef) {
+		return operator_add(p, jvmTypeRef);
+	}
+
+
+	
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/formatting/CommonGrammarFormatter.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/formatting/CommonGrammarFormatter.java
new file mode 100644
index 0000000..fa61235
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/formatting/CommonGrammarFormatter.java
@@ -0,0 +1,186 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.formatting;
+
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.xtext.xbase.formatting.XbaseFormatter;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+
+import com.google.inject.Inject;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ * 
+ * Also see org.eclipse.xtext.xtext.XtextFormattingTokenSerializer as an
+ * example
+ */
+@SuppressWarnings({ "deprecation", "restriction" })
+public class CommonGrammarFormatter extends AbstractDeclarativeFormatter {
+
+	/** The xbase formatter. */
+	@Inject
+	private XbaseFormatter xbaseFormatter;
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter#configureFormatting(org.eclipse.xtext.formatting.impl.FormattingConfig)
+	 */
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		configure(c, (CommonGrammarGrammarAccess) getGrammarAccess());
+	}
+
+	/**
+	 * Configure.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ga
+	 *            the ga
+	 */
+	public void configure(FormattingConfig c, CommonGrammarGrammarAccess ga) {
+		xbaseFormatter.configure(c, ga.getXbaseWithAnnotationsGrammarAccess()
+				.getXbaseGrammarAccess());
+
+		CommonGrammarGrammarAccess f = (CommonGrammarGrammarAccess) ga;
+		c.setAutoLinewrap(120);
+
+		configurePackageDef(c, f.getTypedPackageAccess());
+		configureImportDef(c, f.getImportAccess());
+		configureDataTypeDef(c, f.getDataTypeAccess());
+		configureAnnotationDef(c, f.getAnnotationDefAccess());
+		configureConstraints(c, f.getResultFiltersAccess()); 
+		configureAttributeMatchingConstraint(c,
+				f.getAttributeMatchingConstraintAccess());
+
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).after(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(1, 1, 1).after(f.getML_COMMENTRule());
+
+		for (Keyword kw : ga.findKeywords("@")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(")")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(";")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(",")) {
+			c.setNoSpace().before(kw);
+		}
+	}
+
+	/**
+	 * Configure package def.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ele
+	 *            the ele
+	 */
+	protected void configurePackageDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.TypedPackageElements ele) {
+
+		// Zeilenumbruch
+		c.setLinewrap(1, 1, 2).around(ele.getRule());
+		c.setLinewrap(1, 1, 2).after(ele.getLeftCurlyBracketKeyword_3_0());
+		c.setLinewrap().around(ele.getImportsAssignment_3_1());
+		c.setLinewrap(1, 1, 2).around(ele.getTypesAssignment_3_2());
+		c.setLinewrap(1).before(ele.getRightCurlyBracketKeyword_3_3());
+		// Einzug
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_3_0());
+		c.setIndentationDecrement().before(
+				ele.getRightCurlyBracketKeyword_3_3());
+	}
+
+	/**
+	 * Configure import def.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ele
+	 *            the ele
+	 */
+	protected void configureImportDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.ImportElements ele) {
+		c.setLinewrap().before(ele.getRule());
+
+	}
+
+	/**
+	 * Configure data type def.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ele
+	 *            the ele
+	 */
+	protected void configureDataTypeDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.DataTypeElements ele) {
+		c.setLinewrap().before(ele.getRule());
+	}
+
+	/**
+	 * Configure annotation def.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ele
+	 *            the ele
+	 */
+	protected void configureAnnotationDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.AnnotationDefElements ele) {
+		c.setLinewrap().around(ele.getRule());
+	}
+
+	/**
+	 * Configure constraints.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ele
+	 *            the ele
+	 */
+	protected void configureConstraints(FormattingConfig c,
+			CommonGrammarGrammarAccess.ResultFiltersElements ele) {
+
+		c.setLinewrap().after(ele.getLeftCurlyBracketKeyword_2());
+		c.setLinewrap().before(ele.getRightCurlyBracketKeyword_4());
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_2());
+		c.setIndentationDecrement().before(ele.getRightCurlyBracketKeyword_4());
+	}
+
+	/**
+	 * Configure attribute matching constraint.
+	 *
+	 * @param c
+	 *            the c
+	 * @param ele
+	 *            the ele
+	 */
+	protected void configureAttributeMatchingConstraint(FormattingConfig c,
+			CommonGrammarGrammarAccess.AttributeMatchingConstraintElements ele) {
+		c.setLinewrap().after(ele.getSemicolonKeyword_3());
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/AnnotationCompiler.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/AnnotationCompiler.xtend
new file mode 100644
index 0000000..e93e1af
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/AnnotationCompiler.xtend
@@ -0,0 +1,382 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.util.List
+import java.util.ListIterator
+import javax.validation.Valid
+import javax.validation.constraints.AssertFalse
+import javax.validation.constraints.AssertTrue
+import javax.validation.constraints.DecimalMax
+import javax.validation.constraints.DecimalMin
+import javax.validation.constraints.Digits
+import javax.validation.constraints.Future
+import javax.validation.constraints.Max
+import javax.validation.constraints.Min
+import javax.validation.constraints.NotNull
+import javax.validation.constraints.Null
+import javax.validation.constraints.Past
+import javax.validation.constraints.Pattern
+import javax.validation.constraints.Size
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmAnnotationReference
+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.util.TypeReferences
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget
+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.LDatatypeConstraint
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.runtime.common.annotations.Properties
+import org.eclipse.osbp.runtime.common.annotations.Property
+import org.eclipse.osbp.runtime.jsr303.validation.common.ErrorSeverity
+import org.eclipse.osbp.runtime.jsr303.validation.common.InfoSeverity
+import org.eclipse.osbp.runtime.jsr303.validation.common.WarningSeverity
+
+/** 
+ * This class is responsible to generate the Annotations defined in the entity model
+ */
+class AnnotationCompiler {
+
+	@Inject extension JvmTypesBuilder
+	@Inject extension AnnotationExtension
+	@Inject extension TypeReferences
+
+	def processAnnotation(LAnnotationTarget annotationTarget, JvmMember jvmMember) {
+		internalProcessAnnotation(annotationTarget, jvmMember)
+	}
+
+	def protected dispatch void internalProcessAnnotation(LType bean, JvmGenericType jvmType) {
+		bean.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+	}
+
+	def protected dispatch void internalProcessAnnotation(LReference ref, JvmField jvmType) {
+		ref.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+	}
+
+	def protected dispatch void internalProcessAnnotation(LAttribute att, JvmField jvmType) {
+		att.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+	}
+
+	def void toDatatypeBasedConstraintAnnotations(LAttribute att, JvmField jvmType) {
+		if (att.type instanceof LDataType) {
+			val LDataType dt = att.type as LDataType;
+			for (c : dt.constraints) {
+				c.toConstraintAnnotation(jvmType)
+			}
+		}
+	}
+
+	def protected List<LKeyAndValue> mergeKeyAndValues(LAttribute att) {
+		val keyAndValues = newArrayList()
+
+		// add all datatype properties to the list
+		att.addDatatypeKeyAndValues(keyAndValues)
+
+		// add the attribute properties
+		keyAndValues.addAll(att.properties)
+
+		// remove duplicate keys
+		keyAndValues.removeDuplicateKeys
+
+		return keyAndValues
+	}
+
+	def protected List<LKeyAndValue> mergeKeyAndValues(LReference ref) {
+		val keyAndValues = newArrayList()
+
+		// add the attribute properties
+		keyAndValues.addAll(ref.properties)
+
+		// remove duplicate keys
+		keyAndValues.removeDuplicateKeys
+
+		return keyAndValues
+	}
+
+	def protected void removeDuplicateKeys(List<LKeyAndValue> result) {
+
+		if (result.size == 0) {
+			return
+		}
+
+		val keys = newArrayList()
+
+		val ListIterator<LKeyAndValue> iter = result.listIterator(result.size - 1)
+		while (iter.hasPrevious) {
+			val LKeyAndValue temp = iter.previous
+			if (keys.contains(temp.key)) {
+				iter.remove
+			} else {
+				keys += temp.key
+			}
+		}
+	}
+
+	def protected addDatatypeKeyAndValues(LAttribute att, List<LKeyAndValue> result) {
+		if (att.type instanceof LDataType) {
+			val LDataType dt = att.type as LDataType
+			result.addAll(dt.properties)
+		}
+	}
+
+	def protected void toPropertiesAnnotation(EObject context, List<LKeyAndValue> keyValues, JvmField field) {
+		if (keyValues == null || keyValues.size == 0) {
+			return
+		}
+		val innerAnnotations = newArrayList()
+		keyValues.forEach [
+			val innerAnno = context.toAnnotation(typeof(Property))
+			innerAnno.addAnnAttr(it, "key", key)
+			innerAnno.addAnnAttr(it, "value", value)
+			innerAnnotations += innerAnno
+		]
+
+		// now create the outer annotation and add the array of inner annotations
+		val mainAnno = context.toAnnotation(typeof(Properties))
+		mainAnno.addAnnAttr(context, "properties",
+			innerAnnotations.toArray(<JvmAnnotationReference>newArrayOfSize(innerAnnotations.length)))
+		field.annotations += mainAnno
+
+	}
+
+	/**
+	 * Annotation to tell validator, that nested properties should be validated too
+	 */
+	def protected void toValidAnnotation(EObject context, JvmField field) {
+		val anno = context.toAnnotation(typeof(Valid))
+		field.annotations += anno
+	}
+
+	def dispatch boolean isValidAllowed(Void voidx) {
+		return false
+	}
+
+	def dispatch boolean isValidAllowed(LDataType type) {
+		if (type.asPrimitive) {
+			return false
+		}
+
+		if (type.jvmTypeReference?.qualifiedName.isPrimitiveJvmType) {
+			return false
+		}
+
+		return true
+	}
+
+	def dispatch boolean isValidAllowed(LScalarType type) {
+		return false;
+	}
+
+	def boolean isPrimitiveJvmType(String value) {
+		if (value == null) {
+			return false
+		}
+
+		switch (value) {
+			case (typeof(Integer).name ):
+				return true
+			case Integer.TYPE.name:
+				return true
+			case typeof(Boolean).name:
+				return true
+			case Boolean.TYPE.name:
+				return true
+			case typeof(Short).name:
+				return true
+			case Short.TYPE.name:
+				return true
+			case typeof(Long).name:
+				return true
+			case Long.TYPE.name:
+				return true
+			case typeof(Double).name:
+				return true
+			case Double.TYPE.name:
+				return true
+			case typeof(Float).name:
+				return true
+			case Float.TYPE.name:
+				return true
+			case typeof(Character).name:
+				return true
+			case Character.TYPE.name:
+				return true
+			case typeof(Byte).name:
+				return true
+			case Byte.TYPE.name:
+				return true
+			case typeof(Boolean).name:
+				return true
+			case Boolean.TYPE.name:
+				return true
+			case typeof(String).name:
+				return true
+		}
+		return false
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCAssertFalse constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(AssertFalse))
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	protected def handlePayloadAndMessages(LDatatypeConstraint constraint, JvmAnnotationReference anno) {
+		switch (constraint.severity) {
+			case INFO:
+				anno.addAnnAttr(constraint, "payload", typeof(InfoSeverity).getTypeForName(constraint))
+			case WARNING:
+				anno.addAnnAttr(constraint, "payload", typeof(WarningSeverity).getTypeForName(constraint))
+			case ERROR:
+				anno.addAnnAttr(constraint, "payload", typeof(ErrorSeverity).getTypeForName(constraint))
+		}
+
+		val b = new StringBuilder
+		if (!constraint.msgI18nKey.nullOrEmpty) {
+			b.append(constraint.msgI18nKey)
+		}
+
+		if (!constraint.msgCode.nullOrEmpty) {
+			b.append(":")
+			b.append(constraint.msgCode)
+		}
+
+		if (!b.toString.nullOrEmpty) {
+			anno.addAnnAttr(constraint, "message", "{" + b.toString + "}")
+		}
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCAssertTrue constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(AssertTrue))
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCNotNull constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(NotNull))
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCNull constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Null))
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCFuture constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Future))
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCPast constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Past))
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCSize constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Size))
+		if (constraint.min >= 0) {
+			anno.addAnnAttr(constraint, "min", constraint.min)
+		}
+		if (constraint.max > 0) {
+			anno.addAnnAttr(constraint, "max", constraint.max)
+		}
+
+		handlePayloadAndMessages(constraint, anno)
+
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCDigits constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Digits))
+		if (constraint.intDigits >= 0) {
+			anno.addAnnAttr(constraint, "integer", constraint.intDigits)
+		}
+		if (constraint.fractionDigits > 0) {
+			anno.addAnnAttr(constraint, "fraction", constraint.fractionDigits)
+		}
+
+		handlePayloadAndMessages(constraint, anno)
+
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCDecimalMax constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(DecimalMax))
+		anno.addAnnAttr(constraint, "value", constraint.max.toString)
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCDecimalMin constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(DecimalMin))
+		anno.addAnnAttr(constraint, "value", constraint.min.toString)
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCNumericMax constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Max))
+		anno.addAnnAttr(constraint, "value", constraint.max)
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCNumericMin constraint, JvmField field) {
+		val anno = constraint.toAnnotation(typeof(Min))
+		anno.addAnnAttr(constraint, "value", constraint.min)
+		handlePayloadAndMessages(constraint, anno)
+		field.annotations += anno
+	}
+
+	def protected dispatch void toConstraintAnnotation(LDtCRegEx constraint, JvmField field) {
+		if (constraint.pattern != null && !constraint.pattern.isEmpty) {
+			val anno = constraint.toAnnotation(typeof(Pattern))
+			anno.addAnnAttr(constraint, "regexp", constraint.pattern)
+			handlePayloadAndMessages(constraint, anno)
+			field.annotations += anno
+		}
+	}
+
+	//	def protected dispatch void toConstraintAnnotation(LDtCPast constraint, JvmField field) {
+	//		field.annotations += constraint.toAnnotation(typeof(Past))
+	//	}
+	def protected dispatch void internalProcessAnnotation(LOperation member, JvmOperation jvmOperation) {
+		member.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmOperation);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/CommonGrammarJvmModelInferrer.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/CommonGrammarJvmModelInferrer.xtend
new file mode 100644
index 0000000..2967194
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/CommonGrammarJvmModelInferrer.xtend
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.jvmmodel
+
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.resource.XtextSyntaxDiagnostic
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+/**
+ * <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 CommonGrammarJvmModelInferrer extends AbstractModelInferrer {
+	
+	protected val Logger log = LoggerFactory.getLogger(getClass())
+	
+	/**
+     * Returns true if the resource of the specified object has syntax errors.
+     * This method allows an eary abort of inferring that would cause NPEs because of not loaded 
+     * Ecore proxy instances.
+     * Inspired by DefaultFoldingStructureProvider.modelChanged().
+     */
+	def hasSyntaxErrors(EObject o) {
+		val hasSyntaxErrors = o.eResource.errors.exists[it instanceof XtextSyntaxDiagnostic]
+		if (hasSyntaxErrors) {
+			log.warn("Abort inferring due to syntax errors: " + o)
+		}
+		return hasSyntaxErrors
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/CommonTypesBuilder.xtend b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/CommonTypesBuilder.xtend
new file mode 100644
index 0000000..7ab63cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/jvmmodel/CommonTypesBuilder.xtend
@@ -0,0 +1,593 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.beans.PropertyChangeListener
+import java.beans.PropertyChangeSupport
+import java.util.Collections
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmAnnotationTarget
+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.JvmIdentifiableElement
+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.TypesFactory
+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.JvmTypesBuilder
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.common.xtext.extensions.NamingExtensions
+import org.eclipse.osbp.dsl.common.xtext.extensions.TreeAppendableExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexModelAssociator
+import org.eclipse.osbp.runtime.common.annotations.DomainDescription
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+import static com.google.common.collect.Iterables.*
+
+import static extension org.eclipse.osbp.dsl.common.xtext.jvmmodel.CommonTypesBuilder.*
+
+class CommonTypesBuilder extends JvmTypesBuilder {
+
+	final static Logger LOGGER = LoggerFactory.getLogger(typeof(CommonTypesBuilder));
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension ModelExtensions
+	@Inject extension NamingExtensions
+	@Inject extension TreeAppendableExtensions
+
+	@Inject(optional=true)
+	IIndexModelAssociator associator;
+
+	@Inject AnnotationCompiler annotationCompiler
+	@Inject TypesFactory typesFactory;
+	@Inject TypeReferences references;
+
+	/*
+     * Methods delegating to JvmTypesBuilder. 
+     * (Includes methods copied from JvmTypesBuilder because its visibility is protected.)
+     */
+	def JvmTypeReference newTypeRef(EObject ctx, QualifiedName qn, JvmTypeReference... typeArgs) {
+		newTypeRef(ctx, qn.toString, typeArgs)
+	}
+
+	def override JvmTypeReference newTypeRef(EObject ctx, Class<?> typeClass, JvmTypeReference... typeArgs) {
+		super.newTypeRef(ctx, typeClass.name, typeArgs)
+	}
+
+	def override JvmTypeReference newTypeRef(EObject ctx, String typeName, JvmTypeReference... typeArgs) {
+		super.newTypeRef(ctx, typeName, typeArgs)
+	}
+
+	def setDocumentation(JvmIdentifiableElement jvmElement, CharSequence documentation) {
+		super.setDocumentation(jvmElement, documentation?.toString)
+	}
+
+	def JvmField toField(LFeature prop) {
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+		jvmField.type = cloneWithProxies(prop.toTypeReferenceWithMultiplicity)
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def JvmOperation toIsDisposed(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "isDisposed"
+		op.returnType = references.getTypeForName(Boolean::TYPE, sourceElement, null)
+
+		op.documentation = '''
+		@return true, if the object is disposed. 
+		Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+		Accessing objects that are already disposed will cause runtime exceptions.
+		'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "return this.disposed;"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def JvmOperation toIsCopy(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "isCopy"
+		op.returnType = references.getTypeForName(Boolean::TYPE, sourceElement, null)
+
+		op.documentation = '''
+		@return true, if the object is a copy for a different object. 
+		In that special case of "copy" opposite references are treated differently
+		to ensure the crossreferences untouched about changes.
+		'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "return this.isCopy;"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def JvmOperation toCheckDisposed(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PRIVATE
+		op.returnType = references.getTypeForName(Void::TYPE, sourceElement)
+		op.simpleName = "checkDisposed"
+		op.documentation = '''
+		Checks whether the object is disposed.
+		@throws RuntimeException if the object is disposed.'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> '''
+				if (isDisposed()) {
+				  throw new RuntimeException("Object already disposed: " + this);
+				}'''
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def String toCheckDisposedCall(LFeature prop) {
+
+		// TODO Retrieve the settings from the LFeature
+		return "checkDisposed();\n"
+	}
+
+	def JvmOperation toMethod(LOperation sourceElement, String name, JvmTypeReference returnType,
+		Procedure1<? super JvmOperation> initializer) {
+		val op = typesFactory.createJvmOperation()
+		op.simpleName = name
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = cloneWithProxies(returnType)
+
+		annotationCompiler.processAnnotation(sourceElement, op);
+		associate(sourceElement, op);
+		initializeSafely(op, initializer);
+	}
+
+	def JvmOperation toGetter(LFeature prop) {
+		prop.toGetter(prop.toGetterName)
+	}
+
+	def dispatch JvmOperation toGetter(EObject prop, String methodName) {
+		throw new IllegalStateException("Please override")
+	}
+
+	// dispatch used by sub classes
+	def dispatch JvmOperation toGetter(LReference prop, String methodName) {
+		val propertyName = prop.toName
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = methodName
+		op.returnType = cloneWithProxies(prop.toTypeReferenceWithMultiplicity)
+		op.documentation = if (prop.toMany) {
+			"@return Returns an unmodifiable list of " + propertyName + "."
+		} else if (propertyName != null) {
+			"@return Returns the ".concat((if(prop.bounds.required) "<em>required</em> " else "")).concat(propertyName).
+				concat(" property").concat(
+					(if(!prop.bounds.required) " or <code>null</code> if not present" else "")).concat(".")
+		}
+
+		setBody(op,
+			[ // ITreeAppendable it |
+				if(it == null) return
+				val p = it.trace(prop);
+				p >> prop.toCheckDisposedCall()
+				if (prop.toMany) {
+					p >> "return " >> newTypeRef(prop, typeof(Collections)) >> ".unmodifiableList" >>
+						"(" + prop.toCollectionInternalGetterName + "());"
+				} else {
+					p >> "return this." + propertyName + ";"
+				}
+			])
+
+		return associate(prop, op);
+	}
+
+	// dispatch used by sub classes
+	def dispatch JvmOperation toGetter(LAttribute prop, String methodName) {
+		val propertyName = prop.toName
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = methodName
+		op.returnType = cloneWithProxies(prop.toTypeReferenceWithMultiplicity)
+
+		if (prop.derived) {
+			val customDoc = prop.documentation
+			if (customDoc != null) {
+				op.documentation = customDoc
+			} else {
+				op.documentation = '''
+				Calculates the value for the derived property «prop.name»
+				 
+				@return «prop.name» The derived property value'''
+			}
+
+			// set the domain description annotation
+			if (prop.domainDescription) {
+				op.annotations += prop.toAnnotation(typeof(DomainDescription))
+			}
+
+			setBody(op, prop.derivedGetterExpression)
+
+		} else {
+			op.documentation = if (prop.toMany) {
+				"@return Returns an unmodifiable list of " + propertyName + "."
+			} else if (propertyName != null) {
+				"@return Returns the ".concat((if(prop.bounds.required) "<em>required</em> " else "")).concat(propertyName).
+					concat(" property").concat(
+						(if(!prop.bounds.required) " or <code>null</code> if not present" else "")).concat(".")
+			}
+
+			setBody(op,
+				[ // ITreeAppendable it |
+					if(it == null) return
+					val p = it.trace(prop);
+					p >> prop.toCheckDisposedCall()
+					if (prop.toMany) {
+						p >> "return " >> newTypeRef(prop, typeof(Collections)) >> ".unmodifiableList" >>
+							"(" + prop.toCollectionInternalGetterName + "());"
+					} else {
+						p >> "return this." + propertyName + ";"
+					}
+				])
+		}
+		return associate(prop, op);
+	}
+
+	/**
+	 * The binary <code>+</code> operator that concatenates two strings.
+	 * 
+	 * @param a
+	 *            a string.
+	 * @param b
+	 *            another string.
+	 * @return <code>a + b</code>
+	 */
+	def static String operator_plus(String a, String b) {
+		if (b == null) {
+			return a
+		}
+		return a.concat(b);
+	}
+
+	def JvmField toPrimitiveTypeField(EObject sourceElement, String name, Class<?> primitiveType) {
+		val typeRef = newTypeRef(sourceElement, primitiveType, null)
+		val JvmField result = typesFactory.createJvmField();
+		result.simpleName = name
+		result.visibility = JvmVisibility::PRIVATE
+		result.type = cloneWithProxies(typeRef)
+		associate(sourceElement, result)
+	}
+
+	def JvmField toPropertyChangeSupportField(EObject sourceElement) {
+		val typeRef = newTypeRef(sourceElement, typeof(PropertyChangeSupport), null)
+		val JvmField result = typesFactory.createJvmField();
+		result.simpleName = "propertyChangeSupport"
+		result.visibility = JvmVisibility::PRIVATE
+		result.type = cloneWithProxies(typeRef)
+		result.setInitializer [ // ITreeAppendable
+			if(it == null) return
+			val p = it.trace(sourceElement)
+			p >> '''new PropertyChangeSupport(this)'''
+		]
+		associate(sourceElement, result)
+	}
+
+	def JvmOperation toAddPropertyChangeListener(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "addPropertyChangeListener"
+		op.returnType = references.getTypeForName(Void::TYPE, sourceElement, null)
+		val parameterRef = references.getTypeForName(typeof(PropertyChangeListener), sourceElement, null)
+		op.parameters += sourceElement.toParameter("listener", parameterRef)
+
+		op.documentation = '''
+		@see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "propertyChangeSupport.addPropertyChangeListener(listener);"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def JvmOperation toAddPropertyChangeListenerWithProperty(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "addPropertyChangeListener"
+		op.returnType = references.getTypeForName(Void::TYPE, sourceElement, null)
+		op.parameters +=
+			sourceElement.toParameter("propertyName", references.getTypeForName(typeof(String), sourceElement, null))
+		op.parameters += sourceElement.toParameter("listener",
+			references.getTypeForName(typeof(PropertyChangeListener), sourceElement, null))
+
+		op.documentation = '''
+		@see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "propertyChangeSupport.addPropertyChangeListener(propertyName, listener);"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def JvmOperation toRemovePropertyChangeListener(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "removePropertyChangeListener"
+		op.returnType = references.getTypeForName(Void::TYPE, sourceElement, null)
+		val parameterRef = references.getTypeForName(typeof(PropertyChangeListener), sourceElement, null)
+		op.parameters += sourceElement.toParameter("listener", parameterRef)
+
+		op.documentation = '''
+		@see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "propertyChangeSupport.removePropertyChangeListener(listener);"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def JvmOperation toRemovePropertyChangeListenerWithProperty(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "removePropertyChangeListener"
+		op.returnType = references.getTypeForName(Void::TYPE, sourceElement, null)
+		op.parameters +=
+			sourceElement.toParameter("propertyName", references.getTypeForName(typeof(String), sourceElement, null))
+		op.parameters += sourceElement.toParameter("listener",
+			references.getTypeForName(typeof(PropertyChangeListener), sourceElement, null))
+
+		op.documentation = '''
+		@see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "propertyChangeSupport.removePropertyChangeListener(propertyName, listener);"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def JvmOperation toFirePropertyChange(LClass sourceElement) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = "firePropertyChange"
+		op.returnType = references.getTypeForName(Void::TYPE, sourceElement, null)
+		op.parameters +=
+			sourceElement.toParameter("propertyName", references.getTypeForName(typeof(String), sourceElement, null))
+		op.parameters += sourceElement.toParameter("oldValue",
+			references.getTypeForName(typeof(Object), sourceElement, null))
+		op.parameters += sourceElement.toParameter("newValue",
+			references.getTypeForName(typeof(Object), sourceElement, null))
+
+		op.documentation = '''
+		@see PropertyChangeSupport#firePropertyChange(String, Object, Object)'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(sourceElement)
+				p >> "propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);"
+			])
+
+		associate(sourceElement, op)
+	}
+
+	def void translateAnnotationDefTo(LAnnotationDef annotationDef, JvmAnnotationTarget target) {
+		if (annotationDef == null || target == null)
+			return
+		val annotationReference = super.getJvmAnnotationReference(annotationDef.getAnnotation())
+		if (annotationReference != null) {
+			target.annotations += annotationReference
+		}
+	}
+
+	def JvmGenericType toJvmType(LClass lClass) {
+		val type = createJvmGenericType(lClass, lClass.fullyQualifiedName.toString)
+		type.setAbstract(lClass.isAbstract());
+
+		associate(lClass, type)
+	}
+
+	override /* @Nullable */ JvmOperation toHashCodeMethod(/* @Nullable */EObject sourceElement,
+		boolean extendsSomethingWithProperHashCode, /* @Nullable */ JvmDeclaredType declaredType) {
+		if (sourceElement == null || declaredType == null)
+			return null;
+		return toHashCodeMethod(sourceElement, extendsSomethingWithProperHashCode,
+			toArray(filter(declaredType.getMembers(), typeof(JvmField)), typeof(JvmField)));
+	}
+
+	override /* @Nullable */ JvmOperation toHashCodeMethod(/* @Nullable */EObject sourceElement,
+		boolean extendsSomethingWithProperHashCode, JvmField ... jvmFields) {
+		if (sourceElement == null)
+			return null;
+		val JvmOperation result = toMethod(sourceElement, "hashCode",
+			this.references.getTypeForName(Integer.TYPE, sourceElement), null);
+		if (result == null)
+			return null;
+		result.getAnnotations().add(toAnnotation(sourceElement, typeof(Override)));
+		setBody(result,
+			new Procedure1<ITreeAppendable>() {
+				override void apply(/* @Nullable */ITreeAppendable p) {
+					if (p == null)
+						return;
+					p.append(" int prime = 31;");
+					if (extendsSomethingWithProperHashCode) {
+						p.newLine().append("int result = super.hashCode();");
+					} else {
+						p.newLine().append("int result = 1;");
+					}
+					for (JvmField field : jvmFields) {
+						val String typeName = field.getType().getIdentifier();
+						if (Boolean.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"result = prime * result + (this." + field.getSimpleName() + " ? 1231 : 1237);");
+						} else if (Integer.TYPE.getName().equals(typeName) || Character.TYPE.getName().equals(typeName) ||
+							Byte.TYPE.getName().equals(typeName) || Short.TYPE.getName().equals(typeName)) {
+							p.newLine().append("result = prime * result + this." + field.getSimpleName() + ";");
+						} else if (Long.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"result = prime * result + (int) (this." + field.getSimpleName() + " ^ (this." +
+									field.getSimpleName() + " >>> 32));");
+						} else if (Float.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"result = prime * result + Float.floatToIntBits(this." + field.getSimpleName() + ");");
+						} else if (Double.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"result = prime * result + (int) (Double.doubleToLongBits(this." + field.getSimpleName() +
+									") ^ (Double.doubleToLongBits(this." + field.getSimpleName() + ") >>> 32));");
+						} else {
+							p.newLine().append(
+								"result = prime * result + ((this." + field.getSimpleName() + "== null) ? 0 : this." +
+									field.getSimpleName() + ".hashCode());");
+						}
+					}
+					p.newLine().append("return result;");
+				}
+			});
+		return result;
+	}
+
+	override /* @Nullable */ JvmOperation toEqualsMethod(/* @Nullable */EObject sourceElement, /* @Nullable */
+		JvmDeclaredType declaredType, boolean isDelegateToSuperEquals) {
+		if (sourceElement == null || declaredType == null)
+			return null;
+		return toEqualsMethod(sourceElement, declaredType, isDelegateToSuperEquals,
+			toArray(filter(declaredType.getMembers(), typeof(JvmField)), typeof(JvmField)));
+	}
+
+	/**
+	 * @deprecated build your own :-)
+	 */
+	override /* @Nullable */ JvmOperation toEqualsMethod(/* @Nullable */EObject sourceElement, /* @Nullable */
+		JvmDeclaredType declaredType, boolean isDelegateToSuperEquals, JvmField ... jvmFields) {
+		if (sourceElement == null || declaredType == null)
+			return null;
+		val JvmOperation result = toMethod(sourceElement, "equals",
+			references.getTypeForName(Boolean.TYPE, sourceElement), null);
+		if (result == null)
+			return null;
+		result.getAnnotations().add(toAnnotation(sourceElement, typeof(Override)));
+		result.getParameters().add(
+			toParameter(sourceElement, "obj", references.getTypeForName(typeof(Object), sourceElement)));
+		setBody(result,
+			new Procedure1<ITreeAppendable>() {
+				override void apply(/* @Nullable */ITreeAppendable p) {
+					if (p == null)
+						return;
+					p.append("if (this == obj)").increaseIndentation();
+					p.newLine().append("return true;").decreaseIndentation();
+					p.newLine().append("if (obj == null)").increaseIndentation();
+					p.newLine().append("return false;").decreaseIndentation();
+					p.newLine().append("if (getClass() != obj.getClass())").increaseIndentation();
+					p.newLine().append("return false;").decreaseIndentation();
+					if (isDelegateToSuperEquals) {
+						p.newLine().append("if (!super.equals(obj))").increaseIndentation();
+						p.newLine().append("return false;").decreaseIndentation();
+					}
+					p.newLine().append(
+						declaredType.getSimpleName() + " other = (" + declaredType.getSimpleName() + ") obj;");
+					for (JvmField field : jvmFields) {
+						val String typeName = field.getType().getIdentifier();
+						if (Boolean.TYPE.getName().equals(typeName) || Integer.TYPE.getName().equals(typeName) ||
+							Long.TYPE.getName().equals(typeName) || Character.TYPE.getName().equals(typeName) ||
+							Byte.TYPE.getName().equals(typeName) || Short.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"if (other." + field.getSimpleName() + " != this." + field.getSimpleName() + ")").
+								increaseIndentation();
+							p.newLine().append("return false;").decreaseIndentation();
+
+						} else if (Double.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"if (Double.doubleToLongBits(other." + field.getSimpleName() +
+									") != Double.doubleToLongBits(this." + field.getSimpleName() + "))").increaseIndentation();
+							p.newLine().append("return false;").decreaseIndentation();
+						} else if (Float.TYPE.getName().equals(typeName)) {
+							p.newLine().append(
+								"if (Float.floatToIntBits(other." + field.getSimpleName() +
+									") != Float.floatToIntBits(this." + field.getSimpleName() + "))").increaseIndentation();
+							p.newLine().append("return false;").decreaseIndentation();
+						} else {
+							p.newLine().append("if (this." + field.getSimpleName() + " == null) {").
+								increaseIndentation();
+							p.newLine().append("if (other." + field.getSimpleName() + " != null)").increaseIndentation();
+							p.newLine().append("return false;").decreaseIndentation();
+							p.decreaseIndentation();
+							p.newLine().append(
+								"} else if (!this." + field.getSimpleName() + ".equals(other." + field.getSimpleName() +
+									"))").increaseIndentation();
+							p.newLine().append("return false;").decreaseIndentation();
+						}
+					}
+					p.newLine().append("return true;");
+				}
+			});
+		return result;
+	}
+
+	def void associateBySelector(EObject sourceElement, JvmGenericType jvmElement, String selector) {
+		if (associator != null) {
+			associator.associateBySelector(sourceElement, jvmElement, selector)
+		} else {
+			LOGGER.error("Associator is null!")
+		}
+	}
+
+	def JvmGenericType getBySelector(EObject sourceElement, String selector) {
+		if (associator != null) {
+			return associator.getBySelector(sourceElement, selector)
+		}
+
+		LOGGER.error("Associator is null!")
+
+		return null
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonBatchScopeProvider.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonBatchScopeProvider.java
new file mode 100644
index 0000000..8c6e287
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonBatchScopeProvider.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.scope;
+
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider;
+
+/**
+ * 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 CommonBatchScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonImportedNamespaceAwareLocalScopeProvider.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonImportedNamespaceAwareLocalScopeProvider.java
new file mode 100644
index 0000000..a3ac633
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonImportedNamespaceAwareLocalScopeProvider.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.scoping.impl.ImportNormalizer;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.scoping.FastImportedNamespaceAwareLocalScopeProvider;
+
+import com.google.inject.Inject;
+
+public class CommonImportedNamespaceAwareLocalScopeProvider extends
+		FastImportedNamespaceAwareLocalScopeProvider {
+ 
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+	@Inject
+	private ModelExtensions extensions;
+
+	@Override
+	protected List<ImportNormalizer> getImplicitImports(boolean ignoreCase) {
+		List<ImportNormalizer> temp = new ArrayList<ImportNormalizer>();
+		temp.add(new ImportNormalizer(qualifiedNameConverter
+				.toQualifiedName("java.lang"), true, ignoreCase));
+		temp.add(new ImportNormalizer(qualifiedNameConverter
+				.toQualifiedName("java.util"), true, ignoreCase));
+		return temp;
+	}
+
+	@Override
+	protected List<ImportNormalizer> internalGetImportedNamespaceResolvers(
+			EObject context, boolean ignoreCase) {
+		List<ImportNormalizer> result = new ArrayList<ImportNormalizer>();
+		result.addAll(super.internalGetImportedNamespaceResolvers(context,
+				ignoreCase));
+		if (context instanceof LType) {
+			LPackage lPackage = extensions.getPackage(((LType) context));
+			if (lPackage != null) {
+				QualifiedName qfn = getQualifiedNameProvider()
+						.getFullyQualifiedName(lPackage);
+				if (qfn != null) {
+					result.add(createImportedNamespaceResolver(
+							qualifiedNameConverter.toString(qfn) + ".*",
+							ignoreCase));
+				}
+			}
+		}
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonScopeProvider.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonScopeProvider.java
new file mode 100644
index 0000000..597d748
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/CommonScopeProvider.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.scope;
+
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider;
+
+/**
+ * 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 CommonScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/ConstraintEnumMatchingLiteralScope.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/ConstraintEnumMatchingLiteralScope.java
new file mode 100644
index 0000000..4cd6006
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/scope/ConstraintEnumMatchingLiteralScope.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+public class ConstraintEnumMatchingLiteralScope extends AbstractScope {
+	private final LAttributeMatchingConstraint constraint;
+
+	public ConstraintEnumMatchingLiteralScope(
+			LAttributeMatchingConstraint constraint) {
+		super(IScope.NULLSCOPE, true);
+		this.constraint = constraint;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		LAttribute att = constraint.getAttribute();
+		if (att != null) {
+			LType type = att.getType();
+			if (type instanceof LEnum) {
+				LEnum enumx = (LEnum) type;
+
+				for (LEnumLiteral literal : enumx.getLiterals()) {
+					result.add(new EObjectDescription(QualifiedName
+							.create(literal.getName()), literal, null));
+				}
+			}
+		}
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java
new file mode 100644
index 0000000..225fa5c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSemanticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.serializer;
+
+public class CommonGrammarSemanticSequencer extends AbstractCommonGrammarSemanticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..a7240ec
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/serializer/CommonGrammarSyntacticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.serializer;
+
+public class CommonGrammarSyntacticSequencer extends AbstractCommonGrammarSyntacticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarJavaValidator.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarJavaValidator.java
new file mode 100644
index 0000000..cd50ba5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/validation/CommonGrammarJavaValidator.java
@@ -0,0 +1,398 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.validation;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.resource.IContainer;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.validation.CheckType;
+import org.eclipse.xtext.validation.NamesAreUniqueValidator;
+import org.eclipse.xtext.validation.ValidationMessageAcceptor;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+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.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import com.google.inject.Inject;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+public class CommonGrammarJavaValidator
+		extends
+		org.eclipse.osbp.dsl.common.xtext.validation.AbstractCommonGrammarJavaValidator {
+
+	/** The Constant CODE__DUPLICATE_LPACKAGE_IN_PROJECT. */
+	public static final String CODE__DUPLICATE_LPACKAGE_IN_PROJECT = "0_100";
+	
+	/** The Constant CODE__DUPLICATE_LTYPE_IN_PROJECT. */
+	public static final String CODE__DUPLICATE_LTYPE_IN_PROJECT = "0_101";
+	
+	/** The Constant CODE__DUPLICATE_LPACKAGE_IN_FILE. */
+	public static final String CODE__DUPLICATE_LPACKAGE_IN_FILE = "0_102";
+	
+	/** The Constant CODE__MANY_TO_MANY__NOT_SUPPORTED. */
+	public static final String CODE__MANY_TO_MANY__NOT_SUPPORTED = "0_103";
+	
+	/** The Constant CODE__NOT_A_VALID_PRIMITIVE. */
+	public static final String CODE__NOT_A_VALID_PRIMITIVE = "0_104";
+	
+	/** The Constant CODE__FORBIDDEN_JAVA_KEYWORD. */
+	public static final String CODE__FORBIDDEN_JAVA_KEYWORD = "0_105";
+	
+	/** The Constant CODE__DUPLICATE_LDATATYPE_IN_PACKAGE. */
+	public static final String CODE__DUPLICATE_LDATATYPE_IN_PACKAGE = "0_106";
+
+	/** The Constant CODE__MISSING__JAVAX_PERSISTENCE. */
+	public static final String CODE__MISSING__JAVAX_PERSISTENCE = "0_107";
+	
+	/** The Constant CODE__MISSING__L_RUNTIME_COMMON. */
+	public static final String CODE__MISSING__L_RUNTIME_COMMON = "0_108";
+	
+	/** The Constant CODE__MISSING__DATATYPE_LIB. */
+	public static final String CODE__MISSING__DATATYPE_LIB = "0_109";
+	
+	/** The Constant CODE__MISSING__DTO_LIB. */
+	public static final String CODE__MISSING__DTO_LIB = "0_110";
+	
+	/** The Constant CODE__MISSING__XBASE_LIB. */
+	public static final String CODE__MISSING__XBASE_LIB = "0_111";
+	
+	/** The Constant CODE__MISSING__JDK_1_5. */
+	public static final String CODE__MISSING__JDK_1_5 = "0_112";
+	
+	/** The Constant CODE__FEATURE_LOWERCASE. */
+	public static final String CODE__FEATURE_LOWERCASE = "0_113";
+
+	/** The qnp. */
+	@Inject
+	private IQualifiedNameProvider qnp;
+	
+	/** The extensions. */
+	@Inject
+	private ModelExtensions extensions;
+	
+	/** The unique validator. */
+	@Inject
+	private NamesAreUniqueValidator uniqueValidator;
+	
+	/** The containermanager. */
+	@Inject
+	private IContainer.Manager containermanager;
+	
+	/** The resource descriptions provider. */
+	@Inject
+	private ResourceDescriptionsProvider resourceDescriptionsProvider;
+
+	/** The Constant javakeywords. */
+	public static final Set<String> javakeywords = new HashSet<String>();
+	static {
+		javakeywords.add("abstract");
+		javakeywords.add("assert");
+		javakeywords.add("boolean");
+		javakeywords.add("break");
+		javakeywords.add("byte");
+		javakeywords.add("case");
+		javakeywords.add("catch");
+		javakeywords.add("char");
+		javakeywords.add("class");
+		javakeywords.add("const");
+		javakeywords.add("continue");
+		javakeywords.add("default");
+		javakeywords.add("double");
+		javakeywords.add("do");
+		javakeywords.add("else");
+		javakeywords.add("enum");
+		javakeywords.add("extends");
+		javakeywords.add("false");
+		javakeywords.add("final");
+		javakeywords.add("finally");
+		javakeywords.add("float");
+		javakeywords.add("for");
+		javakeywords.add("goto");
+		javakeywords.add("if");
+		javakeywords.add("implements");
+		javakeywords.add("import");
+		javakeywords.add("instanceof");
+		javakeywords.add("int");
+		javakeywords.add("interface");
+		javakeywords.add("native");
+		javakeywords.add("new");
+		javakeywords.add("null");
+		javakeywords.add("package");
+		javakeywords.add("private");
+		javakeywords.add("protected");
+		javakeywords.add("public");
+		javakeywords.add("return");
+		javakeywords.add("short");
+		javakeywords.add("static");
+		javakeywords.add("strictfp");
+		javakeywords.add("super");
+		javakeywords.add("switch");
+		javakeywords.add("synchronized");
+		javakeywords.add("this");
+		javakeywords.add("throw");
+		javakeywords.add("throws");
+		javakeywords.add("transient");
+		javakeywords.add("true");
+		javakeywords.add("try");
+		javakeywords.add("void");
+		javakeywords.add("volatile");
+		javakeywords.add("while");
+	}
+
+	/** The Constant primitiveWrappers. */
+	private static final Set<String> primitiveWrappers = new HashSet<String>();
+	static {
+		primitiveWrappers.add("java.lang.Integer");
+		primitiveWrappers.add("java.lang.Long");
+		primitiveWrappers.add("java.lang.Short");
+		primitiveWrappers.add("java.lang.Double");
+		primitiveWrappers.add("java.lang.Float");
+		primitiveWrappers.add("java.lang.Character");
+		primitiveWrappers.add("java.lang.Byte");
+		primitiveWrappers.add("java.lang.Boolean");
+	}
+
+	/**
+	 * Gets the keywords.
+	 *
+	 * @return the keywords
+	 */
+	public Set<String> getKeywords() {
+		return Collections.unmodifiableSet(javakeywords);
+	}
+
+	/**
+	 * Check datatype_as primitive.
+	 *
+	 * @param dt
+	 *            the dt
+	 */
+	public void checkDatatype_asPrimitive(LDataType dt) {
+		if (dt.isAsPrimitive()) {
+			if (!primitiveWrappers.contains(dt.getJvmTypeReference()
+					.getQualifiedName())) {
+				error("The type is not a wrapper from a primitive type!", dt,
+						OSBPTypesPackage.Literals.LDATA_TYPE__AS_PRIMITIVE,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__NOT_A_VALID_PRIMITIVE, (String[]) null);
+			}
+		}
+	}
+
+	/**
+	 * Check properties_ java key word.
+	 *
+	 * @param lprop
+	 *            the lprop
+	 */
+	public void checkProperties_JavaKeyWord(LFeature lprop) {
+		if (lprop.getName() == null) {
+			return;
+		}
+		if (javakeywords.contains(lprop.getName())) {
+			error("The name of the property is a java keyword and not allowed!",
+					OSBPTypesPackage.Literals.LFEATURE__NAME,
+					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+					CODE__FORBIDDEN_JAVA_KEYWORD, (String[]) null);
+		}
+	}
+
+	/**
+	 * Check duplicate type_ in project.
+	 *
+	 * @param type
+	 *            the type
+	 */
+	public void checkDuplicateType_InProject(LType type) {
+		Map<IContainer, List<LType>> lTypes = getAllFor(type);
+		for (Map.Entry<IContainer, List<LType>> temp : lTypes.entrySet())
+			if (temp.getValue().size() > 1) {
+				error(String.format("Duplicate type %s in container", qnp
+						.getFullyQualifiedName(type).toString()), type,
+						OSBPTypesPackage.Literals.LTYPE__NAME,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__DUPLICATE_LTYPE_IN_PROJECT, (String[]) null);
+			}
+	}
+
+	/**
+	 * Returns a map with the container (class path entry) as key and a
+	 * collection with the found types.
+	 *
+	 * @param lType
+	 *            the l type
+	 * @return the all for
+	 */
+	public Map<IContainer, List<LType>> getAllFor(LType lType) {
+		Map<IContainer, List<LType>> allEntities = new HashMap<IContainer, List<LType>>();
+		IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider
+				.getResourceDescriptions(lType.eResource());
+		IResourceDescription resourceDescription = resourceDescriptions
+				.getResourceDescription(lType.eResource().getURI());
+		List<IContainer> visiblecontainers = containermanager
+				.getVisibleContainers(resourceDescription, resourceDescriptions);
+		for (IContainer container : visiblecontainers) {
+			List<LType> types = new ArrayList<LType>();
+			allEntities.put(container, types);
+			if (lType.getName() == null) {
+				continue;
+			}
+			for (IEObjectDescription eobjectDescription : container
+					.getExportedObjects(OSBPTypesPackage.Literals.LTYPE,
+							qnp.getFullyQualifiedName(lType), false)) {
+				types.add((LType) eobjectDescription.getEObjectOrProxy());
+			}
+		}
+		return allEntities;
+	}
+
+	/**
+	 * Check duplicate package_ in project.
+	 *
+	 * @param lPackage
+	 *            the l package
+	 */
+	public void checkDuplicatePackage_InProject(LPackage lPackage) {
+		Map<IContainer, List<LPackage>> packages = getAllFor(lPackage);
+		for (Map.Entry<IContainer, List<LPackage>> temp : packages.entrySet())
+			if (temp.getValue().size() > 1) {
+				warning(String.format("Duplicate package %s in container ", qnp
+						.getFullyQualifiedName(lPackage).toString()), lPackage,
+						OSBPTypesPackage.Literals.LPACKAGE__NAME,
+						CODE__DUPLICATE_LPACKAGE_IN_PROJECT, (String[]) null);
+			}
+	}
+
+	/**
+	 * Returns a map with the container (class path entry) as key and a
+	 * collection with the found packages.
+	 *
+	 * @param lPackage
+	 *            the l package
+	 * @return the all for
+	 */
+	public Map<IContainer, List<LPackage>> getAllFor(LPackage lPackage) {
+		Map<IContainer, List<LPackage>> allEntities = new HashMap<IContainer, List<LPackage>>();
+		IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider
+				.getResourceDescriptions(lPackage.eResource());
+		IResourceDescription resourceDescription = resourceDescriptions
+				.getResourceDescription(lPackage.eResource().getURI());
+		List<IContainer> visiblecontainers = containermanager
+				.getVisibleContainers(resourceDescription, resourceDescriptions);
+		for (IContainer container : visiblecontainers) {
+			List<LPackage> packages = new ArrayList<LPackage>();
+			allEntities.put(container, packages);
+			for (IEObjectDescription eobjectDescription : container
+					.getExportedObjects(OSBPTypesPackage.Literals.LPACKAGE,
+							qnp.getFullyQualifiedName(lPackage), false)) {
+				packages.add((LPackage) eobjectDescription.getEObjectOrProxy());
+			}
+		}
+		return allEntities;
+	}
+
+	/**
+	 * Check duplicate datatype in package.
+	 *
+	 * @param pkg
+	 *            the pkg
+	 */
+	public void checkDuplicateDatatypeInPackage(LTypedPackage pkg) {
+		Set<String> names = new HashSet<String>();
+		int counter = 0;
+		for (LType type : pkg.getTypes()) {
+			if (type instanceof LDataType) {
+				String name = ((LDataType) type).getName();
+				if (!names.add(name)) {
+					error(String.format(
+							"Datatype %s must be unique in package %s!", name,
+							pkg.getName()),
+							OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+							counter, CODE__DUPLICATE_LDATATYPE_IN_PACKAGE,
+							(String[]) null);
+					break;
+				}
+			}
+			counter++;
+		}
+	}
+
+	/**
+	 * Check feature has name.
+	 *
+	 * @param feature
+	 *            the feature
+	 */
+	@Check(CheckType.FAST)
+	public void checkFeatureHasName(LFeature feature) {
+		if (feature.eContainingFeature() != OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO) {
+			if (feature.getName() == null
+					|| feature.getName().trim().equals("")) {
+				error("Feature needs a name!", feature,
+						OSBPTypesPackage.Literals.LFEATURE__NAME, "",
+						(String[]) null);
+			}
+		}
+	}
+
+	/**
+	 * Check feature is lowercase.
+	 *
+	 * @param feature
+	 *            the feature
+	 */
+	@Check(CheckType.FAST)
+	public void checkFeatureIsLowercase(LFeature feature) {
+		if (feature instanceof LAttribute) {
+			LAttribute att = (LAttribute) feature;
+			if (att.getName() != null && !att.getName().trim().equals("")) {
+				char character = att.getName().charAt(0);
+				if (Character.isUpperCase(character)) {
+					warning("Attribute should start with lower case! Strange behaviour might occur...", feature,
+							OSBPTypesPackage.Literals.LFEATURE__NAME,
+							CODE__FEATURE_LOWERCASE, (String[]) null);
+				}
+			}
+		} else if (feature instanceof LReference) {
+			LReference ref = (LReference) feature;
+			if (ref.getName() != null && !ref.getName().trim().equals("")) {
+				char character = ref.getName().charAt(0);
+				if (Character.isUpperCase(character)) {
+					warning("Reference should start with lower case! Strange behaviour might occur...", feature,
+							OSBPTypesPackage.Literals.LFEATURE__NAME,
+							CODE__FEATURE_LOWERCASE, (String[]) null);
+				}
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/valueconverter/CommonQualifiedNameProvider.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/valueconverter/CommonQualifiedNameProvider.java
new file mode 100644
index 0000000..f3a7181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/valueconverter/CommonQualifiedNameProvider.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.xbase.scoping.XbaseQualifiedNameProvider;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class CommonQualifiedNameProvider extends XbaseQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+	@Inject
+	private ModelExtensions extensions;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+
+		if (obj instanceof LClass) {
+			LPackage pkg = extensions.getPackage((LClass) obj);
+			if (pkg != null) {
+				final String qualifiedName = String.format("%s.%s",
+						pkg.getName(), ((LClass) obj).getName());
+				if (qualifiedName == null)
+					return null;
+				return qualifiedNameConverter.toQualifiedName(qualifiedName);
+			} else {
+				return QualifiedName.create("");
+			}
+		} else if (obj instanceof LEnum) {
+			LPackage pkg = extensions.getPackage((LEnum) obj);
+			if (pkg != null) {
+				final String qualifiedName = String.format("%s.%s",
+						pkg.getName(), ((LEnum) obj).getName());
+				if (qualifiedName == null)
+					return null;
+				return qualifiedNameConverter.toQualifiedName(qualifiedName);
+			} else {
+				return QualifiedName.create("");
+			}
+		} else if (obj instanceof LFeature) {
+			LFeature prop = (LFeature) obj;
+			String name = prop.getName();
+			return name != null ? qualifiedNameConverter.toQualifiedName(name)
+					: null;
+		} else if (obj instanceof LDataType) {
+			LPackage pkg = extensions.getPackage((LDataType) obj);
+			if (pkg != null) {
+				final String qualifiedName = String.format("%s.%s",
+						pkg.getName(), ((LDataType) obj).getName());
+				if (qualifiedName == null)
+					return null;
+				return qualifiedNameConverter.toQualifiedName(qualifiedName);
+			} else {
+				return QualifiedName.create("");
+			}
+		} else if (obj instanceof LAnnotationDef) {
+			return super.getFullyQualifiedName(((LAnnotationDef) obj)
+					.getAnnotation());
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/valueconverter/CommonValueConverterService.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/valueconverter/CommonValueConverterService.java
new file mode 100644
index 0000000..b964c5f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/common/xtext/valueconverter/CommonValueConverterService.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.xtext.valueconverter;
+
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.xtext.conversion.ValueConverterException;
+import org.eclipse.xtext.conversion.impl.AbstractValueConverter;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.xbase.conversion.XbaseValueConverterService;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@SuppressWarnings("restriction")
+@Singleton
+public class CommonValueConverterService extends XbaseValueConverterService {
+
+	@Inject
+	private LDecimalValueConverter lDecimalConverter;
+
+	@Inject
+	private LIntegerValueConverter lIntConverter;
+
+	@Inject
+	private TypeCrossReferenceValueConverter crossRefConverter;
+
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+	@ValueConverter(rule = "LDecimal")
+	public IValueConverter<Float> getLDecimalConverter() {
+		return lDecimalConverter;
+	}
+
+	@ValueConverter(rule = "LInt")
+	public IValueConverter<Integer> getLIntConverter() {
+		return lIntConverter;
+	}
+
+	@ValueConverter(rule = "TYPE_CROSS_REFERENCE")
+	public TypeCrossReferenceValueConverter getTypeCrossReferenceValueConverter() {
+		return crossRefConverter;
+	}
+
+	public static class LDecimalValueConverter extends
+			AbstractValueConverter<Float> {
+
+		public Float toValue(String string, INode node)
+				throws ValueConverterException {
+			return Float.valueOf(string);
+		}
+
+		public String toString(Float value) throws ValueConverterException {
+			return value.toString();
+		}
+
+	}
+
+	public static class LIntegerValueConverter extends
+			AbstractValueConverter<Integer> {
+
+		public Integer toValue(String string, INode node)
+				throws ValueConverterException {
+			return Integer.valueOf(string);
+		}
+
+		public String toString(Integer value) throws ValueConverterException {
+			return value.toString();
+		}
+
+	}
+
+	/**
+	 * Cuts the String from the last '.'
+	 */
+	public static class TypeCrossReferenceValueConverter extends
+			AbstractValueConverter<String> {
+
+		@Override
+		public String toString(String value) {
+			if (value.contains(".")) {
+				value = value.substring(value.lastIndexOf(".") + 1,
+						value.length());
+			}
+
+			return value;
+		}
+
+		@Override
+		public String toValue(String string, INode node)
+				throws ValueConverterException {
+			return toString(string);
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/semantic/common/Activator.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/semantic/common/Activator.java
new file mode 100644
index 0000000..ba7b787
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/semantic/common/Activator.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.common;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (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.dsl.common.xtext/src/org/eclipse/osbp/dsl/semantic/common/helper/Bounds.java b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/semantic/common/helper/Bounds.java
new file mode 100644
index 0000000..d27d6c8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.common.xtext/src/org/eclipse/osbp/dsl/semantic/common/helper/Bounds.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.common.helper;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LLowerBound;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LUpperBound;
+ 
+// TODO: Auto-generated Javadoc
+/**
+ * Keeps lower and upper bound.
+ */
+public class Bounds {
+
+	/** The lower. */
+	private final LLowerBound lower;
+	
+	/** The upper. */
+	private final LUpperBound upper;
+	
+	/**
+	 * Creates the zero to one.
+	 *
+	 * @return the bounds
+	 */
+	public static Bounds createZeroToOne(){
+		return new Bounds(LLowerBound.ZERO, LUpperBound.ONE);
+	}
+	
+	/**
+	 * Creates the for.
+	 *
+	 * @param prop
+	 *            the prop
+	 * @return the bounds
+	 */
+	public static Bounds createFor(LFeature prop) {
+		if (prop == null) {
+			return new Bounds(LLowerBound.ZERO, LUpperBound.ONE);
+		}
+ 
+		return createFor(prop.getMultiplicity());
+	}
+
+	public static Bounds createFor(LMultiplicity multiplicity) {
+		LLowerBound lb = null;
+		LUpperBound ub = null;
+
+		if (multiplicity != null) {
+			lb = multiplicity.getLower();
+			ub = multiplicity.getUpper();
+		}
+
+		LLowerBound lower = LLowerBound.ZERO;
+		LUpperBound upper = LUpperBound.ONE;
+
+		
+		if (lb != null) {
+			if (ub != null && ub != LUpperBound.NULL) {
+				// Lower and upper bound [x..y] where x = 0/1/?/+/* and y = 1/*
+				switch (lb) {
+				case ZERO: // [0..]
+				case OPTIONAL: // [?..] -> same as [0..] -> should be warning
+					lower = LLowerBound.ZERO;
+					break;
+				case ONE: // [1..]
+				case ATLEASTONE: // [+..] -> same as [1..] -> should be warning
+					lower = LLowerBound.ONE;
+					break;
+				case MANY: // [*..]
+					lower = LLowerBound.MANY;
+					// [*..*]
+					// [*..1] -> error: upper must be greather than lower bound!
+					break;
+				case NULL:
+					throw new IllegalArgumentException("unexpected NULL value");
+				}
+				upper = ub;
+			} else {
+				// No upper bound.
+				switch (lb) {
+				case ZERO: // [0] -> makes only sense with upper bound
+				case OPTIONAL: // [?]
+					lower = LLowerBound.ZERO;
+					upper = LUpperBound.ONE;
+					break;
+				case ONE: // [1] -> implies notnull
+					lower = LLowerBound.ONE;
+					upper = LUpperBound.ONE;
+					break;
+				case ATLEASTONE: // [+]
+					lower = LLowerBound.ONE;
+					upper = LUpperBound.MANY;
+					break;
+				case MANY: // [*]
+					lower = LLowerBound.ZERO;
+					upper = LUpperBound.MANY;
+					break;
+				case NULL:
+					lower = LLowerBound.ZERO;
+					upper = LUpperBound.MANY;
+					break;
+				}
+			}
+		}
+
+		return new Bounds(lower, upper);
+	}
+
+	/**
+	 * Instantiates a new bounds.
+	 *
+	 * @param lower
+	 *            the lower
+	 * @param upper
+	 *            the upper
+	 */
+	public Bounds(LLowerBound lower, LUpperBound upper) {
+		super();
+		this.lower = lower;
+		this.upper = upper;
+	}
+
+	/**
+	 * Gets the lower.
+	 *
+	 * @return the lower
+	 */
+	public LLowerBound getLower() {
+		return lower;
+	}
+
+	/**
+	 * Gets the upper.
+	 *
+	 * @return the upper
+	 */
+	public LUpperBound getUpper() {
+		return upper;
+	}
+
+	/**
+	 * Returns true if the upper bound is many.
+	 *
+	 * @return true, if is to many
+	 */
+	public boolean isToMany() {
+		return upper == LUpperBound.MANY;
+	}
+
+	/**
+	 * Returns true if the lower bound is one.
+	 *
+	 * @return true, if is required
+	 */
+	public boolean isRequired() {
+		return lower == LLowerBound.ONE;
+	}
+
+	/**
+	 * Returns true if the lower bound is zero.
+	 *
+	 * @return true, if is optional
+	 */
+	public boolean isOptional() {
+		return lower == LLowerBound.ZERO;
+	}
+	
+	public String toBoundsString() {
+		StringBuilder result = new StringBuilder();
+		switch (lower) {
+			case NULL: 
+				result.append("0");
+			break;
+			case MANY: 
+				result.append("1");
+				break;
+			case OPTIONAL: 
+				result.append("0");
+				break;
+			case ATLEASTONE: 
+				result.append("1");
+				break;
+			case ZERO: 
+				result.append("0");
+				break;
+			case ONE:
+				result.append("1");
+				break;
+			default: {
+				result.append("undefined");
+				break;
+			}
+		}
+		result.append("..");
+		switch (upper) {
+			case NULL: 
+				result.append("0");
+				break;
+			case MANY: 
+				result.append("*");
+				break;
+			case ONE: 
+				result.append("1");
+				break;
+			default: 
+				result.append("undefined");
+				break;
+			}
+		return result.toString();
+	
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.lib/.project b/org.eclipse.osbp.dsl.datatype.lib/.project
new file mode 100644
index 0000000..f0605a0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.datatype.lib</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.datatype.lib/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.lib/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/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.dsl.datatype.lib/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.datatype.lib/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a381830
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.datatype.lib
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.datatype.lib
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)";resolution:=optional
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.dsl.common.datatypes;version="0.9.0"
+OSBP-ECView-I18nProvider: 
diff --git a/org.eclipse.osbp.dsl.datatype.lib/README.txt b/org.eclipse.osbp.dsl.datatype.lib/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.lib/about.html b/org.eclipse.osbp.dsl.datatype.lib/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/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.dsl.datatype.lib/about.ini b/org.eclipse.osbp.dsl.datatype.lib/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/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.dsl.datatype.lib/about.mappings b/org.eclipse.osbp.dsl.datatype.lib/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/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.dsl.datatype.lib/about.properties b/org.eclipse.osbp.dsl.datatype.lib/about.properties
new file mode 100644
index 0000000..a28fbf5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.datatype.lib
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.datatype.lib/build.properties b/org.eclipse.osbp.dsl.datatype.lib/build.properties
new file mode 100644
index 0000000..239e1d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/build.properties
@@ -0,0 +1,9 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               .project,\
+               .classpath,\
+               i18n/
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.dsl.datatype.lib/documentation/HowToCompile b/org.eclipse.osbp.dsl.datatype.lib/documentation/HowToCompile
new file mode 100644
index 0000000..256b0a3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/documentation/HowToCompile
@@ -0,0 +1,14 @@
+1)
+Just open org.eclipse.osbp.dsl.entity.xtext.extensions.AnnotationExtensions.xtend
+change a line (add a white space)
+Save
+--> Then the xtend-gen folder should contain a lot of elements
+
+2)
+Then run the "lunifera-P2" maven run configuration
+
+3)
+Refresh all projects
+
+4)
+Open org.eclipse.osbp.p2.target.juno/local.target and set as target platform
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.datatype.lib/epl-v10.html b/org.eclipse.osbp.dsl.datatype.lib/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/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.dsl.datatype.lib/i18n/translations.properties b/org.eclipse.osbp.dsl.datatype.lib/i18n/translations.properties
new file mode 100644
index 0000000..101a5c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/i18n/translations.properties
@@ -0,0 +1,4 @@
+MSG_Datatype_float_pos__digits.message=Not a valid value. Digits need to be in range of {integer}, {fraction}
+MSG_Datatype_Axes_Int__numericMin.message=Axes need to be greater {value}
+MSG_Datatype_BK__regex.message=BusinessKey has a wrong pattern. Use {regexp}.
+MSG_Datatype_BK__size.message=Length definitions: min={min}, max={max}
diff --git a/org.eclipse.osbp.dsl.datatype.lib/license.html b/org.eclipse.osbp.dsl.datatype.lib/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/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.dsl.datatype.lib/modelsbin/baseElements.datatypes.datatypes_bin b/org.eclipse.osbp.dsl.datatype.lib/modelsbin/baseElements.datatypes.datatypes_bin
new file mode 100644
index 0000000..a31c572
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/modelsbin/baseElements.datatypes.datatypes_bin
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="ASCII"?>
+<types:LCommonModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.common.datatypes">
+    <types xsi:type="types:LDataType" name="boolean" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="short" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="double" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="float" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="float_pos" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCDigits" msgCode="MSG_Datatype_float_pos__digits" msgI18nKey="MSG_Datatype_float_pos__digits.message" severity="ERROR" intDigits="7" fractionDigits="3"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Float_pos">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCDigits" msgCode="MSG_Datatype_float_pos__digits" msgI18nKey="MSG_Datatype_float_pos__digits.message" severity="ERROR" intDigits="7" fractionDigits="3"/>
+    </types>
+    <types xsi:type="types:LDataType" name="character" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Character#java.lang.Character"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="byte" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Byte#java.lang.Byte"/>
+      </jvmTypeReference>
+      <properties key="Test" value="Me"/>
+      <properties key="foo" value="baa"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Boolean">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Short">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Short_7_7">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+      <properties key="Test" value="Me"/>
+      <properties key="foo" value="baa"/>
+      <constraints xsi:type="types:LDtCNumericMax" max="7"/>
+      <constraints xsi:type="types:LDtCNumericMin" msgCode="MSG_Datatype_Short_7_7__numericMin" msgI18nKey="MSG_Datatype_Short_7_7__numericMin.message" severity="ERROR" min="-7"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Short_Special">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+      <properties key="Test" value="Me"/>
+      <properties key="foo" value="baa"/>
+      <constraints xsi:type="types:LDtCNumericMin" min="-7"/>
+      <constraints xsi:type="types:LDtCNumericMax" max="7"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Int">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCNumericMin" min="-7"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Character">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Character#java.lang.Character"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCNull"/>
+      <constraints xsi:type="types:LDtCNotNull"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Double">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCDecimalMin" min="-123.456"/>
+      <constraints xsi:type="types:LDtCDecimalMax" max="123.456"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Float">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Float_7_3">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCDecimalMin" min="-123.456"/>
+      <constraints xsi:type="types:LDtCDecimalMax" max="123.456"/>
+      <constraints xsi:type="types:LDtCDigits" intDigits="7" fractionDigits="3"/>
+      <constraints xsi:type="types:LDtCNotNull"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Byte">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Byte#java.lang.Byte"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Date" date="true">
+      <constraints xsi:type="types:LDtCFuture" msgCode="MSG_Datatype_Date__isFuture" msgI18nKey="MSG_Datatype_Date__isFuture.message" severity="ERROR"/>
+    </types>
+    <types xsi:type="types:LDataType" name="BK">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCSize" msgCode="MSG_Datatype_BK__size" msgI18nKey="MSG_Datatype_BK__size.message" severity="ERROR" min="5" max="12"/>
+      <constraints xsi:type="types:LDtCRegEx" msgCode="MSG_Datatype_BK__regex" msgI18nKey="MSG_Datatype_BK__regex.message" severity="ERROR" pattern="A[0-9]*"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Desc">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCSize" severity="WARNING" min="3" max="125"/>
+      <constraints xsi:type="types:LDtCNotNull" severity="ERROR"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Iso3Code_String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCSize" min="3" max="3"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Axes_Int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCNumericMin" msgCode="MSG_Datatype_Axes_Int__numericMin" msgI18nKey="MSG_Datatype_Axes_Int__numericMin.message" severity="ERROR" min="2"/>
+      <constraints xsi:type="types:LDtCNumericMax" max="10"/>
+    </types>
+  </packages>
+</types:LCommonModel>
diff --git a/org.eclipse.osbp.dsl.datatype.lib/plugin.properties b/org.eclipse.osbp.dsl.datatype.lib/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.datatype.lib/pom.xml b/org.eclipse.osbp.dsl.datatype.lib/pom.xml
new file mode 100644
index 0000000..408ce97
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.datatype.lib</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IBean.java b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IBean.java
new file mode 100644
index 0000000..d7983e4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IBean.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.datatypes;
+
+public interface IBean {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDatatypeConstants.java b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDatatypeConstants.java
new file mode 100644
index 0000000..b172367
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDatatypeConstants.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.datatypes;
+
+public interface IDatatypeConstants {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDto.java b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDto.java
new file mode 100644
index 0000000..40e58c5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IDto.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.datatypes;
+
+public interface IDto {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IEntity.java b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IEntity.java
new file mode 100644
index 0000000..00482c4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/IEntity.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.datatypes;
+
+public interface IEntity {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/baseElements.datatypes b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/baseElements.datatypes
new file mode 100644
index 0000000..1599852
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.lib/src/org/eclipse/osbp/dsl/common/datatypes/baseElements.datatypes
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.common.datatypes {
+
+	datatype boolean jvmType java.lang.Boolean as primitive;
+	datatype short jvmType java.lang.Short as primitive;
+	datatype int jvmType java.lang.Integer as primitive;
+	datatype long jvmType java.lang.Long as primitive;
+	datatype double jvmType java.lang.Double as primitive;
+
+	datatype float jvmType java.lang.Float as primitive;
+	datatype float_pos jvmType java.lang.Float as primitive
+		digits(7 ,  3 [ msgCode = MSG_Datatype_float_pos__digits msgI18nKey = MSG_Datatype_float_pos__digits.message severity = error ]);
+	datatype Float_pos jvmType java.lang.Float
+		digits(7 ,  3 [ msgCode = MSG_Datatype_float_pos__digits msgI18nKey = MSG_Datatype_float_pos__digits.message severity = error ]);
+	datatype character jvmType java.lang.Character as primitive;
+	datatype byte jvmType java.lang.Byte as primitive
+		properties(key = "Test" value = "Me" ,  key = "foo" value = "baa");
+	datatype Boolean jvmType java.lang.Boolean;
+	datatype Short jvmType java.lang.Short;
+	datatype Short_7_7 jvmType java.lang.Short
+		maxNumber(7)
+		minNumber(-7 [ msgCode = MSG_Datatype_Short_7_7__numericMin msgI18nKey = MSG_Datatype_Short_7_7__numericMin.message severity = error ])
+		properties(key = "Test" value = "Me" ,  key = "foo" value = "baa");
+	datatype Short_Special jvmType java.lang.Short
+		minNumber(-7)
+		maxNumber(7)
+		properties(key = "Test" value = "Me" ,  key = "foo" value = "baa");
+	datatype Int jvmType java.lang.Integer
+		minNumber(-7);
+	datatype Character jvmType java.lang.Character
+		isNull
+		isNotNull;
+	datatype Long jvmType java.lang.Long;
+	datatype Double jvmType java.lang.Double
+		minDecimal(-123.456)
+		maxDecimal(123.456);
+	datatype Float jvmType java.lang.Float;
+	datatype Float_7_3 jvmType java.lang.Float
+		minDecimal(-123.456)
+		maxDecimal(123.456)
+		digits(7 ,  3)
+		isNotNull;
+
+	datatype Byte jvmType java.lang.Byte;
+	datatype String jvmType java.lang.String;
+	datatype Date dateType date isFuture [ msgCode = MSG_Datatype_Date__isFuture msgI18nKey = MSG_Datatype_Date__isFuture.message severity = error ];
+
+	// BusinessKey
+	datatype BK jvmType java.lang.String
+		minMaxSize(5 ,  12 [ msgCode = MSG_Datatype_BK__size msgI18nKey = MSG_Datatype_BK__size.message severity = error ])
+		regex("A[0-9]*" [ msgCode = MSG_Datatype_BK__regex msgI18nKey = MSG_Datatype_BK__regex.message severity = error ]);
+	datatype Desc jvmType java.lang.String
+		minMaxSize(3 ,  125 [severity=warn])
+		isNotNull [severity=error];
+	datatype Iso3Code_String jvmType java.lang.String
+		minMaxSize(3 ,  3);
+	datatype Axes_Int jvmType java.lang.Integer as primitive
+		minNumber(2 [ msgCode = MSG_Datatype_Axes_Int__numericMin msgI18nKey = MSG_Datatype_Axes_Int__numericMin.message severity = error ])
+		maxNumber(10);
+		
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.datatype.xtext.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..249a4ce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.datatype.xtext.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.datatype.xtext.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.dsl.datatype.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.datatype.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/build.properties b/org.eclipse.osbp.dsl.datatype.xtext.tests/build.properties
new file mode 100644
index 0000000..c22eebe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+       .
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.tests/license.html b/org.eclipse.osbp.dsl.datatype.xtext.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.tests/org.eclipse.osbp.dsl.datatype.xtext.tests.launch b/org.eclipse.osbp.dsl.datatype.xtext.tests/org.eclipse.osbp.dsl.datatype.xtext.tests.launch
new file mode 100644
index 0000000..0d1e586
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/org.eclipse.osbp.dsl.datatype.xtext.tests.launch
@@ -0,0 +1,13 @@
+<?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.dsl.datatype.xtext.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.dsl.datatype.xtext.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.PROJECT_ATTR" value="org.eclipse.osbp.dsl.datatype.xtext.tests"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml
new file mode 100644
index 0000000..7d55404
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.tests/pom.xml
@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.datatype.xtext.tests</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+						<fileset>
+							<directory>src-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<failIfNoTests>true</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/.project b/org.eclipse.osbp.dsl.datatype.xtext.ui/.project
new file mode 100644
index 0000000..9fd70c3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.datatype.xtext.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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.xtext.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.datatype.xtext.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9db6cce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,39 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.datatype.xtext.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.datatype.xtext.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ 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.osbp.dsl.datatype.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.jdt.debug.ui
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist;
+  uses:="org.eclipse.xtext,
+   org.eclipse.osbp.dsl.common.xtext.ui.contentassist,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.ui.editor.contentassist";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr;
+  uses:="org.eclipse.xtext,
+   org.eclipse.osbp.dsl.datatype.xtext.services,
+   org.eclipse.xtext.ui.editor.contentassist.antlr.internal,
+   org.eclipse.xtext.ui.codetemplates.ui.partialEditing,
+   org.eclipse.xtext.ui.editor.contentassist.antlr,
+   org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.ui.quickfix;
+  uses:="org.eclipse.osbp.dsl.common.xtext.ui.quickfix";version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.dsl.datatype.xtext.ui.internal.DatatypeGrammarActivator
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/about.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.ui/about.ini b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.ui/about.mappings b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.ui/about.properties b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.properties
new file mode 100644
index 0000000..9b03176
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.datatype.xtext.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties b/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties
new file mode 100644
index 0000000..eb51fd3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+           src-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               epl-v10.html,\
+               license.html,\
+               icons/
+jre.compilation.profile = JavaSE-1.8
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.ui/icons/converter.gif b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/converter.gif
new file mode 100644
index 0000000..6357430
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/converter.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/dsl_datatype.png b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/dsl_datatype.png
new file mode 100644
index 0000000..cb8eb68
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/dsl_datatype.png
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/import.gif b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/import.gif
new file mode 100644
index 0000000..b0a24b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/import.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/inheritedfeature.gif b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/inheritedfeature.gif
new file mode 100644
index 0000000..acf4936
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/inheritedfeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/inheritedproperty.gif b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/inheritedproperty.gif
new file mode 100644
index 0000000..ef371d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/inheritedproperty.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/todto.gif b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/todto.gif
new file mode 100644
index 0000000..af2f47b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/todto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/toentity.gif b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/toentity.gif
new file mode 100644
index 0000000..1bd1155
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/icons/toentity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/license.html b/org.eclipse.osbp.dsl.datatype.xtext.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.ui/plugin.xml b/org.eclipse.osbp.dsl.datatype.xtext.ui/plugin.xml
new file mode 100644
index 0000000..e611104
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/plugin.xml
@@ -0,0 +1,530 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+              class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="datatype"
+              icon="icons/dsl_datatype.png"
+              id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+              matchingStrategy="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+              name="OSBP DatatypeGrammar Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+            icon="icons/dsl_datatype.png"
+            name="OSBP DatatypeGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.coloring"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.templates"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              icon="icons/dsl_datatype.png"
+              id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+              name="OSBP DatatypeGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+            <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.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"
+            label="DatatypeGrammar"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="datatype">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="datatype">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar -->
+    <extension
+            id="datatypegrammar.check.fast"
+            name="DatatypeGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="datatypegrammar.check.normal"
+            name="DatatypeGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="datatypegrammar.check.expensive"
+            name="DatatypeGrammar 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.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.compiler.preferencePage"
+            icon="icons/dsl_datatype.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            icon="icons/dsl_datatype.png"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.datatype.xtext.ui.datatypegrammar.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.datatype.xtext.ui.datatypegrammar.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.datatype.xtext.ui.datatypegrammar.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.compare.contentViewers"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="datatype">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.compare.contentMergeViewers"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="datatype" label="DatatypeGrammar Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.editors.documentProviders"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="datatype">
+    </provider>
+  </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar"
+	        class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+            icon="icons/dsl_datatype.png"
+	        id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.refactoring"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.dsl.datatype.xtext.ui.keyword_DatatypeGrammar"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory: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.dsl.datatype.xtext.DatatypeGrammar" 
+                          id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.ide.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="example.rulerContextMenuId"
+         id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.ide.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="additions"
+            id="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.ide.rulerContextMenu.toggleBreakpointAction">
+         </action>
+      </viewerContribution>
+   </extension>
+   
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar.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.dsl.datatype.xtext.DatatypeGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml
new file mode 100644
index 0000000..93a7678
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	
+	<artifactId>org.eclipse.osbp.dsl.datatype.xtext.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/AbstractDatatypeGrammarUiModule.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/AbstractDatatypeGrammarUiModule.java
new file mode 100644
index 0000000..5c8b111
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/AbstractDatatypeGrammarUiModule.java
@@ -0,0 +1,371 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractDatatypeGrammarUiModule extends DefaultUiModule {
+	
+	public AbstractDatatypeGrammarUiModule(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.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarLexer.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.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.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.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.dsl.datatype.xtext.ui.quickfix.DatatypeGrammarQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider.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.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider.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.dsl.datatype.xtext.ui.outline.DatatypeGrammarOutlineTreeProvider.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.dsl.datatype.xtext.ui.outline.DatatypeGrammarOutlineTreeProvider.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;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.DatatypeGrammarProposalProvider.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.dsl.datatype.xtext.ui.contentassist.antlr.DatatypeGrammarParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarLexer.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.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarLexer.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.dsl.datatype.xtext.ui.contentassist.antlr.PartialDatatypeGrammarContentAssistParser.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/DatatypeGrammarExecutableExtensionFactory.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/DatatypeGrammarExecutableExtensionFactory.java
new file mode 100644
index 0000000..8d582bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/DatatypeGrammarExecutableExtensionFactory.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.dsl.datatype.xtext.ui.internal.DatatypeGrammarActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class DatatypeGrammarExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return DatatypeGrammarActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return DatatypeGrammarActivator.getInstance().getInjector(DatatypeGrammarActivator.ORG_ECLIPSE_OSBP_DSL_DATATYPE_XTEXT_DATATYPEGRAMMAR);
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/AbstractDatatypeGrammarProposalProvider.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/AbstractDatatypeGrammarProposalProvider.java
new file mode 100644
index 0000000..5a5d5e4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/AbstractDatatypeGrammarProposalProvider.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractDatatypeGrammarProposalProvider extends org.eclipse.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider {
+		
+	public void completeLCommonModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTypedPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTypedPackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTypedPackage_Types(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_LCommonModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TypedPackage(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/DatatypeGrammarParser.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/DatatypeGrammarParser.java
new file mode 100644
index 0000000..459b921
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/DatatypeGrammarParser.java
@@ -0,0 +1,707 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+public class DatatypeGrammarParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private DatatypeGrammarGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarParser createParser() {
+		org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarParser result = new org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarParser(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.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
+					put(grammarAccess.getDataTypeAccess().getAlternatives_2(), "rule__DataType__Alternatives_2");
+					put(grammarAccess.getAllConstraintsAccess().getAlternatives(), "rule__AllConstraints__Alternatives");
+					put(grammarAccess.getDataTypeConstraintAccess().getAlternatives(), "rule__DataTypeConstraint__Alternatives");
+					put(grammarAccess.getDateConstraintAccess().getAlternatives(), "rule__DateConstraint__Alternatives");
+					put(grammarAccess.getBlobTypeConstraintAccess().getAlternatives(), "rule__BlobTypeConstraint__Alternatives");
+					put(grammarAccess.getScalarTypeAccess().getAlternatives(), "rule__ScalarType__Alternatives");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAlternatives_2(), "rule__AttributeMatchingConstraint__Alternatives_2");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives(), "rule__ValidIDWithKeywords__Alternatives");
+					put(grammarAccess.getLIntAccess().getAlternatives_0(), "rule__LInt__Alternatives_0");
+					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.getConstraintSeverityAccess().getAlternatives(), "rule__ConstraintSeverity__Alternatives");
+					put(grammarAccess.getDateTypeAccess().getAlternatives(), "rule__DateType__Alternatives");
+					put(grammarAccess.getLVisibilityAccess().getAlternatives(), "rule__LVisibility__Alternatives");
+					put(grammarAccess.getLComparatorTypeAccess().getAlternatives(), "rule__LComparatorType__Alternatives");
+					put(grammarAccess.getLowerBoundAccess().getAlternatives(), "rule__LowerBound__Alternatives");
+					put(grammarAccess.getUpperBoundAccess().getAlternatives(), "rule__UpperBound__Alternatives");
+					put(grammarAccess.getTypedPackageAccess().getGroup(), "rule__TypedPackage__Group__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup_3(), "rule__TypedPackage__Group_3__0");
+					put(grammarAccess.getClassAccess().getGroup(), "rule__Class__Group__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup(), "rule__DataType__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0(), "rule__DataType__Group_2_0__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4(), "rule__DataType__Group_2_0_4__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3(), "rule__DataType__Group_2_0_4_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1(), "rule__DataType__Group_2_1__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3(), "rule__DataType__Group_2_1_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3(), "rule__DataType__Group_2_1_3_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2(), "rule__DataType__Group_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2(), "rule__DataType__Group_2_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3(), "rule__DataType__Group_2_2_2_3__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup(), "rule__DtCAssertFalse__Group__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0(), "rule__DtCAssertFalse__Group_2_0__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1(), "rule__DtCAssertFalse__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_1(), "rule__DtCAssertFalse__Group_2_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2(), "rule__DtCAssertFalse__Group_2_2__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0(), "rule__DtCAssertFalse__Group_2_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup(), "rule__DtCAssertTrue__Group__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0(), "rule__DtCAssertTrue__Group_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1(), "rule__DtCAssertTrue__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_1(), "rule__DtCAssertTrue__Group_2_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2(), "rule__DtCAssertTrue__Group_2_2__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0(), "rule__DtCAssertTrue__Group_2_2_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup(), "rule__DtCDecimalMax__Group__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0(), "rule__DtCDecimalMax__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1(), "rule__DtCDecimalMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_1(), "rule__DtCDecimalMax__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2(), "rule__DtCDecimalMax__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0(), "rule__DtCDecimalMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup(), "rule__DtCDecimalMin__Group__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0(), "rule__DtCDecimalMin__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1(), "rule__DtCDecimalMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_1(), "rule__DtCDecimalMin__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2(), "rule__DtCDecimalMin__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0(), "rule__DtCDecimalMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup(), "rule__DtCDigits__Group__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0(), "rule__DtCDigits__Group_6_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1(), "rule__DtCDigits__Group_6_0_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_1(), "rule__DtCDigits__Group_6_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2(), "rule__DtCDigits__Group_6_2__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0(), "rule__DtCDigits__Group_6_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup(), "rule__DtCFuture__Group__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0(), "rule__DtCFuture__Group_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0_1(), "rule__DtCFuture__Group_2_0_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_1(), "rule__DtCFuture__Group_2_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2(), "rule__DtCFuture__Group_2_2__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2_0(), "rule__DtCFuture__Group_2_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup(), "rule__DtCPast__Group__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0(), "rule__DtCPast__Group_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0_1(), "rule__DtCPast__Group_2_0_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_1(), "rule__DtCPast__Group_2_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2(), "rule__DtCPast__Group_2_2__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2_0(), "rule__DtCPast__Group_2_2_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup(), "rule__DtCNumericMax__Group__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0(), "rule__DtCNumericMax__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0_1(), "rule__DtCNumericMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_1(), "rule__DtCNumericMax__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2(), "rule__DtCNumericMax__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2_0(), "rule__DtCNumericMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup(), "rule__DtCNumericMin__Group__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0(), "rule__DtCNumericMin__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0_1(), "rule__DtCNumericMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_1(), "rule__DtCNumericMin__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2(), "rule__DtCNumericMin__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2_0(), "rule__DtCNumericMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup(), "rule__DtCNotNull__Group__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0(), "rule__DtCNotNull__Group_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0_1(), "rule__DtCNotNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_1(), "rule__DtCNotNull__Group_2_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2(), "rule__DtCNotNull__Group_2_2__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2_0(), "rule__DtCNotNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup(), "rule__DtCNull__Group__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0(), "rule__DtCNull__Group_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0_1(), "rule__DtCNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_1(), "rule__DtCNull__Group_2_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2(), "rule__DtCNull__Group_2_2__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2_0(), "rule__DtCNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup(), "rule__DtCRegEx__Group__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0(), "rule__DtCRegEx__Group_4_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0_1(), "rule__DtCRegEx__Group_4_0_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_1(), "rule__DtCRegEx__Group_4_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2(), "rule__DtCRegEx__Group_4_2__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2_0(), "rule__DtCRegEx__Group_4_2_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup(), "rule__DtCSize__Group__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0(), "rule__DtCSize__Group_6_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0_1(), "rule__DtCSize__Group_6_0_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_1(), "rule__DtCSize__Group_6_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2(), "rule__DtCSize__Group_6_2__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2_0(), "rule__DtCSize__Group_6_2_0__0");
+					put(grammarAccess.getEnumAccess().getGroup(), "rule__Enum__Group__0");
+					put(grammarAccess.getEnumAccess().getGroup_4(), "rule__Enum__Group_4__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup(), "rule__EnumLiteral__Group__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_0(), "rule__EnumLiteral__Group_1_0__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1(), "rule__EnumLiteral__Group_1_1__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1_2(), "rule__EnumLiteral__Group_1_1_2__0");
+					put(grammarAccess.getAnnotationDefAccess().getGroup(), "rule__AnnotationDef__Group__0");
+					put(grammarAccess.getResultFiltersAccess().getGroup(), "rule__ResultFilters__Group__0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getGroup(), "rule__AttributeMatchingConstraint__Group__0");
+					put(grammarAccess.getKeyAndValueAccess().getGroup(), "rule__KeyAndValue__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup(), "rule__LQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup_1(), "rule__LQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__0");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5(), "rule__ValidIDWithKeywords__Group_5__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup(), "rule__ValidLFQNWithKeywords__Group__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup_1(), "rule__ValidLFQNWithKeywords__Group_1__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup(), "rule__Multiplicity__Group__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup_2(), "rule__Multiplicity__Group_2__0");
+					put(grammarAccess.getLIntAccess().getGroup(), "rule__LInt__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup(), "rule__LDecimal__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup_1(), "rule__LDecimal__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__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.getLCommonModelAccess().getPackagesAssignment(), "rule__LCommonModel__PackagesAssignment");
+					put(grammarAccess.getTypedPackageAccess().getNameAssignment_2(), "rule__TypedPackage__NameAssignment_2");
+					put(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1(), "rule__TypedPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2(), "rule__TypedPackage__TypesAssignment_3_2");
+					put(grammarAccess.getClassAccess().getAnnotationsAssignment_1(), "rule__Class__AnnotationsAssignment_1");
+					put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getNameAssignment_1(), "rule__DataType__NameAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1(), "rule__DataType__JvmTypeReferenceAssignment_2_0_1");
+					put(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2(), "rule__DataType__AsPrimitiveAssignment_2_0_2");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3(), "rule__DataType__ConstraintsAssignment_2_0_3");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2(), "rule__DataType__PropertiesAssignment_2_0_4_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1(), "rule__DataType__PropertiesAssignment_2_0_4_3_1");
+					put(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0(), "rule__DataType__DateAssignment_2_1_0");
+					put(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1(), "rule__DataType__DateTypeAssignment_2_1_1");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2(), "rule__DataType__ConstraintsAssignment_2_1_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2(), "rule__DataType__PropertiesAssignment_2_1_3_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1(), "rule__DataType__PropertiesAssignment_2_1_3_3_1");
+					put(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0(), "rule__DataType__AsBlobAssignment_2_2_0");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1(), "rule__DataType__ConstraintsAssignment_2_2_1");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2(), "rule__DataType__PropertiesAssignment_2_2_2_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1(), "rule__DataType__PropertiesAssignment_2_2_2_3_1");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertFalse__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertTrue__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3(), "rule__DtCDecimalMax__MaxAssignment_3");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3(), "rule__DtCDecimalMin__MinAssignment_3");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3(), "rule__DtCDigits__IntDigitsAssignment_3");
+					put(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5(), "rule__DtCDigits__FractionDigitsAssignment_5");
+					put(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCDigits__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCDigits__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCDigits__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCFuture__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCFuture__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCFutureAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCFuture__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCPastAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCPast__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCPastAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCPast__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCPastAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCPast__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMaxAssignment_3(), "rule__DtCNumericMax__MaxAssignment_3");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMinAssignment_3(), "rule__DtCNumericMin__MinAssignment_3");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNotNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNotNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCRegExAccess().getPatternAssignment_3(), "rule__DtCRegEx__PatternAssignment_3");
+					put(grammarAccess.getDtCRegExAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCRegEx__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCRegExAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCRegExAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCRegEx__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCSizeAccess().getMinAssignment_3(), "rule__DtCSize__MinAssignment_3");
+					put(grammarAccess.getDtCSizeAccess().getMaxAssignment_5(), "rule__DtCSize__MaxAssignment_5");
+					put(grammarAccess.getDtCSizeAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCSize__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCSizeAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCSize__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCSizeAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCSize__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getModifierAccess().getFinalAssignment_0(), "rule__Modifier__FinalAssignment_0");
+					put(grammarAccess.getModifierAccess().getStaticAssignment_1(), "rule__Modifier__StaticAssignment_1");
+					put(grammarAccess.getModifierAccess().getVisibilityAssignment_2(), "rule__Modifier__VisibilityAssignment_2");
+					put(grammarAccess.getEnumAccess().getNameAssignment_1(), "rule__Enum__NameAssignment_1");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_3(), "rule__Enum__LiteralsAssignment_3");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_4_1(), "rule__Enum__LiteralsAssignment_4_1");
+					put(grammarAccess.getEnumLiteralAccess().getNameAssignment_0(), "rule__EnumLiteral__NameAssignment_0");
+					put(grammarAccess.getEnumLiteralAccess().getDefaultAssignment_1_0_1(), "rule__EnumLiteral__DefaultAssignment_1_0_1");
+					put(grammarAccess.getEnumLiteralAccess().getNullAssignment_1_1_0(), "rule__EnumLiteral__NullAssignment_1_1_0");
+					put(grammarAccess.getEnumLiteralAccess().getValueAssignment_1_1_2_1(), "rule__EnumLiteral__ValueAssignment_1_1_2_1");
+					put(grammarAccess.getAnnotationDefAccess().getAnnotationAssignment_0(), "rule__AnnotationDef__AnnotationAssignment_0");
+					put(grammarAccess.getResultFiltersAccess().getResultFiltersAssignment_3(), "rule__ResultFilters__ResultFiltersAssignment_3");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAttributeAssignment_0(), "rule__AttributeMatchingConstraint__AttributeAssignment_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeAssignment_1(), "rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0(), "rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1(), "rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1");
+					put(grammarAccess.getKeyAndValueAccess().getKeyAssignment_2(), "rule__KeyAndValue__KeyAssignment_2");
+					put(grammarAccess.getKeyAndValueAccess().getValueAssignment_5(), "rule__KeyAndValue__ValueAssignment_5");
+					put(grammarAccess.getMultiplicityAccess().getLowerAssignment_1(), "rule__Multiplicity__LowerAssignment_1");
+					put(grammarAccess.getMultiplicityAccess().getUpperAssignment_2_1(), "rule__Multiplicity__UpperAssignment_2_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), "rule__DtCAssertFalse__UnorderedGroup_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), "rule__DtCAssertTrue__UnorderedGroup_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), "rule__DtCDecimalMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), "rule__DtCDecimalMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), "rule__DtCDigits__UnorderedGroup_6");
+					put(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), "rule__DtCFuture__UnorderedGroup_2");
+					put(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), "rule__DtCPast__UnorderedGroup_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), "rule__DtCNumericMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), "rule__DtCNumericMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), "rule__DtCNotNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), "rule__DtCNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), "rule__DtCRegEx__UnorderedGroup_4");
+					put(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), "rule__DtCSize__UnorderedGroup_6");
+					put(grammarAccess.getModifierAccess().getUnorderedGroup(), "rule__Modifier__UnorderedGroup");
+					put(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), "rule__EnumLiteral__UnorderedGroup_1");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarParser typedParser = (org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.antlr.internal.InternalDatatypeGrammarParser) parser;
+			typedParser.entryRuleLCommonModel();
+			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 DatatypeGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DatatypeGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java
new file mode 100644
index 0000000..ad9b0f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/PartialDatatypeGrammarContentAssistParser.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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 PartialDatatypeGrammarContentAssistParser extends DatatypeGrammarParser 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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g
new file mode 100644
index 0000000..65d0638
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalDatatypeGrammar;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.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.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private DatatypeGrammarGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(DatatypeGrammarGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleLCommonModel
+entryRuleLCommonModel 
+:
+{ before(grammarAccess.getLCommonModelRule()); }
+	 ruleLCommonModel
+{ after(grammarAccess.getLCommonModelRule()); } 
+	 EOF 
+;
+
+// Rule LCommonModel
+ruleLCommonModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLCommonModelAccess().getPackagesAssignment()); }
+(rule__LCommonModel__PackagesAssignment)*
+{ after(grammarAccess.getLCommonModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage 
+:
+{ before(grammarAccess.getTypedPackageRule()); }
+	 ruleTypedPackage
+{ after(grammarAccess.getTypedPackageRule()); } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup()); }
+(rule__TypedPackage__Group__0)
+{ after(grammarAccess.getTypedPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass 
+:
+{ before(grammarAccess.getClassRule()); }
+	 ruleClass
+{ after(grammarAccess.getClassRule()); } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassAccess().getGroup()); }
+(rule__Class__Group__0)
+{ after(grammarAccess.getClassAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType 
+:
+{ before(grammarAccess.getDataTypeRule()); }
+	 ruleDataType
+{ after(grammarAccess.getDataTypeRule()); } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup()); }
+(rule__DataType__Group__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint 
+:
+{ before(grammarAccess.getDataTypeConstraintRule()); }
+	 ruleDataTypeConstraint
+{ after(grammarAccess.getDataTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+(rule__DataTypeConstraint__Alternatives)
+{ after(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint 
+:
+{ before(grammarAccess.getDateConstraintRule()); }
+	 ruleDateConstraint
+{ after(grammarAccess.getDateConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+(rule__DateConstraint__Alternatives)
+{ after(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint 
+:
+{ before(grammarAccess.getBlobTypeConstraintRule()); }
+	 ruleBlobTypeConstraint
+{ after(grammarAccess.getBlobTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+(rule__BlobTypeConstraint__Alternatives)
+{ after(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse 
+:
+{ before(grammarAccess.getDtCAssertFalseRule()); }
+	 ruleDtCAssertFalse
+{ after(grammarAccess.getDtCAssertFalseRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+(rule__DtCAssertFalse__Group__0)
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue 
+:
+{ before(grammarAccess.getDtCAssertTrueRule()); }
+	 ruleDtCAssertTrue
+{ after(grammarAccess.getDtCAssertTrueRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+(rule__DtCAssertTrue__Group__0)
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax 
+:
+{ before(grammarAccess.getDtCDecimalMaxRule()); }
+	 ruleDtCDecimalMax
+{ after(grammarAccess.getDtCDecimalMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+(rule__DtCDecimalMax__Group__0)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin 
+:
+{ before(grammarAccess.getDtCDecimalMinRule()); }
+	 ruleDtCDecimalMin
+{ after(grammarAccess.getDtCDecimalMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+(rule__DtCDecimalMin__Group__0)
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits 
+:
+{ before(grammarAccess.getDtCDigitsRule()); }
+	 ruleDtCDigits
+{ after(grammarAccess.getDtCDigitsRule()); } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup()); }
+(rule__DtCDigits__Group__0)
+{ after(grammarAccess.getDtCDigitsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture 
+:
+{ before(grammarAccess.getDtCFutureRule()); }
+	 ruleDtCFuture
+{ after(grammarAccess.getDtCFutureRule()); } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup()); }
+(rule__DtCFuture__Group__0)
+{ after(grammarAccess.getDtCFutureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast 
+:
+{ before(grammarAccess.getDtCPastRule()); }
+	 ruleDtCPast
+{ after(grammarAccess.getDtCPastRule()); } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCPastAccess().getGroup()); }
+(rule__DtCPast__Group__0)
+{ after(grammarAccess.getDtCPastAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax 
+:
+{ before(grammarAccess.getDtCNumericMaxRule()); }
+	 ruleDtCNumericMax
+{ after(grammarAccess.getDtCNumericMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+(rule__DtCNumericMax__Group__0)
+{ after(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin 
+:
+{ before(grammarAccess.getDtCNumericMinRule()); }
+	 ruleDtCNumericMin
+{ after(grammarAccess.getDtCNumericMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+(rule__DtCNumericMin__Group__0)
+{ after(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull 
+:
+{ before(grammarAccess.getDtCNotNullRule()); }
+	 ruleDtCNotNull
+{ after(grammarAccess.getDtCNotNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNotNullAccess().getGroup()); }
+(rule__DtCNotNull__Group__0)
+{ after(grammarAccess.getDtCNotNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull 
+:
+{ before(grammarAccess.getDtCNullRule()); }
+	 ruleDtCNull
+{ after(grammarAccess.getDtCNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNullAccess().getGroup()); }
+(rule__DtCNull__Group__0)
+{ after(grammarAccess.getDtCNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx 
+:
+{ before(grammarAccess.getDtCRegExRule()); }
+	 ruleDtCRegEx
+{ after(grammarAccess.getDtCRegExRule()); } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCRegExAccess().getGroup()); }
+(rule__DtCRegEx__Group__0)
+{ after(grammarAccess.getDtCRegExAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize 
+:
+{ before(grammarAccess.getDtCSizeRule()); }
+	 ruleDtCSize
+{ after(grammarAccess.getDtCSizeRule()); } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCSizeAccess().getGroup()); }
+(rule__DtCSize__Group__0)
+{ after(grammarAccess.getDtCSizeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType 
+:
+{ before(grammarAccess.getScalarTypeRule()); }
+	 ruleScalarType
+{ after(grammarAccess.getScalarTypeRule()); } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+(rule__ScalarType__Alternatives)
+{ after(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum 
+:
+{ before(grammarAccess.getEnumRule()); }
+	 ruleEnum
+{ after(grammarAccess.getEnumRule()); } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumAccess().getGroup()); }
+(rule__Enum__Group__0)
+{ after(grammarAccess.getEnumAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral 
+:
+{ before(grammarAccess.getEnumLiteralRule()); }
+	 ruleEnumLiteral
+{ after(grammarAccess.getEnumLiteralRule()); } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumLiteralAccess().getGroup()); }
+(rule__EnumLiteral__Group__0)
+{ after(grammarAccess.getEnumLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef 
+:
+{ before(grammarAccess.getAnnotationDefRule()); }
+	 ruleAnnotationDef
+{ after(grammarAccess.getAnnotationDefRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationDefAccess().getGroup()); }
+(rule__AnnotationDef__Group__0)
+{ after(grammarAccess.getAnnotationDefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter 
+:
+{ before(grammarAccess.getResultFilterRule()); }
+	 ruleResultFilter
+{ after(grammarAccess.getResultFilterRule()); } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+	ruleAttributeMatchingConstraint
+{ after(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint 
+:
+{ before(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 ruleAttributeMatchingConstraint
+{ after(grammarAccess.getAttributeMatchingConstraintRule()); } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+(rule__AttributeMatchingConstraint__Group__0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue 
+:
+{ before(grammarAccess.getKeyAndValueRule()); }
+	 ruleKeyAndValue
+{ after(grammarAccess.getKeyAndValueRule()); } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getKeyAndValueAccess().getGroup()); }
+(rule__KeyAndValue__Group__0)
+{ after(grammarAccess.getKeyAndValueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getLQualifiedNameWithWildCardRule()); }
+	 ruleLQualifiedNameWithWildCard
+{ after(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__LQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords 
+:
+{ before(grammarAccess.getValidIDWithKeywordsRule()); }
+	 ruleValidIDWithKeywords
+{ after(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+(rule__ValidIDWithKeywords__Alternatives)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt 
+:
+{ before(grammarAccess.getLIntRule()); }
+	 ruleLInt
+{ after(grammarAccess.getLIntRule()); } 
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLIntAccess().getGroup()); }
+(rule__LInt__Group__0)
+{ after(grammarAccess.getLIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal 
+:
+{ before(grammarAccess.getLDecimalRule()); }
+	 ruleLDecimal
+{ after(grammarAccess.getLDecimalRule()); } 
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLDecimalAccess().getGroup()); }
+(rule__LDecimal__Group__0)
+{ after(grammarAccess.getLDecimalAccess().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 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 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 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 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 ConstraintSeverity
+ruleConstraintSeverity
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+(rule__ConstraintSeverity__Alternatives)
+{ after(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule DateType
+ruleDateType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getAlternatives()); }
+(rule__DateType__Alternatives)
+{ after(grammarAccess.getDateTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LVisibility
+ruleLVisibility
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+(rule__LVisibility__Alternatives)
+{ after(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LComparatorType
+ruleLComparatorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+(rule__LComparatorType__Alternatives)
+{ after(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LowerBound
+ruleLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+(rule__LowerBound__Alternatives)
+{ after(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule UpperBound
+ruleUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+(rule__UpperBound__Alternatives)
+{ after(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__DataType__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+(rule__DataType__Group_2_0__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+(rule__DataType__Group_2_1__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+(rule__DataType__Group_2_2__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+	ruleDtCFuture
+{ after(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+	ruleDtCPast
+{ after(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+	ruleDtCNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BlobTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+	ruleDtCNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ScalarType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+	ruleDataType
+{ after(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+	ruleEnum
+{ after(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeMatchingConstraint__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+(rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+(rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValidIDWithKeywords__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+
+	'cachable' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+
+	'id' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+
+	'uuid' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+
+	'transient' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+
+	'version' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+(rule__ValidIDWithKeywords__Group_5__0)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+
+	'refers' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+
+	'settings' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+
+	'lazy' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+
+	'notnull' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+
+	'dto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+
+	'date' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+
+	'ref' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+
+	'cascade' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+
+	'var' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LInt__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_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__ConstraintSeverity__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+(	'info' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+(	'warn' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+(	'error' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+(	'date' 
+)
+{ after(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+(	'time' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+(	'timestamp' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LVisibility__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+(	'package' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+(	'private' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+(	'protected' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+(	'public' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LComparatorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+(	'==' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+(	'>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+(	'<' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+(	'>=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+(	'<=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+(	'<>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LowerBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+(	'0' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+(	'?' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+(	'+' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+(	'1' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UpperBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+(	'1' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__TypedPackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__0__Impl
+	rule__TypedPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0()); }
+(
+
+)
+{ after(grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__1__Impl
+	rule__TypedPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getPackageKeyword_1()); }
+
+	'package' 
+
+{ after(grammarAccess.getTypedPackageAccess().getPackageKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__2__Impl
+	rule__TypedPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getNameAssignment_2()); }
+(rule__TypedPackage__NameAssignment_2)
+{ after(grammarAccess.getTypedPackageAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup_3()); }
+(rule__TypedPackage__Group_3__0)?
+{ after(grammarAccess.getTypedPackageAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TypedPackage__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__0__Impl
+	rule__TypedPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__1__Impl
+	rule__TypedPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1()); }
+(rule__TypedPackage__ImportsAssignment_3_1)*
+{ after(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__2__Impl
+	rule__TypedPackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2()); }
+(rule__TypedPackage__TypesAssignment_3_2)*
+{ after(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__0__Impl
+	rule__Class__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLClassAction_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLClassAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__1__Impl
+	rule__Class__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+(rule__Class__AnnotationsAssignment_1)*
+{ after(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__2__Impl
+	rule__Class__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getClassKeyword_3()); }
+
+	'class' 
+
+{ after(grammarAccess.getClassAccess().getClassKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Import__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__0__Impl
+	rule__Import__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__1__Impl
+	rule__Import__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+(rule__Import__ImportedNamespaceAssignment_1)
+{ after(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+
+	';' 
+
+{ after(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataType__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__0__Impl
+	rule__DataType__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDatatypeKeyword_0()); }
+
+	'datatype' 
+
+{ after(grammarAccess.getDataTypeAccess().getDatatypeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__1__Impl
+	rule__DataType__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getNameAssignment_1()); }
+(rule__DataType__NameAssignment_1)
+{ after(grammarAccess.getDataTypeAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__2__Impl
+	rule__DataType__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAlternatives_2()); }
+(rule__DataType__Alternatives_2)
+{ after(grammarAccess.getDataTypeAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getSemicolonKeyword_3()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDataTypeAccess().getSemicolonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__0__Impl
+	rule__DataType__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0()); }
+
+	'jvmType' 
+
+{ after(grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__1__Impl
+	rule__DataType__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1()); }
+(rule__DataType__JvmTypeReferenceAssignment_2_0_1)
+{ after(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__2__Impl
+	rule__DataType__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2()); }
+(rule__DataType__AsPrimitiveAssignment_2_0_2)?
+{ after(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__3__Impl
+	rule__DataType__Group_2_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3()); }
+(rule__DataType__ConstraintsAssignment_2_0_3)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0_4()); }
+(rule__DataType__Group_2_0_4__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__0__Impl
+	rule__DataType__Group_2_0_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__1__Impl
+	rule__DataType__Group_2_0_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__2__Impl
+	rule__DataType__Group_2_0_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2()); }
+(rule__DataType__PropertiesAssignment_2_0_4_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__3__Impl
+	rule__DataType__Group_2_0_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3()); }
+(rule__DataType__Group_2_0_4_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4_3__0__Impl
+	rule__DataType__Group_2_0_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1()); }
+(rule__DataType__PropertiesAssignment_2_0_4_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataType__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__0__Impl
+	rule__DataType__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0()); }
+(rule__DataType__DateAssignment_2_1_0)
+{ after(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__1__Impl
+	rule__DataType__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1()); }
+(rule__DataType__DateTypeAssignment_2_1_1)
+{ after(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__2__Impl
+	rule__DataType__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2()); }
+(rule__DataType__ConstraintsAssignment_2_1_2)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1_3()); }
+(rule__DataType__Group_2_1_3__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_1_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__0__Impl
+	rule__DataType__Group_2_1_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__1__Impl
+	rule__DataType__Group_2_1_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__2__Impl
+	rule__DataType__Group_2_1_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2()); }
+(rule__DataType__PropertiesAssignment_2_1_3_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__3__Impl
+	rule__DataType__Group_2_1_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3()); }
+(rule__DataType__Group_2_1_3_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_1_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3_3__0__Impl
+	rule__DataType__Group_2_1_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1()); }
+(rule__DataType__PropertiesAssignment_2_1_3_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataType__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__0__Impl
+	rule__DataType__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0()); }
+(rule__DataType__AsBlobAssignment_2_2_0)
+{ after(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__1__Impl
+	rule__DataType__Group_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1()); }
+(rule__DataType__ConstraintsAssignment_2_2_1)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2_2()); }
+(rule__DataType__Group_2_2_2__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__0__Impl
+	rule__DataType__Group_2_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__1__Impl
+	rule__DataType__Group_2_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__2__Impl
+	rule__DataType__Group_2_2_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2()); }
+(rule__DataType__PropertiesAssignment_2_2_2_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__3__Impl
+	rule__DataType__Group_2_2_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3()); }
+(rule__DataType__Group_2_2_2_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_2_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2_3__0__Impl
+	rule__DataType__Group_2_2_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1()); }
+(rule__DataType__PropertiesAssignment_2_2_2_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__0__Impl
+	rule__DtCAssertFalse__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__1__Impl
+	rule__DtCAssertFalse__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1()); }
+
+	'isFalse' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()); }
+(rule__DtCAssertFalse__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0__0__Impl
+	rule__DtCAssertFalse__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1()); }
+(rule__DtCAssertFalse__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__0__Impl
+	rule__DtCAssertFalse__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__1__Impl
+	rule__DtCAssertFalse__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2()); }
+(rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__0__Impl
+	rule__DtCAssertFalse__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__1__Impl
+	rule__DtCAssertFalse__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2()); }
+(rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2__0__Impl
+	rule__DtCAssertFalse__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0()); }
+(rule__DtCAssertFalse__Group_2_2_0__0)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__0__Impl
+	rule__DtCAssertFalse__Group_2_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__1__Impl
+	rule__DtCAssertFalse__Group_2_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2()); }
+(rule__DtCAssertFalse__SeverityAssignment_2_2_0_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__0__Impl
+	rule__DtCAssertTrue__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__1__Impl
+	rule__DtCAssertTrue__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1()); }
+
+	'isTrue' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()); }
+(rule__DtCAssertTrue__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0__0__Impl
+	rule__DtCAssertTrue__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1()); }
+(rule__DtCAssertTrue__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__0__Impl
+	rule__DtCAssertTrue__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__1__Impl
+	rule__DtCAssertTrue__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2()); }
+(rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__0__Impl
+	rule__DtCAssertTrue__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__1__Impl
+	rule__DtCAssertTrue__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2()); }
+(rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2__0__Impl
+	rule__DtCAssertTrue__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0()); }
+(rule__DtCAssertTrue__Group_2_2_0__0)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__0__Impl
+	rule__DtCAssertTrue__Group_2_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__1__Impl
+	rule__DtCAssertTrue__Group_2_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2()); }
+(rule__DtCAssertTrue__SeverityAssignment_2_2_0_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__0__Impl
+	rule__DtCDecimalMax__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__1__Impl
+	rule__DtCDecimalMax__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1()); }
+
+	'maxDecimal' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__2__Impl
+	rule__DtCDecimalMax__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__3__Impl
+	rule__DtCDecimalMax__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3()); }
+(rule__DtCDecimalMax__MaxAssignment_3)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__4__Impl
+	rule__DtCDecimalMax__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()); }
+(rule__DtCDecimalMax__UnorderedGroup_4)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0__0__Impl
+	rule__DtCDecimalMax__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1()); }
+(rule__DtCDecimalMax__Group_4_0_1__0)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__0__Impl
+	rule__DtCDecimalMax__Group_4_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__1__Impl
+	rule__DtCDecimalMax__Group_4_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2()); }
+(rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__0__Impl
+	rule__DtCDecimalMax__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__1__Impl
+	rule__DtCDecimalMax__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2()); }
+(rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2__0__Impl
+	rule__DtCDecimalMax__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0()); }
+(rule__DtCDecimalMax__Group_4_2_0__0)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2_0__0__Impl
+	rule__DtCDecimalMax__Group_4_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2_0__1__Impl
+	rule__DtCDecimalMax__Group_4_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2()); }
+(rule__DtCDecimalMax__SeverityAssignment_4_2_0_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__0__Impl
+	rule__DtCDecimalMin__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__1__Impl
+	rule__DtCDecimalMin__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1()); }
+
+	'minDecimal' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__2__Impl
+	rule__DtCDecimalMin__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__3__Impl
+	rule__DtCDecimalMin__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3()); }
+(rule__DtCDecimalMin__MinAssignment_3)
+{ after(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__4__Impl
+	rule__DtCDecimalMin__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()); }
+(rule__DtCDecimalMin__UnorderedGroup_4)?
+{ after(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0__0__Impl
+	rule__DtCDecimalMin__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1()); }
+(rule__DtCDecimalMin__Group_4_0_1__0)?
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0_1__0__Impl
+	rule__DtCDecimalMin__Group_4_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0_1__1__Impl
+	rule__DtCDecimalMin__Group_4_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2()); }
+(rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2)
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_1__0__Impl
+	rule__DtCDecimalMin__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_1__1__Impl
+	rule__DtCDecimalMin__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2()); }
+(rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2)
+{ after(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2__0__Impl
+	rule__DtCDecimalMin__Group_4_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0()); }
+(rule__DtCDecimalMin__Group_4_2_0__0)?
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMin__Group_4_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2_0__0__Impl
+	rule__DtCDecimalMin__Group_4_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2_0__1__Impl
+	rule__DtCDecimalMin__Group_4_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMin__Group_4_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMin__Group_4_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMin__Group_4_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2()); }
+(rule__DtCDecimalMin__SeverityAssignment_4_2_0_2)
+{ after(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__0__Impl
+	rule__DtCDigits__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__1__Impl
+	rule__DtCDigits__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1()); }
+
+	'digits' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__2__Impl
+	rule__DtCDigits__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__3__Impl
+	rule__DtCDigits__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3()); }
+(rule__DtCDigits__IntDigitsAssignment_3)
+{ after(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__4__Impl
+	rule__DtCDigits__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__5__Impl
+	rule__DtCDigits__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5()); }
+(rule__DtCDigits__FractionDigitsAssignment_5)
+{ after(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__6__Impl
+	rule__DtCDigits__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()); }
+(rule__DtCDigits__UnorderedGroup_6)?
+{ after(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group_6_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0__0__Impl
+	rule__DtCDigits__Group_6_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1()); }
+(rule__DtCDigits__Group_6_0_1__0)?
+{ after(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDigits__Group_6_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0_1__0__Impl
+	rule__DtCDigits__Group_6_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0_1__1__Impl
+	rule__DtCDigits__Group_6_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2()); }
+(rule__DtCDigits__MsgCodeAssignment_6_0_1_2)
+{ after(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group_6_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_1__0__Impl
+	rule__DtCDigits__Group_6_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_1__1__Impl
+	rule__DtCDigits__Group_6_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2()); }
+(rule__DtCDigits__MsgI18nKeyAssignment_6_1_2)
+{ after(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDigits__Group_6_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2__0__Impl
+	rule__DtCDigits__Group_6_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0()); }
+(rule__DtCDigits__Group_6_2_0__0)?
+{ after(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDigits__Group_6_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2_0__0__Impl
+	rule__DtCDigits__Group_6_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2_0__1__Impl
+	rule__DtCDigits__Group_6_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDigits__Group_6_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDigits__Group_6_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDigits__Group_6_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2()); }
+(rule__DtCDigits__SeverityAssignment_6_2_0_2)
+{ after(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCFuture__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group__0__Impl
+	rule__DtCFuture__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group__1__Impl
+	rule__DtCFuture__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1()); }
+
+	'isFuture' 
+
+{ after(grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()); }
+(rule__DtCFuture__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCFuture__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0__0__Impl
+	rule__DtCFuture__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup_2_0_1()); }
+(rule__DtCFuture__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCFutureAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCFuture__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0_1__0__Impl
+	rule__DtCFuture__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCFuture__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCFuture__Group_2_0_1__1__Impl
+	rule__DtCFuture__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCFuture__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.tokens b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.tokens
new file mode 100644
index 0000000..9a2f587
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.tokens
@@ -0,0 +1,273 @@
+'!'=55
+'!='=39
+'!=='=41
+'#'=114
+'%'=54
+'%='=37
+'&&'=15
+'&'=135
+'('=86
+')'=87
+'*'=51
+'**'=52
+'*='=35
+'+'=31
+'++'=56
+'+='=33
+', '=88
+','=113
+'-'=32
+'--'=57
+'-='=34
+'->'=45
+'.'=58
+'..'=47
+'..<'=46
+'/'=53
+'/='=36
+'0'=76
+'1'=78
+':'=120
+'::'=141
+';'=82
+'<'=44
+'<='=75
+'<>'=49
+'='=13
+'=='=38
+'==='=40
+'=>'=48
+'>'=43
+'>='=42
+'?'=77
+'?.'=142
+'?:'=50
+'@'=112
+'['=90
+']'=93
+'as blob'=138
+'as primitive'=136
+'as'=116
+'asDefault'=139
+'cachable'=16
+'cascade'=29
+'case'=122
+'catch'=134
+'class'=81
+'collection'=111
+'datatype'=83
+'date'=26
+'dateType'=137
+'default'=121
+'derived'=110
+'digits'=98
+'do'=125
+'dto'=25
+'else'=118
+'enum'=107
+'error'=68
+'extends'=60
+'extension'=63
+'false'=65
+'finally'=132
+'for'=123
+'forNull'=140
+'id'=17
+'if'=117
+'import'=62
+'info'=66
+'instanceof'=115
+'isFalse'=89
+'isFuture'=99
+'isNotNull'=103
+'isNull'=104
+'isPast'=100
+'isTrue'=95
+'jvmType'=84
+'key'=108
+'lazy'=23
+'mapto'=27
+'maxDecimal'=96
+'maxNumber'=101
+'minDecimal'=97
+'minMaxSize'=106
+'minNumber'=102
+'msgCode'=91
+'msgI18nKey'=92
+'new'=126
+'notnull'=24
+'null'=127
+'package'=71
+'private'=72
+'properties'=85
+'protected'=73
+'public'=74
+'ref'=28
+'refers'=21
+'regex'=105
+'return'=130
+'settings'=22
+'severity'=94
+'static'=61
+'super'=64
+'switch'=119
+'synchronized'=133
+'throw'=129
+'time'=69
+'timestamp'=70
+'transient'=19
+'true'=144
+'try'=131
+'typeof'=128
+'uuid'=18
+'val'=59
+'value'=109
+'var'=30
+'version'=20
+'warn'=67
+'while'=124
+'{'=79
+'|'=143
+'||'=14
+'}'=80
+RULE_ANY_OTHER=12
+RULE_DECIMAL=7
+RULE_HEX=5
+RULE_ID=4
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=8
+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__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java
new file mode 100644
index 0000000..1a680be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammarLexer.java
@@ -0,0 +1,5489 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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 InternalDatatypeGrammarLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=5;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalDatatypeGrammarLexer() {;} 
+    public InternalDatatypeGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDatatypeGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:14:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:14:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:15:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:15:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:16:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:16:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:17:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:17:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:18:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:18:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:19:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:19:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:20:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:20:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:21:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:21:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:22:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:22:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:23:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:23:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:24:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:24:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:25:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:25:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:26:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:26:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:27:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:27:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:28:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:28:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:29:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:30:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:31:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:32:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:33:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:34:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:35:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:37:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:38:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:39:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:40:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:41:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:42:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:42:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:43:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:43:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:44:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:45:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:46:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:46:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:47:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:47:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:48:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:48:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:49:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:49:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:50:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:50:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:51:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:52:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:53:7: ( '!' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:54:7: ( '++' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:55:7: ( '--' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:55:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:56:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:56:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:57:7: ( 'val' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:57:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:58:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:58:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:59:7: ( 'static' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:59:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:60:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:60:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:61:7: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:61:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:62:7: ( 'super' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:62:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:63:7: ( 'false' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:63:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:64:7: ( 'info' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:64:9: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:65:7: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:65:9: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:66:7: ( 'error' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:66:9: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:67:7: ( 'time' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:67:9: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:68:7: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:68:9: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:69:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:69:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:70:7: ( 'private' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:70:9: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:71:7: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:71:9: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:72:7: ( 'public' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:72:9: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:73:7: ( '<=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:73:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:74:7: ( '0' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:74:9: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:75:7: ( '?' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:76:7: ( '1' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:76:9: '1'
+            {
+            match('1'); 
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:77:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:77:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:78:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:78:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:79:7: ( 'class' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:79:9: 'class'
+            {
+            match("class"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:80:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:80:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:81:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:81:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:82:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:82:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:83:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:83:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:84:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:84:9: '('
+            {
+            match('('); 
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:85:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:85:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:86:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:86:9: ', '
+            {
+            match(", "); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:87:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:87:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:88:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:88:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:89:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:89:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:90:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:90:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:91:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:91:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:92:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:92:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:93:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:93:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:94:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:94:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:95:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:95:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:96:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:96:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:97:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:97:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:98:8: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:98:10: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:99:8: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:99:10: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:100:8: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:100:10: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:101:8: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:101:10: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:102:8: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:102:10: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:103:8: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:103:10: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:104:8: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:104:10: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:105:8: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:105:10: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:106:8: ( 'key' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:106:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:107:8: ( 'value' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:107:10: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:108:8: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:108:10: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:109:8: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:109:10: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:110:8: ( '@' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:111:8: ( ',' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:112:8: ( '#' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:113:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:114:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:114:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:115:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:115:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:116:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:116:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:117:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:117:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:118:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:119:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:119:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:120:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:120:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:121:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:121:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:122:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:122:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:123:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:123:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:124:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:124:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:125:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:125:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:126:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:126:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:127:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:127:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:128:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:128:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:129:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:129:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:130:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:130:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:131:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:131:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:132:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:132:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:133:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:134:8: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:134:10: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:135:8: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:135:10: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:136:8: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:136:10: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:137:8: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:137:10: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:138:8: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:138:10: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:139:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:139:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:140:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:140:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:141:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:141:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:142:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:142:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36051: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36053:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36053:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36053: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36055: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36057:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36057:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36057:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36057: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36057: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36059: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36061:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36061:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36061: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36061: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36063: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36065:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36065:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36065: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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36067:16: ( . )
+            // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:36067:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=141;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:847: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:856: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:865: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:878: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:886: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:898: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:914: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:930: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g:1:938: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\66\1\70\1\72\13\76\1\137\1\143\1\146\1\152\1\154\1\156\1\160\1\163\1\165\1\170\4\76\1\u0087\1\u0089\3\uffff\1\76\2\uffff\1\u0091\2\uffff\1\76\2\uffff\1\76\1\u0099\1\u009a\1\63\5\uffff\1\u009e\6\uffff\3\76\1\uffff\1\u00a4\3\76\1\u00ac\25\76\1\u00c9\3\76\20\uffff\1\u00cf\6\uffff\1\u00d1\4\uffff\14\76\1\uffff\1\u009a\6\uffff\1\76\6\uffff\1\76\2\uffff\1\u00e3\7\uffff\5\76\1\uffff\7\76\1\uffff\2\76\1\u00f5\5\76\1\u00fb\1\u00fd\1\u00ff\12\76\1\u010a\1\76\1\u010c\4\76\1\uffff\4\76\4\uffff\5\76\1\u0120\10\76\1\u012a\1\uffff\1\76\1\uffff\2\76\1\u0130\4\76\1\u0135\7\76\1\u013d\1\76\1\uffff\1\u013f\1\u0141\3\76\1\uffff\1\76\1\uffff\1\76\1\uffff\10\76\1\u014f\1\76\1\uffff\1\u0151\1\uffff\1\u0153\16\76\1\u0162\1\u0163\2\76\1\uffff\1\76\1\u0167\7\76\3\uffff\3\76\1\uffff\1\u0172\1\u0173\2\76\1\uffff\7\76\1\uffff\1\76\1\uffff\1\76\1\uffff\1\76\1\u0180\1\76\1\u0182\1\76\1\u0184\4\76\1\u0189\2\76\1\uffff\1\76\1\uffff\1\76\1\uffff\4\76\1\u0192\10\76\1\u019c\2\uffff\1\u019d\2\76\1\uffff\1\u01a0\11\76\2\uffff\1\76\1\u01ab\3\76\1\u01af\1\u01b0\1\76\1\u01b2\2\76\1\u01b5\1\uffff\1\76\1\uffff\1\u01b7\1\uffff\1\u01b8\2\76\1\u01bb\1\uffff\1\u01bc\4\76\1\u01c1\2\76\1\uffff\11\76\2\uffff\2\76\1\uffff\4\76\1\u01d3\3\76\1\u01d7\1\76\1\uffff\1\76\1\u01da\1\76\2\uffff\1\76\1\uffff\2\76\1\uffff\1\u01df\2\uffff\2\76\2\uffff\1\76\1\u01e3\2\76\1\uffff\1\u01e6\1\u01e7\2\76\1\u01ea\4\76\1\u01ef\1\76\1\u01f1\1\u01f2\1\u01f3\1\u01f4\2\76\1\uffff\1\u01f7\1\76\1\u01f9\1\uffff\2\76\1\uffff\1\u01fc\3\76\1\uffff\1\u0200\1\u0201\1\76\1\uffff\1\u0203\1\u0204\2\uffff\2\76\1\uffff\4\76\1\uffff\1\76\4\uffff\2\76\1\uffff\1\76\1\uffff\2\76\1\uffff\1\u0211\1\u0212\1\u0213\2\uffff\1\76\2\uffff\1\76\1\u0216\2\76\1\u0219\1\76\1\u021b\1\u021c\1\76\1\u021e\1\u021f\1\u0220\3\uffff\1\76\1\u0222\1\uffff\1\u0223\1\u0224\1\uffff\1\u0225\2\uffff\1\u0226\3\uffff\1\76\5\uffff\1\u0228\1\uffff";
+    static final String DFA21_eofS =
+        "\u0229\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\141\1\144\1\165\1\150\1\141\2\145\1\141\1\145\2\141\1\53\1\55\2\52\4\75\2\56\1\154\3\141\2\60\3\uffff\1\166\2\uffff\1\40\2\uffff\1\145\2\uffff\1\163\1\72\1\60\1\44\5\uffff\1\75\6\uffff\1\143\1\141\1\154\1\uffff\1\44\1\160\1\146\1\106\1\44\1\151\1\141\1\155\1\160\2\162\1\154\1\146\1\164\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\147\1\146\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\162\1\151\1\143\1\151\1\142\1\uffff\1\60\6\uffff\1\155\6\uffff\1\171\2\uffff\1\40\7\uffff\1\150\2\143\1\163\1\154\1\uffff\2\157\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\156\1\44\3\145\1\157\1\163\3\44\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\44\1\154\1\44\1\141\2\151\1\141\1\uffff\1\164\1\104\1\103\1\104\4\uffff\1\145\1\157\1\155\1\145\1\163\1\44\1\141\1\156\1\154\1\153\1\166\1\160\1\154\1\124\1\44\1\142\1\145\1\uffff\2\141\1\44\1\150\1\163\1\145\1\162\1\44\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\163\1\uffff\2\44\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\44\1\165\1\uffff\1\44\1\uffff\1\44\2\164\1\166\1\165\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\44\1\145\1\165\1\uffff\1\154\1\44\1\145\2\141\2\145\1\151\1\171\3\uffff\1\146\1\142\1\144\1\uffff\2\44\1\143\1\164\1\uffff\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\146\1\44\1\157\1\44\1\163\1\44\2\156\1\151\1\143\1\44\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\163\1\145\1\154\1\44\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\44\2\uffff\1\44\2\154\1\uffff\1\44\1\147\1\164\1\143\1\162\1\143\1\160\1\141\1\154\1\145\2\uffff\1\164\1\44\1\143\1\145\1\162\2\44\1\165\1\44\1\145\1\141\1\44\1\uffff\1\156\1\uffff\1\44\1\uffff\1\44\1\147\1\164\1\44\1\uffff\1\44\1\157\1\154\2\160\1\44\1\144\1\164\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\154\1\171\1\uffff\2\145\2\164\1\44\1\145\1\165\1\145\1\44\1\151\1\uffff\1\145\1\44\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\44\2\uffff\1\163\1\171\2\uffff\1\156\1\44\2\145\1\uffff\2\44\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\4\44\1\145\1\151\1\uffff\1\44\1\154\1\44\1\uffff\2\157\1\uffff\1\44\1\154\1\164\1\160\1\uffff\2\44\1\151\1\uffff\2\44\2\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\4\uffff\1\144\1\145\1\uffff\1\164\1\uffff\1\156\1\146\1\uffff\3\44\2\uffff\1\172\2\uffff\1\154\1\44\1\171\1\154\1\44\1\145\2\44\1\163\3\44\3\uffff\1\145\1\44\1\uffff\2\44\1\uffff\1\44\2\uffff\1\44\3\uffff\1\144\5\uffff\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\157\1\163\1\165\1\171\2\145\1\171\1\141\1\165\1\164\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\1\157\1\150\1\165\1\170\1\154\3\uffff\1\166\2\uffff\1\40\2\uffff\1\145\2\uffff\1\163\1\72\1\154\1\172\5\uffff\1\75\6\uffff\1\164\1\141\1\154\1\uffff\1\172\1\160\1\163\1\124\1\172\1\151\1\171\1\155\1\160\3\162\1\164\1\166\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\147\1\162\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\162\1\151\1\143\1\157\1\142\1\uffff\1\154\6\uffff\1\155\6\uffff\1\171\2\uffff\1\172\7\uffff\1\150\1\145\1\143\1\163\1\154\1\uffff\2\157\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\156\1\172\3\145\1\157\1\163\3\172\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\172\1\154\1\172\1\145\2\151\1\141\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\145\1\157\1\155\1\145\1\163\1\172\1\141\1\156\1\154\1\153\1\166\1\164\1\154\1\124\1\172\1\160\1\145\1\uffff\2\141\1\172\1\150\1\163\1\145\1\162\1\172\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\163\1\uffff\2\172\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\172\1\165\1\uffff\1\172\1\uffff\1\172\2\164\1\166\1\165\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\172\1\145\1\165\1\uffff\1\154\1\172\1\145\2\141\2\145\1\151\1\171\3\uffff\1\146\1\142\1\144\1\uffff\2\172\1\143\1\164\1\uffff\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\146\1\172\1\157\1\172\1\163\1\172\2\156\1\151\1\143\1\172\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\163\1\145\1\154\1\172\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\172\2\uffff\1\172\2\154\1\uffff\1\172\1\147\1\164\1\143\1\162\1\143\1\160\1\141\1\154\1\145\2\uffff\1\164\1\172\1\143\1\145\1\162\2\172\1\165\1\172\1\145\1\141\1\172\1\uffff\1\156\1\uffff\1\172\1\uffff\1\172\1\147\1\164\1\172\1\uffff\1\172\1\157\1\154\2\160\1\172\1\144\1\164\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\154\1\171\1\uffff\2\145\2\164\1\172\1\145\1\165\1\145\1\172\1\151\1\uffff\1\145\1\172\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\172\2\uffff\1\163\1\171\2\uffff\1\156\1\172\2\145\1\uffff\2\172\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\4\172\1\145\1\151\1\uffff\1\172\1\154\1\172\1\uffff\2\157\1\uffff\1\172\1\154\1\164\1\160\1\uffff\2\172\1\151\1\uffff\2\172\2\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\4\uffff\1\144\1\145\1\uffff\1\164\1\uffff\1\156\1\146\1\uffff\3\172\2\uffff\1\172\2\uffff\1\154\1\172\1\171\1\154\1\172\1\145\2\172\1\163\3\172\3\uffff\1\145\1\172\1\uffff\2\172\1\uffff\1\172\2\uffff\1\172\3\uffff\1\144\5\uffff\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\37\uffff\1\103\1\104\1\106\1\uffff\1\112\1\113\1\uffff\1\116\1\121\1\uffff\1\144\1\146\4\uffff\1\u0088\2\u0089\1\u008c\1\u008d\1\uffff\1\44\1\1\1\2\1\u0083\1\3\1\173\3\uffff\1\u0088\36\uffff\1\25\1\54\1\23\1\26\1\41\1\55\1\24\1\27\1\50\1\47\1\30\1\u008a\1\u008b\1\51\1\31\1\52\1\uffff\1\53\1\36\1\37\1\45\1\77\1\40\1\uffff\1\56\1\46\1\u0082\1\101\14\uffff\1\u0085\1\uffff\1\100\1\u0087\1\102\1\103\1\104\1\106\1\uffff\1\112\1\113\1\114\1\145\1\116\1\121\1\uffff\1\144\1\146\1\uffff\1\u0081\1\154\1\u0086\1\u0089\1\u008c\1\34\1\32\5\uffff\1\5\7\uffff\1\151\34\uffff\1\161\4\uffff\1\35\1\33\1\42\1\43\21\uffff\1\150\21\uffff\1\167\5\uffff\1\22\1\uffff\1\57\1\uffff\1\20\12\uffff\1\162\1\uffff\1\15\23\uffff\1\157\11\uffff\1\140\1\174\1\176\3\uffff\1\156\4\uffff\1\66\7\uffff\1\6\1\uffff\1\u0084\1\uffff\1\71\15\uffff\1\13\1\uffff\1\163\1\uffff\1\16\16\uffff\1\137\1\152\3\uffff\1\67\12\uffff\1\172\1\105\14\uffff\1\165\1\uffff\1\141\1\uffff\1\135\4\uffff\1\64\10\uffff\1\17\11\uffff\1\70\1\65\2\uffff\1\160\12\uffff\1\62\3\uffff\1\123\1\130\1\uffff\1\134\2\uffff\1\164\1\uffff\1\11\1\166\2\uffff\1\61\1\153\4\uffff\1\126\21\uffff\1\76\3\uffff\1\21\2\uffff\1\115\4\uffff\1\10\3\uffff\1\14\2\uffff\1\142\1\155\2\uffff\1\117\4\uffff\1\60\1\uffff\1\u0080\1\170\1\73\1\74\2\uffff\1\110\1\uffff\1\4\2\uffff\1\127\3\uffff\1\12\1\122\1\uffff\1\175\1\107\14\uffff\1\133\1\7\1\72\2\uffff\1\131\2\uffff\1\132\1\uffff\1\63\1\75\1\uffff\1\177\1\143\1\147\1\uffff\1\124\1\120\1\125\1\136\1\111\1\uffff\1\171";
+    static final String DFA21_specialS =
+        "\1\0\u0228\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\63\2\62\2\63\1\62\22\63\1\62\1\24\1\60\1\52\1\57\1\23\1\3\1\61\1\43\1\44\1\21\1\17\1\45\1\20\1\27\1\22\1\35\1\36\10\55\1\54\1\41\1\26\1\1\1\25\1\30\1\51\32\57\1\46\1\63\1\47\1\56\1\57\1\63\1\53\1\57\1\4\1\15\1\31\1\32\2\57\1\5\1\42\1\50\1\13\1\16\1\14\1\57\1\34\1\57\1\11\1\12\1\7\1\6\1\10\1\33\3\57\1\37\1\2\1\40\uff82\63",
+            "\1\64\1\65",
+            "\1\67",
+            "\1\71",
+            "\1\73\12\uffff\1\74\2\uffff\1\75",
+            "\1\77\1\uffff\1\103\6\uffff\1\100\1\101\4\uffff\1\102",
+            "\1\104",
+            "\1\110\1\106\10\uffff\1\105\6\uffff\1\107",
+            "\1\112\3\uffff\1\111",
+            "\1\113",
+            "\1\114\16\uffff\1\115\1\116\1\uffff\1\117\1\uffff\1\120",
+            "\1\121",
+            "\1\123\11\uffff\1\122\5\uffff\1\124",
+            "\1\126\3\uffff\1\130\3\uffff\1\127\5\uffff\1\131\4\uffff\1\125",
+            "\1\132\7\uffff\1\134\11\uffff\1\133",
+            "\1\136\21\uffff\1\135",
+            "\1\142\17\uffff\1\140\1\141",
+            "\1\145\22\uffff\1\144",
+            "\1\150\4\uffff\1\151\15\uffff\1\147",
+            "\1\153",
+            "\1\155",
+            "\1\157",
+            "\1\162\1\161",
+            "\1\164",
+            "\1\167\13\uffff\1\166",
+            "\1\174\1\uffff\1\173\3\uffff\1\172\5\uffff\1\171",
+            "\1\175\7\uffff\1\177\5\uffff\1\176",
+            "\1\u0080\6\uffff\1\u0081",
+            "\1\u0082\20\uffff\1\u0083\2\uffff\1\u0084",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\13\uffff\1\u0085\6\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\13\uffff\1\u0085",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088",
+            "",
+            "",
+            "",
+            "\1\u008d",
+            "",
+            "",
+            "\1\u0090",
+            "",
+            "",
+            "\1\u0094",
+            "",
+            "",
+            "\1\u0097",
+            "\1\u0098",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088",
+            "\1\76\34\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009d",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009f\17\uffff\1\u00a0\1\u00a1",
+            "\1\u00a2",
+            "\1\u00a3",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00a5",
+            "\1\u00a6\14\uffff\1\u00a7",
+            "\1\u00a8\7\uffff\1\u00ab\1\uffff\1\u00aa\3\uffff\1\u00a9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00ad",
+            "\1\u00ae\23\uffff\1\u00b0\3\uffff\1\u00af",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b6\5\uffff\1\u00b5",
+            "\1\u00b7\1\u00b8\14\uffff\1\u00b9",
+            "\1\u00ba\1\uffff\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c8\13\uffff\1\u00c7",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00ca\7\uffff\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ce",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d0",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc\5\uffff\1\u00dd",
+            "\1\u00de",
+            "",
+            "\12\u0086\10\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088\22\uffff\1\u0086\2\uffff\1\u0088\1\uffff\3\u0088\5\uffff\1\u0088",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00df",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e0",
+            "",
+            "",
+            "\1\u00e1\3\uffff\1\76\13\uffff\12\76\7\uffff\3\76\1\u00e2\26\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e4",
+            "\1\u00e5\1\uffff\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed\23\uffff\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1\5\uffff\1\u00f2",
+            "",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\24\76\1\u00fc\5\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\4\76\1\u00fe\25\76",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u010b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u010e\3\uffff\1\u010d",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "",
+            "\1\u0112",
+            "\1\u0113\11\uffff\1\u0114",
+            "\1\u0115\5\uffff\1\u0116",
+            "\1\u0117\10\uffff\1\u0119\1\u0118",
+            "",
+            "",
+            "",
+            "",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\76\13\uffff\12\76\7\uffff\15\76\1\u011f\14\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0127\3\uffff\1\u0126",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u012c\15\uffff\1\u012b",
+            "\1\u012d",
+            "",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u013e",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\22\76\1\u0140\7\76",
+            "\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\u014e",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0150",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\23\76\1\u0152\6\76\4\uffff\1\76\1\uffff\32\76",
+            "\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\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0164",
+            "\1\u0165",
+            "",
+            "\1\u0166",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "",
+            "",
+            "",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0174",
+            "\1\u0175",
+            "",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "",
+            "\1\u017d",
+            "",
+            "\1\u017e",
+            "",
+            "\1\u017f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0181",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0183",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u018a",
+            "\1\u018b",
+            "",
+            "\1\u018c",
+            "",
+            "\1\u018d",
+            "",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\u0199",
+            "\1\u019a\16\uffff\1\u019b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u019e",
+            "\1\u019f",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "",
+            "",
+            "\1\u01aa",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b1",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u01b6",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01c2",
+            "\1\u01c3",
+            "",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "",
+            "",
+            "\1\u01cd",
+            "\1\u01ce",
+            "",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01d8",
+            "",
+            "\1\u01d9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01db",
+            "",
+            "",
+            "\1\u01dc",
+            "",
+            "\1\u01dd",
+            "\1\u01de",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u01e0",
+            "\1\u01e1",
+            "",
+            "",
+            "\1\u01e2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01e4",
+            "\1\u01e5",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f0",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f5",
+            "\1\u01f6",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f8",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u01fa",
+            "\1\u01fb",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0202",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u0205",
+            "\1\u0206",
+            "",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "\1\u020a",
+            "",
+            "\1\u020b",
+            "",
+            "",
+            "",
+            "",
+            "\1\u020c",
+            "\1\u020d",
+            "",
+            "\1\u020e",
+            "",
+            "\1\u020f",
+            "\1\u0210",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u0214",
+            "",
+            "",
+            "\1\u0215",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u021a",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u021d",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "\1\u0221",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "\1\u0227",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            ""
+    };
+
+    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 | 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=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='i') ) {s = 5;}
+
+                        else if ( (LA21_0=='u') ) {s = 6;}
+
+                        else if ( (LA21_0=='t') ) {s = 7;}
+
+                        else if ( (LA21_0=='v') ) {s = 8;}
+
+                        else if ( (LA21_0=='r') ) {s = 9;}
+
+                        else if ( (LA21_0=='s') ) {s = 10;}
+
+                        else if ( (LA21_0=='l') ) {s = 11;}
+
+                        else if ( (LA21_0=='n') ) {s = 12;}
+
+                        else if ( (LA21_0=='d') ) {s = 13;}
+
+                        else if ( (LA21_0=='m') ) {s = 14;}
+
+                        else if ( (LA21_0=='+') ) {s = 15;}
+
+                        else if ( (LA21_0=='-') ) {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=='.') ) {s = 23;}
+
+                        else if ( (LA21_0=='?') ) {s = 24;}
+
+                        else if ( (LA21_0=='e') ) {s = 25;}
+
+                        else if ( (LA21_0=='f') ) {s = 26;}
+
+                        else if ( (LA21_0=='w') ) {s = 27;}
+
+                        else if ( (LA21_0=='p') ) {s = 28;}
+
+                        else if ( (LA21_0=='0') ) {s = 29;}
+
+                        else if ( (LA21_0=='1') ) {s = 30;}
+
+                        else if ( (LA21_0=='{') ) {s = 31;}
+
+                        else if ( (LA21_0=='}') ) {s = 32;}
+
+                        else if ( (LA21_0==';') ) {s = 33;}
+
+                        else if ( (LA21_0=='j') ) {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=='k') ) {s = 40;}
+
+                        else if ( (LA21_0=='@') ) {s = 41;}
+
+                        else if ( (LA21_0=='#') ) {s = 42;}
+
+                        else if ( (LA21_0=='a') ) {s = 43;}
+
+                        else if ( (LA21_0==':') ) {s = 44;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 45;}
+
+                        else if ( (LA21_0=='^') ) {s = 46;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='o'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+
+                        else if ( (LA21_0=='\"') ) {s = 48;}
+
+                        else if ( (LA21_0=='\'') ) {s = 49;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 51;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammarParser.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammarParser.java
new file mode 100644
index 0000000..5012dcf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+
+
+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 InternalDatatypeGrammarParserSignatures {
+     void entryRuleLCommonModel() throws RecognitionException;
+     void ruleLCommonModel() throws RecognitionException;
+     void entryRuleTypedPackage() throws RecognitionException;
+     void ruleTypedPackage() throws RecognitionException;
+     void entryRuleClass() throws RecognitionException;
+     void ruleClass() throws RecognitionException;
+     void entryRuleImport() throws RecognitionException;
+     void ruleImport() throws RecognitionException;
+     void entryRuleDataType() throws RecognitionException;
+     void ruleDataType() throws RecognitionException;
+     void entryRuleDataTypeConstraint() throws RecognitionException;
+     void ruleDataTypeConstraint() throws RecognitionException;
+     void entryRuleDateConstraint() throws RecognitionException;
+     void ruleDateConstraint() throws RecognitionException;
+     void entryRuleBlobTypeConstraint() throws RecognitionException;
+     void ruleBlobTypeConstraint() throws RecognitionException;
+     void entryRuleDtCAssertFalse() throws RecognitionException;
+     void ruleDtCAssertFalse() throws RecognitionException;
+     void entryRuleDtCAssertTrue() throws RecognitionException;
+     void ruleDtCAssertTrue() throws RecognitionException;
+     void entryRuleDtCDecimalMax() throws RecognitionException;
+     void ruleDtCDecimalMax() throws RecognitionException;
+     void entryRuleDtCDecimalMin() throws RecognitionException;
+     void ruleDtCDecimalMin() throws RecognitionException;
+     void entryRuleDtCDigits() throws RecognitionException;
+     void ruleDtCDigits() throws RecognitionException;
+     void entryRuleDtCFuture() throws RecognitionException;
+     void ruleDtCFuture() throws RecognitionException;
+     void entryRuleDtCPast() throws RecognitionException;
+     void ruleDtCPast() throws RecognitionException;
+     void entryRuleDtCNumericMax() throws RecognitionException;
+     void ruleDtCNumericMax() throws RecognitionException;
+     void entryRuleDtCNumericMin() throws RecognitionException;
+     void ruleDtCNumericMin() throws RecognitionException;
+     void entryRuleDtCNotNull() throws RecognitionException;
+     void ruleDtCNotNull() throws RecognitionException;
+     void entryRuleDtCNull() throws RecognitionException;
+     void ruleDtCNull() throws RecognitionException;
+     void entryRuleDtCRegEx() throws RecognitionException;
+     void ruleDtCRegEx() throws RecognitionException;
+     void entryRuleDtCSize() throws RecognitionException;
+     void ruleDtCSize() throws RecognitionException;
+     void entryRuleScalarType() throws RecognitionException;
+     void ruleScalarType() throws RecognitionException;
+     void entryRuleEnum() throws RecognitionException;
+     void ruleEnum() throws RecognitionException;
+     void entryRuleEnumLiteral() throws RecognitionException;
+     void ruleEnumLiteral() throws RecognitionException;
+     void entryRuleAnnotationDef() throws RecognitionException;
+     void ruleAnnotationDef() throws RecognitionException;
+     void entryRuleResultFilter() throws RecognitionException;
+     void ruleResultFilter() throws RecognitionException;
+     void entryRuleAttributeMatchingConstraint() throws RecognitionException;
+     void ruleAttributeMatchingConstraint() throws RecognitionException;
+     void entryRuleKeyAndValue() throws RecognitionException;
+     void ruleKeyAndValue() throws RecognitionException;
+     void entryRuleLQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleLQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleValidIDWithKeywords() throws RecognitionException;
+     void ruleValidIDWithKeywords() throws RecognitionException;
+     void entryRuleLInt() throws RecognitionException;
+     void ruleLInt() throws RecognitionException;
+     void entryRuleLDecimal() throws RecognitionException;
+     void ruleLDecimal() 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 entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() 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 entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleConstraintSeverity() throws RecognitionException;
+     void ruleDateType() throws RecognitionException;
+     void ruleLVisibility() throws RecognitionException;
+     void ruleLComparatorType() throws RecognitionException;
+     void ruleLowerBound() throws RecognitionException;
+     void ruleUpperBound() throws RecognitionException;
+     void rule__DataType__Alternatives_2() throws RecognitionException;
+     void rule__DataTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__DateConstraint__Alternatives() throws RecognitionException;
+     void rule__BlobTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__ScalarType__Alternatives() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException;
+     void rule__LInt__Alternatives_0() 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__ConstraintSeverity__Alternatives() throws RecognitionException;
+     void rule__DateType__Alternatives() throws RecognitionException;
+     void rule__LVisibility__Alternatives() throws RecognitionException;
+     void rule__LComparatorType__Alternatives() throws RecognitionException;
+     void rule__LowerBound__Alternatives() throws RecognitionException;
+     void rule__UpperBound__Alternatives() throws RecognitionException;
+     void rule__TypedPackage__Group__0() throws RecognitionException;
+     void rule__TypedPackage__Group__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__1() throws RecognitionException;
+     void rule__TypedPackage__Group__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__2() throws RecognitionException;
+     void rule__TypedPackage__Group__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__3() throws RecognitionException;
+     void rule__TypedPackage__Group__3__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__Class__Group__0() throws RecognitionException;
+     void rule__Class__Group__0__Impl() throws RecognitionException;
+     void rule__Class__Group__1() throws RecognitionException;
+     void rule__Class__Group__1__Impl() throws RecognitionException;
+     void rule__Class__Group__2() throws RecognitionException;
+     void rule__Class__Group__2__Impl() throws RecognitionException;
+     void rule__Class__Group__3() throws RecognitionException;
+     void rule__Class__Group__3__Impl() throws RecognitionException;
+     void rule__Import__Group__0() throws RecognitionException;
+     void rule__Import__Group__0__Impl() throws RecognitionException;
+     void rule__Import__Group__1() throws RecognitionException;
+     void rule__Import__Group__1__Impl() throws RecognitionException;
+     void rule__Import__Group__2() throws RecognitionException;
+     void rule__Import__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__0() throws RecognitionException;
+     void rule__DataType__Group__0__Impl() throws RecognitionException;
+     void rule__DataType__Group__1() throws RecognitionException;
+     void rule__DataType__Group__1__Impl() throws RecognitionException;
+     void rule__DataType__Group__2() throws RecognitionException;
+     void rule__DataType__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__3() throws RecognitionException;
+     void rule__DataType__Group__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__0() throws RecognitionException;
+     void rule__DataType__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__1() throws RecognitionException;
+     void rule__DataType__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__2() throws RecognitionException;
+     void rule__DataType__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__3() throws RecognitionException;
+     void rule__DataType__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__4() throws RecognitionException;
+     void rule__DataType__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__0() throws RecognitionException;
+     void rule__DataType__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__1() throws RecognitionException;
+     void rule__DataType__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__2() throws RecognitionException;
+     void rule__DataType__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__3() throws RecognitionException;
+     void rule__DataType__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__0() throws RecognitionException;
+     void rule__DtCDigits__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__1() throws RecognitionException;
+     void rule__DtCDigits__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__2() throws RecognitionException;
+     void rule__DtCDigits__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__3() throws RecognitionException;
+     void rule__DtCDigits__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__4() throws RecognitionException;
+     void rule__DtCDigits__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__5() throws RecognitionException;
+     void rule__DtCDigits__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__6() throws RecognitionException;
+     void rule__DtCDigits__Group__6__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__7() throws RecognitionException;
+     void rule__DtCDigits__Group__7__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__0() throws RecognitionException;
+     void rule__DtCFuture__Group__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__1() throws RecognitionException;
+     void rule__DtCFuture__Group__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__2() throws RecognitionException;
+     void rule__DtCFuture__Group__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__0() throws RecognitionException;
+     void rule__DtCPast__Group__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__1() throws RecognitionException;
+     void rule__DtCPast__Group__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__2() throws RecognitionException;
+     void rule__DtCPast__Group__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__0() throws RecognitionException;
+     void rule__DtCNotNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__1() throws RecognitionException;
+     void rule__DtCNotNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__2() throws RecognitionException;
+     void rule__DtCNotNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__0() throws RecognitionException;
+     void rule__DtCNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__1() throws RecognitionException;
+     void rule__DtCNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__2() throws RecognitionException;
+     void rule__DtCNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__0() throws RecognitionException;
+     void rule__DtCRegEx__Group__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__1() throws RecognitionException;
+     void rule__DtCRegEx__Group__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__2() throws RecognitionException;
+     void rule__DtCRegEx__Group__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__3() throws RecognitionException;
+     void rule__DtCRegEx__Group__3__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__4() throws RecognitionException;
+     void rule__DtCRegEx__Group__4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__5() throws RecognitionException;
+     void rule__DtCRegEx__Group__5__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__0() throws RecognitionException;
+     void rule__DtCSize__Group__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__1() throws RecognitionException;
+     void rule__DtCSize__Group__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__2() throws RecognitionException;
+     void rule__DtCSize__Group__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__3() throws RecognitionException;
+     void rule__DtCSize__Group__3__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__4() throws RecognitionException;
+     void rule__DtCSize__Group__4__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__5() throws RecognitionException;
+     void rule__DtCSize__Group__5__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__6() throws RecognitionException;
+     void rule__DtCSize__Group__6__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__7() throws RecognitionException;
+     void rule__DtCSize__Group__7__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__0() throws RecognitionException;
+     void rule__Enum__Group__0__Impl() throws RecognitionException;
+     void rule__Enum__Group__1() throws RecognitionException;
+     void rule__Enum__Group__1__Impl() throws RecognitionException;
+     void rule__Enum__Group__2() throws RecognitionException;
+     void rule__Enum__Group__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__3() throws RecognitionException;
+     void rule__Enum__Group__3__Impl() throws RecognitionException;
+     void rule__Enum__Group__4() throws RecognitionException;
+     void rule__Enum__Group__4__Impl() throws RecognitionException;
+     void rule__Enum__Group__5() throws RecognitionException;
+     void rule__Enum__Group__5__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__0() throws RecognitionException;
+     void rule__Enum__Group_4__0__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__1() throws RecognitionException;
+     void rule__Enum__Group_4__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__0() throws RecognitionException;
+     void rule__EnumLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__1() throws RecognitionException;
+     void rule__EnumLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1__Impl() throws RecognitionException;
+     void rule__AnnotationDef__Group__0() throws RecognitionException;
+     void rule__AnnotationDef__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__0() throws RecognitionException;
+     void rule__KeyAndValue__Group__0__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__1() throws RecognitionException;
+     void rule__KeyAndValue__Group__1__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__2() throws RecognitionException;
+     void rule__KeyAndValue__Group__2__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__3() throws RecognitionException;
+     void rule__KeyAndValue__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__4() throws RecognitionException;
+     void rule__KeyAndValue__Group__4__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__5() throws RecognitionException;
+     void rule__KeyAndValue__Group__5__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1__Impl() throws RecognitionException;
+     void rule__LInt__Group__0() throws RecognitionException;
+     void rule__LInt__Group__0__Impl() throws RecognitionException;
+     void rule__LInt__Group__1() throws RecognitionException;
+     void rule__LInt__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__0() throws RecognitionException;
+     void rule__LDecimal__Group__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__1() throws RecognitionException;
+     void rule__LDecimal__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__0() throws RecognitionException;
+     void rule__LDecimal__Group_1__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__1() throws RecognitionException;
+     void rule__LDecimal__Group_1__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__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__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__DtCAssertFalse__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__0() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__1() throws RecognitionException;
+     void rule__LCommonModel__PackagesAssignment() throws RecognitionException;
+     void rule__TypedPackage__NameAssignment_2() throws RecognitionException;
+     void rule__TypedPackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__TypedPackage__TypesAssignment_3_2() throws RecognitionException;
+     void rule__Class__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__Import__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__DataType__NameAssignment_1() throws RecognitionException;
+     void rule__DataType__JvmTypeReferenceAssignment_2_0_1() throws RecognitionException;
+     void rule__DataType__AsPrimitiveAssignment_2_0_2() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_0_3() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_3_1() throws RecognitionException;
+     void rule__DataType__DateAssignment_2_1_0() throws RecognitionException;
+     void rule__DataType__DateTypeAssignment_2_1_1() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_1_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_3_1() throws RecognitionException;
+     void rule__DataType__AsBlobAssignment_2_2_0() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_2_1() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_3_1() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDigits__IntDigitsAssignment_3() throws RecognitionException;
+     void rule__DtCDigits__FractionDigitsAssignment_5() throws RecognitionException;
+     void rule__DtCDigits__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCDigits__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCDigits__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__DtCFuture__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCFuture__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCFuture__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCPast__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCPast__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCPast__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNotNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCRegEx__PatternAssignment_3() throws RecognitionException;
+     void rule__DtCRegEx__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCRegEx__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCSize__MinAssignment_3() throws RecognitionException;
+     void rule__DtCSize__MaxAssignment_5() throws RecognitionException;
+     void rule__DtCSize__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCSize__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCSize__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__Enum__NameAssignment_1() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_3() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_4_1() throws RecognitionException;
+     void rule__EnumLiteral__NameAssignment_0() throws RecognitionException;
+     void rule__EnumLiteral__DefaultAssignment_1_0_1() throws RecognitionException;
+     void rule__EnumLiteral__NullAssignment_1_1_0() throws RecognitionException;
+     void rule__EnumLiteral__ValueAssignment_1_1_2_1() throws RecognitionException;
+     void rule__AnnotationDef__AnnotationAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__AttributeAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1() throws RecognitionException;
+     void rule__KeyAndValue__KeyAssignment_2() throws RecognitionException;
+     void rule__KeyAndValue__ValueAssignment_5() 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 synpred38_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred39_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred40_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred65_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred66_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred79_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred87_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred88_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred101_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred105_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred106_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred112_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred156_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred159_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred162_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred165_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred168_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred171_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred174_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred177_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred180_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred183_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred186_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred189_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred192_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred196_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred212_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred214_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred215_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred216_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred217_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred218_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred219_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred220_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred221_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred222_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred223_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred225_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred226_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred234_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred241_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred244_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred257_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred258_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred262_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred263_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred264_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred269_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred270_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred271_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred272_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred274_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred278_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred280_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred281_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred288_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred289_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred290_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred291_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred292_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred293_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred294_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred295_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred296_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred297_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred298_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred299_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred300_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred301_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred302_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred303_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred304_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred305_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred306_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred307_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred308_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred309_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred310_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred311_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred312_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred313_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred314_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred315_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred316_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred317_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred318_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred319_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred320_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred321_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred322_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred323_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred324_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred325_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred326_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred327_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred328_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred329_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred330_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred331_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred332_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred333_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred334_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred335_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred336_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred337_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred338_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred339_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred340_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+     void synpred341_InternalDatatypeGrammar_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalDatatypeGrammarParser1 extends AbstractInternalContentAssistParser implements InternalDatatypeGrammarParserSignatures {
+
+        InternalDatatypeGrammarParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalDatatypeGrammarParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'{'", "'}'", "'class'", "';'", "'datatype'", "'jvmType'", "'properties'", "'('", "')'", "', '", "'isFalse'", "'['", "'msgCode'", "'msgI18nKey'", "']'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'key'", "'value'", "'derived'", "'collection'", "'@'", "','", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'as primitive'", "'dateType'", "'as blob'", "'asDefault'", "'forNull'", "'::'", "'?.'", "'|'", "'true'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=5;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+
+    public String[] getTokenNames() { return InternalDatatypeGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/antlr/internal/InternalDatatypeGrammar.g"; }
+
+
+     
+     	protected DatatypeGrammarGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(DatatypeGrammarGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred65_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred65_InternalDatatypeGrammar_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 synpred88_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred88_InternalDatatypeGrammar_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 synpred212_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred212_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred270_InternalDatatypeGrammar_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 synpred308_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred308_InternalDatatypeGrammar_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 synpred303_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred303_InternalDatatypeGrammar_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 synpred332_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred332_InternalDatatypeGrammar_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 synpred298_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred298_InternalDatatypeGrammar_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 synpred258_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred258_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred320_InternalDatatypeGrammar_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 synpred223_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred223_InternalDatatypeGrammar_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 synpred269_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred269_InternalDatatypeGrammar_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 synpred264_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred264_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred337_InternalDatatypeGrammar_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 synpred293_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred293_InternalDatatypeGrammar_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 synpred314_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred314_InternalDatatypeGrammar_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 synpred196_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred196_InternalDatatypeGrammar_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 synpred217_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred217_InternalDatatypeGrammar_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 synpred241_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred241_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred299_InternalDatatypeGrammar_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 synpred325_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred325_InternalDatatypeGrammar_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 synpred263_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred263_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred338_InternalDatatypeGrammar_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 synpred87_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred87_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred315_InternalDatatypeGrammar_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 synpred218_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred218_InternalDatatypeGrammar_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 synpred174_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred174_InternalDatatypeGrammar_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 synpred271_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred271_InternalDatatypeGrammar_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 synpred307_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred307_InternalDatatypeGrammar_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 synpred189_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred189_InternalDatatypeGrammar_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 synpred156_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred156_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred302_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred281_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred274_InternalDatatypeGrammar_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 synpred105_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred105_InternalDatatypeGrammar_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 synpred294_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred294_InternalDatatypeGrammar_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 synpred313_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred313_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred280_InternalDatatypeGrammar_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 synpred318_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred318_InternalDatatypeGrammar_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 synpred324_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred324_InternalDatatypeGrammar_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 synpred186_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred186_InternalDatatypeGrammar_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 synpred304_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred304_InternalDatatypeGrammar_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 synpred309_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred309_InternalDatatypeGrammar_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 synpred333_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred333_InternalDatatypeGrammar_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 synpred319_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred319_InternalDatatypeGrammar_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 synpred214_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred214_InternalDatatypeGrammar_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 synpred40_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalDatatypeGrammar_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 synpred334_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred334_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred329_InternalDatatypeGrammar_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 synpred66_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred66_InternalDatatypeGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred219_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred219_InternalDatatypeGrammar_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 synpred180_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred180_InternalDatatypeGrammar_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 synpred244_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred244_InternalDatatypeGrammar_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 synpred165_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred165_InternalDatatypeGrammar_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 synpred234_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred234_InternalDatatypeGrammar_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 synpred339_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred339_InternalDatatypeGrammar_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 synpred295_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred295_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred278_InternalDatatypeGrammar_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 synpred323_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred323_InternalDatatypeGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred226_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred226_InternalDatatypeGrammar_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 synpred290_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred290_InternalDatatypeGrammar_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 synpred101_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred101_InternalDatatypeGrammar_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 synpred317_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred317_InternalDatatypeGrammar_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 synpred221_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred221_InternalDatatypeGrammar_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 synpred112_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred112_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred328_InternalDatatypeGrammar_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 synpred79_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred79_InternalDatatypeGrammar_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 synpred106_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred106_InternalDatatypeGrammar_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 synpred300_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred300_InternalDatatypeGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred220_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred220_InternalDatatypeGrammar_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 synpred171_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred171_InternalDatatypeGrammar_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 synpred305_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred305_InternalDatatypeGrammar_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 synpred289_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred289_InternalDatatypeGrammar_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 synpred159_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred159_InternalDatatypeGrammar_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 synpred296_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred296_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred322_InternalDatatypeGrammar_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 synpred39_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalDatatypeGrammar_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 synpred225_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred225_InternalDatatypeGrammar_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 synpred215_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_InternalDatatypeGrammar_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 synpred312_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred312_InternalDatatypeGrammar_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 synpred330_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred330_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred335_InternalDatatypeGrammar_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 synpred291_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred291_InternalDatatypeGrammar_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 synpred340_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred340_InternalDatatypeGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred177_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred177_InternalDatatypeGrammar_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 synpred222_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred222_InternalDatatypeGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred216_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred216_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred327_InternalDatatypeGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred183_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred183_InternalDatatypeGrammar_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 synpred336_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred336_InternalDatatypeGrammar_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 synpred168_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred168_InternalDatatypeGrammar_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 synpred310_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred310_InternalDatatypeGrammar_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 synpred192_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred192_InternalDatatypeGrammar_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 synpred288_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred288_InternalDatatypeGrammar_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 synpred297_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred297_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred321_InternalDatatypeGrammar_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 synpred38_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred272_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred331_InternalDatatypeGrammar_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 synpred311_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred311_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred292_InternalDatatypeGrammar_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 synpred301_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred301_InternalDatatypeGrammar_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 synpred341_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred341_InternalDatatypeGrammar_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 synpred162_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred162_InternalDatatypeGrammar_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 synpred326_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred326_InternalDatatypeGrammar_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 synpred306_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred306_InternalDatatypeGrammar_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 synpred262_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred262_InternalDatatypeGrammar_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 synpred257_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred257_InternalDatatypeGrammar_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_InternalDatatypeGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred316_InternalDatatypeGrammar_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 DFA11 dfa11 = new DFA11(this);
+    protected DFA12 dfa12 = new DFA12(this);
+    protected DFA13 dfa13 = new DFA13(this);
+    protected DFA20 dfa20 = new DFA20(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA32 dfa32 = new DFA32(this);
+    protected DFA35 dfa35 = new DFA35(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA43 dfa43 = new DFA43(this);
+    protected DFA52 dfa52 = new DFA52(this);
+    protected DFA131 dfa131 = new DFA131(this);
+    protected DFA137 dfa137 = new DFA137(this);
+    protected DFA144 dfa144 = new DFA144(this);
+    protected DFA145 dfa145 = new DFA145(this);
+    protected DFA153 dfa153 = new DFA153(this);
+    protected DFA163 dfa163 = new DFA163(this);
+    protected DFA176 dfa176 = new DFA176(this);
+    protected DFA177 dfa177 = new DFA177(this);
+    protected DFA181 dfa181 = new DFA181(this);
+    protected DFA182 dfa182 = new DFA182(this);
+    protected DFA183 dfa183 = new DFA183(this);
+    protected DFA188 dfa188 = new DFA188(this);
+    protected DFA197 dfa197 = new DFA197(this);
+    protected DFA200 dfa200 = new DFA200(this);
+    static final String DFA11_eotS =
+        "\43\uffff";
+    static final String DFA11_eofS =
+        "\43\uffff";
+    static final String DFA11_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA11_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA11_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA11_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA11_transitionS = {
+            "\1\1\4\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\2\3\uffff\1\2\25\uffff\1\2\1\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS);
+    static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS);
+    static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS);
+    static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS);
+    static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS);
+    static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS);
+    static final short[][] DFA11_transition;
+
+    static {
+        int numStates = DFA11_transitionS.length;
+        DFA11_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA11_transition[i] = DFA.unpackEncodedString(DFA11_transitionS[i]);
+        }
+    }
+
+    class DFA11 extends DFA {
+
+        public DFA11(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 11;
+            this.eot = DFA11_eot;
+            this.eof = DFA11_eof;
+            this.min = DFA11_min;
+            this.max = DFA11_max;
+            this.accept = DFA11_accept;
+            this.special = DFA11_special;
+            this.transition = DFA11_transition;
+        }
+        public String getDescription() {
+            return "3728: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 LA11_1 = input.LA(1);
+
+                         
+                        int index11_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalDatatypeGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index11_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 11, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA12_eotS =
+        "\43\uffff";
+    static final String DFA12_eofS =
+        "\43\uffff";
+    static final String DFA12_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA12_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA12_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA12_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA12_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\2\3\uffff\1\2\25\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA12_eot = DFA.unpackEncodedString(DFA12_eotS);
+    static final short[] DFA12_eof = DFA.unpackEncodedString(DFA12_eofS);
+    static final char[] DFA12_min = DFA.unpackEncodedStringToUnsignedChars(DFA12_minS);
+    static final char[] DFA12_max = DFA.unpackEncodedStringToUnsignedChars(DFA12_maxS);
+    static final short[] DFA12_accept = DFA.unpackEncodedString(DFA12_acceptS);
+    static final short[] DFA12_special = DFA.unpackEncodedString(DFA12_specialS);
+    static final short[][] DFA12_transition;
+
+    static {
+        int numStates = DFA12_transitionS.length;
+        DFA12_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA12_transition[i] = DFA.unpackEncodedString(DFA12_transitionS[i]);
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            this.eot = DFA12_eot;
+            this.eof = DFA12_eof;
+            this.min = DFA12_min;
+            this.max = DFA12_max;
+            this.accept = DFA12_accept;
+            this.special = DFA12_special;
+            this.transition = DFA12_transition;
+        }
+        public String getDescription() {
+            return "3750: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 LA12_1 = input.LA(1);
+
+                         
+                        int index12_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalDatatypeGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index12_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA13_eotS =
+        "\43\uffff";
+    static final String DFA13_eofS =
+        "\43\uffff";
+    static final String DFA13_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA13_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA13_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA13_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA13_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\2\3\uffff\1\2\25\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
+    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
+    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
+    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
+    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
+    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
+    static final short[][] DFA13_transition;
+
+    static {
+        int numStates = DFA13_transitionS.length;
+        DFA13_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
+        }
+    }
+
+    class DFA13 extends DFA {
+
+        public DFA13(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 13;
+            this.eot = DFA13_eot;
+            this.eof = DFA13_eof;
+            this.min = DFA13_min;
+            this.max = DFA13_max;
+            this.accept = DFA13_accept;
+            this.special = DFA13_special;
+            this.transition = DFA13_transition;
+        }
+        public String getDescription() {
+            return "3772: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 LA13_1 = input.LA(1);
+
+                         
+                        int index13_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalDatatypeGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index13_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 13, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA20_eotS =
+        "\13\uffff";
+    static final String DFA20_eofS =
+        "\13\uffff";
+    static final String DFA20_minS =
+        "\1\53\2\uffff\1\53\7\uffff";
+    static final String DFA20_maxS =
+        "\1\62\2\uffff\1\57\7\uffff";
+    static final String DFA20_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 DFA20_specialS =
+        "\13\uffff}>";
+    static final String[] DFA20_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[] DFA20_eot = DFA.unpackEncodedString(DFA20_eotS);
+    static final short[] DFA20_eof = DFA.unpackEncodedString(DFA20_eofS);
+    static final char[] DFA20_min = DFA.unpackEncodedStringToUnsignedChars(DFA20_minS);
+    static final char[] DFA20_max = DFA.unpackEncodedStringToUnsignedChars(DFA20_maxS);
+    static final short[] DFA20_accept = DFA.unpackEncodedString(DFA20_acceptS);
+    static final short[] DFA20_special = DFA.unpackEncodedString(DFA20_specialS);
+    static final short[][] DFA20_transition;
+
+    static {
+        int numStates = DFA20_transitionS.length;
+        DFA20_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA20_transition[i] = DFA.unpackEncodedString(DFA20_transitionS[i]);
+        }
+    }
+
+    class DFA20 extends DFA {
+
+        public DFA20(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 20;
+            this.eot = DFA20_eot;
+            this.eof = DFA20_eof;
+            this.min = DFA20_min;
+            this.max = DFA20_max;
+            this.accept = DFA20_accept;
+            this.special = DFA20_special;
+            this.transition = DFA20_transition;
+        }
+        public String getDescription() {
+            return "4004:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA28_eotS =
+        "\12\uffff";
+    static final String DFA28_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA28_minS =
+        "\1\72\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA28_maxS =
+        "\1\u008e\2\100\1\uffff\5\u0090\1\uffff";
+    static final String DFA28_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA28_specialS =
+        "\12\uffff}>";
+    static final String[] DFA28_transitionS = {
+            "\1\1\122\uffff\1\2\1\3",
+            "\1\4\47\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\47\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\15\uffff\2\3\1\uffff\1\3\3\uffff\2\3\2\uffff\1\3\2\uffff\1\3\23\uffff\26\3\6\uffff\2\3\1\uffff\1\3",
+            ""
+    };
+
+    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
+    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
+    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
+    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
+    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
+    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
+    static final short[][] DFA28_transition;
+
+    static {
+        int numStates = DFA28_transitionS.length;
+        DFA28_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
+        }
+    }
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            this.eot = DFA28_eot;
+            this.eof = DFA28_eof;
+            this.min = DFA28_min;
+            this.max = DFA28_max;
+            this.accept = DFA28_accept;
+            this.special = DFA28_special;
+            this.transition = DFA28_transition;
+        }
+        public String getDescription() {
+            return "4286:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA31_eotS =
+        "\43\uffff";
+    static final String DFA31_eofS =
+        "\43\uffff";
+    static final String DFA31_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA31_maxS =
+        "\1\u0090\2\0\40\uffff";
+    static final String DFA31_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA31_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA31_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\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 "4362: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 LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred79_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index31_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA31_2 = input.LA(1);
+
+                         
+                        int index31_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred79_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index31_2);
+                        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 DFA32_eotS =
+        "\40\uffff";
+    static final String DFA32_eofS =
+        "\40\uffff";
+    static final String DFA32_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA32_maxS =
+        "\1\u0090\26\uffff\1\0\10\uffff";
+    static final String DFA32_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 DFA32_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA32_transitionS = {
+            "\1\5\4\14\43\uffff\1\5\17\uffff\5\5\1\14\15\uffff\1\2\6\uffff\1\35\3\uffff\1\14\27\uffff\1\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\12\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA32_eot = DFA.unpackEncodedString(DFA32_eotS);
+    static final short[] DFA32_eof = DFA.unpackEncodedString(DFA32_eofS);
+    static final char[] DFA32_min = DFA.unpackEncodedStringToUnsignedChars(DFA32_minS);
+    static final char[] DFA32_max = DFA.unpackEncodedStringToUnsignedChars(DFA32_maxS);
+    static final short[] DFA32_accept = DFA.unpackEncodedString(DFA32_acceptS);
+    static final short[] DFA32_special = DFA.unpackEncodedString(DFA32_specialS);
+    static final short[][] DFA32_transition;
+
+    static {
+        int numStates = DFA32_transitionS.length;
+        DFA32_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA32_transition[i] = DFA.unpackEncodedString(DFA32_transitionS[i]);
+        }
+    }
+
+    class DFA32 extends DFA {
+
+        public DFA32(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 32;
+            this.eot = DFA32_eot;
+            this.eof = DFA32_eof;
+            this.min = DFA32_min;
+            this.max = DFA32_max;
+            this.accept = DFA32_accept;
+            this.special = DFA32_special;
+            this.transition = DFA32_transition;
+        }
+        public String getDescription() {
+            return "4384: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 LA32_23 = input.LA(1);
+
+                         
+                        int index32_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred87_InternalDatatypeGrammar()) ) {s = 30;}
+
+                        else if ( (synpred88_InternalDatatypeGrammar()) ) {s = 31;}
+
+                         
+                        input.seek(index32_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 32, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA35_eotS =
+        "\43\uffff";
+    static final String DFA35_eofS =
+        "\43\uffff";
+    static final String DFA35_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA35_maxS =
+        "\1\u0090\1\0\41\uffff";
+    static final String DFA35_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA35_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA35_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\3\uffff\1\2\6\uffff\1\2\4\uffff\6\2\15\uffff\1\2\6\uffff\1\1\3\uffff\1\2\27\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\12\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA35_eot = DFA.unpackEncodedString(DFA35_eotS);
+    static final short[] DFA35_eof = DFA.unpackEncodedString(DFA35_eofS);
+    static final char[] DFA35_min = DFA.unpackEncodedStringToUnsignedChars(DFA35_minS);
+    static final char[] DFA35_max = DFA.unpackEncodedStringToUnsignedChars(DFA35_maxS);
+    static final short[] DFA35_accept = DFA.unpackEncodedString(DFA35_acceptS);
+    static final short[] DFA35_special = DFA.unpackEncodedString(DFA35_specialS);
+    static final short[][] DFA35_transition;
+
+    static {
+        int numStates = DFA35_transitionS.length;
+        DFA35_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA35_transition[i] = DFA.unpackEncodedString(DFA35_transitionS[i]);
+        }
+    }
+
+    class DFA35 extends DFA {
+
+        public DFA35(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 35;
+            this.eot = DFA35_eot;
+            this.eof = DFA35_eof;
+            this.min = DFA35_min;
+            this.max = DFA35_max;
+            this.accept = DFA35_accept;
+            this.special = DFA35_special;
+            this.transition = DFA35_transition;
+        }
+        public String getDescription() {
+            return "4558: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 LA35_1 = input.LA(1);
+
+                         
+                        int index35_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred101_InternalDatatypeGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index35_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 35, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA40_eotS =
+        "\43\uffff";
+    static final String DFA40_eofS =
+        "\43\uffff";
+    static final String DFA40_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA40_maxS =
+        "\1\u0090\2\0\40\uffff";
+    static final String DFA40_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA40_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA40_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA40_eot = DFA.unpackEncodedString(DFA40_eotS);
+    static final short[] DFA40_eof = DFA.unpackEncodedString(DFA40_eofS);
+    static final char[] DFA40_min = DFA.unpackEncodedStringToUnsignedChars(DFA40_minS);
+    static final char[] DFA40_max = DFA.unpackEncodedStringToUnsignedChars(DFA40_maxS);
+    static final short[] DFA40_accept = DFA.unpackEncodedString(DFA40_acceptS);
+    static final short[] DFA40_special = DFA.unpackEncodedString(DFA40_specialS);
+    static final short[][] DFA40_transition;
+
+    static {
+        int numStates = DFA40_transitionS.length;
+        DFA40_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA40_transition[i] = DFA.unpackEncodedString(DFA40_transitionS[i]);
+        }
+    }
+
+    class DFA40 extends DFA {
+
+        public DFA40(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 40;
+            this.eot = DFA40_eot;
+            this.eof = DFA40_eof;
+            this.min = DFA40_min;
+            this.max = DFA40_max;
+            this.accept = DFA40_accept;
+            this.special = DFA40_special;
+            this.transition = DFA40_transition;
+        }
+        public String getDescription() {
+            return "4670: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 LA40_1 = input.LA(1);
+
+                         
+                        int index40_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred106_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index40_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA40_2 = input.LA(1);
+
+                         
+                        int index40_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred106_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index40_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 40, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA43_eotS =
+        "\43\uffff";
+    static final String DFA43_eofS =
+        "\43\uffff";
+    static final String DFA43_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA43_maxS =
+        "\1\u0090\2\0\40\uffff";
+    static final String DFA43_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA43_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA43_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA43_eot = DFA.unpackEncodedString(DFA43_eotS);
+    static final short[] DFA43_eof = DFA.unpackEncodedString(DFA43_eofS);
+    static final char[] DFA43_min = DFA.unpackEncodedStringToUnsignedChars(DFA43_minS);
+    static final char[] DFA43_max = DFA.unpackEncodedStringToUnsignedChars(DFA43_maxS);
+    static final short[] DFA43_accept = DFA.unpackEncodedString(DFA43_acceptS);
+    static final short[] DFA43_special = DFA.unpackEncodedString(DFA43_specialS);
+    static final short[][] DFA43_transition;
+
+    static {
+        int numStates = DFA43_transitionS.length;
+        DFA43_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA43_transition[i] = DFA.unpackEncodedString(DFA43_transitionS[i]);
+        }
+    }
+
+    class DFA43 extends DFA {
+
+        public DFA43(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 43;
+            this.eot = DFA43_eot;
+            this.eof = DFA43_eof;
+            this.min = DFA43_min;
+            this.max = DFA43_max;
+            this.accept = DFA43_accept;
+            this.special = DFA43_special;
+            this.transition = DFA43_transition;
+        }
+        public String getDescription() {
+            return "4764: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 LA43_1 = input.LA(1);
+
+                         
+                        int index43_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred112_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index43_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA43_2 = input.LA(1);
+
+                         
+                        int index43_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred112_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index43_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 43, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA52_eotS =
+        "\7\uffff";
+    static final String DFA52_eofS =
+        "\2\uffff\1\4\3\uffff\1\4";
+    static final String DFA52_minS =
+        "\1\4\1\uffff\1\72\1\4\2\uffff\1\72";
+    static final String DFA52_maxS =
+        "\1\75\1\uffff\1\122\1\63\2\uffff\1\122";
+    static final String DFA52_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+    static final String DFA52_specialS =
+        "\7\uffff}>";
+    static final String[] DFA52_transitionS = {
+            "\1\2\70\uffff\1\1",
+            "",
+            "\1\3\27\uffff\1\4",
+            "\1\6\56\uffff\1\5",
+            "",
+            "",
+            "\1\3\27\uffff\1\4"
+    };
+
+    static final short[] DFA52_eot = DFA.unpackEncodedString(DFA52_eotS);
+    static final short[] DFA52_eof = DFA.unpackEncodedString(DFA52_eofS);
+    static final char[] DFA52_min = DFA.unpackEncodedStringToUnsignedChars(DFA52_minS);
+    static final char[] DFA52_max = DFA.unpackEncodedStringToUnsignedChars(DFA52_maxS);
+    static final short[] DFA52_accept = DFA.unpackEncodedString(DFA52_acceptS);
+    static final short[] DFA52_special = DFA.unpackEncodedString(DFA52_specialS);
+    static final short[][] DFA52_transition;
+
+    static {
+        int numStates = DFA52_transitionS.length;
+        DFA52_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA52_transition[i] = DFA.unpackEncodedString(DFA52_transitionS[i]);
+        }
+    }
+
+    class DFA52 extends DFA {
+
+        public DFA52(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 52;
+            this.eot = DFA52_eot;
+            this.eof = DFA52_eof;
+            this.min = DFA52_min;
+            this.max = DFA52_max;
+            this.accept = DFA52_accept;
+            this.special = DFA52_special;
+            this.transition = DFA52_transition;
+        }
+        public String getDescription() {
+            return "4964:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
+        }
+    }
+    static final String DFA131_eotS =
+        "\12\uffff";
+    static final String DFA131_eofS =
+        "\1\10\11\uffff";
+    static final String DFA131_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA131_maxS =
+        "\1\u0090\7\0\2\uffff";
+    static final String DFA131_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA131_specialS =
+        "\1\uffff\1\3\1\2\1\1\1\5\1\4\1\0\1\6\2\uffff}>";
+    static final String[] DFA131_transitionS = {
+            "\5\10\5\uffff\2\10\16\uffff\3\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\25\10\15\uffff\2\10\1\uffff\1\10\3\uffff\2\10\2\uffff\1\10\2\uffff\1\10\23\uffff\26\10\6\uffff\2\10\1\uffff\1\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA131_eot = DFA.unpackEncodedString(DFA131_eotS);
+    static final short[] DFA131_eof = DFA.unpackEncodedString(DFA131_eofS);
+    static final char[] DFA131_min = DFA.unpackEncodedStringToUnsignedChars(DFA131_minS);
+    static final char[] DFA131_max = DFA.unpackEncodedStringToUnsignedChars(DFA131_maxS);
+    static final short[] DFA131_accept = DFA.unpackEncodedString(DFA131_acceptS);
+    static final short[] DFA131_special = DFA.unpackEncodedString(DFA131_specialS);
+    static final short[][] DFA131_transition;
+
+    static {
+        int numStates = DFA131_transitionS.length;
+        DFA131_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA131_transition[i] = DFA.unpackEncodedString(DFA131_transitionS[i]);
+        }
+    }
+
+    class DFA131 extends DFA {
+
+        public DFA131(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 131;
+            this.eot = DFA131_eot;
+            this.eof = DFA131_eof;
+            this.min = DFA131_min;
+            this.max = DFA131_max;
+            this.accept = DFA131_accept;
+            this.special = DFA131_special;
+            this.transition = DFA131_transition;
+        }
+        public String getDescription() {
+            return "17145: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 LA131_6 = input.LA(1);
+
+                         
+                        int index131_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA131_3 = input.LA(1);
+
+                         
+                        int index131_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA131_2 = input.LA(1);
+
+                         
+                        int index131_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA131_1 = input.LA(1);
+
+                         
+                        int index131_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA131_5 = input.LA(1);
+
+                         
+                        int index131_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA131_4 = input.LA(1);
+
+                         
+                        int index131_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA131_7 = input.LA(1);
+
+                         
+                        int index131_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalDatatypeGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index131_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 131, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA137_eotS =
+        "\13\uffff";
+    static final String DFA137_eofS =
+        "\1\1\12\uffff";
+    static final String DFA137_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA137_maxS =
+        "\1\u0090\1\uffff\10\0\1\uffff";
+    static final String DFA137_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA137_specialS =
+        "\2\uffff\1\3\1\2\1\1\1\6\1\5\1\0\1\4\1\7\1\uffff}>";
+    static final String[] DFA137_transitionS = {
+            "\5\1\5\uffff\2\1\16\uffff\15\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\17\1\15\uffff\2\1\1\uffff\1\1\3\uffff\2\1\2\uffff\1\1\2\uffff\1\1\23\uffff\26\1\6\uffff\2\1\1\uffff\1\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA137_eot = DFA.unpackEncodedString(DFA137_eotS);
+    static final short[] DFA137_eof = DFA.unpackEncodedString(DFA137_eofS);
+    static final char[] DFA137_min = DFA.unpackEncodedStringToUnsignedChars(DFA137_minS);
+    static final char[] DFA137_max = DFA.unpackEncodedStringToUnsignedChars(DFA137_maxS);
+    static final short[] DFA137_accept = DFA.unpackEncodedString(DFA137_acceptS);
+    static final short[] DFA137_special = DFA.unpackEncodedString(DFA137_specialS);
+    static final short[][] DFA137_transition;
+
+    static {
+        int numStates = DFA137_transitionS.length;
+        DFA137_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA137_transition[i] = DFA.unpackEncodedString(DFA137_transitionS[i]);
+        }
+    }
+
+    class DFA137 extends DFA {
+
+        public DFA137(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 137;
+            this.eot = DFA137_eot;
+            this.eof = DFA137_eof;
+            this.min = DFA137_min;
+            this.max = DFA137_max;
+            this.accept = DFA137_accept;
+            this.special = DFA137_special;
+            this.transition = DFA137_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 18637: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 LA137_7 = input.LA(1);
+
+                         
+                        int index137_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA137_4 = input.LA(1);
+
+                         
+                        int index137_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA137_3 = input.LA(1);
+
+                         
+                        int index137_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA137_2 = input.LA(1);
+
+                         
+                        int index137_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA137_8 = input.LA(1);
+
+                         
+                        int index137_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA137_6 = input.LA(1);
+
+                         
+                        int index137_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA137_5 = input.LA(1);
+
+                         
+                        int index137_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA137_9 = input.LA(1);
+
+                         
+                        int index137_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred218_InternalDatatypeGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index137_9);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 137, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA144_eotS =
+        "\116\uffff";
+    static final String DFA144_eofS =
+        "\1\2\115\uffff";
+    static final String DFA144_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA144_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA144_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA144_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA144_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\1\1\1\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA144_eot = DFA.unpackEncodedString(DFA144_eotS);
+    static final short[] DFA144_eof = DFA.unpackEncodedString(DFA144_eofS);
+    static final char[] DFA144_min = DFA.unpackEncodedStringToUnsignedChars(DFA144_minS);
+    static final char[] DFA144_max = DFA.unpackEncodedStringToUnsignedChars(DFA144_maxS);
+    static final short[] DFA144_accept = DFA.unpackEncodedString(DFA144_acceptS);
+    static final short[] DFA144_special = DFA.unpackEncodedString(DFA144_specialS);
+    static final short[][] DFA144_transition;
+
+    static {
+        int numStates = DFA144_transitionS.length;
+        DFA144_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA144_transition[i] = DFA.unpackEncodedString(DFA144_transitionS[i]);
+        }
+    }
+
+    class DFA144 extends DFA {
+
+        public DFA144(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 144;
+            this.eot = DFA144_eot;
+            this.eof = DFA144_eof;
+            this.min = DFA144_min;
+            this.max = DFA144_max;
+            this.accept = DFA144_accept;
+            this.special = DFA144_special;
+            this.transition = DFA144_transition;
+        }
+        public String getDescription() {
+            return "20464: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 LA144_1 = input.LA(1);
+
+                         
+                        int index144_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred225_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index144_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 144, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA145_eotS =
+        "\116\uffff";
+    static final String DFA145_eofS =
+        "\1\2\115\uffff";
+    static final String DFA145_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA145_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA145_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA145_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA145_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\1\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA145_eot = DFA.unpackEncodedString(DFA145_eotS);
+    static final short[] DFA145_eof = DFA.unpackEncodedString(DFA145_eofS);
+    static final char[] DFA145_min = DFA.unpackEncodedStringToUnsignedChars(DFA145_minS);
+    static final char[] DFA145_max = DFA.unpackEncodedStringToUnsignedChars(DFA145_maxS);
+    static final short[] DFA145_accept = DFA.unpackEncodedString(DFA145_acceptS);
+    static final short[] DFA145_special = DFA.unpackEncodedString(DFA145_specialS);
+    static final short[][] DFA145_transition;
+
+    static {
+        int numStates = DFA145_transitionS.length;
+        DFA145_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA145_transition[i] = DFA.unpackEncodedString(DFA145_transitionS[i]);
+        }
+    }
+
+    class DFA145 extends DFA {
+
+        public DFA145(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 145;
+            this.eot = DFA145_eot;
+            this.eof = DFA145_eof;
+            this.min = DFA145_min;
+            this.max = DFA145_max;
+            this.accept = DFA145_accept;
+            this.special = DFA145_special;
+            this.transition = DFA145_transition;
+        }
+        public String getDescription() {
+            return "20492: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 LA145_1 = input.LA(1);
+
+                         
+                        int index145_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred226_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index145_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 145, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA153_eotS =
+        "\46\uffff";
+    static final String DFA153_eofS =
+        "\46\uffff";
+    static final String DFA153_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA153_maxS =
+        "\1\u0090\2\0\43\uffff";
+    static final String DFA153_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA153_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA153_transitionS = {
+            "\1\1\4\5\25\uffff\3\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\3\uffff\7\5\15\uffff\1\5\6\uffff\1\2\3\uffff\1\5\2\uffff\1\5\24\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\11\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA153_eot = DFA.unpackEncodedString(DFA153_eotS);
+    static final short[] DFA153_eof = DFA.unpackEncodedString(DFA153_eofS);
+    static final char[] DFA153_min = DFA.unpackEncodedStringToUnsignedChars(DFA153_minS);
+    static final char[] DFA153_max = DFA.unpackEncodedStringToUnsignedChars(DFA153_maxS);
+    static final short[] DFA153_accept = DFA.unpackEncodedString(DFA153_acceptS);
+    static final short[] DFA153_special = DFA.unpackEncodedString(DFA153_specialS);
+    static final short[][] DFA153_transition;
+
+    static {
+        int numStates = DFA153_transitionS.length;
+        DFA153_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA153_transition[i] = DFA.unpackEncodedString(DFA153_transitionS[i]);
+        }
+    }
+
+    class DFA153 extends DFA {
+
+        public DFA153(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 153;
+            this.eot = DFA153_eot;
+            this.eof = DFA153_eof;
+            this.min = DFA153_min;
+            this.max = DFA153_max;
+            this.accept = DFA153_accept;
+            this.special = DFA153_special;
+            this.transition = DFA153_transition;
+        }
+        public String getDescription() {
+            return "21633: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 LA153_1 = input.LA(1);
+
+                         
+                        int index153_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred234_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index153_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA153_2 = input.LA(1);
+
+                         
+                        int index153_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred234_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index153_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 153, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA163_eotS =
+        "\42\uffff";
+    static final String DFA163_eofS =
+        "\42\uffff";
+    static final String DFA163_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA163_maxS =
+        "\1\u0090\2\0\37\uffff";
+    static final String DFA163_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA163_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA163_transitionS = {
+            "\1\1\4\4\26\uffff\2\4\13\uffff\1\4\3\uffff\1\3\6\uffff\1\4\4\uffff\6\4\15\uffff\1\4\6\uffff\1\2\3\uffff\1\4\27\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\12\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 "23301: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 LA163_1 = input.LA(1);
+
+                         
+                        int index163_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred244_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index163_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA163_2 = input.LA(1);
+
+                         
+                        int index163_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred244_InternalDatatypeGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index163_2);
+                        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 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\u0090\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\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\1\1\1\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\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 "25789: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 LA176_1 = input.LA(1);
+
+                         
+                        int index176_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred257_InternalDatatypeGrammar()) ) {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\u0090\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\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\1\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\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 "25817: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 LA177_1 = input.LA(1);
+
+                         
+                        int index177_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred258_InternalDatatypeGrammar()) ) {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 DFA181_eotS =
+        "\116\uffff";
+    static final String DFA181_eofS =
+        "\1\2\115\uffff";
+    static final String DFA181_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA181_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA181_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA181_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA181_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA181_eot = DFA.unpackEncodedString(DFA181_eotS);
+    static final short[] DFA181_eof = DFA.unpackEncodedString(DFA181_eofS);
+    static final char[] DFA181_min = DFA.unpackEncodedStringToUnsignedChars(DFA181_minS);
+    static final char[] DFA181_max = DFA.unpackEncodedStringToUnsignedChars(DFA181_maxS);
+    static final short[] DFA181_accept = DFA.unpackEncodedString(DFA181_acceptS);
+    static final short[] DFA181_special = DFA.unpackEncodedString(DFA181_specialS);
+    static final short[][] DFA181_transition;
+
+    static {
+        int numStates = DFA181_transitionS.length;
+        DFA181_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA181_transition[i] = DFA.unpackEncodedString(DFA181_transitionS[i]);
+        }
+    }
+
+    class DFA181 extends DFA {
+
+        public DFA181(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 181;
+            this.eot = DFA181_eot;
+            this.eof = DFA181_eof;
+            this.min = DFA181_min;
+            this.max = DFA181_max;
+            this.accept = DFA181_accept;
+            this.special = DFA181_special;
+            this.transition = DFA181_transition;
+        }
+        public String getDescription() {
+            return "26355: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 LA181_1 = input.LA(1);
+
+                         
+                        int index181_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred262_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index181_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 181, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA182_eotS =
+        "\116\uffff";
+    static final String DFA182_eofS =
+        "\1\2\115\uffff";
+    static final String DFA182_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA182_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA182_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA182_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA182_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\1\1\1\2\2\uffff\1\2\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA182_eot = DFA.unpackEncodedString(DFA182_eotS);
+    static final short[] DFA182_eof = DFA.unpackEncodedString(DFA182_eofS);
+    static final char[] DFA182_min = DFA.unpackEncodedStringToUnsignedChars(DFA182_minS);
+    static final char[] DFA182_max = DFA.unpackEncodedStringToUnsignedChars(DFA182_maxS);
+    static final short[] DFA182_accept = DFA.unpackEncodedString(DFA182_acceptS);
+    static final short[] DFA182_special = DFA.unpackEncodedString(DFA182_specialS);
+    static final short[][] DFA182_transition;
+
+    static {
+        int numStates = DFA182_transitionS.length;
+        DFA182_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA182_transition[i] = DFA.unpackEncodedString(DFA182_transitionS[i]);
+        }
+    }
+
+    class DFA182 extends DFA {
+
+        public DFA182(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 182;
+            this.eot = DFA182_eot;
+            this.eof = DFA182_eof;
+            this.min = DFA182_min;
+            this.max = DFA182_max;
+            this.accept = DFA182_accept;
+            this.special = DFA182_special;
+            this.transition = DFA182_transition;
+        }
+        public String getDescription() {
+            return "26384: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 LA182_1 = input.LA(1);
+
+                         
+                        int index182_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred263_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index182_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 182, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA183_eotS =
+        "\116\uffff";
+    static final String DFA183_eofS =
+        "\1\2\115\uffff";
+    static final String DFA183_minS =
+        "\1\4\1\0\114\uffff";
+    static final String DFA183_maxS =
+        "\1\u0090\1\0\114\uffff";
+    static final String DFA183_acceptS =
+        "\2\uffff\1\2\112\uffff\1\1";
+    static final String DFA183_specialS =
+        "\1\uffff\1\0\114\uffff}>";
+    static final String[] DFA183_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\15\uffff\2\2\1\uffff\1\2\3\uffff\2\2\2\uffff\1\1\2\uffff\1\2\23\uffff\26\2\6\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA183_eot = DFA.unpackEncodedString(DFA183_eotS);
+    static final short[] DFA183_eof = DFA.unpackEncodedString(DFA183_eofS);
+    static final char[] DFA183_min = DFA.unpackEncodedStringToUnsignedChars(DFA183_minS);
+    static final char[] DFA183_max = DFA.unpackEncodedStringToUnsignedChars(DFA183_maxS);
+    static final short[] DFA183_accept = DFA.unpackEncodedString(DFA183_acceptS);
+    static final short[] DFA183_special = DFA.unpackEncodedString(DFA183_specialS);
+    static final short[][] DFA183_transition;
+
+    static {
+        int numStates = DFA183_transitionS.length;
+        DFA183_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA183_transition[i] = DFA.unpackEncodedString(DFA183_transitionS[i]);
+        }
+    }
+
+    class DFA183 extends DFA {
+
+        public DFA183(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 183;
+            this.eot = DFA183_eot;
+            this.eof = DFA183_eof;
+            this.min = DFA183_min;
+            this.max = DFA183_max;
+            this.accept = DFA183_accept;
+            this.special = DFA183_special;
+            this.transition = DFA183_transition;
+        }
+        public String getDescription() {
+            return "26412: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 LA183_1 = input.LA(1);
+
+                         
+                        int index183_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred264_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index183_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 183, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA188_eotS =
+        "\116\uffff";
+    static final String DFA188_eofS =
+        "\1\41\115\uffff";
+    static final String DFA188_minS =
+        "\1\4\40\0\55\uffff";
+    static final String DFA188_maxS =
+        "\1\u0090\40\0\55\uffff";
+    static final String DFA188_acceptS =
+        "\41\uffff\1\2\53\uffff\1\1";
+    static final String DFA188_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[] DFA188_transitionS = {
+            "\1\1\1\23\1\24\1\25\1\27\5\uffff\2\41\16\uffff\1\41\1\10\1\7\13\41\1\15\12\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\15\uffff\1\12\1\41\1\uffff\1\41\3\uffff\1\40\1\41\2\uffff\1\20\2\uffff\1\41\23\uffff\1\41\1\17\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\6\uffff\2\41\1\uffff\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[] DFA188_eot = DFA.unpackEncodedString(DFA188_eotS);
+    static final short[] DFA188_eof = DFA.unpackEncodedString(DFA188_eofS);
+    static final char[] DFA188_min = DFA.unpackEncodedStringToUnsignedChars(DFA188_minS);
+    static final char[] DFA188_max = DFA.unpackEncodedStringToUnsignedChars(DFA188_maxS);
+    static final short[] DFA188_accept = DFA.unpackEncodedString(DFA188_acceptS);
+    static final short[] DFA188_special = DFA.unpackEncodedString(DFA188_specialS);
+    static final short[][] DFA188_transition;
+
+    static {
+        int numStates = DFA188_transitionS.length;
+        DFA188_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA188_transition[i] = DFA.unpackEncodedString(DFA188_transitionS[i]);
+        }
+    }
+
+    class DFA188 extends DFA {
+
+        public DFA188(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 188;
+            this.eot = DFA188_eot;
+            this.eof = DFA188_eof;
+            this.min = DFA188_min;
+            this.max = DFA188_max;
+            this.accept = DFA188_accept;
+            this.special = DFA188_special;
+            this.transition = DFA188_transition;
+        }
+        public String getDescription() {
+            return "27465: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 LA188_1 = input.LA(1);
+
+                         
+                        int index188_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA188_2 = input.LA(1);
+
+                         
+                        int index188_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA188_3 = input.LA(1);
+
+                         
+                        int index188_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA188_4 = input.LA(1);
+
+                         
+                        int index188_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA188_5 = input.LA(1);
+
+                         
+                        int index188_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA188_6 = input.LA(1);
+
+                         
+                        int index188_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA188_7 = input.LA(1);
+
+                         
+                        int index188_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA188_8 = input.LA(1);
+
+                         
+                        int index188_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA188_9 = input.LA(1);
+
+                         
+                        int index188_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA188_10 = input.LA(1);
+
+                         
+                        int index188_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA188_11 = input.LA(1);
+
+                         
+                        int index188_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA188_12 = input.LA(1);
+
+                         
+                        int index188_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA188_13 = input.LA(1);
+
+                         
+                        int index188_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA188_14 = input.LA(1);
+
+                         
+                        int index188_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA188_15 = input.LA(1);
+
+                         
+                        int index188_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA188_16 = input.LA(1);
+
+                         
+                        int index188_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA188_17 = input.LA(1);
+
+                         
+                        int index188_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA188_18 = input.LA(1);
+
+                         
+                        int index188_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA188_19 = input.LA(1);
+
+                         
+                        int index188_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA188_20 = input.LA(1);
+
+                         
+                        int index188_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA188_21 = input.LA(1);
+
+                         
+                        int index188_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA188_22 = input.LA(1);
+
+                         
+                        int index188_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA188_23 = input.LA(1);
+
+                         
+                        int index188_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA188_24 = input.LA(1);
+
+                         
+                        int index188_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA188_25 = input.LA(1);
+
+                         
+                        int index188_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA188_26 = input.LA(1);
+
+                         
+                        int index188_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA188_27 = input.LA(1);
+
+                         
+                        int index188_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA188_28 = input.LA(1);
+
+                         
+                        int index188_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA188_29 = input.LA(1);
+
+                         
+                        int index188_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA188_30 = input.LA(1);
+
+                         
+                        int index188_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA188_31 = input.LA(1);
+
+                         
+                        int index188_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA188_32 = input.LA(1);
+
+                         
+                        int index188_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred269_InternalDatatypeGrammar()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index188_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 188, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA197_eotS =
+        "\136\uffff";
+    static final String DFA197_eofS =
+        "\1\2\135\uffff";
+    static final String DFA197_minS =
+        "\1\4\1\0\134\uffff";
+    static final String DFA197_maxS =
+        "\1\u0090\1\0\134\uffff";
+    static final String DFA197_acceptS =
+        "\2\uffff\1\2\132\uffff\1\1";
+    static final String DFA197_specialS =
+        "\1\uffff\1\0\134\uffff}>";
+    static final String[] DFA197_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\15\uffff\2\2\1\uffff\2\2\1\uffff\3\2\1\uffff\2\2\2\uffff\1\2\1\uffff\4\2\2\uffff\7\2\5\uffff\30\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA197_eot = DFA.unpackEncodedString(DFA197_eotS);
+    static final short[] DFA197_eof = DFA.unpackEncodedString(DFA197_eofS);
+    static final char[] DFA197_min = DFA.unpackEncodedStringToUnsignedChars(DFA197_minS);
+    static final char[] DFA197_max = DFA.unpackEncodedStringToUnsignedChars(DFA197_maxS);
+    static final short[] DFA197_accept = DFA.unpackEncodedString(DFA197_acceptS);
+    static final short[] DFA197_special = DFA.unpackEncodedString(DFA197_specialS);
+    static final short[][] DFA197_transition;
+
+    static {
+        int numStates = DFA197_transitionS.length;
+        DFA197_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA197_transition[i] = DFA.unpackEncodedString(DFA197_transitionS[i]);
+        }
+    }
+
+    class DFA197 extends DFA {
+
+        public DFA197(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 197;
+            this.eot = DFA197_eot;
+            this.eof = DFA197_eof;
+            this.min = DFA197_min;
+            this.max = DFA197_max;
+            this.accept = DFA197_accept;
+            this.special = DFA197_special;
+            this.transition = DFA197_transition;
+        }
+        public String getDescription() {
+            return "29044: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 LA197_1 = input.LA(1);
+
+                         
+                        int index197_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred278_InternalDatatypeGrammar()) ) {s = 93;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index197_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 197, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA200_eotS =
+        "\136\uffff";
+    static final String DFA200_eofS =
+        "\1\2\135\uffff";
+    static final String DFA200_minS =
+        "\1\4\1\0\134\uffff";
+    static final String DFA200_maxS =
+        "\1\u0090\1\0\134\uffff";
+    static final String DFA200_acceptS =
+        "\2\uffff\1\2\132\uffff\1\1";
+    static final String DFA200_specialS =
+        "\1\uffff\1\0\134\uffff}>";
+    static final String[] DFA200_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\15\uffff\2\2\1\uffff\2\2\1\uffff\3\2\1\uffff\2\2\2\uffff\1\2\1\uffff\4\2\2\uffff\7\2\5\uffff\30\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA200_eot = DFA.unpackEncodedString(DFA200_eotS);
+    static final short[] DFA200_eof = DFA.unpackEncodedString(DFA200_eofS);
+    static final char[] DFA200_min = DFA.unpackEncodedStringToUnsignedChars(DFA200_minS);
+    static final char[] DFA200_max = DFA.unpackEncodedStringToUnsignedChars(DFA200_maxS);
+    static final short[] DFA200_accept = DFA.unpackEncodedString(DFA200_acceptS);
+    static final short[] DFA200_special = DFA.unpackEncodedString(DFA200_specialS);
+    static final short[][] DFA200_transition;
+
+    static {
+        int numStates = DFA200_transitionS.length;
+        DFA200_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA200_transition[i] = DFA.unpackEncodedString(DFA200_transitionS[i]);
+        }
+    }
+
+    class DFA200 extends DFA {
+
+        public DFA200(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 200;
+            this.eot = DFA200_eot;
+            this.eof = DFA200_eof;
+            this.min = DFA200_min;
+            this.max = DFA200_max;
+            this.accept = DFA200_accept;
+            this.special = DFA200_special;
+            this.transition = DFA200_transition;
+        }
+        public String getDescription() {
+            return "29355: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 LA200_1 = input.LA(1);
+
+                         
+                        int index200_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred281_InternalDatatypeGrammar()) ) {s = 93;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index200_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 200, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    
+    protected static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleLCommonModel_in_entryRuleLCommonModel67 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLCommonModel74 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LCommonModel__PackagesAssignment_in_ruleLCommonModel100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
+        public static final BitSet FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage128 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypedPackage135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__0_in_ruleTypedPackage161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleClass_in_entryRuleClass190 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleClass197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__0_in_ruleClass223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleImport_in_entryRuleImport250 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleImport257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__0_in_ruleImport283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType310 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataType317 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__0_in_ruleDataType343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint372 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataTypeConstraint379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataTypeConstraint__Alternatives_in_ruleDataTypeConstraint405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint432 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDateConstraint439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DateConstraint__Alternatives_in_ruleDateConstraint465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint492 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBlobTypeConstraint499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BlobTypeConstraint__Alternatives_in_ruleBlobTypeConstraint525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse552 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertFalse559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__0_in_ruleDtCAssertFalse585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue612 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertTrue619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__0_in_ruleDtCAssertTrue645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax672 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMax679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__0_in_ruleDtCDecimalMax705 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin732 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMin739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__0_in_ruleDtCDecimalMin765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits792 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDigits799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__0_in_ruleDtCDigits825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture852 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCFuture859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__0_in_ruleDtCFuture885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_entryRuleDtCPast912 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCPast919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__0_in_ruleDtCPast945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax972 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMax979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__0_in_ruleDtCNumericMax1005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin1032 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMin1039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__0_in_ruleDtCNumericMin1065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull1092 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNotNull1099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__0_in_ruleDtCNotNull1125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_entryRuleDtCNull1152 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNull1159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__0_in_ruleDtCNull1185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx1212 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCRegEx1219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__0_in_ruleDtCRegEx1245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_entryRuleDtCSize1272 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCSize1279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__0_in_ruleDtCSize1305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_entryRuleScalarType1332 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleScalarType1339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ScalarType__Alternatives_in_ruleScalarType1365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum1394 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnum1401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__0_in_ruleEnum1427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnumLiteral_in_entryRuleEnumLiteral1454 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnumLiteral1461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__0_in_ruleEnumLiteral1487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_entryRuleAnnotationDef1514 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAnnotationDef1521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__Group__0_in_ruleAnnotationDef1547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResultFilter_in_entryRuleResultFilter1576 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResultFilter1583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_ruleResultFilter1609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_entryRuleAttributeMatchingConstraint1635 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAttributeMatchingConstraint1642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__0_in_ruleAttributeMatchingConstraint1668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_entryRuleKeyAndValue1695 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleKeyAndValue1702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__0_in_ruleKeyAndValue1728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLQualifiedNameWithWildCard_in_entryRuleLQualifiedNameWithWildCard1755 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLQualifiedNameWithWildCard1762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__0_in_ruleLQualifiedNameWithWildCard1788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_entryRuleValidIDWithKeywords1819 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidIDWithKeywords1826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Alternatives_in_ruleValidIDWithKeywords1852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_entryRuleLInt1883 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLInt1890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__0_in_ruleLInt1916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLDecimal_in_entryRuleLDecimal1943 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLDecimal1950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__0_in_ruleLDecimal1976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation2003 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation2010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation2036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair2063 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets001 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair2070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair2096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList2123 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList2130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList2156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue2183 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue2190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue2216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression2243 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression2250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression2276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression2303 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression2310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression2336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment2362 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment2369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment2395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign2422 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign2429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_ruleOpSingleAssign2456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign2484 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign2491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign2517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression2544 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression2551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression2577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr2604 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr2611 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_ruleOpOr2638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression2666 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression2673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression2699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd2726 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd2733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_ruleOpAnd2760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression2788 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression2795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression2821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality2848 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality2855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality2881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression2908 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression2915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression2941 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare2968 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare2975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare3001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression3028 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression3035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression3061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther3088 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther3095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther3121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression3148 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression3155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression3181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd3208 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd3215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd3241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression3268 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression3275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression3301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti3328 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti3335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti3361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation3388 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation3395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation3421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary3448 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary3455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary3481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression3508 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression3515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression3541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation3568 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation3575 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation3601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix3628 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix3635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix3661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall3688 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall3695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall3721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression3748 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression3755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression3781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral3808 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral3815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral3841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral3868 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral3875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral3901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral3928 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral3935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral3961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral3988 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral3995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral4021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure4048 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure4055 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets002 {
+        public static final BitSet FOLLOW_rule__XClosure__Group__0_in_ruleXClosure4081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure4108 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure4115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure4141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure4168 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure4175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure4201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression4228 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression4235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression4261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression4288 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression4295 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression4321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression4348 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression4355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression4381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart4408 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart4415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart4441 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression4468 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression4475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression4501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression4528 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression4535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression4561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression4588 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression4595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression4621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression4648 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression4655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression4681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression4708 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression4715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression4741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration4768 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration4775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration4801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration4828 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration4835 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration4861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter4888 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter4895 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter4921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter4948 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter4955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter4981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall5008 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall5015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall5041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID5068 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID5075 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID5101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper5128 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper5135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper5161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall5188 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall5195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall5221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral5248 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral5255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral5281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral5308 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral5315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral5341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral5368 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral5375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral5401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral5428 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral5435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral5461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral5488 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral5495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral5521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression5548 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression5555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression5581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression5608 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression5615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression5641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression5668 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression5675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression5701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression5728 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression5735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression5761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause5788 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause5795 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause5821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName5848 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName5855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName5881 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber5913 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumber5920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_in_ruleNumber5950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference5979 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference5986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference6012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets6039 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets6046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets6072 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets003 {
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef6099 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef6106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef6132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference6159 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference6166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference6192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference6219 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference6226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference6252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference6279 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference6286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference6312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound6339 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound6346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound6372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded6399 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded6406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded6432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound6459 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound6466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound6492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded6519 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded6526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded6552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard6581 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard6588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard6614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID6641 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidID6648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID6674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration6702 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration6709 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration6735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport6762 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport6769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport6797 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport6809 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__ConstraintSeverity__Alternatives_in_ruleConstraintSeverity6849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DateType__Alternatives_in_ruleDateType6885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LVisibility__Alternatives_in_ruleLVisibility6921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LComparatorType__Alternatives_in_ruleLComparatorType6957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LowerBound__Alternatives_in_ruleLowerBound6993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UpperBound__Alternatives_in_ruleUpperBound7029 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__0_in_rule__DataType__Alternatives_27065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__0_in_rule__DataType__Alternatives_27083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__0_in_rule__DataType__Alternatives_27101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_rule__DataTypeConstraint__Alternatives7135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_rule__DataTypeConstraint__Alternatives7152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_rule__DataTypeConstraint__Alternatives7169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_rule__DataTypeConstraint__Alternatives7186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_rule__DataTypeConstraint__Alternatives7203 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_rule__DataTypeConstraint__Alternatives7220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_rule__DataTypeConstraint__Alternatives7237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__DataTypeConstraint__Alternatives7254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__DataTypeConstraint__Alternatives7271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_rule__DataTypeConstraint__Alternatives7288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_rule__DataTypeConstraint__Alternatives7305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_rule__DateConstraint__Alternatives7337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_rule__DateConstraint__Alternatives7354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__DateConstraint__Alternatives7371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__DateConstraint__Alternatives7388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__BlobTypeConstraint__Alternatives7420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__BlobTypeConstraint__Alternatives7437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_rule__ScalarType__Alternatives7469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_rule__ScalarType__Alternatives7486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0_in_rule__AttributeMatchingConstraint__Alternatives_27518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1_in_rule__AttributeMatchingConstraint__Alternatives_27536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ValidIDWithKeywords__Alternatives7570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ValidIDWithKeywords__Alternatives7590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__ValidIDWithKeywords__Alternatives7610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__ValidIDWithKeywords__Alternatives7630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__ValidIDWithKeywords__Alternatives7650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__0_in_rule__ValidIDWithKeywords__Alternatives7669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__ValidIDWithKeywords__Alternatives7688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_22_in_rule__ValidIDWithKeywords__Alternatives7708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ValidIDWithKeywords__Alternatives7728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__ValidIDWithKeywords__Alternatives7748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__ValidIDWithKeywords__Alternatives7768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__ValidIDWithKeywords__Alternatives7788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__ValidIDWithKeywords__Alternatives7808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__ValidIDWithKeywords__Alternatives7828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ValidIDWithKeywords__Alternatives7848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__ValidIDWithKeywords__Alternatives7868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__ValidIDWithKeywords__Alternatives7887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__LInt__Alternatives_07920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__LInt__Alternatives_07940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_17974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_17992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives8025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives8043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives8076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives8094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives8126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives8143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives8175 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives8193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__OpMultiAssign__Alternatives8227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpMultiAssign__Alternatives8247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__OpMultiAssign__Alternatives8267 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__OpMultiAssign__Alternatives8287 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets004 {
+        public static final BitSet FOLLOW_37_in_rule__OpMultiAssign__Alternatives8307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives8326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives8344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__OpEquality__Alternatives8378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__OpEquality__Alternatives8398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__OpEquality__Alternatives8418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__OpEquality__Alternatives8438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_18472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_18490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpCompare__Alternatives8524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives8543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpCompare__Alternatives8562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpCompare__Alternatives8582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__OpOther__Alternatives8617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__OpOther__Alternatives8637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives8656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__OpOther__Alternatives8675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__OpOther__Alternatives8695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0_in_rule__OpOther__Alternatives8714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0_in_rule__OpOther__Alternatives8732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__OpOther__Alternatives8751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__OpOther__Alternatives8771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0_in_rule__OpOther__Alternatives_5_18805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Alternatives_5_18824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0_in_rule__OpOther__Alternatives_6_18858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Alternatives_6_18877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__OpOther__Alternatives_6_18897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpAdd__Alternatives8932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpAdd__Alternatives8952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__OpMulti__Alternatives8987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__OpMulti__Alternatives9007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__OpMulti__Alternatives9027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__OpMulti__Alternatives9047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0_in_rule__XUnaryOperation__Alternatives9081 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_rule__XUnaryOperation__Alternatives9099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__OpUnary__Alternatives9132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpUnary__Alternatives9152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpUnary__Alternatives9172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__OpPostfix__Alternatives9207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__OpPostfix__Alternatives9227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0_in_rule__XMemberFeatureCall__Alternatives_19261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0_in_rule__XMemberFeatureCall__Alternatives_19279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_19313 = 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_19332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_19366 = 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_19385 = 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_19403 = 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_19436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_19454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_rule__XPrimaryExpression__Alternatives9487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__XPrimaryExpression__Alternatives9504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_rule__XPrimaryExpression__Alternatives9521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_rule__XPrimaryExpression__Alternatives9539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_rule__XPrimaryExpression__Alternatives9557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_rule__XPrimaryExpression__Alternatives9574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_rule__XPrimaryExpression__Alternatives9591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_rule__XPrimaryExpression__Alternatives9609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_rule__XPrimaryExpression__Alternatives9627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_rule__XPrimaryExpression__Alternatives9644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_rule__XPrimaryExpression__Alternatives9661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_rule__XPrimaryExpression__Alternatives9678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_rule__XPrimaryExpression__Alternatives9695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_rule__XPrimaryExpression__Alternatives9712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_rule__XPrimaryExpression__Alternatives9729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_rule__XLiteral__Alternatives9761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_rule__XLiteral__Alternatives9779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_rule__XLiteral__Alternatives9797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_rule__XLiteral__Alternatives9814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_rule__XLiteral__Alternatives9831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_rule__XLiteral__Alternatives9848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_rule__XLiteral__Alternatives9865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_rule__XCollectionLiteral__Alternatives9897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_rule__XCollectionLiteral__Alternatives9914 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0_in_rule__XSwitchExpression__Alternatives_29946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0_in_rule__XSwitchExpression__Alternatives_29964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0_in_rule__XCasePart__Alternatives_39997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__FallThroughAssignment_3_1_in_rule__XCasePart__Alternatives_310015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rule__XExpressionOrVarDeclaration__Alternatives10048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XExpressionOrVarDeclaration__Alternatives10065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__WriteableAssignment_1_0_in_rule__XVariableDeclaration__Alternatives_110097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__XVariableDeclaration__Alternatives_110116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0_in_rule__XVariableDeclaration__Alternatives_210150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_1_in_rule__XVariableDeclaration__Alternatives_210168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0_in_rule__XFeatureCall__Alternatives_3_110201 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0_in_rule__XFeatureCall__Alternatives_3_110219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__FeatureCallID__Alternatives10252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__FeatureCallID__Alternatives10270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__FeatureCallID__Alternatives10290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__FeatureCallID__Alternatives10310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__FeatureCallID__Alternatives10330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__IdOrSuper__Alternatives10364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__IdOrSuper__Alternatives10382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_0_in_rule__XConstructorCall__Alternatives_4_110416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0_in_rule__XConstructorCall__Alternatives_4_110434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__XBooleanLiteral__Alternatives_110468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__IsTrueAssignment_1_1_in_rule__XBooleanLiteral__Alternatives_110487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0_in_rule__XTryCatchFinallyExpression__Alternatives_310520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0_in_rule__XTryCatchFinallyExpression__Alternatives_310538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_HEX_in_rule__Number__Alternatives10571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__0_in_rule__Number__Alternatives10588 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets005 {
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_010621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_010638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_1_110670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_1_110687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0_in_rule__JvmTypeReference__Alternatives10719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_rule__JvmTypeReference__Alternatives10737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__JvmArgumentTypeReference__Alternatives10769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_rule__JvmArgumentTypeReference__Alternatives10786 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0_in_rule__JvmWildcardTypeReference__Alternatives_210818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0_in_rule__JvmWildcardTypeReference__Alternatives_210836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0_in_rule__XImportDeclaration__Alternatives_110869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_1_in_rule__XImportDeclaration__Alternatives_110887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedNamespaceAssignment_1_2_in_rule__XImportDeclaration__Alternatives_110905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__WildcardAssignment_1_0_3_0_in_rule__XImportDeclaration__Alternatives_1_0_310938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__MemberNameAssignment_1_0_3_1_in_rule__XImportDeclaration__Alternatives_1_0_310956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_rule__ConstraintSeverity__Alternatives10990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__ConstraintSeverity__Alternatives11011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_rule__ConstraintSeverity__Alternatives11032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__DateType__Alternatives11068 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_rule__DateType__Alternatives11089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__DateType__Alternatives11110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__LVisibility__Alternatives11146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__LVisibility__Alternatives11167 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__LVisibility__Alternatives11188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__LVisibility__Alternatives11209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__LComparatorType__Alternatives11245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__LComparatorType__Alternatives11266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__LComparatorType__Alternatives11287 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__LComparatorType__Alternatives11308 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__LComparatorType__Alternatives11329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__LComparatorType__Alternatives11350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__LowerBound__Alternatives11386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__LowerBound__Alternatives11407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__LowerBound__Alternatives11428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__LowerBound__Alternatives11449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__LowerBound__Alternatives11470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__UpperBound__Alternatives11506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__UpperBound__Alternatives11527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__0__Impl_in_rule__TypedPackage__Group__011560 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__1_in_rule__TypedPackage__Group__011563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__1__Impl_in_rule__TypedPackage__Group__111621 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__2_in_rule__TypedPackage__Group__111624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__TypedPackage__Group__1__Impl11652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__2__Impl_in_rule__TypedPackage__Group__211683 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__3_in_rule__TypedPackage__Group__211686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__NameAssignment_2_in_rule__TypedPackage__Group__2__Impl11713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__3__Impl_in_rule__TypedPackage__Group__311743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__0_in_rule__TypedPackage__Group__3__Impl11770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__0__Impl_in_rule__TypedPackage__Group_3__011809 = new BitSet(new long[]{0x4000000000000000L,0x0000080000090000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__1_in_rule__TypedPackage__Group_3__011812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__TypedPackage__Group_3__0__Impl11840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__1__Impl_in_rule__TypedPackage__Group_3__111871 = new BitSet(new long[]{0x4000000000000000L,0x0000080000090000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__2_in_rule__TypedPackage__Group_3__111874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__ImportsAssignment_3_1_in_rule__TypedPackage__Group_3__1__Impl11901 = new BitSet(new long[]{0x4000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__2__Impl_in_rule__TypedPackage__Group_3__211932 = new BitSet(new long[]{0x4000000000000000L,0x0000080000090000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__3_in_rule__TypedPackage__Group_3__211935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__TypesAssignment_3_2_in_rule__TypedPackage__Group_3__2__Impl11962 = new BitSet(new long[]{0x0000000000000002L,0x0000080000080000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__3__Impl_in_rule__TypedPackage__Group_3__311993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__TypedPackage__Group_3__3__Impl12021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__0__Impl_in_rule__Class__Group__012060 = new BitSet(new long[]{0x0000000000000000L,0x0001000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group__1_in_rule__Class__Group__012063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__1__Impl_in_rule__Class__Group__112121 = new BitSet(new long[]{0x0000000000000000L,0x0001000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group__2_in_rule__Class__Group__112124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__AnnotationsAssignment_1_in_rule__Class__Group__1__Impl12151 = new BitSet(new long[]{0x0000000000000002L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__Class__Group__2__Impl_in_rule__Class__Group__212182 = new BitSet(new long[]{0x0000000000000000L,0x0001000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group__3_in_rule__Class__Group__212185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__3__Impl_in_rule__Class__Group__312243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__Class__Group__3__Impl12271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__012310 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Import__Group__1_in_rule__Import__Group__012313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__Import__Group__0__Impl12341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__112372 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__Import__Group__2_in_rule__Import__Group__112375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__ImportedNamespaceAssignment_1_in_rule__Import__Group__1__Impl12402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__2__Impl_in_rule__Import__Group__212432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__Import__Group__2__Impl12460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__0__Impl_in_rule__DataType__Group__012497 = new BitSet(new long[]{0x000000007FFF0010L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__1_in_rule__DataType__Group__012500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__DataType__Group__0__Impl12528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__1__Impl_in_rule__DataType__Group__112559 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L,0x0000000000000600L});
+        public static final BitSet FOLLOW_rule__DataType__Group__2_in_rule__DataType__Group__112562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__NameAssignment_1_in_rule__DataType__Group__1__Impl12589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__2__Impl_in_rule__DataType__Group__212619 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__3_in_rule__DataType__Group__212622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Alternatives_2_in_rule__DataType__Group__2__Impl12649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__3__Impl_in_rule__DataType__Group__312679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__DataType__Group__3__Impl12708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__0__Impl_in_rule__DataType__Group_2_0__012749 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__1_in_rule__DataType__Group_2_0__012752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__DataType__Group_2_0__0__Impl12780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__1__Impl_in_rule__DataType__Group_2_0__112811 = new BitSet(new long[]{0x0000000000000000L,0x000007E782200000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__2_in_rule__DataType__Group_2_0__112814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__JvmTypeReferenceAssignment_2_0_1_in_rule__DataType__Group_2_0__1__Impl12841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__2__Impl_in_rule__DataType__Group_2_0__212871 = new BitSet(new long[]{0x0000000000000000L,0x000007E782200000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__3_in_rule__DataType__Group_2_0__212874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__AsPrimitiveAssignment_2_0_2_in_rule__DataType__Group_2_0__2__Impl12901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__3__Impl_in_rule__DataType__Group_2_0__312932 = new BitSet(new long[]{0x0000000000000000L,0x000007E782200000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__4_in_rule__DataType__Group_2_0__312935 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_0_3_in_rule__DataType__Group_2_0__3__Impl12962 = new BitSet(new long[]{0x0000000000000002L,0x000007E782000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__4__Impl_in_rule__DataType__Group_2_0__412993 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets006 {
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__0_in_rule__DataType__Group_2_0__4__Impl13020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__0__Impl_in_rule__DataType__Group_2_0_4__013061 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__1_in_rule__DataType__Group_2_0_4__013064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__DataType__Group_2_0_4__0__Impl13092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__1__Impl_in_rule__DataType__Group_2_0_4__113123 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__2_in_rule__DataType__Group_2_0_4__113126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DataType__Group_2_0_4__1__Impl13154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__2__Impl_in_rule__DataType__Group_2_0_4__213185 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__3_in_rule__DataType__Group_2_0_4__213188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_0_4_2_in_rule__DataType__Group_2_0_4__2__Impl13215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__3__Impl_in_rule__DataType__Group_2_0_4__313245 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__4_in_rule__DataType__Group_2_0_4__313248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__0_in_rule__DataType__Group_2_0_4__3__Impl13275 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__4__Impl_in_rule__DataType__Group_2_0_4__413306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DataType__Group_2_0_4__4__Impl13334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__0__Impl_in_rule__DataType__Group_2_0_4_3__013375 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__1_in_rule__DataType__Group_2_0_4_3__013378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group_2_0_4_3__0__Impl13406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__1__Impl_in_rule__DataType__Group_2_0_4_3__113437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_0_4_3_1_in_rule__DataType__Group_2_0_4_3__1__Impl13464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__0__Impl_in_rule__DataType__Group_2_1__013498 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000060L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__1_in_rule__DataType__Group_2_1__013501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__DateAssignment_2_1_0_in_rule__DataType__Group_2_1__0__Impl13528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__1__Impl_in_rule__DataType__Group_2_1__113558 = new BitSet(new long[]{0x0000000000000000L,0x0000019800200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__2_in_rule__DataType__Group_2_1__113561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__DateTypeAssignment_2_1_1_in_rule__DataType__Group_2_1__1__Impl13588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__2__Impl_in_rule__DataType__Group_2_1__213618 = new BitSet(new long[]{0x0000000000000000L,0x0000019800200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__3_in_rule__DataType__Group_2_1__213621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_1_2_in_rule__DataType__Group_2_1__2__Impl13648 = new BitSet(new long[]{0x0000000000000002L,0x0000019800000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__3__Impl_in_rule__DataType__Group_2_1__313679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__0_in_rule__DataType__Group_2_1__3__Impl13706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__0__Impl_in_rule__DataType__Group_2_1_3__013745 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__1_in_rule__DataType__Group_2_1_3__013748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__DataType__Group_2_1_3__0__Impl13776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__1__Impl_in_rule__DataType__Group_2_1_3__113807 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__2_in_rule__DataType__Group_2_1_3__113810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DataType__Group_2_1_3__1__Impl13838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__2__Impl_in_rule__DataType__Group_2_1_3__213869 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__3_in_rule__DataType__Group_2_1_3__213872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_1_3_2_in_rule__DataType__Group_2_1_3__2__Impl13899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__3__Impl_in_rule__DataType__Group_2_1_3__313929 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__4_in_rule__DataType__Group_2_1_3__313932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__0_in_rule__DataType__Group_2_1_3__3__Impl13959 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__4__Impl_in_rule__DataType__Group_2_1_3__413990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DataType__Group_2_1_3__4__Impl14018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__0__Impl_in_rule__DataType__Group_2_1_3_3__014059 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__1_in_rule__DataType__Group_2_1_3_3__014062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group_2_1_3_3__0__Impl14090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__1__Impl_in_rule__DataType__Group_2_1_3_3__114121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_1_3_3_1_in_rule__DataType__Group_2_1_3_3__1__Impl14148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__0__Impl_in_rule__DataType__Group_2_2__014182 = new BitSet(new long[]{0x0000000000000000L,0x0000018000200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__1_in_rule__DataType__Group_2_2__014185 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__AsBlobAssignment_2_2_0_in_rule__DataType__Group_2_2__0__Impl14212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__1__Impl_in_rule__DataType__Group_2_2__114242 = new BitSet(new long[]{0x0000000000000000L,0x0000018000200000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__2_in_rule__DataType__Group_2_2__114245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_2_1_in_rule__DataType__Group_2_2__1__Impl14272 = new BitSet(new long[]{0x0000000000000002L,0x0000018000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__2__Impl_in_rule__DataType__Group_2_2__214303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__0_in_rule__DataType__Group_2_2__2__Impl14330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__0__Impl_in_rule__DataType__Group_2_2_2__014367 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__1_in_rule__DataType__Group_2_2_2__014370 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__DataType__Group_2_2_2__0__Impl14398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__1__Impl_in_rule__DataType__Group_2_2_2__114429 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__2_in_rule__DataType__Group_2_2_2__114432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DataType__Group_2_2_2__1__Impl14460 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__2__Impl_in_rule__DataType__Group_2_2_2__214491 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__3_in_rule__DataType__Group_2_2_2__214494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_2_2_2_in_rule__DataType__Group_2_2_2__2__Impl14521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__3__Impl_in_rule__DataType__Group_2_2_2__314551 = new BitSet(new long[]{0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__4_in_rule__DataType__Group_2_2_2__314554 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__0_in_rule__DataType__Group_2_2_2__3__Impl14581 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__4__Impl_in_rule__DataType__Group_2_2_2__414612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DataType__Group_2_2_2__4__Impl14640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__0__Impl_in_rule__DataType__Group_2_2_2_3__014681 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__1_in_rule__DataType__Group_2_2_2_3__014684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group_2_2_2_3__0__Impl14712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__1__Impl_in_rule__DataType__Group_2_2_2_3__114743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_2_2_3_1_in_rule__DataType__Group_2_2_2_3__1__Impl14770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__0__Impl_in_rule__DtCAssertFalse__Group__014804 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__1_in_rule__DtCAssertFalse__Group__014807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__1__Impl_in_rule__DtCAssertFalse__Group__114865 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__2_in_rule__DtCAssertFalse__Group__114868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__DtCAssertFalse__Group__1__Impl14896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__2__Impl_in_rule__DtCAssertFalse__Group__214927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__UnorderedGroup_2_in_rule__DtCAssertFalse__Group__2__Impl14954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__0__Impl_in_rule__DtCAssertFalse__Group_2_0__014991 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__1_in_rule__DtCAssertFalse__Group_2_0__014994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCAssertFalse__Group_2_0__0__Impl15022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__1__Impl_in_rule__DtCAssertFalse__Group_2_0__115053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__0_in_rule__DtCAssertFalse__Group_2_0__1__Impl15080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__0__Impl_in_rule__DtCAssertFalse__Group_2_0_1__015115 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__1_in_rule__DtCAssertFalse__Group_2_0_1__015118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCAssertFalse__Group_2_0_1__0__Impl15146 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__1__Impl_in_rule__DtCAssertFalse__Group_2_0_1__115177 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__2_in_rule__DtCAssertFalse__Group_2_0_1__115180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_0_1__1__Impl15208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__2__Impl_in_rule__DtCAssertFalse__Group_2_0_1__215239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2_in_rule__DtCAssertFalse__Group_2_0_1__2__Impl15266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__0__Impl_in_rule__DtCAssertFalse__Group_2_1__015302 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__1_in_rule__DtCAssertFalse__Group_2_1__015305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCAssertFalse__Group_2_1__0__Impl15333 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets007 {
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__1__Impl_in_rule__DtCAssertFalse__Group_2_1__115364 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__2_in_rule__DtCAssertFalse__Group_2_1__115367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_1__1__Impl15395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__2__Impl_in_rule__DtCAssertFalse__Group_2_1__215426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2_in_rule__DtCAssertFalse__Group_2_1__2__Impl15453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__0__Impl_in_rule__DtCAssertFalse__Group_2_2__015489 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__1_in_rule__DtCAssertFalse__Group_2_2__015492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__0_in_rule__DtCAssertFalse__Group_2_2__0__Impl15519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__1__Impl_in_rule__DtCAssertFalse__Group_2_2__115550 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCAssertFalse__Group_2_2__1__Impl15578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__0__Impl_in_rule__DtCAssertFalse__Group_2_2_0__015613 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__1_in_rule__DtCAssertFalse__Group_2_2_0__015616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCAssertFalse__Group_2_2_0__0__Impl15644 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__1__Impl_in_rule__DtCAssertFalse__Group_2_2_0__115675 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__2_in_rule__DtCAssertFalse__Group_2_2_0__115678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_2_0__1__Impl15706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__2__Impl_in_rule__DtCAssertFalse__Group_2_2_0__215737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__SeverityAssignment_2_2_0_2_in_rule__DtCAssertFalse__Group_2_2_0__2__Impl15764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__0__Impl_in_rule__DtCAssertTrue__Group__015800 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__1_in_rule__DtCAssertTrue__Group__015803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__1__Impl_in_rule__DtCAssertTrue__Group__115861 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__2_in_rule__DtCAssertTrue__Group__115864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__DtCAssertTrue__Group__1__Impl15892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__2__Impl_in_rule__DtCAssertTrue__Group__215923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__UnorderedGroup_2_in_rule__DtCAssertTrue__Group__2__Impl15950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__0__Impl_in_rule__DtCAssertTrue__Group_2_0__015987 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__1_in_rule__DtCAssertTrue__Group_2_0__015990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCAssertTrue__Group_2_0__0__Impl16018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__1__Impl_in_rule__DtCAssertTrue__Group_2_0__116049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__0_in_rule__DtCAssertTrue__Group_2_0__1__Impl16076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__0__Impl_in_rule__DtCAssertTrue__Group_2_0_1__016111 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__1_in_rule__DtCAssertTrue__Group_2_0_1__016114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCAssertTrue__Group_2_0_1__0__Impl16142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__1__Impl_in_rule__DtCAssertTrue__Group_2_0_1__116173 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__2_in_rule__DtCAssertTrue__Group_2_0_1__116176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_0_1__1__Impl16204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__2__Impl_in_rule__DtCAssertTrue__Group_2_0_1__216235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2_in_rule__DtCAssertTrue__Group_2_0_1__2__Impl16262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__0__Impl_in_rule__DtCAssertTrue__Group_2_1__016298 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__1_in_rule__DtCAssertTrue__Group_2_1__016301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCAssertTrue__Group_2_1__0__Impl16329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__1__Impl_in_rule__DtCAssertTrue__Group_2_1__116360 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__2_in_rule__DtCAssertTrue__Group_2_1__116363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_1__1__Impl16391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__2__Impl_in_rule__DtCAssertTrue__Group_2_1__216422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2_in_rule__DtCAssertTrue__Group_2_1__2__Impl16449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__0__Impl_in_rule__DtCAssertTrue__Group_2_2__016485 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__1_in_rule__DtCAssertTrue__Group_2_2__016488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__0_in_rule__DtCAssertTrue__Group_2_2__0__Impl16515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__1__Impl_in_rule__DtCAssertTrue__Group_2_2__116546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCAssertTrue__Group_2_2__1__Impl16574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__0__Impl_in_rule__DtCAssertTrue__Group_2_2_0__016609 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__1_in_rule__DtCAssertTrue__Group_2_2_0__016612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCAssertTrue__Group_2_2_0__0__Impl16640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__1__Impl_in_rule__DtCAssertTrue__Group_2_2_0__116671 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__2_in_rule__DtCAssertTrue__Group_2_2_0__116674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_2_0__1__Impl16702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__2__Impl_in_rule__DtCAssertTrue__Group_2_2_0__216733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__SeverityAssignment_2_2_0_2_in_rule__DtCAssertTrue__Group_2_2_0__2__Impl16760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__0__Impl_in_rule__DtCDecimalMax__Group__016796 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__1_in_rule__DtCDecimalMax__Group__016799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__1__Impl_in_rule__DtCDecimalMax__Group__116857 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__2_in_rule__DtCDecimalMax__Group__116860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__DtCDecimalMax__Group__1__Impl16888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__2__Impl_in_rule__DtCDecimalMax__Group__216919 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__3_in_rule__DtCDecimalMax__Group__216922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCDecimalMax__Group__2__Impl16950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__3__Impl_in_rule__DtCDecimalMax__Group__316981 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__4_in_rule__DtCDecimalMax__Group__316984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MaxAssignment_3_in_rule__DtCDecimalMax__Group__3__Impl17011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__4__Impl_in_rule__DtCDecimalMax__Group__417041 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__5_in_rule__DtCDecimalMax__Group__417044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__UnorderedGroup_4_in_rule__DtCDecimalMax__Group__4__Impl17071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__5__Impl_in_rule__DtCDecimalMax__Group__517102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCDecimalMax__Group__5__Impl17130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__0__Impl_in_rule__DtCDecimalMax__Group_4_0__017173 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__1_in_rule__DtCDecimalMax__Group_4_0__017176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDecimalMax__Group_4_0__0__Impl17204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__1__Impl_in_rule__DtCDecimalMax__Group_4_0__117235 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__0_in_rule__DtCDecimalMax__Group_4_0__1__Impl17262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__0__Impl_in_rule__DtCDecimalMax__Group_4_0_1__017297 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__1_in_rule__DtCDecimalMax__Group_4_0_1__017300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCDecimalMax__Group_4_0_1__0__Impl17328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__1__Impl_in_rule__DtCDecimalMax__Group_4_0_1__117359 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__2_in_rule__DtCDecimalMax__Group_4_0_1__117362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_0_1__1__Impl17390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__2__Impl_in_rule__DtCDecimalMax__Group_4_0_1__217421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2_in_rule__DtCDecimalMax__Group_4_0_1__2__Impl17448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__0__Impl_in_rule__DtCDecimalMax__Group_4_1__017484 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__1_in_rule__DtCDecimalMax__Group_4_1__017487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCDecimalMax__Group_4_1__0__Impl17515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__1__Impl_in_rule__DtCDecimalMax__Group_4_1__117546 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__2_in_rule__DtCDecimalMax__Group_4_1__117549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_1__1__Impl17577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__2__Impl_in_rule__DtCDecimalMax__Group_4_1__217608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2_in_rule__DtCDecimalMax__Group_4_1__2__Impl17635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__0__Impl_in_rule__DtCDecimalMax__Group_4_2__017671 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__1_in_rule__DtCDecimalMax__Group_4_2__017674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__0_in_rule__DtCDecimalMax__Group_4_2__0__Impl17701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__1__Impl_in_rule__DtCDecimalMax__Group_4_2__117732 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets008 {
+        public static final BitSet FOLLOW_93_in_rule__DtCDecimalMax__Group_4_2__1__Impl17760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__0__Impl_in_rule__DtCDecimalMax__Group_4_2_0__017795 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__1_in_rule__DtCDecimalMax__Group_4_2_0__017798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDecimalMax__Group_4_2_0__0__Impl17826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__1__Impl_in_rule__DtCDecimalMax__Group_4_2_0__117857 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__2_in_rule__DtCDecimalMax__Group_4_2_0__117860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_2_0__1__Impl17888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__2__Impl_in_rule__DtCDecimalMax__Group_4_2_0__217919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__SeverityAssignment_4_2_0_2_in_rule__DtCDecimalMax__Group_4_2_0__2__Impl17946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__0__Impl_in_rule__DtCDecimalMin__Group__017982 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__1_in_rule__DtCDecimalMin__Group__017985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__1__Impl_in_rule__DtCDecimalMin__Group__118043 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__2_in_rule__DtCDecimalMin__Group__118046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__DtCDecimalMin__Group__1__Impl18074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__2__Impl_in_rule__DtCDecimalMin__Group__218105 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__3_in_rule__DtCDecimalMin__Group__218108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCDecimalMin__Group__2__Impl18136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__3__Impl_in_rule__DtCDecimalMin__Group__318167 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__4_in_rule__DtCDecimalMin__Group__318170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MinAssignment_3_in_rule__DtCDecimalMin__Group__3__Impl18197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__4__Impl_in_rule__DtCDecimalMin__Group__418227 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__5_in_rule__DtCDecimalMin__Group__418230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__UnorderedGroup_4_in_rule__DtCDecimalMin__Group__4__Impl18257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__5__Impl_in_rule__DtCDecimalMin__Group__518288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCDecimalMin__Group__5__Impl18316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__0__Impl_in_rule__DtCDecimalMin__Group_4_0__018359 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__1_in_rule__DtCDecimalMin__Group_4_0__018362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDecimalMin__Group_4_0__0__Impl18390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__1__Impl_in_rule__DtCDecimalMin__Group_4_0__118421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__0_in_rule__DtCDecimalMin__Group_4_0__1__Impl18448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__0__Impl_in_rule__DtCDecimalMin__Group_4_0_1__018483 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__1_in_rule__DtCDecimalMin__Group_4_0_1__018486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCDecimalMin__Group_4_0_1__0__Impl18514 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__1__Impl_in_rule__DtCDecimalMin__Group_4_0_1__118545 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__2_in_rule__DtCDecimalMin__Group_4_0_1__118548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_0_1__1__Impl18576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__2__Impl_in_rule__DtCDecimalMin__Group_4_0_1__218607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2_in_rule__DtCDecimalMin__Group_4_0_1__2__Impl18634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__0__Impl_in_rule__DtCDecimalMin__Group_4_1__018670 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__1_in_rule__DtCDecimalMin__Group_4_1__018673 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCDecimalMin__Group_4_1__0__Impl18701 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__1__Impl_in_rule__DtCDecimalMin__Group_4_1__118732 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__2_in_rule__DtCDecimalMin__Group_4_1__118735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_1__1__Impl18763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__2__Impl_in_rule__DtCDecimalMin__Group_4_1__218794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2_in_rule__DtCDecimalMin__Group_4_1__2__Impl18821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__0__Impl_in_rule__DtCDecimalMin__Group_4_2__018857 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__1_in_rule__DtCDecimalMin__Group_4_2__018860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__0_in_rule__DtCDecimalMin__Group_4_2__0__Impl18887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__1__Impl_in_rule__DtCDecimalMin__Group_4_2__118918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDecimalMin__Group_4_2__1__Impl18946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__0__Impl_in_rule__DtCDecimalMin__Group_4_2_0__018981 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__1_in_rule__DtCDecimalMin__Group_4_2_0__018984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDecimalMin__Group_4_2_0__0__Impl19012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__1__Impl_in_rule__DtCDecimalMin__Group_4_2_0__119043 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__2_in_rule__DtCDecimalMin__Group_4_2_0__119046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_2_0__1__Impl19074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__2__Impl_in_rule__DtCDecimalMin__Group_4_2_0__219105 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__SeverityAssignment_4_2_0_2_in_rule__DtCDecimalMin__Group_4_2_0__2__Impl19132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__0__Impl_in_rule__DtCDigits__Group__019168 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__1_in_rule__DtCDigits__Group__019171 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__1__Impl_in_rule__DtCDigits__Group__119229 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__2_in_rule__DtCDigits__Group__119232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__DtCDigits__Group__1__Impl19260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__2__Impl_in_rule__DtCDigits__Group__219291 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__3_in_rule__DtCDigits__Group__219294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCDigits__Group__2__Impl19322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__3__Impl_in_rule__DtCDigits__Group__319353 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__4_in_rule__DtCDigits__Group__319356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__IntDigitsAssignment_3_in_rule__DtCDigits__Group__3__Impl19383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__4__Impl_in_rule__DtCDigits__Group__419413 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__5_in_rule__DtCDigits__Group__419416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DtCDigits__Group__4__Impl19444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__5__Impl_in_rule__DtCDigits__Group__519475 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__6_in_rule__DtCDigits__Group__519478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__FractionDigitsAssignment_5_in_rule__DtCDigits__Group__5__Impl19505 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__6__Impl_in_rule__DtCDigits__Group__619535 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__7_in_rule__DtCDigits__Group__619538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__UnorderedGroup_6_in_rule__DtCDigits__Group__6__Impl19565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__7__Impl_in_rule__DtCDigits__Group__719596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCDigits__Group__7__Impl19624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__0__Impl_in_rule__DtCDigits__Group_6_0__019671 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__1_in_rule__DtCDigits__Group_6_0__019674 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDigits__Group_6_0__0__Impl19702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__1__Impl_in_rule__DtCDigits__Group_6_0__119733 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__0_in_rule__DtCDigits__Group_6_0__1__Impl19760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__0__Impl_in_rule__DtCDigits__Group_6_0_1__019795 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__1_in_rule__DtCDigits__Group_6_0_1__019798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCDigits__Group_6_0_1__0__Impl19826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__1__Impl_in_rule__DtCDigits__Group_6_0_1__119857 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__2_in_rule__DtCDigits__Group_6_0_1__119860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_0_1__1__Impl19888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__2__Impl_in_rule__DtCDigits__Group_6_0_1__219919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__MsgCodeAssignment_6_0_1_2_in_rule__DtCDigits__Group_6_0_1__2__Impl19946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__0__Impl_in_rule__DtCDigits__Group_6_1__019982 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__1_in_rule__DtCDigits__Group_6_1__019985 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCDigits__Group_6_1__0__Impl20013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__1__Impl_in_rule__DtCDigits__Group_6_1__120044 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__2_in_rule__DtCDigits__Group_6_1__120047 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_1__1__Impl20075 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets009 {
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__2__Impl_in_rule__DtCDigits__Group_6_1__220106 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__MsgI18nKeyAssignment_6_1_2_in_rule__DtCDigits__Group_6_1__2__Impl20133 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__0__Impl_in_rule__DtCDigits__Group_6_2__020169 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__1_in_rule__DtCDigits__Group_6_2__020172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__0_in_rule__DtCDigits__Group_6_2__0__Impl20199 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__1__Impl_in_rule__DtCDigits__Group_6_2__120230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDigits__Group_6_2__1__Impl20258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__0__Impl_in_rule__DtCDigits__Group_6_2_0__020293 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__1_in_rule__DtCDigits__Group_6_2_0__020296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDigits__Group_6_2_0__0__Impl20324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__1__Impl_in_rule__DtCDigits__Group_6_2_0__120355 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__2_in_rule__DtCDigits__Group_6_2_0__120358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_2_0__1__Impl20386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__2__Impl_in_rule__DtCDigits__Group_6_2_0__220417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__SeverityAssignment_6_2_0_2_in_rule__DtCDigits__Group_6_2_0__2__Impl20444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__0__Impl_in_rule__DtCFuture__Group__020480 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__1_in_rule__DtCFuture__Group__020483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__1__Impl_in_rule__DtCFuture__Group__120541 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__2_in_rule__DtCFuture__Group__120544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCFuture__Group__1__Impl20572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__2__Impl_in_rule__DtCFuture__Group__220603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__UnorderedGroup_2_in_rule__DtCFuture__Group__2__Impl20630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__0__Impl_in_rule__DtCFuture__Group_2_0__020667 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__1_in_rule__DtCFuture__Group_2_0__020670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCFuture__Group_2_0__0__Impl20698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__1__Impl_in_rule__DtCFuture__Group_2_0__120729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__0_in_rule__DtCFuture__Group_2_0__1__Impl20756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__0__Impl_in_rule__DtCFuture__Group_2_0_1__020791 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__1_in_rule__DtCFuture__Group_2_0_1__020794 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCFuture__Group_2_0_1__0__Impl20822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__1__Impl_in_rule__DtCFuture__Group_2_0_1__120853 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__2_in_rule__DtCFuture__Group_2_0_1__120856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_0_1__1__Impl20884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__2__Impl_in_rule__DtCFuture__Group_2_0_1__220915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__MsgCodeAssignment_2_0_1_2_in_rule__DtCFuture__Group_2_0_1__2__Impl20942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__0__Impl_in_rule__DtCFuture__Group_2_1__020978 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__1_in_rule__DtCFuture__Group_2_1__020981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCFuture__Group_2_1__0__Impl21009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__1__Impl_in_rule__DtCFuture__Group_2_1__121040 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__2_in_rule__DtCFuture__Group_2_1__121043 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_1__1__Impl21071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__2__Impl_in_rule__DtCFuture__Group_2_1__221102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__MsgI18nKeyAssignment_2_1_2_in_rule__DtCFuture__Group_2_1__2__Impl21129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__0__Impl_in_rule__DtCFuture__Group_2_2__021165 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__1_in_rule__DtCFuture__Group_2_2__021168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__0_in_rule__DtCFuture__Group_2_2__0__Impl21195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__1__Impl_in_rule__DtCFuture__Group_2_2__121226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCFuture__Group_2_2__1__Impl21254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__0__Impl_in_rule__DtCFuture__Group_2_2_0__021289 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__1_in_rule__DtCFuture__Group_2_2_0__021292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCFuture__Group_2_2_0__0__Impl21320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__1__Impl_in_rule__DtCFuture__Group_2_2_0__121351 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__2_in_rule__DtCFuture__Group_2_2_0__121354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_2_0__1__Impl21382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__2__Impl_in_rule__DtCFuture__Group_2_2_0__221413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__SeverityAssignment_2_2_0_2_in_rule__DtCFuture__Group_2_2_0__2__Impl21440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__0__Impl_in_rule__DtCPast__Group__021476 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__1_in_rule__DtCPast__Group__021479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__1__Impl_in_rule__DtCPast__Group__121537 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__2_in_rule__DtCPast__Group__121540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCPast__Group__1__Impl21568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__2__Impl_in_rule__DtCPast__Group__221599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__UnorderedGroup_2_in_rule__DtCPast__Group__2__Impl21626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__0__Impl_in_rule__DtCPast__Group_2_0__021663 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__1_in_rule__DtCPast__Group_2_0__021666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCPast__Group_2_0__0__Impl21694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__1__Impl_in_rule__DtCPast__Group_2_0__121725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__0_in_rule__DtCPast__Group_2_0__1__Impl21752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__0__Impl_in_rule__DtCPast__Group_2_0_1__021787 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__1_in_rule__DtCPast__Group_2_0_1__021790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCPast__Group_2_0_1__0__Impl21818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__1__Impl_in_rule__DtCPast__Group_2_0_1__121849 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__2_in_rule__DtCPast__Group_2_0_1__121852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_0_1__1__Impl21880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__2__Impl_in_rule__DtCPast__Group_2_0_1__221911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__MsgCodeAssignment_2_0_1_2_in_rule__DtCPast__Group_2_0_1__2__Impl21938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__0__Impl_in_rule__DtCPast__Group_2_1__021974 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__1_in_rule__DtCPast__Group_2_1__021977 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCPast__Group_2_1__0__Impl22005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__1__Impl_in_rule__DtCPast__Group_2_1__122036 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__2_in_rule__DtCPast__Group_2_1__122039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_1__1__Impl22067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__2__Impl_in_rule__DtCPast__Group_2_1__222098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__MsgI18nKeyAssignment_2_1_2_in_rule__DtCPast__Group_2_1__2__Impl22125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__0__Impl_in_rule__DtCPast__Group_2_2__022161 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__1_in_rule__DtCPast__Group_2_2__022164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__0_in_rule__DtCPast__Group_2_2__0__Impl22191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__1__Impl_in_rule__DtCPast__Group_2_2__122222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCPast__Group_2_2__1__Impl22250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__0__Impl_in_rule__DtCPast__Group_2_2_0__022285 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__1_in_rule__DtCPast__Group_2_2_0__022288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCPast__Group_2_2_0__0__Impl22316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__1__Impl_in_rule__DtCPast__Group_2_2_0__122347 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__2_in_rule__DtCPast__Group_2_2_0__122350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_2_0__1__Impl22378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__2__Impl_in_rule__DtCPast__Group_2_2_0__222409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__SeverityAssignment_2_2_0_2_in_rule__DtCPast__Group_2_2_0__2__Impl22436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__0__Impl_in_rule__DtCNumericMax__Group__022472 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__1_in_rule__DtCNumericMax__Group__022475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__1__Impl_in_rule__DtCNumericMax__Group__122533 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    }
+
+    protected static class FollowSets010 {
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__2_in_rule__DtCNumericMax__Group__122536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCNumericMax__Group__1__Impl22564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__2__Impl_in_rule__DtCNumericMax__Group__222595 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__3_in_rule__DtCNumericMax__Group__222598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCNumericMax__Group__2__Impl22626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__3__Impl_in_rule__DtCNumericMax__Group__322657 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__4_in_rule__DtCNumericMax__Group__322660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MaxAssignment_3_in_rule__DtCNumericMax__Group__3__Impl22687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__4__Impl_in_rule__DtCNumericMax__Group__422717 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__5_in_rule__DtCNumericMax__Group__422720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__UnorderedGroup_4_in_rule__DtCNumericMax__Group__4__Impl22747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__5__Impl_in_rule__DtCNumericMax__Group__522778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCNumericMax__Group__5__Impl22806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__0__Impl_in_rule__DtCNumericMax__Group_4_0__022849 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__1_in_rule__DtCNumericMax__Group_4_0__022852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNumericMax__Group_4_0__0__Impl22880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__1__Impl_in_rule__DtCNumericMax__Group_4_0__122911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__0_in_rule__DtCNumericMax__Group_4_0__1__Impl22938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__0__Impl_in_rule__DtCNumericMax__Group_4_0_1__022973 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__1_in_rule__DtCNumericMax__Group_4_0_1__022976 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNumericMax__Group_4_0_1__0__Impl23004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__1__Impl_in_rule__DtCNumericMax__Group_4_0_1__123035 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__2_in_rule__DtCNumericMax__Group_4_0_1__123038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_0_1__1__Impl23066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__2__Impl_in_rule__DtCNumericMax__Group_4_0_1__223097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2_in_rule__DtCNumericMax__Group_4_0_1__2__Impl23124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__0__Impl_in_rule__DtCNumericMax__Group_4_1__023160 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__1_in_rule__DtCNumericMax__Group_4_1__023163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNumericMax__Group_4_1__0__Impl23191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__1__Impl_in_rule__DtCNumericMax__Group_4_1__123222 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__2_in_rule__DtCNumericMax__Group_4_1__123225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_1__1__Impl23253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__2__Impl_in_rule__DtCNumericMax__Group_4_1__223284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2_in_rule__DtCNumericMax__Group_4_1__2__Impl23311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__0__Impl_in_rule__DtCNumericMax__Group_4_2__023347 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__1_in_rule__DtCNumericMax__Group_4_2__023350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__0_in_rule__DtCNumericMax__Group_4_2__0__Impl23377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__1__Impl_in_rule__DtCNumericMax__Group_4_2__123408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNumericMax__Group_4_2__1__Impl23436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__0__Impl_in_rule__DtCNumericMax__Group_4_2_0__023471 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__1_in_rule__DtCNumericMax__Group_4_2_0__023474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNumericMax__Group_4_2_0__0__Impl23502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__1__Impl_in_rule__DtCNumericMax__Group_4_2_0__123533 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__2_in_rule__DtCNumericMax__Group_4_2_0__123536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_2_0__1__Impl23564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__2__Impl_in_rule__DtCNumericMax__Group_4_2_0__223595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__SeverityAssignment_4_2_0_2_in_rule__DtCNumericMax__Group_4_2_0__2__Impl23622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__0__Impl_in_rule__DtCNumericMin__Group__023658 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__1_in_rule__DtCNumericMin__Group__023661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__1__Impl_in_rule__DtCNumericMin__Group__123719 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__2_in_rule__DtCNumericMin__Group__123722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCNumericMin__Group__1__Impl23750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__2__Impl_in_rule__DtCNumericMin__Group__223781 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__3_in_rule__DtCNumericMin__Group__223784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCNumericMin__Group__2__Impl23812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__3__Impl_in_rule__DtCNumericMin__Group__323843 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__4_in_rule__DtCNumericMin__Group__323846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MinAssignment_3_in_rule__DtCNumericMin__Group__3__Impl23873 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__4__Impl_in_rule__DtCNumericMin__Group__423903 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__5_in_rule__DtCNumericMin__Group__423906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__UnorderedGroup_4_in_rule__DtCNumericMin__Group__4__Impl23933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__5__Impl_in_rule__DtCNumericMin__Group__523964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCNumericMin__Group__5__Impl23992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__0__Impl_in_rule__DtCNumericMin__Group_4_0__024035 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__1_in_rule__DtCNumericMin__Group_4_0__024038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNumericMin__Group_4_0__0__Impl24066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__1__Impl_in_rule__DtCNumericMin__Group_4_0__124097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__0_in_rule__DtCNumericMin__Group_4_0__1__Impl24124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__0__Impl_in_rule__DtCNumericMin__Group_4_0_1__024159 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__1_in_rule__DtCNumericMin__Group_4_0_1__024162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNumericMin__Group_4_0_1__0__Impl24190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__1__Impl_in_rule__DtCNumericMin__Group_4_0_1__124221 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__2_in_rule__DtCNumericMin__Group_4_0_1__124224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_0_1__1__Impl24252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__2__Impl_in_rule__DtCNumericMin__Group_4_0_1__224283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2_in_rule__DtCNumericMin__Group_4_0_1__2__Impl24310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__0__Impl_in_rule__DtCNumericMin__Group_4_1__024346 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__1_in_rule__DtCNumericMin__Group_4_1__024349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNumericMin__Group_4_1__0__Impl24377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__1__Impl_in_rule__DtCNumericMin__Group_4_1__124408 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__2_in_rule__DtCNumericMin__Group_4_1__124411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_1__1__Impl24439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__2__Impl_in_rule__DtCNumericMin__Group_4_1__224470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2_in_rule__DtCNumericMin__Group_4_1__2__Impl24497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__0__Impl_in_rule__DtCNumericMin__Group_4_2__024533 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__1_in_rule__DtCNumericMin__Group_4_2__024536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__0_in_rule__DtCNumericMin__Group_4_2__0__Impl24563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__1__Impl_in_rule__DtCNumericMin__Group_4_2__124594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNumericMin__Group_4_2__1__Impl24622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__0__Impl_in_rule__DtCNumericMin__Group_4_2_0__024657 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__1_in_rule__DtCNumericMin__Group_4_2_0__024660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNumericMin__Group_4_2_0__0__Impl24688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__1__Impl_in_rule__DtCNumericMin__Group_4_2_0__124719 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__2_in_rule__DtCNumericMin__Group_4_2_0__124722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_2_0__1__Impl24750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__2__Impl_in_rule__DtCNumericMin__Group_4_2_0__224781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__SeverityAssignment_4_2_0_2_in_rule__DtCNumericMin__Group_4_2_0__2__Impl24808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__0__Impl_in_rule__DtCNotNull__Group__024844 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__1_in_rule__DtCNotNull__Group__024847 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__1__Impl_in_rule__DtCNotNull__Group__124905 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+    }
+
+    protected static class FollowSets011 {
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__2_in_rule__DtCNotNull__Group__124908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCNotNull__Group__1__Impl24936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__2__Impl_in_rule__DtCNotNull__Group__224967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__UnorderedGroup_2_in_rule__DtCNotNull__Group__2__Impl24994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__0__Impl_in_rule__DtCNotNull__Group_2_0__025031 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__1_in_rule__DtCNotNull__Group_2_0__025034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNotNull__Group_2_0__0__Impl25062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__1__Impl_in_rule__DtCNotNull__Group_2_0__125093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__0_in_rule__DtCNotNull__Group_2_0__1__Impl25120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__0__Impl_in_rule__DtCNotNull__Group_2_0_1__025155 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__1_in_rule__DtCNotNull__Group_2_0_1__025158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNotNull__Group_2_0_1__0__Impl25186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__1__Impl_in_rule__DtCNotNull__Group_2_0_1__125217 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__2_in_rule__DtCNotNull__Group_2_0_1__125220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_0_1__1__Impl25248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__2__Impl_in_rule__DtCNotNull__Group_2_0_1__225279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__MsgCodeAssignment_2_0_1_2_in_rule__DtCNotNull__Group_2_0_1__2__Impl25306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__0__Impl_in_rule__DtCNotNull__Group_2_1__025342 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__1_in_rule__DtCNotNull__Group_2_1__025345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNotNull__Group_2_1__0__Impl25373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__1__Impl_in_rule__DtCNotNull__Group_2_1__125404 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__2_in_rule__DtCNotNull__Group_2_1__125407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_1__1__Impl25435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__2__Impl_in_rule__DtCNotNull__Group_2_1__225466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2_in_rule__DtCNotNull__Group_2_1__2__Impl25493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__0__Impl_in_rule__DtCNotNull__Group_2_2__025529 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__1_in_rule__DtCNotNull__Group_2_2__025532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__0_in_rule__DtCNotNull__Group_2_2__0__Impl25559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__1__Impl_in_rule__DtCNotNull__Group_2_2__125590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNotNull__Group_2_2__1__Impl25618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__0__Impl_in_rule__DtCNotNull__Group_2_2_0__025653 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__1_in_rule__DtCNotNull__Group_2_2_0__025656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNotNull__Group_2_2_0__0__Impl25684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__1__Impl_in_rule__DtCNotNull__Group_2_2_0__125715 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__2_in_rule__DtCNotNull__Group_2_2_0__125718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_2_0__1__Impl25746 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__2__Impl_in_rule__DtCNotNull__Group_2_2_0__225777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__SeverityAssignment_2_2_0_2_in_rule__DtCNotNull__Group_2_2_0__2__Impl25804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__0__Impl_in_rule__DtCNull__Group__025840 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__1_in_rule__DtCNull__Group__025843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__1__Impl_in_rule__DtCNull__Group__125901 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__2_in_rule__DtCNull__Group__125904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_rule__DtCNull__Group__1__Impl25932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__2__Impl_in_rule__DtCNull__Group__225963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__UnorderedGroup_2_in_rule__DtCNull__Group__2__Impl25990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__0__Impl_in_rule__DtCNull__Group_2_0__026027 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__1_in_rule__DtCNull__Group_2_0__026030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCNull__Group_2_0__0__Impl26058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__1__Impl_in_rule__DtCNull__Group_2_0__126089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__0_in_rule__DtCNull__Group_2_0__1__Impl26116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__0__Impl_in_rule__DtCNull__Group_2_0_1__026151 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__1_in_rule__DtCNull__Group_2_0_1__026154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCNull__Group_2_0_1__0__Impl26182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__1__Impl_in_rule__DtCNull__Group_2_0_1__126213 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__2_in_rule__DtCNull__Group_2_0_1__126216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_0_1__1__Impl26244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__2__Impl_in_rule__DtCNull__Group_2_0_1__226275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__MsgCodeAssignment_2_0_1_2_in_rule__DtCNull__Group_2_0_1__2__Impl26302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__0__Impl_in_rule__DtCNull__Group_2_1__026338 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__1_in_rule__DtCNull__Group_2_1__026341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCNull__Group_2_1__0__Impl26369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__1__Impl_in_rule__DtCNull__Group_2_1__126400 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__2_in_rule__DtCNull__Group_2_1__126403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_1__1__Impl26431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__2__Impl_in_rule__DtCNull__Group_2_1__226462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__MsgI18nKeyAssignment_2_1_2_in_rule__DtCNull__Group_2_1__2__Impl26489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__0__Impl_in_rule__DtCNull__Group_2_2__026525 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__1_in_rule__DtCNull__Group_2_2__026528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__0_in_rule__DtCNull__Group_2_2__0__Impl26555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__1__Impl_in_rule__DtCNull__Group_2_2__126586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNull__Group_2_2__1__Impl26614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__0__Impl_in_rule__DtCNull__Group_2_2_0__026649 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__1_in_rule__DtCNull__Group_2_2_0__026652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNull__Group_2_2_0__0__Impl26680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__1__Impl_in_rule__DtCNull__Group_2_2_0__126711 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__2_in_rule__DtCNull__Group_2_2_0__126714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_2_0__1__Impl26742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__2__Impl_in_rule__DtCNull__Group_2_2_0__226773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__SeverityAssignment_2_2_0_2_in_rule__DtCNull__Group_2_2_0__2__Impl26800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__0__Impl_in_rule__DtCRegEx__Group__026836 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__1_in_rule__DtCRegEx__Group__026839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__1__Impl_in_rule__DtCRegEx__Group__126897 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__2_in_rule__DtCRegEx__Group__126900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_rule__DtCRegEx__Group__1__Impl26928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__2__Impl_in_rule__DtCRegEx__Group__226959 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__3_in_rule__DtCRegEx__Group__226962 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCRegEx__Group__2__Impl26990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__3__Impl_in_rule__DtCRegEx__Group__327021 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__4_in_rule__DtCRegEx__Group__327024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__PatternAssignment_3_in_rule__DtCRegEx__Group__3__Impl27051 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__4__Impl_in_rule__DtCRegEx__Group__427081 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__5_in_rule__DtCRegEx__Group__427084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__UnorderedGroup_4_in_rule__DtCRegEx__Group__4__Impl27111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__5__Impl_in_rule__DtCRegEx__Group__527142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCRegEx__Group__5__Impl27170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__0__Impl_in_rule__DtCRegEx__Group_4_0__027213 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__1_in_rule__DtCRegEx__Group_4_0__027216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCRegEx__Group_4_0__0__Impl27244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__1__Impl_in_rule__DtCRegEx__Group_4_0__127275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__0_in_rule__DtCRegEx__Group_4_0__1__Impl27302 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets012 {
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__0__Impl_in_rule__DtCRegEx__Group_4_0_1__027337 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__1_in_rule__DtCRegEx__Group_4_0_1__027340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCRegEx__Group_4_0_1__0__Impl27368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__1__Impl_in_rule__DtCRegEx__Group_4_0_1__127399 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__2_in_rule__DtCRegEx__Group_4_0_1__127402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_0_1__1__Impl27430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__2__Impl_in_rule__DtCRegEx__Group_4_0_1__227461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__MsgCodeAssignment_4_0_1_2_in_rule__DtCRegEx__Group_4_0_1__2__Impl27488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__0__Impl_in_rule__DtCRegEx__Group_4_1__027524 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__1_in_rule__DtCRegEx__Group_4_1__027527 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCRegEx__Group_4_1__0__Impl27555 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__1__Impl_in_rule__DtCRegEx__Group_4_1__127586 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__2_in_rule__DtCRegEx__Group_4_1__127589 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_1__1__Impl27617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__2__Impl_in_rule__DtCRegEx__Group_4_1__227648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2_in_rule__DtCRegEx__Group_4_1__2__Impl27675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__0__Impl_in_rule__DtCRegEx__Group_4_2__027711 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__1_in_rule__DtCRegEx__Group_4_2__027714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__0_in_rule__DtCRegEx__Group_4_2__0__Impl27741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__1__Impl_in_rule__DtCRegEx__Group_4_2__127772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCRegEx__Group_4_2__1__Impl27800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__0__Impl_in_rule__DtCRegEx__Group_4_2_0__027835 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__1_in_rule__DtCRegEx__Group_4_2_0__027838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCRegEx__Group_4_2_0__0__Impl27866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__1__Impl_in_rule__DtCRegEx__Group_4_2_0__127897 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__2_in_rule__DtCRegEx__Group_4_2_0__127900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_2_0__1__Impl27928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__2__Impl_in_rule__DtCRegEx__Group_4_2_0__227959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__SeverityAssignment_4_2_0_2_in_rule__DtCRegEx__Group_4_2_0__2__Impl27986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__0__Impl_in_rule__DtCSize__Group__028022 = new BitSet(new long[]{0x0000000000000000L,0x000007E782000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__1_in_rule__DtCSize__Group__028025 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__1__Impl_in_rule__DtCSize__Group__128083 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__2_in_rule__DtCSize__Group__128086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__DtCSize__Group__1__Impl28114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__2__Impl_in_rule__DtCSize__Group__228145 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__3_in_rule__DtCSize__Group__228148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__DtCSize__Group__2__Impl28176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__3__Impl_in_rule__DtCSize__Group__328207 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__4_in_rule__DtCSize__Group__328210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MinAssignment_3_in_rule__DtCSize__Group__3__Impl28237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__4__Impl_in_rule__DtCSize__Group__428267 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__5_in_rule__DtCSize__Group__428270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DtCSize__Group__4__Impl28298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__5__Impl_in_rule__DtCSize__Group__528329 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__6_in_rule__DtCSize__Group__528332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MaxAssignment_5_in_rule__DtCSize__Group__5__Impl28359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__6__Impl_in_rule__DtCSize__Group__628389 = new BitSet(new long[]{0x0000000000000000L,0x0000000074800000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__7_in_rule__DtCSize__Group__628392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__UnorderedGroup_6_in_rule__DtCSize__Group__6__Impl28419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__7__Impl_in_rule__DtCSize__Group__728450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__DtCSize__Group__7__Impl28478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__0__Impl_in_rule__DtCSize__Group_6_0__028525 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__1_in_rule__DtCSize__Group_6_0__028528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCSize__Group_6_0__0__Impl28556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__1__Impl_in_rule__DtCSize__Group_6_0__128587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__0_in_rule__DtCSize__Group_6_0__1__Impl28614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__0__Impl_in_rule__DtCSize__Group_6_0_1__028649 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__1_in_rule__DtCSize__Group_6_0_1__028652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__DtCSize__Group_6_0_1__0__Impl28680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__1__Impl_in_rule__DtCSize__Group_6_0_1__128711 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__2_in_rule__DtCSize__Group_6_0_1__128714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_0_1__1__Impl28742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__2__Impl_in_rule__DtCSize__Group_6_0_1__228773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MsgCodeAssignment_6_0_1_2_in_rule__DtCSize__Group_6_0_1__2__Impl28800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__0__Impl_in_rule__DtCSize__Group_6_1__028836 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__1_in_rule__DtCSize__Group_6_1__028839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__DtCSize__Group_6_1__0__Impl28867 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__1__Impl_in_rule__DtCSize__Group_6_1__128898 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__2_in_rule__DtCSize__Group_6_1__128901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_1__1__Impl28929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__2__Impl_in_rule__DtCSize__Group_6_1__228960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MsgI18nKeyAssignment_6_1_2_in_rule__DtCSize__Group_6_1__2__Impl28987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__0__Impl_in_rule__DtCSize__Group_6_2__029023 = new BitSet(new long[]{0x0000000000000000L,0x0000000074000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__1_in_rule__DtCSize__Group_6_2__029026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__0_in_rule__DtCSize__Group_6_2__0__Impl29053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__1__Impl_in_rule__DtCSize__Group_6_2__129084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCSize__Group_6_2__1__Impl29112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__0__Impl_in_rule__DtCSize__Group_6_2_0__029147 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__1_in_rule__DtCSize__Group_6_2_0__029150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCSize__Group_6_2_0__0__Impl29178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__1__Impl_in_rule__DtCSize__Group_6_2_0__129209 = new BitSet(new long[]{0x0000000000000000L,0x000000000000001CL});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__2_in_rule__DtCSize__Group_6_2_0__129212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_2_0__1__Impl29240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__2__Impl_in_rule__DtCSize__Group_6_2_0__229271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__SeverityAssignment_6_2_0_2_in_rule__DtCSize__Group_6_2_0__2__Impl29298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__0__Impl_in_rule__Enum__Group__029334 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group__1_in_rule__Enum__Group__029337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rule__Enum__Group__0__Impl29365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__1__Impl_in_rule__Enum__Group__129396 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__2_in_rule__Enum__Group__129399 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__NameAssignment_1_in_rule__Enum__Group__1__Impl29426 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__2__Impl_in_rule__Enum__Group__229456 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group__3_in_rule__Enum__Group__229459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__Enum__Group__2__Impl29487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__3__Impl_in_rule__Enum__Group__329518 = new BitSet(new long[]{0x0000000000000000L,0x0000000001010000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__4_in_rule__Enum__Group__329521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__LiteralsAssignment_3_in_rule__Enum__Group__3__Impl29548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__4__Impl_in_rule__Enum__Group__429578 = new BitSet(new long[]{0x0000000000000000L,0x0000000001010000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__5_in_rule__Enum__Group__429581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__0_in_rule__Enum__Group__4__Impl29608 = new BitSet(new long[]{0x0000000000000002L,0x0000000001000000L});
+    }
+
+    protected static class FollowSets013 {
+        public static final BitSet FOLLOW_rule__Enum__Group__5__Impl_in_rule__Enum__Group__529639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__Enum__Group__5__Impl29667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__0__Impl_in_rule__Enum__Group_4__029710 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__1_in_rule__Enum__Group_4__029713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__Enum__Group_4__0__Impl29741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__1__Impl_in_rule__Enum__Group_4__129772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__LiteralsAssignment_4_1_in_rule__Enum__Group_4__1__Impl29799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__0__Impl_in_rule__EnumLiteral__Group__029833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__1_in_rule__EnumLiteral__Group__029836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__NameAssignment_0_in_rule__EnumLiteral__Group__0__Impl29863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__1__Impl_in_rule__EnumLiteral__Group__129893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__UnorderedGroup_1_in_rule__EnumLiteral__Group__1__Impl29920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__0__Impl_in_rule__EnumLiteral__Group_1_0__029955 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__1_in_rule__EnumLiteral__Group_1_0__029958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__EnumLiteral__Group_1_0__0__Impl29986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__1__Impl_in_rule__EnumLiteral__Group_1_0__130017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__DefaultAssignment_1_0_1_in_rule__EnumLiteral__Group_1_0__1__Impl30044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__0__Impl_in_rule__EnumLiteral__Group_1_1__030079 = new BitSet(new long[]{0x0000000000000000L,0x0000000000C00000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__1_in_rule__EnumLiteral__Group_1_1__030082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__NullAssignment_1_1_0_in_rule__EnumLiteral__Group_1_1__0__Impl30109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__1__Impl_in_rule__EnumLiteral__Group_1_1__130140 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__2_in_rule__EnumLiteral__Group_1_1__130143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__EnumLiteral__Group_1_1__1__Impl30171 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__2__Impl_in_rule__EnumLiteral__Group_1_1__230202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__0_in_rule__EnumLiteral__Group_1_1__2__Impl30229 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__0__Impl_in_rule__EnumLiteral__Group_1_1_2__030266 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__1_in_rule__EnumLiteral__Group_1_1_2__030269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__EnumLiteral__Group_1_1_2__0__Impl30297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__1__Impl_in_rule__EnumLiteral__Group_1_1_2__130328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__ValueAssignment_1_1_2_1_in_rule__EnumLiteral__Group_1_1_2__1__Impl30355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__Group__0__Impl_in_rule__AnnotationDef__Group__030389 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__AnnotationAssignment_0_in_rule__AnnotationDef__Group__0__Impl30416 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__0__Impl_in_rule__AttributeMatchingConstraint__Group__030449 = new BitSet(new long[]{0x00021C4000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__1_in_rule__AttributeMatchingConstraint__Group__030452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__AttributeAssignment_0_in_rule__AttributeMatchingConstraint__Group__0__Impl30479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__1__Impl_in_rule__AttributeMatchingConstraint__Group__130509 = new BitSet(new long[]{0x0000000000000110L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__2_in_rule__AttributeMatchingConstraint__Group__130512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1_in_rule__AttributeMatchingConstraint__Group__1__Impl30539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__2__Impl_in_rule__AttributeMatchingConstraint__Group__230569 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__3_in_rule__AttributeMatchingConstraint__Group__230572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Alternatives_2_in_rule__AttributeMatchingConstraint__Group__2__Impl30599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__3__Impl_in_rule__AttributeMatchingConstraint__Group__330629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__AttributeMatchingConstraint__Group__3__Impl30657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__0__Impl_in_rule__KeyAndValue__Group__030696 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__1_in_rule__KeyAndValue__Group__030699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_rule__KeyAndValue__Group__0__Impl30727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__1__Impl_in_rule__KeyAndValue__Group__130758 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__2_in_rule__KeyAndValue__Group__130761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__KeyAndValue__Group__1__Impl30789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__2__Impl_in_rule__KeyAndValue__Group__230820 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__3_in_rule__KeyAndValue__Group__230823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__KeyAssignment_2_in_rule__KeyAndValue__Group__2__Impl30850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__3__Impl_in_rule__KeyAndValue__Group__330880 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__4_in_rule__KeyAndValue__Group__330883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_rule__KeyAndValue__Group__3__Impl30911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__4__Impl_in_rule__KeyAndValue__Group__430942 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__5_in_rule__KeyAndValue__Group__430945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__KeyAndValue__Group__4__Impl30973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__5__Impl_in_rule__KeyAndValue__Group__531004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__ValueAssignment_5_in_rule__KeyAndValue__Group__5__Impl31031 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__0__Impl_in_rule__LQualifiedNameWithWildCard__Group__031073 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__1_in_rule__LQualifiedNameWithWildCard__Group__031076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__LQualifiedNameWithWildCard__Group__0__Impl31103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__1__Impl_in_rule__LQualifiedNameWithWildCard__Group__131132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__0_in_rule__LQualifiedNameWithWildCard__Group__1__Impl31159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__0__Impl_in_rule__LQualifiedNameWithWildCard__Group_1__031194 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__1_in_rule__LQualifiedNameWithWildCard__Group_1__031197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LQualifiedNameWithWildCard__Group_1__0__Impl31225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__1__Impl_in_rule__LQualifiedNameWithWildCard__Group_1__131256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__LQualifiedNameWithWildCard__Group_1__1__Impl31284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__0__Impl_in_rule__ValidIDWithKeywords__Group_5__031321 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__1_in_rule__ValidIDWithKeywords__Group_5__031324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__ValidIDWithKeywords__Group_5__0__Impl31352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__1__Impl_in_rule__ValidIDWithKeywords__Group_5__131383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_rule__ValidIDWithKeywords__Group_5__1__Impl31411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__0__Impl_in_rule__LInt__Group__031450 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__LInt__Group__1_in_rule__LInt__Group__031453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Alternatives_0_in_rule__LInt__Group__0__Impl31480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__1__Impl_in_rule__LInt__Group__131511 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__LInt__Group__1__Impl31538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__0__Impl_in_rule__LDecimal__Group__031571 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__1_in_rule__LDecimal__Group__031574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_rule__LDecimal__Group__0__Impl31601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__1__Impl_in_rule__LDecimal__Group__131630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__0_in_rule__LDecimal__Group__1__Impl31657 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__0__Impl_in_rule__LDecimal__Group_1__031692 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__1_in_rule__LDecimal__Group_1__031695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LDecimal__Group_1__0__Impl31723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__1__Impl_in_rule__LDecimal__Group_1__131754 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__LDecimal__Group_1__1__Impl31781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0__Impl_in_rule__XAnnotation__Group__031814 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1_in_rule__XAnnotation__Group__031817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1__Impl_in_rule__XAnnotation__Group__131875 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2_in_rule__XAnnotation__Group__131878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__XAnnotation__Group__1__Impl31906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2__Impl_in_rule__XAnnotation__Group__231937 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3_in_rule__XAnnotation__Group__231940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__AnnotationTypeAssignment_2_in_rule__XAnnotation__Group__2__Impl31967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3__Impl_in_rule__XAnnotation__Group__331997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0_in_rule__XAnnotation__Group__3__Impl32024 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets014 {
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0__Impl_in_rule__XAnnotation__Group_3__032063 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1_in_rule__XAnnotation__Group_3__032066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XAnnotation__Group_3__0__Impl32095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1__Impl_in_rule__XAnnotation__Group_3__132127 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2_in_rule__XAnnotation__Group_3__132130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Alternatives_3_1_in_rule__XAnnotation__Group_3__1__Impl32157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2__Impl_in_rule__XAnnotation__Group_3__232188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XAnnotation__Group_3__2__Impl32216 = 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__032253 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1_in_rule__XAnnotation__Group_3_1_0__032256 = 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__Impl32283 = 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__132313 = 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__Impl32340 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0__Impl_in_rule__XAnnotation__Group_3_1_0_1__032375 = 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__032378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotation__Group_3_1_0_1__0__Impl32406 = 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__132437 = 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__Impl32464 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0__Impl_in_rule__XAnnotationElementValuePair__Group__032498 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1_in_rule__XAnnotationElementValuePair__Group__032501 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0_in_rule__XAnnotationElementValuePair__Group__0__Impl32528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1__Impl_in_rule__XAnnotationElementValuePair__Group__132558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ValueAssignment_1_in_rule__XAnnotationElementValuePair__Group__1__Impl32585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0__032619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0_in_rule__XAnnotationElementValuePair__Group_0__0__Impl32646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__032678 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1_in_rule__XAnnotationElementValuePair__Group_0_0__032681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ElementAssignment_0_0_0_in_rule__XAnnotationElementValuePair__Group_0_0__0__Impl32708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__132738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__XAnnotationElementValuePair__Group_0_0__1__Impl32766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__032801 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0__032804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl32831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__132861 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0__132864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl32891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__232922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl32950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__032987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl33014 = 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__033046 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__033049 = 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__133107 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__133110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl33138 = 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__233169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl33197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__033234 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__033237 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl33264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__133294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl33321 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__033356 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__033359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl33387 = 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__133418 = 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__Impl33445 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__033479 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1__033482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl33509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__133538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl33565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__033600 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__033603 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__133661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl33690 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl33702 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__033739 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__033742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl33770 = 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__133801 = 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__Impl33828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0__Impl_in_rule__XAnnotationElementValue__Group_0__033862 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1_in_rule__XAnnotationElementValue__Group_0__033865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0_in_rule__XAnnotationElementValue__Group_0__0__Impl33892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1__Impl_in_rule__XAnnotationElementValue__Group_0__133922 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2_in_rule__XAnnotationElementValue__Group_0__133925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0_in_rule__XAnnotationElementValue__Group_0__1__Impl33952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2__Impl_in_rule__XAnnotationElementValue__Group_0__233983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XAnnotationElementValue__Group_0__2__Impl34011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0__034048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0_in_rule__XAnnotationElementValue__Group_0_0__0__Impl34075 = 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__034107 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1_in_rule__XAnnotationElementValue__Group_0_0_0__034110 = 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__134168 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2_in_rule__XAnnotationElementValue__Group_0_0_0__134171 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XAnnotationElementValue__Group_0_0_0__1__Impl34199 = 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__234230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XAnnotationElementValue__Group_0_0_0__2__Impl34258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1__034295 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1_in_rule__XAnnotationElementValue__Group_0_1__034298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValue__Group_0_1__0__Impl34325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1__134355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0_in_rule__XAnnotationElementValue__Group_0_1__1__Impl34382 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__034417 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1_in_rule__XAnnotationElementValue__Group_0_1_1__034420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XAnnotationElementValue__Group_0_1_1__0__Impl34448 = 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__134479 = 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__Impl34506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0__Impl_in_rule__XAssignment__Group_0__034540 = new BitSet(new long[]{0xF000000000000010L});
+    }
+
+    protected static class FollowSets015 {
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1_in_rule__XAssignment__Group_0__034543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1__Impl_in_rule__XAssignment__Group_0__134601 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2_in_rule__XAssignment__Group_0__134604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_0_1_in_rule__XAssignment__Group_0__1__Impl34631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2__Impl_in_rule__XAssignment__Group_0__234661 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3_in_rule__XAssignment__Group_0__234664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XAssignment__Group_0__2__Impl34691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3__Impl_in_rule__XAssignment__Group_0__334720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__ValueAssignment_0_3_in_rule__XAssignment__Group_0__3__Impl34747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0__Impl_in_rule__XAssignment__Group_1__034785 = new BitSet(new long[]{0x0000183E00000000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1_in_rule__XAssignment__Group_1__034788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_rule__XAssignment__Group_1__0__Impl34815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1__Impl_in_rule__XAssignment__Group_1__134844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0_in_rule__XAssignment__Group_1__1__Impl34871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0__Impl_in_rule__XAssignment__Group_1_1__034906 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1_in_rule__XAssignment__Group_1_1__034909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0_in_rule__XAssignment__Group_1_1__0__Impl34936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1__Impl_in_rule__XAssignment__Group_1_1__134966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__RightOperandAssignment_1_1_1_in_rule__XAssignment__Group_1_1__1__Impl34993 = 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__035027 = 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__Impl35054 = 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__035086 = new BitSet(new long[]{0x0000183E00000000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1_in_rule__XAssignment__Group_1_1_0_0__035089 = 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__135147 = 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__Impl35174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0__Impl_in_rule__OpMultiAssign__Group_5__035208 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1_in_rule__OpMultiAssign__Group_5__035211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpMultiAssign__Group_5__0__Impl35239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1__Impl_in_rule__OpMultiAssign__Group_5__135270 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2_in_rule__OpMultiAssign__Group_5__135273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpMultiAssign__Group_5__1__Impl35301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2__Impl_in_rule__OpMultiAssign__Group_5__235332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpMultiAssign__Group_5__2__Impl35360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0__Impl_in_rule__OpMultiAssign__Group_6__035397 = new BitSet(new long[]{0x00000C0000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1_in_rule__OpMultiAssign__Group_6__035400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpMultiAssign__Group_6__0__Impl35428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1__Impl_in_rule__OpMultiAssign__Group_6__135459 = new BitSet(new long[]{0x00000C0000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2_in_rule__OpMultiAssign__Group_6__135462 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpMultiAssign__Group_6__1__Impl35491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2__Impl_in_rule__OpMultiAssign__Group_6__235524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpMultiAssign__Group_6__2__Impl35552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0__Impl_in_rule__XOrExpression__Group__035589 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1_in_rule__XOrExpression__Group__035592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__Group__0__Impl35619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1__Impl_in_rule__XOrExpression__Group__135648 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0_in_rule__XOrExpression__Group__1__Impl35675 = new BitSet(new long[]{0x0000000000004002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0__Impl_in_rule__XOrExpression__Group_1__035710 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1_in_rule__XOrExpression__Group_1__035713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0_in_rule__XOrExpression__Group_1__0__Impl35740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1__Impl_in_rule__XOrExpression__Group_1__135770 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__RightOperandAssignment_1_1_in_rule__XOrExpression__Group_1__1__Impl35797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0__Impl_in_rule__XOrExpression__Group_1_0__035831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0_in_rule__XOrExpression__Group_1_0__0__Impl35858 = 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__035890 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1_in_rule__XOrExpression__Group_1_0_0__035893 = 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__135951 = 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__Impl35978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0__Impl_in_rule__XAndExpression__Group__036012 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1_in_rule__XAndExpression__Group__036015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__Group__0__Impl36042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1__Impl_in_rule__XAndExpression__Group__136071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0_in_rule__XAndExpression__Group__1__Impl36098 = new BitSet(new long[]{0x0000000000008002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0__Impl_in_rule__XAndExpression__Group_1__036133 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1_in_rule__XAndExpression__Group_1__036136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0_in_rule__XAndExpression__Group_1__0__Impl36163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1__Impl_in_rule__XAndExpression__Group_1__136193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__RightOperandAssignment_1_1_in_rule__XAndExpression__Group_1__1__Impl36220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0__Impl_in_rule__XAndExpression__Group_1_0__036254 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0_in_rule__XAndExpression__Group_1_0__0__Impl36281 = 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__036313 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1_in_rule__XAndExpression__Group_1_0_0__036316 = 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__136374 = 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__Impl36401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0__Impl_in_rule__XEqualityExpression__Group__036435 = new BitSet(new long[]{0x000003C000000000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1_in_rule__XEqualityExpression__Group__036438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__Group__0__Impl36465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1__Impl_in_rule__XEqualityExpression__Group__136494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0_in_rule__XEqualityExpression__Group__1__Impl36521 = new BitSet(new long[]{0x000003C000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0__Impl_in_rule__XEqualityExpression__Group_1__036556 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1_in_rule__XEqualityExpression__Group_1__036559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0_in_rule__XEqualityExpression__Group_1__0__Impl36586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1__Impl_in_rule__XEqualityExpression__Group_1__136616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__RightOperandAssignment_1_1_in_rule__XEqualityExpression__Group_1__1__Impl36643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0__Impl_in_rule__XEqualityExpression__Group_1_0__036677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0_in_rule__XEqualityExpression__Group_1_0__0__Impl36704 = 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__036736 = new BitSet(new long[]{0x000003C000000000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1_in_rule__XEqualityExpression__Group_1_0_0__036739 = 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__136797 = 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__Impl36824 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0__Impl_in_rule__XRelationalExpression__Group__036858 = new BitSet(new long[]{0x00001C0000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1_in_rule__XRelationalExpression__Group__036861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__Group__0__Impl36888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1__Impl_in_rule__XRelationalExpression__Group__136917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Alternatives_1_in_rule__XRelationalExpression__Group__1__Impl36944 = new BitSet(new long[]{0x00001C0000000002L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_0__036979 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1_in_rule__XRelationalExpression__Group_1_0__036982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0_in_rule__XRelationalExpression__Group_1_0__0__Impl37009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1__Impl_in_rule__XRelationalExpression__Group_1_0__137039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__TypeAssignment_1_0_1_in_rule__XRelationalExpression__Group_1_0__1__Impl37066 = 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__037100 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets016 {
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__0_in_rule__XRelationalExpression__Group_1_0_0__0__Impl37127 = 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__037159 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1_in_rule__XRelationalExpression__Group_1_0_0_0__037162 = 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__137220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__XRelationalExpression__Group_1_0_0_0__1__Impl37248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0__Impl_in_rule__XRelationalExpression__Group_1_1__037283 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1_in_rule__XRelationalExpression__Group_1_1__037286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0_in_rule__XRelationalExpression__Group_1_1__0__Impl37313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1__Impl_in_rule__XRelationalExpression__Group_1_1__137343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__RightOperandAssignment_1_1_1_in_rule__XRelationalExpression__Group_1_1__1__Impl37370 = 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__037404 = 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__Impl37431 = 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__037463 = new BitSet(new long[]{0x00001C0000000000L,0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1_in_rule__XRelationalExpression__Group_1_1_0_0__037466 = 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__137524 = 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__Impl37551 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0__Impl_in_rule__OpCompare__Group_1__037585 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1_in_rule__OpCompare__Group_1__037588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpCompare__Group_1__0__Impl37616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1__Impl_in_rule__OpCompare__Group_1__137647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpCompare__Group_1__1__Impl37675 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0__Impl_in_rule__XOtherOperatorExpression__Group__037710 = new BitSet(new long[]{0x0007F80000000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1_in_rule__XOtherOperatorExpression__Group__037713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__Group__0__Impl37740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1__Impl_in_rule__XOtherOperatorExpression__Group__137769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0_in_rule__XOtherOperatorExpression__Group__1__Impl37796 = new BitSet(new long[]{0x0007F80000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0__Impl_in_rule__XOtherOperatorExpression__Group_1__037831 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1_in_rule__XOtherOperatorExpression__Group_1__037834 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0_in_rule__XOtherOperatorExpression__Group_1__0__Impl37861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1__Impl_in_rule__XOtherOperatorExpression__Group_1__137891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__RightOperandAssignment_1_1_in_rule__XOtherOperatorExpression__Group_1__1__Impl37918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0__037952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0_in_rule__XOtherOperatorExpression__Group_1_0__0__Impl37979 = 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__038011 = new BitSet(new long[]{0x0007F80000000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1_in_rule__XOtherOperatorExpression__Group_1_0_0__038014 = 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__138072 = 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__Impl38099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0__Impl_in_rule__OpOther__Group_2__038133 = new BitSet(new long[]{0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1_in_rule__OpOther__Group_2__038136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_2__0__Impl38164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1__Impl_in_rule__OpOther__Group_2__138195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__OpOther__Group_2__1__Impl38223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0__Impl_in_rule__OpOther__Group_5__038258 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1_in_rule__OpOther__Group_5__038261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5__0__Impl38289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1__Impl_in_rule__OpOther__Group_5__138320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_5_1_in_rule__OpOther__Group_5__1__Impl38347 = 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__038381 = 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__Impl38408 = 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__038440 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1_in_rule__OpOther__Group_5_1_0_0__038443 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5_1_0_0__0__Impl38471 = 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__138502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5_1_0_0__1__Impl38530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0__Impl_in_rule__OpOther__Group_6__038565 = new BitSet(new long[]{0x0001100000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1_in_rule__OpOther__Group_6__038568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6__0__Impl38596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1__Impl_in_rule__OpOther__Group_6__138627 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_6_1_in_rule__OpOther__Group_6__1__Impl38654 = 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__038688 = 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__Impl38715 = 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__038747 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1_in_rule__OpOther__Group_6_1_0_0__038750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6_1_0_0__0__Impl38778 = 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__138809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6_1_0_0__1__Impl38837 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0__Impl_in_rule__XAdditiveExpression__Group__038872 = new BitSet(new long[]{0x0000000180000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1_in_rule__XAdditiveExpression__Group__038875 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_rule__XAdditiveExpression__Group__0__Impl38902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1__Impl_in_rule__XAdditiveExpression__Group__138931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0_in_rule__XAdditiveExpression__Group__1__Impl38958 = new BitSet(new long[]{0x0000000180000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0__Impl_in_rule__XAdditiveExpression__Group_1__038993 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1_in_rule__XAdditiveExpression__Group_1__038996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0_in_rule__XAdditiveExpression__Group_1__0__Impl39023 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1__Impl_in_rule__XAdditiveExpression__Group_1__139053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__RightOperandAssignment_1_1_in_rule__XAdditiveExpression__Group_1__1__Impl39080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0__039114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0_in_rule__XAdditiveExpression__Group_1_0__0__Impl39141 = 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__039173 = new BitSet(new long[]{0x0000000180000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1_in_rule__XAdditiveExpression__Group_1_0_0__039176 = 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__139234 = 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__Impl39261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0__Impl_in_rule__XMultiplicativeExpression__Group__039295 = new BitSet(new long[]{0x0078000000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1_in_rule__XMultiplicativeExpression__Group__039298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XMultiplicativeExpression__Group__0__Impl39325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1__Impl_in_rule__XMultiplicativeExpression__Group__139354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0_in_rule__XMultiplicativeExpression__Group__1__Impl39381 = new BitSet(new long[]{0x0078000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0__Impl_in_rule__XMultiplicativeExpression__Group_1__039416 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1_in_rule__XMultiplicativeExpression__Group_1__039419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0_in_rule__XMultiplicativeExpression__Group_1__0__Impl39446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1__Impl_in_rule__XMultiplicativeExpression__Group_1__139476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__RightOperandAssignment_1_1_in_rule__XMultiplicativeExpression__Group_1__1__Impl39503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0__039537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0_in_rule__XMultiplicativeExpression__Group_1_0__0__Impl39564 = 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__039596 = new BitSet(new long[]{0x0078000000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1_in_rule__XMultiplicativeExpression__Group_1_0_0__039599 = 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__139657 = 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__Impl39684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0__Impl_in_rule__XUnaryOperation__Group_0__039718 = new BitSet(new long[]{0x0080000180000000L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1_in_rule__XUnaryOperation__Group_0__039721 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets017 {
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1__Impl_in_rule__XUnaryOperation__Group_0__139779 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2_in_rule__XUnaryOperation__Group_0__139782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__FeatureAssignment_0_1_in_rule__XUnaryOperation__Group_0__1__Impl39809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2__Impl_in_rule__XUnaryOperation__Group_0__239839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__OperandAssignment_0_2_in_rule__XUnaryOperation__Group_0__2__Impl39866 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0__Impl_in_rule__XCastedExpression__Group__039902 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1_in_rule__XCastedExpression__Group__039905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_rule__XCastedExpression__Group__0__Impl39932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1__Impl_in_rule__XCastedExpression__Group__139961 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0_in_rule__XCastedExpression__Group__1__Impl39988 = new BitSet(new long[]{0x0000000000000002L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0__Impl_in_rule__XCastedExpression__Group_1__040023 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1_in_rule__XCastedExpression__Group_1__040026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0_in_rule__XCastedExpression__Group_1__0__Impl40053 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1__Impl_in_rule__XCastedExpression__Group_1__140083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__TypeAssignment_1_1_in_rule__XCastedExpression__Group_1__1__Impl40110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0__Impl_in_rule__XCastedExpression__Group_1_0__040144 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0_in_rule__XCastedExpression__Group_1_0__0__Impl40171 = 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__040203 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1_in_rule__XCastedExpression__Group_1_0_0__040206 = 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__140264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_rule__XCastedExpression__Group_1_0_0__1__Impl40292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0__Impl_in_rule__XPostfixOperation__Group__040327 = new BitSet(new long[]{0x0300000000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1_in_rule__XPostfixOperation__Group__040330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_rule__XPostfixOperation__Group__0__Impl40357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1__Impl_in_rule__XPostfixOperation__Group__140386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0_in_rule__XPostfixOperation__Group__1__Impl40413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0__Impl_in_rule__XPostfixOperation__Group_1__040448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0_in_rule__XPostfixOperation__Group_1__0__Impl40475 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0__Impl_in_rule__XPostfixOperation__Group_1_0__040507 = new BitSet(new long[]{0x0300000000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1_in_rule__XPostfixOperation__Group_1_0__040510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1__Impl_in_rule__XPostfixOperation__Group_1_0__140568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__FeatureAssignment_1_0_1_in_rule__XPostfixOperation__Group_1_0__1__Impl40595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0__Impl_in_rule__XMemberFeatureCall__Group__040629 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1_in_rule__XMemberFeatureCall__Group__040632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_rule__XMemberFeatureCall__Group__0__Impl40659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1__Impl_in_rule__XMemberFeatureCall__Group__140688 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_in_rule__XMemberFeatureCall__Group__1__Impl40715 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0__040750 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1_in_rule__XMemberFeatureCall__Group_1_0__040753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_0__0__Impl40780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0__140810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ValueAssignment_1_0_1_in_rule__XMemberFeatureCall__Group_1_0__1__Impl40837 = 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__040871 = 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__Impl40898 = 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__040930 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1_in_rule__XMemberFeatureCall__Group_1_0_0_0__040933 = 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__140991 = new BitSet(new long[]{0xF000000000000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2_in_rule__XMemberFeatureCall__Group_1_0_0_0__140994 = 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__Impl41021 = 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__241051 = 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__241054 = 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__Impl41081 = 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__341111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl41138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1__041175 = new BitSet(new long[]{0xF000100000000010L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1_in_rule__XMemberFeatureCall__Group_1_1__041178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0_in_rule__XMemberFeatureCall__Group_1_1__0__Impl41205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1__141235 = new BitSet(new long[]{0xF000100000000010L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2_in_rule__XMemberFeatureCall__Group_1_1__141238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1__1__Impl41265 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1__241296 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3_in_rule__XMemberFeatureCall__Group_1_1__241299 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_1_2_in_rule__XMemberFeatureCall__Group_1_1__2__Impl41326 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1__341356 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4_in_rule__XMemberFeatureCall__Group_1_1__341359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0_in_rule__XMemberFeatureCall__Group_1_1__3__Impl41386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4__Impl_in_rule__XMemberFeatureCall__Group_1_1__441417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4_in_rule__XMemberFeatureCall__Group_1_1__4__Impl41444 = 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__041485 = 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__Impl41512 = 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__041544 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000006000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1_in_rule__XMemberFeatureCall__Group_1_1_0_0__041547 = 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__141605 = 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__Impl41632 = 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__041666 = new BitSet(new long[]{0x0001000000000010L,0x0000000000402000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_1__041669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__XMemberFeatureCall__Group_1_1_1__0__Impl41697 = 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__141728 = new BitSet(new long[]{0x0000080000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2_in_rule__XMemberFeatureCall__Group_1_1_1__141731 = 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__Impl41758 = 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__241788 = new BitSet(new long[]{0x0000080000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3_in_rule__XMemberFeatureCall__Group_1_1_1__241791 = 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__Impl41818 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__341849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Group_1_1_1__3__Impl41877 = 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__041916 = new BitSet(new long[]{0x0001000000000010L,0x0000000000402000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1_in_rule__XMemberFeatureCall__Group_1_1_1_2__041919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl41947 = 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__141978 = 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__Impl42005 = 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__042039 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004C08003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1_in_rule__XMemberFeatureCall__Group_1_1_3__042042 = 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__Impl42069 = 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__142099 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004C08003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2_in_rule__XMemberFeatureCall__Group_1_1_3__142102 = 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__Impl42129 = 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__242160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XMemberFeatureCall__Group_1_1_3__2__Impl42188 = 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__042225 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__042228 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets018 {
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl42255 = 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__142285 = new BitSet(new long[]{0x0000000000000002L});
+        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__Impl42312 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        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__042347 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        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__042350 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl42378 = 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__142409 = 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__Impl42436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0__Impl_in_rule__XSetLiteral__Group__042470 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1_in_rule__XSetLiteral__Group__042473 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1__Impl_in_rule__XSetLiteral__Group__142531 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2_in_rule__XSetLiteral__Group__142534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XSetLiteral__Group__1__Impl42562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2__Impl_in_rule__XSetLiteral__Group__242593 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3_in_rule__XSetLiteral__Group__242596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__XSetLiteral__Group__2__Impl42624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3__Impl_in_rule__XSetLiteral__Group__342655 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4_in_rule__XSetLiteral__Group__342658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0_in_rule__XSetLiteral__Group__3__Impl42685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4__Impl_in_rule__XSetLiteral__Group__442716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__XSetLiteral__Group__4__Impl42744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0__Impl_in_rule__XSetLiteral__Group_3__042785 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1_in_rule__XSetLiteral__Group_3__042788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_0_in_rule__XSetLiteral__Group_3__0__Impl42815 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1__Impl_in_rule__XSetLiteral__Group_3__142845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0_in_rule__XSetLiteral__Group_3__1__Impl42872 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0__Impl_in_rule__XSetLiteral__Group_3_1__042907 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1_in_rule__XSetLiteral__Group_3_1__042910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XSetLiteral__Group_3_1__0__Impl42938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1__Impl_in_rule__XSetLiteral__Group_3_1__142969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_1_1_in_rule__XSetLiteral__Group_3_1__1__Impl42996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0__Impl_in_rule__XListLiteral__Group__043030 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1_in_rule__XListLiteral__Group__043033 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1__Impl_in_rule__XListLiteral__Group__143091 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__2_in_rule__XListLiteral__Group__143094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__XListLiteral__Group__1__Impl43122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__2__Impl_in_rule__XListLiteral__Group__243153 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__3_in_rule__XListLiteral__Group__243156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XListLiteral__Group__2__Impl43184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__3__Impl_in_rule__XListLiteral__Group__343215 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000024408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__4_in_rule__XListLiteral__Group__343218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0_in_rule__XListLiteral__Group__3__Impl43245 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__4__Impl_in_rule__XListLiteral__Group__443276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XListLiteral__Group__4__Impl43304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__0__Impl_in_rule__XListLiteral__Group_3__043345 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1_in_rule__XListLiteral__Group_3__043348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_0_in_rule__XListLiteral__Group_3__0__Impl43375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3__1__Impl_in_rule__XListLiteral__Group_3__143405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0_in_rule__XListLiteral__Group_3__1__Impl43432 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__0__Impl_in_rule__XListLiteral__Group_3_1__043467 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1_in_rule__XListLiteral__Group_3_1__043470 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XListLiteral__Group_3_1__0__Impl43498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group_3_1__1__Impl_in_rule__XListLiteral__Group_3_1__143529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__ElementsAssignment_3_1_1_in_rule__XListLiteral__Group_3_1__1__Impl43556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__0__Impl_in_rule__XClosure__Group__043590 = new BitSet(new long[]{0xF8811001C00001F0L,0xF8A5000004408003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XClosure__Group__1_in_rule__XClosure__Group__043593 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0__0_in_rule__XClosure__Group__0__Impl43620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__1__Impl_in_rule__XClosure__Group__143650 = new BitSet(new long[]{0xF8811001C00001F0L,0xF8A5000004408003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XClosure__Group__2_in_rule__XClosure__Group__143653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1__0_in_rule__XClosure__Group__1__Impl43680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__2__Impl_in_rule__XClosure__Group__243711 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__3_in_rule__XClosure__Group__243714 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__ExpressionAssignment_2_in_rule__XClosure__Group__2__Impl43741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__3__Impl_in_rule__XClosure__Group__343771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XClosure__Group__3__Impl43799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0__0__Impl_in_rule__XClosure__Group_0__043838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0_in_rule__XClosure__Group_0__0__Impl43865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__0__Impl_in_rule__XClosure__Group_0_0__043897 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1_in_rule__XClosure__Group_0_0__043900 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_0_0__1__Impl_in_rule__XClosure__Group_0_0__143958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__XClosure__Group_0_0__1__Impl43986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1__0__Impl_in_rule__XClosure__Group_1__044021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0_in_rule__XClosure__Group_1__0__Impl44048 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__0__Impl_in_rule__XClosure__Group_1_0__044080 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1_in_rule__XClosure__Group_1_0__044083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__0_in_rule__XClosure__Group_1_0__0__Impl44110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0__1__Impl_in_rule__XClosure__Group_1_0__144141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__ExplicitSyntaxAssignment_1_0_1_in_rule__XClosure__Group_1_0__1__Impl44168 = 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__044202 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0__1_in_rule__XClosure__Group_1_0_0__044205 = 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__Impl44232 = 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__144262 = 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__Impl44289 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__0__Impl_in_rule__XClosure__Group_1_0_0_1__044324 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XClosure__Group_1_0_0_1__1_in_rule__XClosure__Group_1_0_0_1__044327 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XClosure__Group_1_0_0_1__0__Impl44355 = 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__144386 = 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__Impl44413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0__Impl_in_rule__XExpressionInClosure__Group__044447 = new BitSet(new long[]{0xF8811001C00001F0L,0xF8A5000004408003L,0x000000000001802FL});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1_in_rule__XExpressionInClosure__Group__044450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__1__Impl_in_rule__XExpressionInClosure__Group__144508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0_in_rule__XExpressionInClosure__Group__1__Impl44535 = new BitSet(new long[]{0xF8801001C00001F2L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__0__Impl_in_rule__XExpressionInClosure__Group_1__044570 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1_in_rule__XExpressionInClosure__Group_1__044573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__ExpressionsAssignment_1_0_in_rule__XExpressionInClosure__Group_1__0__Impl44600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group_1__1__Impl_in_rule__XExpressionInClosure__Group_1__144630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XExpressionInClosure__Group_1__1__Impl44659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0__Impl_in_rule__XShortClosure__Group__044696 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__1_in_rule__XShortClosure__Group__044699 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0_in_rule__XShortClosure__Group__0__Impl44726 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets019 {
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__1__Impl_in_rule__XShortClosure__Group__144756 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__ExpressionAssignment_1_in_rule__XShortClosure__Group__1__Impl44783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0__0__Impl_in_rule__XShortClosure__Group_0__044817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0_in_rule__XShortClosure__Group_0__0__Impl44844 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__0__Impl_in_rule__XShortClosure__Group_0_0__044876 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1_in_rule__XShortClosure__Group_0_0__044879 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__1__Impl_in_rule__XShortClosure__Group_0_0__144937 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2_in_rule__XShortClosure__Group_0_0__144940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__0_in_rule__XShortClosure__Group_0_0__1__Impl44967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0__2__Impl_in_rule__XShortClosure__Group_0_0__244998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2_in_rule__XShortClosure__Group_0_0__2__Impl45025 = 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__045061 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1__1_in_rule__XShortClosure__Group_0_0_1__045064 = 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__Impl45091 = 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__145121 = 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__Impl45148 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__0__Impl_in_rule__XShortClosure__Group_0_0_1_1__045183 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group_0_0_1_1__1_in_rule__XShortClosure__Group_0_0_1_1__045186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XShortClosure__Group_0_0_1_1__0__Impl45214 = 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__145245 = 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__Impl45272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0__Impl_in_rule__XParenthesizedExpression__Group__045306 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1_in_rule__XParenthesizedExpression__Group__045309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XParenthesizedExpression__Group__0__Impl45337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__1__Impl_in_rule__XParenthesizedExpression__Group__145368 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2_in_rule__XParenthesizedExpression__Group__145371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XParenthesizedExpression__Group__1__Impl45398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__2__Impl_in_rule__XParenthesizedExpression__Group__245427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XParenthesizedExpression__Group__2__Impl45455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0__Impl_in_rule__XIfExpression__Group__045492 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__1_in_rule__XIfExpression__Group__045495 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__1__Impl_in_rule__XIfExpression__Group__145553 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__2_in_rule__XIfExpression__Group__145556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__XIfExpression__Group__1__Impl45584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__2__Impl_in_rule__XIfExpression__Group__245615 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__3_in_rule__XIfExpression__Group__245618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XIfExpression__Group__2__Impl45646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__3__Impl_in_rule__XIfExpression__Group__345677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__4_in_rule__XIfExpression__Group__345680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__IfAssignment_3_in_rule__XIfExpression__Group__3__Impl45707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__4__Impl_in_rule__XIfExpression__Group__445737 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__5_in_rule__XIfExpression__Group__445740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XIfExpression__Group__4__Impl45768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__5__Impl_in_rule__XIfExpression__Group__545799 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__6_in_rule__XIfExpression__Group__545802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__ThenAssignment_5_in_rule__XIfExpression__Group__5__Impl45829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__6__Impl_in_rule__XIfExpression__Group__645859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0_in_rule__XIfExpression__Group__6__Impl45886 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__0__Impl_in_rule__XIfExpression__Group_6__045931 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1_in_rule__XIfExpression__Group_6__045934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__XIfExpression__Group_6__0__Impl45963 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group_6__1__Impl_in_rule__XIfExpression__Group_6__145995 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__ElseAssignment_6_1_in_rule__XIfExpression__Group_6__1__Impl46022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0__Impl_in_rule__XSwitchExpression__Group__046056 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1_in_rule__XSwitchExpression__Group__046059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__1__Impl_in_rule__XSwitchExpression__Group__146117 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2_in_rule__XSwitchExpression__Group__146120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_rule__XSwitchExpression__Group__1__Impl46148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__2__Impl_in_rule__XSwitchExpression__Group__246179 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3_in_rule__XSwitchExpression__Group__246182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Alternatives_2_in_rule__XSwitchExpression__Group__2__Impl46209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__3__Impl_in_rule__XSwitchExpression__Group__346239 = new BitSet(new long[]{0x0001000000000010L,0x0702000000410000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4_in_rule__XSwitchExpression__Group__346242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__XSwitchExpression__Group__3__Impl46270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__4__Impl_in_rule__XSwitchExpression__Group__446301 = new BitSet(new long[]{0x0001000000000010L,0x0702000000410000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5_in_rule__XSwitchExpression__Group__446304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__CasesAssignment_4_in_rule__XSwitchExpression__Group__4__Impl46331 = new BitSet(new long[]{0x0001000000000012L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__5__Impl_in_rule__XSwitchExpression__Group__546362 = new BitSet(new long[]{0x0001000000000010L,0x0702000000410000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6_in_rule__XSwitchExpression__Group__546365 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0_in_rule__XSwitchExpression__Group__5__Impl46392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__6__Impl_in_rule__XSwitchExpression__Group__646423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__XSwitchExpression__Group__6__Impl46451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0__Impl_in_rule__XSwitchExpression__Group_2_0__046496 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1_in_rule__XSwitchExpression__Group_2_0__046499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0__0_in_rule__XSwitchExpression__Group_2_0__0__Impl46526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__1__Impl_in_rule__XSwitchExpression__Group_2_0__146556 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2_in_rule__XSwitchExpression__Group_2_0__146559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_0_1_in_rule__XSwitchExpression__Group_2_0__1__Impl46586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__2__Impl_in_rule__XSwitchExpression__Group_2_0__246616 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XSwitchExpression__Group_2_0__2__Impl46644 = 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__046681 = 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__Impl46708 = 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__046740 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__1_in_rule__XSwitchExpression__Group_2_0_0_0__046743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XSwitchExpression__Group_2_0_0_0__0__Impl46771 = 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__146802 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0_0_0__2_in_rule__XSwitchExpression__Group_2_0_0_0__146805 = 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__Impl46832 = 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__246862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XSwitchExpression__Group_2_0_0_0__2__Impl46890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0__Impl_in_rule__XSwitchExpression__Group_2_1__046927 = new BitSet(new long[]{0xF0811001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1_in_rule__XSwitchExpression__Group_2_1__046930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0__0_in_rule__XSwitchExpression__Group_2_1__0__Impl46957 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__1__Impl_in_rule__XSwitchExpression__Group_2_1__146988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__SwitchAssignment_2_1_1_in_rule__XSwitchExpression__Group_2_1__1__Impl47015 = 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__047049 = 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__Impl47076 = 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__047108 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1_in_rule__XSwitchExpression__Group_2_1_0_0__047111 = 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__Impl47138 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets020 {
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1_0_0__1__Impl_in_rule__XSwitchExpression__Group_2_1_0_0__147168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XSwitchExpression__Group_2_1_0_0__1__Impl47196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__0__Impl_in_rule__XSwitchExpression__Group_5__047231 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1_in_rule__XSwitchExpression__Group_5__047234 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__XSwitchExpression__Group_5__0__Impl47262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__1__Impl_in_rule__XSwitchExpression__Group_5__147293 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2_in_rule__XSwitchExpression__Group_5__147296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XSwitchExpression__Group_5__1__Impl47324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_5__2__Impl_in_rule__XSwitchExpression__Group_5__247355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__DefaultAssignment_5_2_in_rule__XSwitchExpression__Group_5__2__Impl47382 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0__Impl_in_rule__XCasePart__Group__047418 = new BitSet(new long[]{0x0001000000000010L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__1_in_rule__XCasePart__Group__047421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__1__Impl_in_rule__XCasePart__Group__147479 = new BitSet(new long[]{0x0001000000000010L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__2_in_rule__XCasePart__Group__147482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__TypeGuardAssignment_1_in_rule__XCasePart__Group__1__Impl47509 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__2__Impl_in_rule__XCasePart__Group__247540 = new BitSet(new long[]{0x0001000000000010L,0x0502000000400000L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__3_in_rule__XCasePart__Group__247543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0_in_rule__XCasePart__Group__2__Impl47570 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__3__Impl_in_rule__XCasePart__Group__347601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Alternatives_3_in_rule__XCasePart__Group__3__Impl47628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__0__Impl_in_rule__XCasePart__Group_2__047666 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1_in_rule__XCasePart__Group_2__047669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XCasePart__Group_2__0__Impl47697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_2__1__Impl_in_rule__XCasePart__Group_2__147728 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__CaseAssignment_2_1_in_rule__XCasePart__Group_2__1__Impl47755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0__Impl_in_rule__XCasePart__Group_3_0__047789 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1_in_rule__XCasePart__Group_3_0__047792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XCasePart__Group_3_0__0__Impl47820 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__1__Impl_in_rule__XCasePart__Group_3_0__147851 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__ThenAssignment_3_0_1_in_rule__XCasePart__Group_3_0__1__Impl47878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0__Impl_in_rule__XForLoopExpression__Group__047912 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1_in_rule__XForLoopExpression__Group__047915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0_in_rule__XForLoopExpression__Group__0__Impl47942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__1__Impl_in_rule__XForLoopExpression__Group__147972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2_in_rule__XForLoopExpression__Group__147975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__ForExpressionAssignment_1_in_rule__XForLoopExpression__Group__1__Impl48002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__2__Impl_in_rule__XForLoopExpression__Group__248032 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3_in_rule__XForLoopExpression__Group__248035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XForLoopExpression__Group__2__Impl48063 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__3__Impl_in_rule__XForLoopExpression__Group__348094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__EachExpressionAssignment_3_in_rule__XForLoopExpression__Group__3__Impl48121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0__0__Impl_in_rule__XForLoopExpression__Group_0__048159 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0_in_rule__XForLoopExpression__Group_0__0__Impl48186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__0__Impl_in_rule__XForLoopExpression__Group_0_0__048218 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1_in_rule__XForLoopExpression__Group_0_0__048221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__1__Impl_in_rule__XForLoopExpression__Group_0_0__148279 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2_in_rule__XForLoopExpression__Group_0_0__148282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XForLoopExpression__Group_0_0__1__Impl48310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__2__Impl_in_rule__XForLoopExpression__Group_0_0__248341 = new BitSet(new long[]{0x0001000000000010L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3_in_rule__XForLoopExpression__Group_0_0__248344 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XForLoopExpression__Group_0_0__2__Impl48372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__3__Impl_in_rule__XForLoopExpression__Group_0_0__348403 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4_in_rule__XForLoopExpression__Group_0_0__348406 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__DeclaredParamAssignment_0_0_3_in_rule__XForLoopExpression__Group_0_0__3__Impl48433 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group_0_0__4__Impl_in_rule__XForLoopExpression__Group_0_0__448463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__XForLoopExpression__Group_0_0__4__Impl48491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0__Impl_in_rule__XBasicForLoopExpression__Group__048532 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1_in_rule__XBasicForLoopExpression__Group__048535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__1__Impl_in_rule__XBasicForLoopExpression__Group__148593 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2_in_rule__XBasicForLoopExpression__Group__148596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XBasicForLoopExpression__Group__1__Impl48624 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__2__Impl_in_rule__XBasicForLoopExpression__Group__248655 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3_in_rule__XBasicForLoopExpression__Group__248658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XBasicForLoopExpression__Group__2__Impl48686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__3__Impl_in_rule__XBasicForLoopExpression__Group__348717 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4_in_rule__XBasicForLoopExpression__Group__348720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0_in_rule__XBasicForLoopExpression__Group__3__Impl48747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__4__Impl_in_rule__XBasicForLoopExpression__Group__448778 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5_in_rule__XBasicForLoopExpression__Group__448781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XBasicForLoopExpression__Group__4__Impl48809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__5__Impl_in_rule__XBasicForLoopExpression__Group__548840 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004448003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6_in_rule__XBasicForLoopExpression__Group__548843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__ExpressionAssignment_5_in_rule__XBasicForLoopExpression__Group__5__Impl48870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__6__Impl_in_rule__XBasicForLoopExpression__Group__648901 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7_in_rule__XBasicForLoopExpression__Group__648904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XBasicForLoopExpression__Group__6__Impl48932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__7__Impl_in_rule__XBasicForLoopExpression__Group__748963 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004C08003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8_in_rule__XBasicForLoopExpression__Group__748966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0_in_rule__XBasicForLoopExpression__Group__7__Impl48993 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__8__Impl_in_rule__XBasicForLoopExpression__Group__849024 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9_in_rule__XBasicForLoopExpression__Group__849027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XBasicForLoopExpression__Group__8__Impl49055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__9__Impl_in_rule__XBasicForLoopExpression__Group__949086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__EachExpressionAssignment_9_in_rule__XBasicForLoopExpression__Group__9__Impl49113 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__0__Impl_in_rule__XBasicForLoopExpression__Group_3__049163 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1_in_rule__XBasicForLoopExpression__Group_3__049166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0_in_rule__XBasicForLoopExpression__Group_3__0__Impl49193 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3__1__Impl_in_rule__XBasicForLoopExpression__Group_3__149223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0_in_rule__XBasicForLoopExpression__Group_3__1__Impl49250 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__0__Impl_in_rule__XBasicForLoopExpression__Group_3_1__049285 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1_in_rule__XBasicForLoopExpression__Group_3_1__049288 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XBasicForLoopExpression__Group_3_1__0__Impl49316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_3_1__1__Impl_in_rule__XBasicForLoopExpression__Group_3_1__149347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1_in_rule__XBasicForLoopExpression__Group_3_1__1__Impl49374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__0__Impl_in_rule__XBasicForLoopExpression__Group_7__049408 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1_in_rule__XBasicForLoopExpression__Group_7__049411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0_in_rule__XBasicForLoopExpression__Group_7__0__Impl49438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7__1__Impl_in_rule__XBasicForLoopExpression__Group_7__149468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0_in_rule__XBasicForLoopExpression__Group_7__1__Impl49495 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__0__Impl_in_rule__XBasicForLoopExpression__Group_7_1__049530 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+    }
+
+    protected static class FollowSets021 {
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1_in_rule__XBasicForLoopExpression__Group_7_1__049533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__XBasicForLoopExpression__Group_7_1__0__Impl49561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group_7_1__1__Impl_in_rule__XBasicForLoopExpression__Group_7_1__149592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1_in_rule__XBasicForLoopExpression__Group_7_1__1__Impl49619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0__Impl_in_rule__XWhileExpression__Group__049653 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1_in_rule__XWhileExpression__Group__049656 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__1__Impl_in_rule__XWhileExpression__Group__149714 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2_in_rule__XWhileExpression__Group__149717 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__XWhileExpression__Group__1__Impl49745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__2__Impl_in_rule__XWhileExpression__Group__249776 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3_in_rule__XWhileExpression__Group__249779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XWhileExpression__Group__2__Impl49807 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__3__Impl_in_rule__XWhileExpression__Group__349838 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4_in_rule__XWhileExpression__Group__349841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__PredicateAssignment_3_in_rule__XWhileExpression__Group__3__Impl49868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__4__Impl_in_rule__XWhileExpression__Group__449898 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5_in_rule__XWhileExpression__Group__449901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XWhileExpression__Group__4__Impl49929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__5__Impl_in_rule__XWhileExpression__Group__549960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__BodyAssignment_5_in_rule__XWhileExpression__Group__5__Impl49987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0__Impl_in_rule__XDoWhileExpression__Group__050029 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1_in_rule__XDoWhileExpression__Group__050032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__1__Impl_in_rule__XDoWhileExpression__Group__150090 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2_in_rule__XDoWhileExpression__Group__150093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__XDoWhileExpression__Group__1__Impl50121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__2__Impl_in_rule__XDoWhileExpression__Group__250152 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3_in_rule__XDoWhileExpression__Group__250155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__BodyAssignment_2_in_rule__XDoWhileExpression__Group__2__Impl50182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__3__Impl_in_rule__XDoWhileExpression__Group__350212 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4_in_rule__XDoWhileExpression__Group__350215 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__XDoWhileExpression__Group__3__Impl50243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__4__Impl_in_rule__XDoWhileExpression__Group__450274 = new BitSet(new long[]{0xF0801001800001F0L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5_in_rule__XDoWhileExpression__Group__450277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XDoWhileExpression__Group__4__Impl50305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__5__Impl_in_rule__XDoWhileExpression__Group__550336 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6_in_rule__XDoWhileExpression__Group__550339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__PredicateAssignment_5_in_rule__XDoWhileExpression__Group__5__Impl50366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__6__Impl_in_rule__XDoWhileExpression__Group__650396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__XDoWhileExpression__Group__6__Impl50424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0__Impl_in_rule__XBlockExpression__Group__050469 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1_in_rule__XBlockExpression__Group__050472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__1__Impl_in_rule__XBlockExpression__Group__150530 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2_in_rule__XBlockExpression__Group__150533 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__XBlockExpression__Group__1__Impl50561 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__2__Impl_in_rule__XBlockExpression__Group__250592 = new BitSet(new long[]{0xF8801001C00001F0L,0xF8A5000004418003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3_in_rule__XBlockExpression__Group__250595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0_in_rule__XBlockExpression__Group__2__Impl50622 = new BitSet(new long[]{0xF8801001C00001F2L,0xF8A5000004408003L,0x000000000001002FL});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__3__Impl_in_rule__XBlockExpression__Group__350653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__XBlockExpression__Group__3__Impl50681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__0__Impl_in_rule__XBlockExpression__Group_2__050720 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__1_in_rule__XBlockExpression__Group_2__050723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__ExpressionsAssignment_2_0_in_rule__XBlockExpression__Group_2__0__Impl50750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group_2__1__Impl_in_rule__XBlockExpression__Group_2__150780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__XBlockExpression__Group_2__1__Impl50809 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/DatatypeGrammarActivator.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/DatatypeGrammarActivator.java
new file mode 100644
index 0000000..cd5af80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src-gen/org/eclipse/osbp/dsl/datatype/xtext/ui/internal/DatatypeGrammarActivator.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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 DatatypeGrammarActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_DSL_DATATYPE_XTEXT_DATATYPEGRAMMAR = "org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar";
+	
+	private static final Logger logger = Logger.getLogger(DatatypeGrammarActivator.class);
+	
+	private static DatatypeGrammarActivator 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 DatatypeGrammarActivator 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_DSL_DATATYPE_XTEXT_DATATYPEGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammarRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_DSL_DATATYPE_XTEXT_DATATYPEGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.datatype.xtext.ui.DatatypeGrammarUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/DatatypeGrammarUiModule.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/DatatypeGrammarUiModule.java
new file mode 100644
index 0000000..002a9d0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/DatatypeGrammarUiModule.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class DatatypeGrammarUiModule extends org.eclipse.osbp.dsl.datatype.xtext.ui.AbstractDatatypeGrammarUiModule {
+	public DatatypeGrammarUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/DatatypeGrammarProposalProvider.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/DatatypeGrammarProposalProvider.java
new file mode 100644
index 0000000..b68bd26
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/contentassist/DatatypeGrammarProposalProvider.java
@@ -0,0 +1,252 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to
+ * customize content assistant
+ */
+public class DatatypeGrammarProposalProvider
+		extends
+		org.eclipse.osbp.dsl.datatype.xtext.ui.contentassist.AbstractDatatypeGrammarProposalProvider {
+
+	@Override
+	public void completeDtCDigits_MsgCode(EObject model, Assignment assignment,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "digits", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCDigits_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "digits", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCAssertFalse_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "assertFalse", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCAssertFalse_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "assertFalse", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCAssertTrue_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "assertTrue", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCAssertTrue_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "assertTrue", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCDecimalMax_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "decimalMax", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCDecimalMax_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "decimalMax", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCDecimalMin_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "decimalMin", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCDecimalMin_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "decimalMin", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCFuture_MsgCode(EObject model, Assignment assignment,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "isFuture", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCFuture_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "isFuture", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCPast_MsgCode(EObject model, Assignment assignment,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "isPast", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCPast_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "isPast", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNumericMax_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "numericMax", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNumericMax_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "numericMax", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNumericMin_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "numericMin", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNumericMin_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "numericMin", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNotNull_MsgCode(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "isNotNull", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNotNull_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "isNotNull", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNull_MsgCode(EObject model, Assignment assignment,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "isNull", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCNull_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "isNull", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCRegEx_MsgCode(EObject model, Assignment assignment,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "regex", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCRegEx_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "regex", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCSize_MsgCode(EObject model, Assignment assignment,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeMessageCode(model, "size", context, acceptor);
+	}
+
+	@Override
+	public void completeDtCSize_MsgI18nKey(EObject model,
+			Assignment assignment, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		completeMessageI18nKey(model, "size", context, acceptor);
+	}
+
+	protected void completeMessageCode(EObject model, String name,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		LDataType lDt = (LDataType) model.eContainer();
+		StringBuilder b = new StringBuilder();
+		b.append("MSG_Datatype_");
+		b.append(lDt.getName());
+		b.append("__");
+		b.append(name);
+
+		ConfigurableCompletionProposal result = doCreateProposal(b.toString(),
+				new StyledString(b.toString()), null, replacementOffset,
+				replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+
+	protected void completeMessageI18nKey(EObject model, String name,
+			ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		int replacementOffset = context.getReplaceRegion().getOffset();
+		int replacementLength = context.getReplaceRegion().getLength() + 1;
+
+		LDataType lDt = (LDataType) model.eContainer();
+		StringBuilder b = new StringBuilder();
+		b.append("MSG_Datatype_");
+		b.append(lDt.getName());
+		b.append("__");
+		b.append(name);
+		b.append(".message");
+
+		ConfigurableCompletionProposal result = doCreateProposal(b.toString(),
+				new StyledString(b.toString()), null, replacementOffset,
+				replacementLength);
+		result.setPriority(1000);
+		result.setMatcher(context.getMatcher());
+		result.setReplaceContextLength(context.getReplaceContextLength());
+		acceptor.accept(result);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/outline/DatatypeGrammarOutlineTreeProvider.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/outline/DatatypeGrammarOutlineTreeProvider.java
new file mode 100644
index 0000000..e026e77
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/outline/DatatypeGrammarOutlineTreeProvider.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.dsl.datatype.xtext.ui.outline;
+
+
+ 
+
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+public class DatatypeGrammarOutlineTreeProvider extends org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+	
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/quickfix/DatatypeGrammarQuickfixProvider.java b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/quickfix/DatatypeGrammarQuickfixProvider.java
new file mode 100644
index 0000000..0224aa7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext.ui/src/org/eclipse/osbp/dsl/datatype/xtext/ui/quickfix/DatatypeGrammarQuickfixProvider.java
@@ -0,0 +1,29 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.dsl.datatype.xtext.ui.quickfix;
+
+
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+public class DatatypeGrammarQuickfixProvider extends org.eclipse.osbp.dsl.common.xtext.ui.quickfix.CommonGrammarQuickfixProvider {
+
+
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/.project b/org.eclipse.osbp.dsl.datatype.xtext/.project
new file mode 100644
index 0000000..ddb67b3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.datatype.xtext</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.datatype.xtext/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/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.dsl.datatype.xtext/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.datatype.xtext/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b81ee43
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/META-INF/MANIFEST.MF
@@ -0,0 +1,71 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.datatype.xtext
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.datatype.xtext;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.apache.log4j;bundle-version="1.2.15";visibility:=reexport,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;bundle-version="2.9.1";resolution:=optional,
+ org.eclipse.emf.mwe.utils;bundle-version="1.3.1";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.7.0,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore;bundle-version="2.9.1",
+ org.eclipse.emf.common;bundle-version="2.9.1",
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore;bundle-version="1.1.1";resolution:=optional,
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ 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)"
+Import-Package: javax.persistence;version="2.1.0",
+ org.apache.commons.logging,
+ org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.datatype.xtext;
+  uses:="org.eclipse.xtext,
+   org.eclipse.xtext.xtype,
+   org.eclipse.xtext.service,
+   org.eclipse.xtext.common.types,
+   com.google.inject";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.jvmmodel;
+  uses:="org.eclipse.xtext.xbase.jvmmodel";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.parser.antlr;
+  uses:="org.eclipse.osbp.dsl.datatype.xtext.services,
+   org.eclipse.xtext.parser.antlr,
+   org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal;
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.common.util,
+   org.eclipse.osbp.dsl.datatype.xtext.services,
+   org.antlr.runtime,
+   org.eclipse.xtext.parser.antlr";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.serializer;
+  uses:="org.eclipse.xtext,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.serializer.sequencer,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.osbp.dsl.datatype.xtext.services,
+   org.eclipse.xtext.serializer.analysis,
+   org.eclipse.xtext.nodemodel,
+   org.eclipse.osbp.dsl.common.xtext.serializer";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.services;
+  uses:="org.eclipse.xtext,
+   org.eclipse.xtext.xbase.services,
+   org.eclipse.xtext.service,
+   org.eclipse.xtext.xbase.annotations.services,
+   org.eclipse.osbp.dsl.common.xtext.services";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.validation;
+  uses:="org.eclipse.osbp.dsl.common.xtext.validation";version="0.9.0",
+ org.eclipse.osbp.dsl.datatype.xtext.valueconverter;
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.xtext.naming,
+   org.eclipse.osbp.dsl.common.xtext.valueconverter";version="0.9.0"
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/about.html b/org.eclipse.osbp.dsl.datatype.xtext/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/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.dsl.datatype.xtext/about.ini b/org.eclipse.osbp.dsl.datatype.xtext/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/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.dsl.datatype.xtext/about.mappings b/org.eclipse.osbp.dsl.datatype.xtext/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/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.dsl.datatype.xtext/about.properties b/org.eclipse.osbp.dsl.datatype.xtext/about.properties
new file mode 100644
index 0000000..62050a9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.datatype.xtext
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/build.properties b/org.eclipse.osbp.dsl.datatype.xtext/build.properties
new file mode 100644
index 0000000..8a712ac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/build.properties
@@ -0,0 +1,8 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/epl-v10.html b/org.eclipse.osbp.dsl.datatype.xtext/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/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.dsl.datatype.xtext/license.html b/org.eclipse.osbp.dsl.datatype.xtext/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/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.dsl.datatype.xtext/pom.xml b/org.eclipse.osbp.dsl.datatype.xtext/pom.xml
new file mode 100644
index 0000000..d7160e8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.datatype.xtext</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/AbstractDatatypeGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/AbstractDatatypeGrammarRuntimeModule.java
new file mode 100644
index 0000000..30ea155
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/AbstractDatatypeGrammarRuntimeModule.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext;
+
+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.dsl.datatype.xtext.DatatypeGrammarRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractDatatypeGrammarRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammar.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar");
+	}
+	
+	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("datatype");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.dsl.datatype.xtext.serializer.DatatypeGrammarSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.dsl.datatype.xtext.serializer.DatatypeGrammarSyntacticSequencer.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.dsl.datatype.xtext.parser.antlr.DatatypeGrammarParser.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.dsl.datatype.xtext.parser.antlr.DatatypeGrammarAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarLexer> provideInternalDatatypeGrammarLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarLexer.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.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarLexer.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.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.dsl.datatype.xtext.validation.DatatypeGrammarJavaValidator> bindDatatypeGrammarJavaValidator() {
+		return org.eclipse.osbp.dsl.datatype.xtext.validation.DatatypeGrammarJavaValidator.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.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// 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.dsl.datatype.xtext.jvmmodel.DatatypeGrammarJvmModelInferrer.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarStandaloneSetupGenerated.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarStandaloneSetupGenerated.java
new file mode 100644
index 0000000..79cd8c4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarStandaloneSetupGenerated.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext;
+
+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 DatatypeGrammarStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammarRuntimeModule());
+	}
+	
+	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("datatype", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("datatype", serviceProvider);
+		
+
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/DatatypeGrammarAntlrTokenFileProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/DatatypeGrammarAntlrTokenFileProvider.java
new file mode 100644
index 0000000..7bbc80c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/DatatypeGrammarAntlrTokenFileProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class DatatypeGrammarAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/DatatypeGrammarParser.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/DatatypeGrammarParser.java
new file mode 100644
index 0000000..dda6fa9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/DatatypeGrammarParser.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+public class DatatypeGrammarParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private DatatypeGrammarGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.dsl.datatype.xtext.parser.antlr.internal.InternalDatatypeGrammarParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "LCommonModel";
+	}
+	
+	public DatatypeGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DatatypeGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/DebugInternalDatatypeGrammar.g b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/DebugInternalDatatypeGrammar.g
new file mode 100644
index 0000000..bcad749
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/DebugInternalDatatypeGrammar.g
@@ -0,0 +1,3243 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar DebugInternalDatatypeGrammar;
+
+	
+
+
+
+
+
+
+// Rule LCommonModel
+ruleLCommonModel :
+(
+(
+ruleTypedPackage
+)
+)*
+;
+
+
+
+
+
+
+// Rule TypedPackage
+ruleTypedPackage :
+((
+)	'package' 
+(
+(
+ruleQualifiedName
+)
+)(	'{' 
+(
+(
+ruleImport
+)
+)*(
+(
+ruleScalarType
+)
+)*	'}' 
+)?)
+;
+
+
+
+
+
+
+
+
+// Rule Class
+ruleClass :
+((
+)(
+(
+ruleAnnotationDef
+)
+)*(
+)	'class' 
+)
+;
+
+
+
+
+
+
+// Rule Import
+ruleImport :
+(	'import' 
+(
+(
+ruleLQualifiedNameWithWildCard
+)
+)	';' 
+)
+;
+
+
+
+
+
+
+// Rule DataType
+ruleDataType :
+(	'datatype' 
+(
+(
+ruleValidIDWithKeywords
+)
+)((	'jvmType' 
+(
+(
+ruleJvmTypeReference
+)
+)(
+(
+	'as primitive' 
+ 
+
+)
+)?(
+(
+ruleDataTypeConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?)
+    |((
+(
+	'dateType' 
+ 
+
+)
+)(
+(
+ruleDateType
+)
+)(
+(
+ruleDateConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?)
+    |((
+(
+	'as blob' 
+ 
+
+)
+)(
+(
+ruleBlobTypeConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?))(	';' 
+)?)
+;
+
+
+
+
+
+
+
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint :
+(	ruleDtCAssertFalse
+    |	ruleDtCAssertTrue
+    |	ruleDtCDecimalMax
+    |	ruleDtCDecimalMin
+    |	ruleDtCDigits
+    |	ruleDtCNumericMax
+    |	ruleDtCNumericMin
+    |	ruleDtCNotNull
+    |	ruleDtCNull
+    |	ruleDtCRegEx
+    |	ruleDtCSize)
+;
+
+
+
+
+
+
+// Rule DateConstraint
+ruleDateConstraint :
+(	ruleDtCFuture
+    |	ruleDtCPast
+    |	ruleDtCNotNull
+    |	ruleDtCNull)
+;
+
+
+
+
+
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint :
+(	ruleDtCNotNull
+    |	ruleDtCNull)
+;
+
+
+
+
+
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse :
+((
+)	'isFalse' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue :
+((
+)	'isTrue' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax :
+((
+)	'maxDecimal' 
+	'(' 
+(
+(
+ruleLDecimal
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin :
+((
+)	'minDecimal' 
+	'(' 
+(
+(
+ruleLDecimal
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCDigits
+ruleDtCDigits :
+((
+)	'digits' 
+	'(' 
+(
+(
+RULE_INT
+
+)
+)	', ' 
+(
+(
+RULE_INT
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCFuture
+ruleDtCFuture :
+((
+)	'isFuture' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCPast
+ruleDtCPast :
+((
+)	'isPast' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCNumericMax
+ruleDtCNumericMax :
+((
+)	'maxNumber' 
+	'(' 
+(
+(
+ruleLInt
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCNumericMin
+ruleDtCNumericMin :
+((
+)	'minNumber' 
+	'(' 
+(
+(
+ruleLInt
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCNotNull
+ruleDtCNotNull :
+((
+)	'isNotNull' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCNull
+ruleDtCNull :
+((
+)	'isNull' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCRegEx
+ruleDtCRegEx :
+((
+)	'regex' 
+	'(' 
+(
+(
+RULE_STRING
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCSize
+ruleDtCSize :
+((
+)	'minMaxSize' 
+	'(' 
+(
+(
+RULE_INT
+
+)
+)	', ' 
+(
+(
+RULE_INT
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule ScalarType
+ruleScalarType :
+(	ruleDataType
+    |	ruleEnum)
+;
+
+
+
+
+
+
+
+
+// Rule Enum
+ruleEnum :
+(	'enum' 
+(
+(
+RULE_ID
+
+)
+)	'{' 
+(
+(
+ruleEnumLiteral
+)
+)(	', ' 
+(
+(
+ruleEnumLiteral
+)
+))*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule EnumLiteral
+ruleEnumLiteral :
+((
+(
+RULE_ID
+
+)
+)(
+((	'(' 
+(
+(
+	'asDefault' 
+ 
+
+)
+)?)
+    |((
+(
+	'forNull' 
+ 
+
+)
+)?	')' 
+(	'=' 
+(
+(
+RULE_INT
+
+)
+))?))*
+)?)
+;
+
+
+
+
+
+
+// Rule AnnotationDef
+ruleAnnotationDef :
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+ruleXAnnotation
+)
+))
+;
+
+
+
+
+
+
+
+
+// Rule ResultFilter
+ruleResultFilter :
+	ruleAttributeMatchingConstraint
+;
+
+
+
+
+
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint :
+((
+(
+	RULE_ID
+
+)
+)(
+(
+ruleLComparatorType
+)
+)((
+(
+RULE_STRING
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+	RULE_ID
+
+)
+))	';' 
+)
+;
+
+
+
+
+
+
+// Rule KeyAndValue
+ruleKeyAndValue :
+(	'key' 
+	'=' 
+(
+(
+RULE_STRING
+
+)
+)	'value' 
+	'=' 
+(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard :
+( ruleQualifiedName(
+	'.' 
+
+	'*' 
+)?)
+    ;
+
+
+
+
+
+
+
+
+
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords :
+(
+	'cachable' 
+
+    |
+	'id' 
+
+    |
+	'uuid' 
+
+    |
+	'transient' 
+
+    |
+	'version' 
+
+    |(
+	'derived' 
+
+	'collection' 
+)
+    |
+	'refers' 
+
+    |
+	'settings' 
+
+    |
+	'lazy' 
+
+    |
+	'notnull' 
+
+    |
+	'dto' 
+
+    |
+	'date' 
+
+    |
+	'mapto' 
+
+    |
+	'ref' 
+
+    |
+	'cascade' 
+
+    |
+	'var' 
+
+    | RULE_ID)
+    ;
+
+
+
+
+
+
+
+
+
+
+// Rule LInt
+ruleLInt :
+((
+	'+' 
+
+    |
+	'-' 
+)? RULE_INT)
+    ;
+
+
+
+
+
+
+// Rule LDecimal
+ruleLDecimal :
+( ruleLInt(
+	'.' 
+RULE_INT)?)
+    ;
+
+
+
+
+
+
+// Rule XAnnotation
+ruleXAnnotation :
+((
+)	'@' 
+(
+(
+		ruleQualifiedName
+)
+)(((	'(' 
+)=>	'(' 
+)((((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+ruleXAnnotationElementValuePair
+)
+)(	',' 
+((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+ruleXAnnotationElementValuePair
+)
+))*)
+    |(
+(
+ruleXAnnotationElementValueOrCommaList
+)
+))?	')' 
+)?)
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair :
+(((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>((
+(
+		ruleValidID
+)
+)	'=' 
+))(
+(
+ruleXAnnotationElementValue
+)
+))
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList :
+((((((
+)	'#' 
+	'[' 
+))=>((
+)	'#' 
+	'[' 
+))((
+(
+ruleXAnnotationOrExpression
+)
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))*)?	']' 
+)
+    |(	ruleXAnnotationOrExpression((
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))+)?))
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue :
+((((((
+)	'#' 
+	'[' 
+))=>((
+)	'#' 
+	'[' 
+))((
+(
+ruleXAnnotationOrExpression
+)
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))*)?	']' 
+)
+    |	ruleXAnnotationOrExpression)
+;
+
+
+
+
+
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression :
+(	ruleXAnnotation
+    |	ruleXExpression)
+;
+
+
+
+
+
+
+// Rule XExpression
+ruleXExpression :
+	ruleXAssignment
+;
+
+
+
+
+
+
+// Rule XAssignment
+ruleXAssignment :
+(((
+)(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign(
+(
+ruleXAssignment
+)
+))
+    |(	ruleXOrExpression(((((
+)(
+(
+		ruleOpMultiAssign
+)
+)))=>((
+)(
+(
+		ruleOpMultiAssign
+)
+)))(
+(
+ruleXAssignment
+)
+))?))
+;
+
+
+
+
+
+
+// Rule OpSingleAssign
+ruleOpSingleAssign :
+
+	'=' 
+
+    ;
+
+
+
+
+
+
+// Rule OpMultiAssign
+ruleOpMultiAssign :
+(
+	'+=' 
+
+    |
+	'-=' 
+
+    |
+	'*=' 
+
+    |
+	'/=' 
+
+    |
+	'%=' 
+
+    |(
+	'<' 
+
+	'<' 
+
+	'=' 
+)
+    |(
+	'>' 
+(
+	'>' 
+)?
+	'>=' 
+))
+    ;
+
+
+
+
+
+
+// Rule XOrExpression
+ruleXOrExpression :
+(	ruleXAndExpression(((((
+)(
+(
+		ruleOpOr
+)
+)))=>((
+)(
+(
+		ruleOpOr
+)
+)))(
+(
+ruleXAndExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpOr
+ruleOpOr :
+
+	'||' 
+
+    ;
+
+
+
+
+
+
+// Rule XAndExpression
+ruleXAndExpression :
+(	ruleXEqualityExpression(((((
+)(
+(
+		ruleOpAnd
+)
+)))=>((
+)(
+(
+		ruleOpAnd
+)
+)))(
+(
+ruleXEqualityExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpAnd
+ruleOpAnd :
+
+	'&&' 
+
+    ;
+
+
+
+
+
+
+// Rule XEqualityExpression
+ruleXEqualityExpression :
+(	ruleXRelationalExpression(((((
+)(
+(
+		ruleOpEquality
+)
+)))=>((
+)(
+(
+		ruleOpEquality
+)
+)))(
+(
+ruleXRelationalExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpEquality
+ruleOpEquality :
+(
+	'==' 
+
+    |
+	'!=' 
+
+    |
+	'===' 
+
+    |
+	'!==' 
+)
+    ;
+
+
+
+
+
+
+// Rule XRelationalExpression
+ruleXRelationalExpression :
+(	ruleXOtherOperatorExpression((((((
+)	'instanceof' 
+))=>((
+)	'instanceof' 
+))(
+(
+ruleJvmTypeReference
+)
+))
+    |(((((
+)(
+(
+		ruleOpCompare
+)
+)))=>((
+)(
+(
+		ruleOpCompare
+)
+)))(
+(
+ruleXOtherOperatorExpression
+)
+)))*)
+;
+
+
+
+
+
+
+// Rule OpCompare
+ruleOpCompare :
+(
+	'>=' 
+
+    |(
+	'<' 
+
+	'=' 
+)
+    |
+	'>' 
+
+    |
+	'<' 
+)
+    ;
+
+
+
+
+
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression :
+(	ruleXAdditiveExpression(((((
+)(
+(
+		ruleOpOther
+)
+)))=>((
+)(
+(
+		ruleOpOther
+)
+)))(
+(
+ruleXAdditiveExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpOther
+ruleOpOther :
+(
+	'->' 
+
+    |
+	'..<' 
+
+    |(
+	'>' 
+
+	'..' 
+)
+    |
+	'..' 
+
+    |
+	'=>' 
+
+    |(
+	'>' 
+((((
+	'>' 
+
+	'>' 
+))=>(
+	'>' 
+
+	'>' 
+))
+    |
+	'>' 
+))
+    |(
+	'<' 
+((((
+	'<' 
+
+	'<' 
+))=>(
+	'<' 
+
+	'<' 
+))
+    |
+	'<' 
+
+    |
+	'=>' 
+))
+    |
+	'<>' 
+
+    |
+	'?:' 
+)
+    ;
+
+
+
+
+
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression :
+(	ruleXMultiplicativeExpression(((((
+)(
+(
+		ruleOpAdd
+)
+)))=>((
+)(
+(
+		ruleOpAdd
+)
+)))(
+(
+ruleXMultiplicativeExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpAdd
+ruleOpAdd :
+(
+	'+' 
+
+    |
+	'-' 
+)
+    ;
+
+
+
+
+
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression :
+(	ruleXUnaryOperation(((((
+)(
+(
+		ruleOpMulti
+)
+)))=>((
+)(
+(
+		ruleOpMulti
+)
+)))(
+(
+ruleXUnaryOperation
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpMulti
+ruleOpMulti :
+(
+	'*' 
+
+    |
+	'**' 
+
+    |
+	'/' 
+
+    |
+	'%' 
+)
+    ;
+
+
+
+
+
+
+// Rule XUnaryOperation
+ruleXUnaryOperation :
+(((
+)(
+(
+		ruleOpUnary
+)
+)(
+(
+ruleXUnaryOperation
+)
+))
+    |	ruleXCastedExpression)
+;
+
+
+
+
+
+
+// Rule OpUnary
+ruleOpUnary :
+(
+	'!' 
+
+    |
+	'-' 
+
+    |
+	'+' 
+)
+    ;
+
+
+
+
+
+
+// Rule XCastedExpression
+ruleXCastedExpression :
+(	ruleXPostfixOperation(((((
+)	'as' 
+))=>((
+)	'as' 
+))(
+(
+ruleJvmTypeReference
+)
+))*)
+;
+
+
+
+
+
+
+// Rule XPostfixOperation
+ruleXPostfixOperation :
+(	ruleXMemberFeatureCall((((
+)(
+(
+		ruleOpPostfix
+)
+)))=>((
+)(
+(
+		ruleOpPostfix
+)
+)))?)
+;
+
+
+
+
+
+
+// Rule OpPostfix
+ruleOpPostfix :
+(
+	'++' 
+
+    |
+	'--' 
+)
+    ;
+
+
+
+
+
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall :
+(	ruleXPrimaryExpression((((((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))=>((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))(
+(
+ruleXAssignment
+)
+))
+    |(((((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))=>((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))(	'<' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(
+(
+		ruleIdOrSuper
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?))*)
+;
+
+
+
+
+
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression :
+(	ruleXConstructorCall
+    |	ruleXBlockExpression
+    |	ruleXSwitchExpression
+    |((((
+)	'synchronized' 
+	'(' 
+))=>	ruleXSynchronizedExpression)
+    |	ruleXFeatureCall
+    |	ruleXLiteral
+    |	ruleXIfExpression
+    |((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>	ruleXForLoopExpression)
+    |	ruleXBasicForLoopExpression
+    |	ruleXWhileExpression
+    |	ruleXDoWhileExpression
+    |	ruleXThrowExpression
+    |	ruleXReturnExpression
+    |	ruleXTryCatchFinallyExpression
+    |	ruleXParenthesizedExpression)
+;
+
+
+
+
+
+
+// Rule XLiteral
+ruleXLiteral :
+(	ruleXCollectionLiteral
+    |((((
+)	'[' 
+))=>	ruleXClosure)
+    |	ruleXBooleanLiteral
+    |	ruleXNumberLiteral
+    |	ruleXNullLiteral
+    |	ruleXStringLiteral
+    |	ruleXTypeLiteral)
+;
+
+
+
+
+
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral :
+(	ruleXSetLiteral
+    |	ruleXListLiteral)
+;
+
+
+
+
+
+
+// Rule XSetLiteral
+ruleXSetLiteral :
+((
+)	'#' 
+	'{' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XListLiteral
+ruleXListLiteral :
+((
+)	'#' 
+	'[' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	']' 
+)
+;
+
+
+
+
+
+
+// Rule XClosure
+ruleXClosure :
+(((((
+)	'[' 
+))=>((
+)	'[' 
+))(((((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>(((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))?(
+(
+ruleXExpressionInClosure
+)
+)	']' 
+)
+;
+
+
+
+
+
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure :
+((
+)((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	';' 
+)?)*)
+;
+
+
+
+
+
+
+// Rule XShortClosure
+ruleXShortClosure :
+(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression :
+(	'(' 
+	ruleXExpression	')' 
+)
+;
+
+
+
+
+
+
+// Rule XIfExpression
+ruleXIfExpression :
+((
+)	'if' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+)(((	'else' 
+)=>	'else' 
+)(
+(
+ruleXExpression
+)
+))?)
+;
+
+
+
+
+
+
+// Rule XSwitchExpression
+ruleXSwitchExpression :
+((
+)	'switch' 
+(((((	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>(	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+)
+    |(((((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))?(
+(
+ruleXExpression
+)
+)))	'{' 
+(
+(
+ruleXCasePart
+)
+)*(	'default' 
+	':' 
+(
+(
+ruleXExpression
+)
+))?	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XCasePart
+ruleXCasePart :
+((
+)(
+(
+ruleJvmTypeReference
+)
+)?(	'case' 
+(
+(
+ruleXExpression
+)
+))?((	':' 
+(
+(
+ruleXExpression
+)
+))
+    |(
+(
+	',' 
+ 
+
+)
+)))
+;
+
+
+
+
+
+
+// Rule XForLoopExpression
+ruleXForLoopExpression :
+(((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression :
+((
+)	'for' 
+	'(' 
+((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	',' 
+(
+(
+ruleXExpressionOrVarDeclaration
+)
+))*)?	';' 
+(
+(
+ruleXExpression
+)
+)?	';' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XWhileExpression
+ruleXWhileExpression :
+((
+)	'while' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression :
+((
+)	'do' 
+(
+(
+ruleXExpression
+)
+)	'while' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+)
+;
+
+
+
+
+
+
+// Rule XBlockExpression
+ruleXBlockExpression :
+((
+)	'{' 
+((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	';' 
+)?)*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration :
+(	ruleXVariableDeclaration
+    |	ruleXExpression)
+;
+
+
+
+
+
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration :
+((
+)((
+(
+	'var' 
+ 
+
+)
+)
+    |	'val' 
+)(((((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))=>((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))
+    |(
+(
+ruleValidID
+)
+))(	'=' 
+(
+(
+ruleXExpression
+)
+))?)
+;
+
+
+
+
+
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter :
+((
+(
+ruleJvmTypeReference
+)
+)?(
+(
+ruleValidID
+)
+))
+;
+
+
+
+
+
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter :
+((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+))
+;
+
+
+
+
+
+
+// Rule XFeatureCall
+ruleXFeatureCall :
+((
+)(	'<' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(
+(
+		ruleIdOrSuper
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?)
+;
+
+
+
+
+
+
+// Rule FeatureCallID
+ruleFeatureCallID :
+( ruleValidID
+    |
+	'extends' 
+
+    |
+	'static' 
+
+    |
+	'import' 
+
+    |
+	'extension' 
+)
+    ;
+
+
+
+
+
+
+// Rule IdOrSuper
+ruleIdOrSuper :
+( ruleFeatureCallID
+    |
+	'super' 
+)
+    ;
+
+
+
+
+
+
+// Rule XConstructorCall
+ruleXConstructorCall :
+((
+)	'new' 
+(
+(
+		ruleQualifiedName
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?)
+;
+
+
+
+
+
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral :
+((
+)(	'false' 
+
+    |(
+(
+	'true' 
+ 
+
+)
+)))
+;
+
+
+
+
+
+
+// Rule XNullLiteral
+ruleXNullLiteral :
+((
+)	'null' 
+)
+;
+
+
+
+
+
+
+// Rule XNumberLiteral
+ruleXNumberLiteral :
+((
+)(
+(
+ruleNumber
+)
+))
+;
+
+
+
+
+
+
+// Rule XStringLiteral
+ruleXStringLiteral :
+((
+)(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule XTypeLiteral
+ruleXTypeLiteral :
+((
+)	'typeof' 
+	'(' 
+(
+(
+		ruleQualifiedName
+)
+)(
+(
+ruleArrayBrackets
+)
+)*	')' 
+)
+;
+
+
+
+
+
+
+// Rule XThrowExpression
+ruleXThrowExpression :
+((
+)	'throw' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XReturnExpression
+ruleXReturnExpression :
+((
+)	'return' 
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+ruleXExpression
+)
+)?)
+;
+
+
+
+
+
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression :
+((
+)	'try' 
+(
+(
+ruleXExpression
+)
+)((((	'catch' 
+)=>
+(
+ruleXCatchClause
+)
+)+(((	'finally' 
+)=>	'finally' 
+)(
+(
+ruleXExpression
+)
+))?)
+    |(	'finally' 
+(
+(
+ruleXExpression
+)
+))))
+;
+
+
+
+
+
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression :
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+)	'synchronized' 
+	'(' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XCatchClause
+ruleXCatchClause :
+(((	'catch' 
+)=>	'catch' 
+)	'(' 
+(
+(
+ruleFullJvmFormalParameter
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule QualifiedName
+ruleQualifiedName :
+( ruleValidID(((
+	'.' 
+)=>
+	'.' 
+) ruleValidID)*)
+    ;
+
+
+
+
+
+
+// Rule Number
+ruleNumber :
+( RULE_HEX
+    |(( RULE_INT
+    | RULE_DECIMAL)(
+	'.' 
+( RULE_INT
+    | RULE_DECIMAL))?))
+    ;
+
+
+
+
+
+
+
+
+// Rule JvmTypeReference
+ruleJvmTypeReference :
+((	ruleJvmParameterizedTypeReference((((
+)	ruleArrayBrackets))=>((
+)	ruleArrayBrackets))*)
+    |	ruleXFunctionTypeRef)
+;
+
+
+
+
+
+
+// Rule ArrayBrackets
+ruleArrayBrackets :
+(
+	'[' 
+
+	']' 
+)
+    ;
+
+
+
+
+
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef :
+((	'(' 
+((
+(
+ruleJvmTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmTypeReference
+)
+))*)?	')' 
+)?	'=>' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference :
+((
+(
+		ruleQualifiedName
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+(((((
+)	'.' 
+))=>((
+)	'.' 
+))(
+(
+		ruleValidID
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?)*)?)
+;
+
+
+
+
+
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference :
+(	ruleJvmTypeReference
+    |	ruleJvmWildcardTypeReference)
+;
+
+
+
+
+
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference :
+((
+)	'?' 
+(((
+(
+ruleJvmUpperBound
+)
+)(
+(
+ruleJvmUpperBoundAnded
+)
+)*)
+    |((
+(
+ruleJvmLowerBound
+)
+)(
+(
+ruleJvmLowerBoundAnded
+)
+)*))?)
+;
+
+
+
+
+
+
+// Rule JvmUpperBound
+ruleJvmUpperBound :
+(	'extends' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded :
+(	'&' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmLowerBound
+ruleJvmLowerBound :
+(	'super' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded :
+(	'&' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard :
+( ruleQualifiedName
+	'.' 
+
+	'*' 
+)
+    ;
+
+
+
+
+
+
+// Rule ValidID
+ruleValidID :
+RULE_ID
+    ;
+
+
+
+
+
+
+
+
+// Rule XImportDeclaration
+ruleXImportDeclaration :
+(	'import' 
+(((
+(
+	'static' 
+ 
+
+)
+)(
+(
+	'extension' 
+ 
+
+)
+)?(
+(
+		ruleQualifiedNameInStaticImport
+)
+)((
+(
+	'*' 
+ 
+
+)
+)
+    |(
+(
+ruleValidID
+)
+)))
+    |(
+(
+		ruleQualifiedName
+)
+)
+    |(
+(
+ruleQualifiedNameWithWildcard
+)
+))(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport :
+( ruleValidID
+	'.' 
+)+
+    ;
+
+
+
+
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity :
+((	'info' 
+)
+    |(	'warn' 
+)
+    |(	'error' 
+));
+
+
+
+// Rule DateType
+ruleDateType :
+((	'date' 
+)
+    |(	'time' 
+)
+    |(	'timestamp' 
+));
+
+
+
+// Rule LVisibility
+ruleLVisibility :
+((	'package' 
+)
+    |(	'private' 
+)
+    |(	'protected' 
+)
+    |(	'public' 
+));
+
+
+
+// Rule LComparatorType
+ruleLComparatorType :
+((	'==' 
+)
+    |(	'>' 
+)
+    |(	'<' 
+)
+    |(	'>=' 
+)
+    |(	'<=' 
+)
+    |(	'<>' 
+));
+
+
+
+// Rule LowerBound
+ruleLowerBound :
+((	'*' 
+)
+    |(	'0' 
+)
+    |(	'?' 
+)
+    |(	'+' 
+)
+    |(	'1' 
+));
+
+
+
+// Rule UpperBound
+ruleUpperBound :
+((	'*' 
+)
+    |(	'1' 
+));
+
+
+
+RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
+
+RULE_INT : '0'..'9' ('0'..'9'|'_')*;
+
+RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/' {skip();};
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')? {skip();};
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+ {skip();};
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g
new file mode 100644
index 0000000..f67384f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalDatatypeGrammar;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.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.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private DatatypeGrammarGrammarAccess grammarAccess;
+ 	
+    public InternalDatatypeGrammarParser(TokenStream input, DatatypeGrammarGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "LCommonModel";	
+   	}
+   	
+   	@Override
+   	protected DatatypeGrammarGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleLCommonModel
+entryRuleLCommonModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLCommonModelRule()); }
+	 iv_ruleLCommonModel=ruleLCommonModel 
+	 { $current=$iv_ruleLCommonModel.current; } 
+	 EOF 
+;
+
+// Rule LCommonModel
+ruleLCommonModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLCommonModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleTypedPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLCommonModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"TypedPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedPackageRule()); }
+	 iv_ruleTypedPackage=ruleTypedPackage 
+	 { $current=$iv_ruleTypedPackage.current; } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"Import");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesScalarTypeParserRuleCall_3_2_0()); 
+	    }
+		lv_types_5_0=ruleScalarType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"types",
+        		lv_types_5_0, 
+        		"ScalarType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassRule()); }
+	 iv_ruleClass=ruleClass 
+	 { $current=$iv_ruleClass.current; } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getClassAccess().getLClassAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2(),
+            $current);
+    }
+)	otherlv_3='class' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getClassAccess().getClassKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportRule()); }
+	 iv_ruleImport=ruleImport 
+	 { $current=$iv_ruleImport.current; } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"LQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeRule()); }
+	 iv_ruleDataType=ruleDataType 
+	 { $current=$iv_ruleDataType.current; } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datatype' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2='jvmType' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+	    }
+		lv_jvmTypeReference_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"jvmTypeReference",
+        		lv_jvmTypeReference_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_asPrimitive_4_0=	'as primitive' 
+    {
+        newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asPrimitive", true, "as primitive");
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+	    }
+		lv_constraints_5_0=ruleDataTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"DataTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_6='properties' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+    }
+	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+	    }
+		lv_properties_8_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_8_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=', ' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+	    }
+		lv_properties_10_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_10_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11=')' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+    }
+)?)
+    |((
+(
+		lv_date_12_0=	'dateType' 
+    {
+        newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "date", true, "dateType");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+	    }
+		lv_dateType_13_0=ruleDateType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateType",
+        		lv_dateType_13_0, 
+        		"DateType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+	    }
+		lv_constraints_14_0=ruleDateConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_14_0, 
+        		"DateConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_15='properties' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+    }
+	otherlv_16='(' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+	    }
+		lv_properties_17_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_17_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_18=', ' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+	    }
+		lv_properties_19_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_19_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_20=')' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+    }
+)?)
+    |((
+(
+		lv_asBlob_21_0=	'as blob' 
+    {
+        newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asBlob", true, "as blob");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+	    }
+		lv_constraints_22_0=ruleBlobTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_22_0, 
+        		"BlobTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_23='properties' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+    }
+	otherlv_24='(' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+	    }
+		lv_properties_25_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_25_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=', ' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+	    }
+		lv_properties_27_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_27_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28=')' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+    }
+)?))(	otherlv_29=';' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeConstraintRule()); }
+	 iv_ruleDataTypeConstraint=ruleDataTypeConstraint 
+	 { $current=$iv_ruleDataTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDateConstraintRule()); }
+	 iv_ruleDateConstraint=ruleDateConstraint 
+	 { $current=$iv_ruleDateConstraint.current; } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+    }
+    this_DtCFuture_0=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+    }
+    this_DtCPast_1=ruleDtCPast
+    { 
+        $current = $this_DtCPast_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+    }
+    this_DtCNotNull_2=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+    }
+    this_DtCNull_3=ruleDtCNull
+    { 
+        $current = $this_DtCNull_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); }
+	 iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint 
+	 { $current=$iv_ruleBlobTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+    }
+    this_DtCNotNull_0=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+    }
+    this_DtCNull_1=ruleDtCNull
+    { 
+        $current = $this_DtCNull_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertFalseRule()); }
+	 iv_ruleDtCAssertFalse=ruleDtCAssertFalse 
+	 { $current=$iv_ruleDtCAssertFalse.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+            $current);
+    }
+)	otherlv_1='isFalse' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertTrueRule()); }
+	 iv_ruleDtCAssertTrue=ruleDtCAssertTrue 
+	 { $current=$iv_ruleDtCAssertTrue.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+            $current);
+    }
+)	otherlv_1='isTrue' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); }
+	 iv_ruleDtCDecimalMax=ruleDtCDecimalMax 
+	 { $current=$iv_ruleDtCDecimalMax.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMinRule()); }
+	 iv_ruleDtCDecimalMin=ruleDtCDecimalMin 
+	 { $current=$iv_ruleDtCDecimalMin.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDigitsRule()); }
+	 iv_ruleDtCDigits=ruleDtCDigits 
+	 { $current=$iv_ruleDtCDigits.current; } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+            $current);
+    }
+)	otherlv_1='digits' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_intDigits_3_0=RULE_INT
+		{
+			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"intDigits",
+        		lv_intDigits_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_fractionDigits_5_0=RULE_INT
+		{
+			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fractionDigits",
+        		lv_fractionDigits_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCFutureRule()); }
+	 iv_ruleDtCFuture=ruleDtCFuture 
+	 { $current=$iv_ruleDtCFuture.current; } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+            $current);
+    }
+)	otherlv_1='isFuture' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCPastRule()); }
+	 iv_ruleDtCPast=ruleDtCPast 
+	 { $current=$iv_ruleDtCPast.current; } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+            $current);
+    }
+)	otherlv_1='isPast' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMaxRule()); }
+	 iv_ruleDtCNumericMax=ruleDtCNumericMax 
+	 { $current=$iv_ruleDtCNumericMax.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMinRule()); }
+	 iv_ruleDtCNumericMin=ruleDtCNumericMin 
+	 { $current=$iv_ruleDtCNumericMin.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNotNullRule()); }
+	 iv_ruleDtCNotNull=ruleDtCNotNull 
+	 { $current=$iv_ruleDtCNotNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNotNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNullRule()); }
+	 iv_ruleDtCNull=ruleDtCNull 
+	 { $current=$iv_ruleDtCNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCRegExRule()); }
+	 iv_ruleDtCRegEx=ruleDtCRegEx 
+	 { $current=$iv_ruleDtCRegEx.current; } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+            $current);
+    }
+)	otherlv_1='regex' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_pattern_3_0=RULE_STRING
+		{
+			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCRegExRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"pattern",
+        		lv_pattern_3_0, 
+        		"STRING");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCSizeRule()); }
+	 iv_ruleDtCSize=ruleDtCSize 
+	 { $current=$iv_ruleDtCSize.current; } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+            $current);
+    }
+)	otherlv_1='minMaxSize' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_min_3_0=RULE_INT
+		{
+			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_max_5_0=RULE_INT
+		{
+			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"max",
+        		lv_max_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getScalarTypeRule()); }
+	 iv_ruleScalarType=ruleScalarType 
+	 { $current=$iv_ruleScalarType.current; } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+    }
+    this_DataType_0=ruleDataType
+    { 
+        $current = $this_DataType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+    }
+    this_Enum_1=ruleEnum
+    { 
+        $current = $this_Enum_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumRule()); }
+	 iv_ruleEnum=ruleEnum 
+	 { $current=$iv_ruleEnum.current; } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='enum' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+	    }
+		lv_literals_3_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_3_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+	    }
+		lv_literals_5_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_5_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumLiteralRule()); }
+	 iv_ruleEnumLiteral=ruleEnumLiteral 
+	 { $current=$iv_ruleEnumLiteral.current; } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=RULE_ID
+		{
+			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"ID");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+	 				}
+					({true}?=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+    }
+(
+(
+		lv_default_3_0=	'asDefault' 
+    {
+        newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "default", true, "asDefault");
+	    }
+
+)
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_null_4_0=	'forNull' 
+    {
+        newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "null", true, "forNull");
+	    }
+
+)
+)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+    }
+(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumLiteralAccess().getEqualsSignKeyword_1_1_2_0());
+    }
+(
+(
+		lv_value_7_0=RULE_INT
+		{
+			newLeafNode(lv_value_7_0, grammarAccess.getEnumLiteralAccess().getValueINTTerminalRuleCall_1_1_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"INT");
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationDefRule()); }
+	 iv_ruleAnnotationDef=ruleAnnotationDef 
+	 { $current=$iv_ruleAnnotationDef.current; } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationDefAccess().getAnnotationXAnnotationParserRuleCall_0_0()); 
+	    }
+		lv_annotation_0_0=ruleXAnnotation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationDefRule());
+	        }
+       		set(
+       			$current, 
+       			"annotation",
+        		lv_annotation_0_0, 
+        		"XAnnotation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResultFilterRule()); }
+	 iv_ruleResultFilter=ruleResultFilter 
+	 { $current=$iv_ruleResultFilter.current; } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); 
+    }
+    this_AttributeMatchingConstraint_0=ruleAttributeMatchingConstraint
+    { 
+        $current = $this_AttributeMatchingConstraint_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 iv_ruleAttributeMatchingConstraint=ruleAttributeMatchingConstraint 
+	 { $current=$iv_ruleAttributeMatchingConstraint.current; } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_0=RULE_ID
+	{
+		newLeafNode(otherlv_0, grammarAccess.getAttributeMatchingConstraintAccess().getAttributeLAttributeCrossReference_0_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeLComparatorTypeEnumRuleCall_1_0()); 
+	    }
+		lv_comparatorType_1_0=ruleLComparatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		set(
+       			$current, 
+       			"comparatorType",
+        		lv_comparatorType_1_0, 
+        		"LComparatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_matchingValue_2_0=RULE_STRING
+		{
+			newLeafNode(lv_matchingValue_2_0, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueSTRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"matchingValue",
+        		lv_matchingValue_2_0, 
+        		"STRING");
+	    }
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralLEnumLiteralCrossReference_2_1_0()); 
+	}
+
+)
+))	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getKeyAndValueRule()); }
+	 iv_ruleKeyAndValue=ruleKeyAndValue 
+	 { $current=$iv_ruleKeyAndValue.current; } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='key' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getKeyAndValueAccess().getKeyKeyword_0());
+    }
+	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+		lv_key_2_0=RULE_STRING
+		{
+			newLeafNode(lv_key_2_0, grammarAccess.getKeyAndValueAccess().getKeySTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_2_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_3='value' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getKeyAndValueAccess().getValueKeyword_3());
+    }
+	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_4());
+    }
+(
+(
+		lv_value_5_0=RULE_STRING
+		{
+			newLeafNode(lv_value_5_0, grammarAccess.getKeyAndValueAccess().getValueSTRINGTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 iv_ruleLQualifiedNameWithWildCard=ruleLQualifiedNameWithWildCard 
+	 { $current=$iv_ruleLQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 iv_ruleValidIDWithKeywords=ruleValidIDWithKeywords 
+	 { $current=$iv_ruleValidIDWithKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='cachable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
+    }
+
+    |
+	kw='id' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
+    }
+
+    |
+	kw='uuid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
+    }
+
+    |
+	kw='transient' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
+    }
+
+    |
+	kw='version' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
+    }
+
+    |(
+	kw='derived' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5_0()); 
+    }
+
+	kw='collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_5_1()); 
+    }
+)
+    |
+	kw='refers' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); 
+    }
+
+    |
+	kw='settings' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); 
+    }
+
+    |
+	kw='lazy' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); 
+    }
+
+    |
+	kw='notnull' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); 
+    }
+
+    |
+	kw='dto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); 
+    }
+
+    |
+	kw='date' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); 
+    }
+
+    |
+	kw='mapto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); 
+    }
+
+    |
+	kw='ref' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); 
+    }
+
+    |
+	kw='cascade' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); 
+    }
+
+    |
+	kw='var' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); 
+    }
+
+    |    this_ID_17=RULE_ID    {
+		$current.merge(this_ID_17);
+    }
+
+    { 
+    newLeafNode(this_ID_17, grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLIntRule()); } 
+	 iv_ruleLInt=ruleLInt 
+	 { $current=$iv_ruleLInt.current.getText(); }  
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
+    }
+)?    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLIntAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLDecimalRule()); } 
+	 iv_ruleLDecimal=ruleLDecimal 
+	 { $current=$iv_ruleLDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLDecimalAccess().getLIntParserRuleCall_0()); 
+    }
+    this_LInt_0=ruleLInt    {
+		$current.merge(this_LInt_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLDecimalAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLDecimalAccess().getINTTerminalRuleCall_1_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 
+	 { $current=$iv_ruleXStringLiteral.current; } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		lv_value_1_0=RULE_STRING
+		{
+			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
+	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
+	 { $current=$iv_ruleXTypeLiteral.current; } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='typeof' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+	    }
+		lv_arrayDimensions_4_0=ruleArrayBrackets		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"arrayDimensions",
+        		lv_arrayDimensions_4_0, 
+        		"ArrayBrackets");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
+	 iv_ruleXThrowExpression=ruleXThrowExpression 
+	 { $current=$iv_ruleXThrowExpression.current; } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='throw' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
+	 iv_ruleXReturnExpression=ruleXReturnExpression 
+	 { $current=$iv_ruleXReturnExpression.current; } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='return' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+    }
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
+	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='try' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((((	'catch' 
+)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+	    }
+		lv_catchClauses_3_0=ruleXCatchClause		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"catchClauses",
+        		lv_catchClauses_3_0, 
+        		"XCatchClause");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+(((	'finally' 
+)=>	otherlv_4='finally' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+	    }
+		lv_finallyExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='finally' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_finallyExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))))
+;
+
+
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
+	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
+	 { $current=$iv_ruleXSynchronizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='synchronized' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_param_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"param",
+        		lv_param_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getExpressionXExpressionParserRuleCall_3_0()); 
+	    }
+		lv_expression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXCatchClause
+entryRuleXCatchClause returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXCatchClauseRule()); }
+	 iv_ruleXCatchClause=ruleXCatchClause 
+	 { $current=$iv_ruleXCatchClause.current; } 
+	 EOF 
+;
+
+// Rule XCatchClause
+ruleXCatchClause returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((	'catch' 
+)=>	otherlv_0='catch' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0()); 
+	    }
+		lv_declaredParam_2_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"declaredParam",
+        		lv_declaredParam_2_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXCatchClauseAccess().getExpressionXExpressionParserRuleCall_4_0()); 
+	    }
+		lv_expression_4_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXCatchClauseRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_4_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule 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 entryRuleNumber
+entryRuleNumber returns [String current=null] 
+	@init { 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+	}
+	:
+	{ newCompositeNode(grammarAccess.getNumberRule()); } 
+	 iv_ruleNumber=ruleNumber 
+	 { $current=$iv_ruleNumber.current.getText(); }  
+	 EOF 
+;
+finally {
+	myHiddenTokenState.restore();
+}
+
+// Rule Number
+ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+    }
+    @after { leaveRule(); }:
+(    this_HEX_0=RULE_HEX    {
+		$current.merge(this_HEX_0);
+    }
+
+    { 
+    newLeafNode(this_HEX_0, grammarAccess.getNumberAccess().getHEXTerminalRuleCall_0()); 
+    }
+
+    |((    this_INT_1=RULE_INT    {
+		$current.merge(this_INT_1);
+    }
+
+    { 
+    newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_0_0()); 
+    }
+
+    |    this_DECIMAL_2=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_2);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_2, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_0_1()); 
+    }
+)(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+    }
+(    this_INT_4=RULE_INT    {
+		$current.merge(this_INT_4);
+    }
+
+    { 
+    newLeafNode(this_INT_4, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1_1_1_0()); 
+    }
+
+    |    this_DECIMAL_5=RULE_DECIMAL    {
+		$current.merge(this_DECIMAL_5);
+    }
+
+    { 
+    newLeafNode(this_DECIMAL_5, grammarAccess.getNumberAccess().getDECIMALTerminalRuleCall_1_1_1_1()); 
+    }
+))?))
+    ;
+finally {
+	myHiddenTokenState.restore();
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleJvmTypeReference
+entryRuleJvmTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmTypeReferenceRule()); }
+	 iv_ruleJvmTypeReference=ruleJvmTypeReference 
+	 { $current=$iv_ruleJvmTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0()); 
+    }
+    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference
+    { 
+        $current = $this_JvmParameterizedTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+((((
+)	ruleArrayBrackets))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0(),
+            $current);
+    }
+)
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getArrayBracketsParserRuleCall_0_1_0_1()); 
+    }
+ruleArrayBrackets
+    { 
+        afterParserOrEnumRuleCall();
+    }
+))*)
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getXFunctionTypeRefParserRuleCall_1()); 
+    }
+    this_XFunctionTypeRef_3=ruleXFunctionTypeRef
+    { 
+        $current = $this_XFunctionTypeRef_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleArrayBrackets
+entryRuleArrayBrackets returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getArrayBracketsRule()); } 
+	 iv_ruleArrayBrackets=ruleArrayBrackets 
+	 { $current=$iv_ruleArrayBrackets.current.getText(); }  
+	 EOF 
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='[' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+    }
+
+	kw=']' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleXFunctionTypeRef
+entryRuleXFunctionTypeRef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXFunctionTypeRefRule()); }
+	 iv_ruleXFunctionTypeRef=ruleXFunctionTypeRef 
+	 { $current=$iv_ruleXFunctionTypeRef.current; } 
+	 EOF 
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((	otherlv_0='(' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0()); 
+	    }
+		lv_paramTypes_1_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_1_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=',' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0()); 
+	    }
+		lv_paramTypes_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		add(
+       			$current, 
+       			"paramTypes",
+        		lv_paramTypes_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+    }
+)?	otherlv_5='=>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeJvmTypeReferenceParserRuleCall_2_0()); 
+	    }
+		lv_returnType_6_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXFunctionTypeRefRule());
+	        }
+       		set(
+       			$current, 
+       			"returnType",
+        		lv_returnType_6_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleJvmParameterizedTypeReference
+entryRuleJvmParameterizedTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceRule()); }
+	 iv_ruleJvmParameterizedTypeReference=ruleJvmParameterizedTypeReference 
+	 { $current=$iv_ruleJvmParameterizedTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_1='<' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0()); 
+	    }
+		lv_arguments_2_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_2_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3=',' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0()); 
+	    }
+		lv_arguments_4_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_4_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_5='>' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+    }
+(((((
+)	'.' 
+))=>((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+            $current);
+    }
+)	otherlv_7='.' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+    }
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+	    }
+		ruleValidID		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(((	'<' 
+)=>	otherlv_9='<' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0()); 
+	    }
+		lv_arguments_10_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_10_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=',' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0()); 
+	    }
+		lv_arguments_12_0=ruleJvmArgumentTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getJvmParameterizedTypeReferenceRule());
+	        }
+       		add(
+       			$current, 
+       			"arguments",
+        		lv_arguments_12_0, 
+        		"JvmArgumentTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_13='>' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+    }
+)?)*)?)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmArgumentTypeReference
+entryRuleJvmArgumentTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceRule()); }
+	 iv_ruleJvmArgumentTypeReference=ruleJvmArgumentTypeReference 
+	 { $current=$iv_ruleJvmArgumentTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmTypeReferenceParserRuleCall_0()); 
+    }
+    this_JvmTypeReference_0=ruleJvmTypeReference
+    { 
+        $current = $this_JvmTypeReference_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getJvmArgumentTypeReferenceAccess().getJvmWildcardTypeReferenceParserRuleCall_1()); 
+    }
+    this_JvmWildcardTypeReference_1=ruleJvmWildcardTypeReference
+    { 
+        $current = $this_JvmWildcardTypeReference_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleJvmWildcardTypeReference
+entryRuleJvmWildcardTypeReference returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceRule()); }
+	 iv_ruleJvmWildcardTypeReference=ruleJvmWildcardTypeReference 
+	 { $current=$iv_ruleJvmWildcardTypeReference.current; } 
+	 EOF 
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+            $current);
+    }
+)	otherlv_1='?' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+    }
+(((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0()); 
+	    }
+		lv_constraints_2_0=ruleJvmUpperBound		{
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.tokens b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.tokens
new file mode 100644
index 0000000..df3ef11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.tokens
@@ -0,0 +1,273 @@
+'!'=100
+'!='=87
+'!=='=89
+'#'=75
+'%'=99
+'%='=80
+'&&'=85
+'&'=133
+'('=23
+')'=25
+'*'=53
+'**'=97
+'*='=78
+'+'=71
+'++'=102
+'+='=76
+', '=24
+','=74
+'-'=72
+'--'=103
+'-='=77
+'->'=91
+'.'=52
+'..'=93
+'..<'=92
+'/'=98
+'/='=79
+'0'=143
+'1'=144
+':'=110
+'::'=104
+';'=18
+'<'=81
+'<='=142
+'<>'=95
+'='=31
+'=='=86
+'==='=88
+'=>'=94
+'>'=82
+'>='=83
+'?'=132
+'?.'=105
+'?:'=96
+'@'=73
+'['=29
+']'=34
+'as blob'=27
+'as primitive'=21
+'as'=101
+'asDefault'=48
+'cachable'=54
+'cascade'=69
+'case'=112
+'catch'=131
+'class'=16
+'collection'=60
+'datatype'=19
+'date'=66
+'dateType'=26
+'default'=111
+'derived'=59
+'digits'=38
+'do'=115
+'dto'=65
+'else'=108
+'enum'=47
+'error'=136
+'extends'=117
+'extension'=119
+'false'=122
+'finally'=129
+'for'=113
+'forNull'=49
+'id'=55
+'if'=107
+'import'=17
+'info'=134
+'instanceof'=90
+'isFalse'=28
+'isFuture'=39
+'isNotNull'=43
+'isNull'=44
+'isPast'=40
+'isTrue'=35
+'jvmType'=20
+'key'=50
+'lazy'=63
+'mapto'=67
+'maxDecimal'=36
+'maxNumber'=41
+'minDecimal'=37
+'minMaxSize'=46
+'minNumber'=42
+'msgCode'=30
+'msgI18nKey'=32
+'new'=121
+'notnull'=64
+'null'=124
+'package'=13
+'private'=139
+'properties'=22
+'protected'=140
+'public'=141
+'ref'=68
+'refers'=61
+'regex'=45
+'return'=127
+'settings'=62
+'severity'=33
+'static'=118
+'super'=120
+'switch'=109
+'synchronized'=130
+'throw'=126
+'time'=137
+'timestamp'=138
+'transient'=57
+'true'=123
+'try'=128
+'typeof'=125
+'uuid'=56
+'val'=116
+'value'=51
+'var'=70
+'version'=58
+'warn'=135
+'while'=114
+'{'=14
+'|'=106
+'||'=84
+'}'=15
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=6
+RULE_INT=4
+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__14=14
+T__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java
new file mode 100644
index 0000000..a7ce69b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarLexer.java
@@ -0,0 +1,5489 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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 InternalDatatypeGrammarLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=7;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalDatatypeGrammarLexer() {;} 
+    public InternalDatatypeGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDatatypeGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:11:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:12:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:13:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:14:7: ( 'class' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:14:9: 'class'
+            {
+            match("class"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:15:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:15:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:16:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:17:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:17:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:18:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:18:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:19:7: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:19:9: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:20:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:20:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:21:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:22:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:23:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:24:7: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:24:9: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:25:7: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:25:9: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:26:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:26:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:27:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:28:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:28:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:29:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:30:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:30:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:31:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:31:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:32:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:33:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:33:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:34:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:34:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:35:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:35:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:36:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:36:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:37:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:37:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:38:7: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:38:9: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:39:7: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:39:9: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:40:7: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:40:9: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:41:7: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:41:9: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:42:7: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:42:9: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:43:7: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:43:9: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:44:7: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:44:9: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:45:7: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:45:9: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:46:7: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:46:9: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:47:7: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:47:9: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:48:7: ( 'key' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:48:9: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:49:7: ( 'value' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:49:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:50:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:50:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:51:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:52:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:52:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:53:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:53:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:54:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:54:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:55:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:55:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:56:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:56:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:57:7: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:57:9: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:58:7: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:58:9: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:59:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:59:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:60:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:60:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:61:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:61:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:62:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:62:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:63:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:63:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:64:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:64:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:65:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:65:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:66:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:66:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:67:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:67:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:68:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:68:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:69:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:69:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__71"
+
+    // $ANTLR start "T__72"
+    public final void mT__72() throws RecognitionException {
+        try {
+            int _type = T__72;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:70:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:70:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__72"
+
+    // $ANTLR start "T__73"
+    public final void mT__73() throws RecognitionException {
+        try {
+            int _type = T__73;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:71:7: ( '@' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:72:7: ( ',' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:72:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__74"
+
+    // $ANTLR start "T__75"
+    public final void mT__75() throws RecognitionException {
+        try {
+            int _type = T__75;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:73:7: ( '#' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:73:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:74:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:74:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:75:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:76:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:76:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:77:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:77:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:78:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:78:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:79:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:79:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:80:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:80:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:81:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:81:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:82:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:82:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:83:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:83:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:84:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:84:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:85:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:85:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:86:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:86:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:87:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:87:9: '!=='
+            {
+            match("!=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:88:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:88:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:89:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:89:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:90:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:90:9: '..<'
+            {
+            match("..<"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:91:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:91:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:92:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:92:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:93:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:94:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:95:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:96:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:97:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:98:8: ( '!' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:99:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:99:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:100:8: ( '++' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:101:8: ( '--' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:102:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:103:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:104:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:105:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:105:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:106:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:106:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:107:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:107:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:108:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:109:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:109:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:110:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:110:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:111:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:111:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:112:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:112:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:113:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:113:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:114:8: ( 'val' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:114:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:115:8: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:115:10: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:116:8: ( 'static' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:116:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:117:8: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:117:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:118:8: ( 'super' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:118:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:119:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:119:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:120:8: ( 'false' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:120:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:121:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:121:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:122:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:122:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:123:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:123:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:124:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:124:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:125:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:125:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:126:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:126:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:127:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:127:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:128:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:128:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:129:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:129:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:130:8: ( '?' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:130:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:131:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:131:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:132:8: ( 'info' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:132:10: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:133:8: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:133:10: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:134:8: ( 'error' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:134:10: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:135:8: ( 'time' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:135:10: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:136:8: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:136:10: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:137:8: ( 'private' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:137:10: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:138:8: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:138:10: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:139:8: ( 'public' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:139:10: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:140:8: ( '<=' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:140:10: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:141:8: ( '0' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:141:10: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:142:8: ( '1' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:142:10: '1'
+            {
+            match('1'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10688: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10690:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10690:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10690: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10692: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10694:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10694:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10694:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10694: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10694: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10696: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10698:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10698:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10698: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10698: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10700: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10702:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10702:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10702: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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10704:16: ( . )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:10704:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=141;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:847: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:856: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:865: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:878: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:886: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:898: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:914: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:930: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1:938: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\67\2\uffff\2\67\1\uffff\3\67\1\uffff\1\114\2\uffff\1\67\1\124\1\67\1\uffff\5\67\1\147\1\152\4\67\1\166\1\172\2\uffff\1\u0080\1\u0082\1\u0085\1\u0087\1\u0089\1\u008b\1\u008d\1\u0090\1\u0092\1\67\1\u0097\1\u0099\1\u009a\1\63\5\uffff\3\67\3\uffff\5\67\1\u00ab\1\67\1\u00ae\1\uffff\4\67\1\u00b4\1\67\1\u00b8\5\uffff\3\67\1\u00be\2\uffff\5\67\1\uffff\13\67\1\u00d4\4\uffff\11\67\30\uffff\1\u00e1\6\uffff\2\67\1\uffff\1\u009a\6\uffff\16\67\1\uffff\2\67\1\uffff\4\67\1\u00fd\1\uffff\1\67\1\uffff\1\67\1\uffff\4\67\2\uffff\7\67\1\u0112\5\67\1\u0119\2\67\1\u011c\1\u011e\1\u011f\1\67\2\uffff\3\67\1\u0124\5\67\1\u012a\1\67\2\uffff\12\67\1\u0136\12\67\1\u0141\1\67\1\u0144\3\67\1\uffff\1\67\2\uffff\21\67\1\uffff\1\67\1\u015b\1\u015c\3\67\1\uffff\2\67\1\uffff\1\67\2\uffff\1\67\1\u0164\1\67\1\u0166\1\uffff\2\67\1\u016a\1\u016b\1\67\1\uffff\1\u016d\1\67\1\u016f\5\67\1\u0175\2\67\1\uffff\1\u0178\11\67\1\uffff\2\67\1\uffff\11\67\1\u018d\7\67\1\u0195\1\67\1\u0197\2\67\2\uffff\1\67\1\u019c\1\67\1\u019e\1\67\1\u01a0\1\67\1\uffff\1\67\1\uffff\1\67\1\u01a4\1\67\2\uffff\1\67\1\uffff\1\u01a7\1\uffff\4\67\1\u01ac\1\uffff\2\67\1\uffff\1\67\1\u01b0\2\67\1\u01b3\1\u01b4\1\67\1\u01b6\3\67\1\u01ba\10\67\1\uffff\5\67\1\u01c8\1\u01c9\1\uffff\1\67\1\uffff\1\u01cb\1\u01cc\2\67\1\uffff\1\67\1\uffff\1\67\1\uffff\2\67\1\u01d3\1\uffff\2\67\1\uffff\1\u01d6\2\67\1\u01d9\1\uffff\1\67\1\u01db\1\67\1\uffff\1\u01dd\1\67\2\uffff\1\67\1\uffff\3\67\1\uffff\1\u01e3\1\u01e4\1\u01e5\1\67\1\u01e7\10\67\2\uffff\1\67\2\uffff\1\u01f1\1\67\1\u01f3\1\u01f4\1\u01f5\1\67\1\uffff\1\67\1\u01f8\1\uffff\2\67\1\uffff\1\u01fb\1\uffff\1\67\1\uffff\1\u01fd\2\67\1\u0200\1\u0201\3\uffff\1\67\1\uffff\6\67\1\u0209\1\u020a\1\67\1\uffff\1\67\3\uffff\2\67\1\uffff\1\67\1\u0210\1\uffff\1\67\1\uffff\1\u0212\1\67\2\uffff\1\u0214\2\67\1\u0217\1\67\1\u0219\1\67\2\uffff\1\67\1\u021c\1\u021d\1\u021e\1\u021f\1\uffff\1\u0220\1\uffff\1\u0221\1\uffff\1\u0222\1\u0223\1\uffff\1\u0224\1\uffff\1\u0225\1\67\12\uffff\1\67\1\u0228\1\uffff";
+    static final String DFA21_eofS =
+        "\u0229\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\141\2\uffff\1\141\1\144\1\uffff\1\141\1\166\1\163\1\uffff\1\40\2\uffff\1\141\1\75\1\145\1\uffff\1\145\1\154\1\141\1\145\1\141\1\56\1\52\1\165\1\150\1\141\1\145\1\53\1\55\2\uffff\1\52\3\75\1\174\1\46\1\75\1\56\1\72\1\141\3\60\1\44\5\uffff\1\143\1\151\1\142\3\uffff\1\141\1\143\1\154\1\160\1\106\1\44\1\146\1\44\1\uffff\1\164\1\147\1\146\1\157\1\44\1\155\1\40\5\uffff\1\147\1\160\1\156\1\75\2\uffff\1\164\1\151\1\141\1\160\1\156\1\uffff\1\146\1\165\1\163\1\164\2\162\1\154\1\156\1\171\1\154\1\162\1\74\4\uffff\1\151\1\141\1\160\1\162\1\155\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\uffff\1\60\6\uffff\1\153\1\160\1\166\1\154\1\163\1\150\2\143\1\154\1\157\1\141\1\162\1\141\1\157\1\uffff\1\164\1\157\1\uffff\1\141\2\151\1\141\1\44\1\uffff\1\124\1\142\1\145\1\uffff\1\103\1\104\1\164\1\104\2\uffff\1\145\3\164\1\145\1\143\1\145\1\44\1\165\1\155\2\145\1\157\1\44\1\163\1\141\3\44\1\163\2\uffff\1\144\1\156\1\145\1\44\1\145\1\157\1\145\1\171\1\156\1\44\1\154\2\uffff\1\154\1\156\1\141\2\145\1\141\1\151\1\163\2\141\1\44\1\150\1\145\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\141\1\44\1\164\1\44\1\164\1\166\1\165\1\uffff\1\171\2\uffff\1\146\1\157\1\61\1\145\1\165\1\157\1\145\1\165\1\141\1\162\1\151\1\143\1\151\1\162\1\150\1\170\1\162\1\uffff\1\162\2\44\1\156\1\162\1\165\1\uffff\1\145\1\154\1\uffff\1\145\2\uffff\1\151\1\44\1\163\1\44\1\uffff\1\157\1\167\2\44\1\165\1\uffff\1\44\1\145\1\44\1\147\1\162\1\143\1\164\1\143\1\44\1\142\1\144\1\uffff\1\44\1\143\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\156\1\uffff\2\171\1\uffff\1\163\1\145\1\154\1\160\1\141\1\144\1\70\1\143\1\155\1\44\1\143\1\155\1\170\1\151\1\156\1\150\1\143\1\44\1\162\1\44\1\163\1\156\2\uffff\1\144\1\44\1\154\1\44\1\154\1\44\1\157\1\uffff\1\151\1\uffff\1\146\1\44\1\164\2\uffff\1\154\1\uffff\1\44\1\uffff\1\145\2\164\1\145\1\44\1\uffff\1\154\1\145\1\uffff\1\164\1\44\1\145\1\162\2\44\1\165\1\44\1\143\2\160\1\44\1\144\1\164\1\145\1\165\1\145\1\156\1\151\1\142\1\uffff\1\151\1\142\1\123\1\164\1\147\2\44\1\uffff\1\157\1\uffff\2\44\1\163\1\151\1\uffff\1\154\1\uffff\1\171\1\uffff\1\156\1\145\1\44\1\uffff\1\141\1\154\1\uffff\1\44\1\151\1\145\1\44\1\uffff\1\145\1\44\1\151\1\uffff\1\44\1\145\2\uffff\1\154\1\uffff\3\145\1\uffff\3\44\1\154\1\44\1\113\1\155\1\145\1\155\1\145\1\151\1\171\1\163\2\uffff\1\156\2\uffff\1\44\1\157\3\44\1\156\1\uffff\1\155\1\44\1\uffff\1\145\1\144\1\uffff\1\44\1\uffff\1\157\1\uffff\1\44\1\154\1\157\2\44\3\uffff\1\164\1\uffff\1\145\1\141\1\162\1\141\1\162\1\172\2\44\1\151\1\uffff\1\156\3\uffff\1\164\1\160\1\uffff\1\163\1\44\1\uffff\1\156\1\uffff\1\44\1\146\2\uffff\1\44\1\171\1\154\1\44\1\154\1\44\1\145\2\uffff\1\172\4\44\1\uffff\1\44\1\uffff\1\44\1\uffff\2\44\1\uffff\1\44\1\uffff\1\44\1\145\12\uffff\1\144\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\165\2\uffff\1\157\1\163\1\uffff\1\164\1\166\1\163\1\uffff\1\40\2\uffff\1\163\1\76\1\171\1\uffff\1\145\1\170\1\157\2\145\1\56\1\75\1\165\1\171\1\141\1\165\1\75\1\76\2\uffff\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\150\1\170\2\154\1\172\5\uffff\1\143\1\157\1\142\3\uffff\1\141\1\164\1\154\1\160\1\124\1\172\1\163\1\172\1\uffff\1\164\1\147\1\162\1\157\1\172\1\155\1\172\5\uffff\1\147\1\170\1\156\1\75\2\uffff\1\166\1\151\1\141\1\160\1\156\1\uffff\1\164\1\165\1\163\1\164\2\162\1\154\1\156\1\171\2\162\1\74\4\uffff\1\151\1\171\1\160\1\162\1\155\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\uffff\1\154\6\uffff\1\153\1\164\1\166\1\154\1\163\1\150\1\145\1\143\1\154\1\157\1\165\1\162\1\141\1\165\1\uffff\1\164\1\157\1\uffff\1\145\2\151\1\141\1\172\1\uffff\1\124\1\160\1\145\1\uffff\1\111\1\116\1\164\1\116\2\uffff\1\145\3\164\1\145\1\143\1\145\1\172\1\165\1\155\2\145\1\157\1\172\1\163\1\141\3\172\1\163\2\uffff\1\144\1\156\1\145\1\172\1\145\1\157\1\145\1\171\1\156\1\172\1\154\2\uffff\1\154\1\156\1\141\2\145\1\141\1\151\1\163\2\141\1\172\1\150\1\145\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\141\1\172\1\164\1\172\1\164\1\166\1\165\1\uffff\1\171\2\uffff\1\146\1\157\1\61\1\145\1\165\1\157\1\145\1\165\1\141\1\162\1\151\1\143\1\151\1\162\1\150\1\170\1\162\1\uffff\1\162\2\172\1\156\1\162\1\165\1\uffff\1\145\1\154\1\uffff\1\145\2\uffff\1\151\1\172\1\163\1\172\1\uffff\1\157\1\167\2\172\1\165\1\uffff\1\172\1\145\1\172\1\147\1\162\1\143\1\164\1\143\1\172\1\142\1\144\1\uffff\1\172\1\143\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\156\1\uffff\2\171\1\uffff\1\163\1\145\1\154\1\160\1\141\1\144\1\70\1\143\1\155\1\172\1\143\1\155\1\170\1\151\1\156\1\150\1\143\1\172\1\162\1\172\1\163\1\156\2\uffff\1\163\1\172\1\154\1\172\1\154\1\172\1\157\1\uffff\1\151\1\uffff\1\146\1\172\1\164\2\uffff\1\154\1\uffff\1\172\1\uffff\1\145\2\164\1\145\1\172\1\uffff\1\154\1\145\1\uffff\1\164\1\172\1\145\1\162\2\172\1\165\1\172\1\143\2\160\1\172\1\144\1\164\1\145\1\165\1\145\1\156\1\151\1\142\1\uffff\1\151\1\142\1\123\1\164\1\147\2\172\1\uffff\1\157\1\uffff\2\172\1\163\1\151\1\uffff\1\154\1\uffff\1\171\1\uffff\1\156\1\145\1\172\1\uffff\1\141\1\154\1\uffff\1\172\1\151\1\145\1\172\1\uffff\1\145\1\172\1\151\1\uffff\1\172\1\145\2\uffff\1\154\1\uffff\3\145\1\uffff\3\172\1\154\1\172\1\113\1\155\1\145\1\155\1\145\1\151\1\171\1\163\2\uffff\1\156\2\uffff\1\172\1\157\3\172\1\156\1\uffff\1\155\1\172\1\uffff\1\145\1\144\1\uffff\1\172\1\uffff\1\157\1\uffff\1\172\1\154\1\157\2\172\3\uffff\1\164\1\uffff\1\145\1\141\1\162\1\141\1\162\3\172\1\151\1\uffff\1\156\3\uffff\1\164\1\160\1\uffff\1\163\1\172\1\uffff\1\156\1\uffff\1\172\1\146\2\uffff\1\172\1\171\1\154\1\172\1\154\1\172\1\145\2\uffff\5\172\1\uffff\1\172\1\uffff\1\172\1\uffff\2\172\1\uffff\1\172\1\uffff\1\172\1\145\12\uffff\1\144\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\2\uffff\1\2\1\3\2\uffff\1\6\3\uffff\1\13\1\uffff\1\15\1\21\3\uffff\1\26\15\uffff\1\75\1\77\16\uffff\1\u0088\2\u0089\1\u008c\1\u008d\3\uffff\1\u0088\1\2\1\3\10\uffff\1\6\7\uffff\1\13\1\14\1\76\1\15\1\21\4\uffff\1\122\1\23\5\uffff\1\26\14\uffff\1\50\1\102\1\125\1\51\11\uffff\1\100\1\132\1\73\1\101\1\117\1\133\1\74\1\75\1\77\1\103\1\u008a\1\u008b\1\126\1\104\1\127\1\123\1\u0082\1\105\1\107\1\106\1\110\1\136\1\111\1\171\1\uffff\1\130\1\124\1\135\1\170\1\134\1\142\2\uffff\1\u0085\1\uffff\1\u0083\1\u0087\1\u0084\1\u0086\1\u0089\1\u008c\16\uffff\1\53\2\uffff\1\137\5\uffff\1\147\3\uffff\1\131\4\uffff\1\114\1\112\24\uffff\1\120\1\121\13\uffff\1\115\1\113\33\uffff\1\65\1\uffff\1\11\1\17\21\uffff\1\70\6\uffff\1\145\2\uffff\1\46\1\uffff\1\150\1\72\4\uffff\1\164\5\uffff\1\155\13\uffff\1\144\12\uffff\1\172\2\uffff\1\66\26\uffff\1\43\1\140\7\uffff\1\54\1\uffff\1\157\3\uffff\1\175\1\63\1\uffff\1\160\1\uffff\1\173\5\uffff\1\4\2\uffff\1\167\24\uffff\1\67\7\uffff\1\154\1\uffff\1\41\4\uffff\1\174\1\uffff\1\156\1\uffff\1\47\3\uffff\1\162\2\uffff\1\146\4\uffff\1\u0081\3\uffff\1\5\2\uffff\1\27\1\34\1\uffff\1\40\3\uffff\1\32\15\uffff\1\141\1\152\1\uffff\1\61\1\163\6\uffff\1\161\2\uffff\1\1\2\uffff\1\177\1\uffff\1\71\1\uffff\1\20\5\uffff\1\57\1\143\1\10\1\uffff\1\22\11\uffff\1\151\1\uffff\1\45\1\165\1\56\2\uffff\1\64\2\uffff\1\52\1\uffff\1\33\2\uffff\1\7\1\16\7\uffff\1\25\1\62\5\uffff\1\u0080\1\uffff\1\37\1\uffff\1\44\2\uffff\1\35\1\uffff\1\36\2\uffff\1\153\1\55\1\176\1\12\1\60\1\116\1\24\1\30\1\31\1\42\2\uffff\1\166";
+    static final String DFA21_specialS =
+        "\1\0\u0228\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\63\2\62\2\63\1\62\22\63\1\62\1\47\1\60\1\40\1\57\1\42\1\46\1\61\1\12\1\14\1\30\1\35\1\13\1\36\1\27\1\41\1\53\1\54\10\55\1\51\1\6\1\43\1\17\1\44\1\50\1\37\32\57\1\15\1\63\1\21\1\56\1\57\1\63\1\11\1\57\1\4\1\7\1\23\1\24\2\57\1\5\1\10\1\25\1\33\1\16\1\34\1\57\1\1\1\57\1\22\1\20\1\32\1\31\1\26\1\52\3\57\1\2\1\45\1\3\uff82\63",
+            "\1\64\20\uffff\1\65\2\uffff\1\66",
+            "",
+            "",
+            "\1\73\12\uffff\1\72\2\uffff\1\74",
+            "\1\77\1\uffff\1\101\6\uffff\1\75\1\100\4\uffff\1\76",
+            "",
+            "\1\103\3\uffff\1\105\3\uffff\1\104\5\uffff\1\107\4\uffff\1\106",
+            "\1\110",
+            "\1\111",
+            "",
+            "\1\113",
+            "",
+            "",
+            "\1\120\7\uffff\1\121\11\uffff\1\117",
+            "\1\122\1\123",
+            "\1\125\16\uffff\1\127\1\130\1\uffff\1\126\1\uffff\1\131",
+            "",
+            "\1\133",
+            "\1\135\1\uffff\1\134\3\uffff\1\137\5\uffff\1\136",
+            "\1\141\7\uffff\1\142\5\uffff\1\140",
+            "\1\143",
+            "\1\144\3\uffff\1\145",
+            "\1\146",
+            "\1\151\22\uffff\1\150",
+            "\1\153",
+            "\1\156\1\157\10\uffff\1\154\6\uffff\1\155",
+            "\1\160",
+            "\1\162\11\uffff\1\161\5\uffff\1\163",
+            "\1\165\21\uffff\1\164",
+            "\1\171\17\uffff\1\167\1\170",
+            "",
+            "",
+            "\1\176\4\uffff\1\177\15\uffff\1\175",
+            "\1\u0081",
+            "\1\u0084\1\u0083",
+            "\1\u0086",
+            "\1\u0088",
+            "\1\u008a",
+            "\1\u008c",
+            "\1\u008f\13\uffff\1\u008e",
+            "\1\u0091",
+            "\1\u0094\6\uffff\1\u0093",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095\6\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\13\uffff\1\u0095",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "\1\67\34\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009d",
+            "\1\u009f\5\uffff\1\u009e",
+            "\1\u00a0",
+            "",
+            "",
+            "",
+            "\1\u00a1",
+            "\1\u00a2\17\uffff\1\u00a3\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7\7\uffff\1\u00aa\1\uffff\1\u00a9\3\uffff\1\u00a8",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00ad\14\uffff\1\u00ac",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b2\13\uffff\1\u00b1",
+            "\1\u00b3",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u00b5",
+            "\1\u00b6\3\uffff\1\67\13\uffff\12\67\7\uffff\3\67\1\u00b7\26\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b9",
+            "\1\u00bb\7\uffff\1\u00ba",
+            "\1\u00bc",
+            "\1\u00bd",
+            "",
+            "",
+            "\1\u00c0\1\uffff\1\u00bf",
+            "\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "",
+            "\1\u00c6\1\u00c5\14\uffff\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0\5\uffff\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d5",
+            "\1\u00d6\23\uffff\1\u00d7\3\uffff\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e2",
+            "\1\u00e3",
+            "",
+            "\12\u0096\10\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098\22\uffff\1\u0096\2\uffff\1\u0098\1\uffff\3\u0098\5\uffff\1\u0098",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e4",
+            "\1\u00e5\3\uffff\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb\1\uffff\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0\23\uffff\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4\5\uffff\1\u00f5",
+            "",
+            "\1\u00f6",
+            "\1\u00f7",
+            "",
+            "\1\u00f8\3\uffff\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u00fe",
+            "\1\u0100\15\uffff\1\u00ff",
+            "\1\u0101",
+            "",
+            "\1\u0102\5\uffff\1\u0103",
+            "\1\u0104\11\uffff\1\u0105",
+            "\1\u0106",
+            "\1\u0107\10\uffff\1\u0109\1\u0108",
+            "",
+            "",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\4\67\1\u0111\25\67",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\67\13\uffff\12\67\7\uffff\15\67\1\u0118\14\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\24\67\1\u011d\5\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0120",
+            "",
+            "",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u012b",
+            "",
+            "",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0142",
+            "\1\67\13\uffff\12\67\7\uffff\23\67\1\u0143\6\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "",
+            "\1\u0148",
+            "",
+            "",
+            "\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\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "",
+            "\1\u015a",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "",
+            "\1\u0160",
+            "\1\u0161",
+            "",
+            "\1\u0162",
+            "",
+            "",
+            "\1\u0163",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0165",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\22\67\1\u0169\7\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u016c",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u016e",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0176",
+            "\1\u0177",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\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\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0196",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0198",
+            "\1\u0199",
+            "",
+            "",
+            "\1\u019a\16\uffff\1\u019b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u019d",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u019f",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01a1",
+            "",
+            "\1\u01a2",
+            "",
+            "\1\u01a3",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01a5",
+            "",
+            "",
+            "\1\u01a6",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01ad",
+            "\1\u01ae",
+            "",
+            "\1\u01af",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b5",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01ca",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01cd",
+            "\1\u01ce",
+            "",
+            "\1\u01cf",
+            "",
+            "\1\u01d0",
+            "",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01d4",
+            "\1\u01d5",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01da",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01dc",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01de",
+            "",
+            "",
+            "\1\u01df",
+            "",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01e6",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "",
+            "",
+            "\1\u01f0",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01f2",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01f6",
+            "",
+            "\1\u01f7",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01f9",
+            "\1\u01fa",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u01fc",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "",
+            "",
+            "\1\u0202",
+            "",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u020b",
+            "",
+            "\1\u020c",
+            "",
+            "",
+            "",
+            "\1\u020d",
+            "\1\u020e",
+            "",
+            "\1\u020f",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\u0211",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0213",
+            "",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0215",
+            "\1\u0216",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0218",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u021a",
+            "",
+            "",
+            "\1\u021b",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            "\1\u0226",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0227",
+            "\1\67\13\uffff\12\67\7\uffff\32\67\4\uffff\1\67\1\uffff\32\67",
+            ""
+    };
+
+    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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            IntStream input = _input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA21_0 = input.LA(1);
+
+                        s = -1;
+                        if ( (LA21_0=='p') ) {s = 1;}
+
+                        else if ( (LA21_0=='{') ) {s = 2;}
+
+                        else if ( (LA21_0=='}') ) {s = 3;}
+
+                        else if ( (LA21_0=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='i') ) {s = 5;}
+
+                        else if ( (LA21_0==';') ) {s = 6;}
+
+                        else if ( (LA21_0=='d') ) {s = 7;}
+
+                        else if ( (LA21_0=='j') ) {s = 8;}
+
+                        else if ( (LA21_0=='a') ) {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=='m') ) {s = 14;}
+
+                        else if ( (LA21_0=='=') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0==']') ) {s = 17;}
+
+                        else if ( (LA21_0=='r') ) {s = 18;}
+
+                        else if ( (LA21_0=='e') ) {s = 19;}
+
+                        else if ( (LA21_0=='f') ) {s = 20;}
+
+                        else if ( (LA21_0=='k') ) {s = 21;}
+
+                        else if ( (LA21_0=='v') ) {s = 22;}
+
+                        else if ( (LA21_0=='.') ) {s = 23;}
+
+                        else if ( (LA21_0=='*') ) {s = 24;}
+
+                        else if ( (LA21_0=='u') ) {s = 25;}
+
+                        else if ( (LA21_0=='t') ) {s = 26;}
+
+                        else if ( (LA21_0=='l') ) {s = 27;}
+
+                        else if ( (LA21_0=='n') ) {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=='w') ) {s = 42;}
+
+                        else if ( (LA21_0=='0') ) {s = 43;}
+
+                        else if ( (LA21_0=='1') ) {s = 44;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 45;}
+
+                        else if ( (LA21_0=='^') ) {s = 46;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='o'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 47;}
+
+                        else if ( (LA21_0=='\"') ) {s = 48;}
+
+                        else if ( (LA21_0=='\'') ) {s = 49;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 50;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 51;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarParser.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarParser.java
new file mode 100644
index 0000000..9b25e8b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+
+
+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 InternalDatatypeGrammarParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'class'", "'import'", "';'", "'datatype'", "'jvmType'", "'as primitive'", "'properties'", "'('", "', '", "')'", "'dateType'", "'as blob'", "'isFalse'", "'['", "'msgCode'", "'='", "'msgI18nKey'", "'severity'", "']'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'asDefault'", "'forNull'", "'key'", "'value'", "'.'", "'*'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'derived'", "'collection'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'@'", "','", "'#'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'1'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int RULE_HEX=7;
+    public static final int T__50=50;
+    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=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__48=48;
+    public static final int T__49=49;
+    public static final int T__44=44;
+    public static final int T__45=45;
+    public static final int T__46=46;
+    public static final int T__47=47;
+    public static final int T__40=40;
+    public static final int T__41=41;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalDatatypeGrammarParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalDatatypeGrammarParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalDatatypeGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g"; }
+
+
+
+     	private DatatypeGrammarGrammarAccess grammarAccess;
+     	
+        public InternalDatatypeGrammarParser(TokenStream input, DatatypeGrammarGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "LCommonModel";	
+       	}
+       	
+       	@Override
+       	protected DatatypeGrammarGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleLCommonModel"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:68:1: entryRuleLCommonModel returns [EObject current=null] : iv_ruleLCommonModel= ruleLCommonModel EOF ;
+    public final EObject entryRuleLCommonModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLCommonModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:69:2: (iv_ruleLCommonModel= ruleLCommonModel EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:70:2: iv_ruleLCommonModel= ruleLCommonModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getLCommonModelRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLCommonModel_in_entryRuleLCommonModel75);
+            iv_ruleLCommonModel=ruleLCommonModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleLCommonModel; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLCommonModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLCommonModel"
+
+
+    // $ANTLR start "ruleLCommonModel"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:77:1: ruleLCommonModel returns [EObject current=null] : ( (lv_packages_0_0= ruleTypedPackage ) )* ;
+    public final EObject ruleLCommonModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:80:28: ( ( (lv_packages_0_0= ruleTypedPackage ) )* )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==13) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:83:3: lv_packages_0_0= ruleTypedPackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getLCommonModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_ruleLCommonModel130);
+            	    lv_packages_0_0=ruleTypedPackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getLCommonModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"TypedPackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLCommonModel"
+
+
+    // $ANTLR start "entryRuleTypedPackage"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:107:1: entryRuleTypedPackage returns [EObject current=null] : iv_ruleTypedPackage= ruleTypedPackage EOF ;
+    public final EObject entryRuleTypedPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTypedPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:108:2: (iv_ruleTypedPackage= ruleTypedPackage EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:109:2: iv_ruleTypedPackage= ruleTypedPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypedPackageRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage166);
+            iv_ruleTypedPackage=ruleTypedPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTypedPackage; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedPackage176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTypedPackage"
+
+
+    // $ANTLR start "ruleTypedPackage"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:116:1: ruleTypedPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleTypedPackage() 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_types_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:120:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleTypedPackage222); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:132:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleTypedPackage243);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}' )?
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==14) ) {
+                alt4=1;
+            }
+            switch (alt4) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleScalarType ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleTypedPackage256); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:152:1: ( (lv_imports_4_0= ruleImport ) )*
+                    loop2:
+                    do {
+                        int alt2=2;
+                        int LA2_0 = input.LA(1);
+
+                        if ( (LA2_0==17) ) {
+                            alt2=1;
+                        }
+
+
+                        switch (alt2) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:153:1: (lv_imports_4_0= ruleImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:153:1: (lv_imports_4_0= ruleImport )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:154:3: lv_imports_4_0= ruleImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleImport_in_ruleTypedPackage277);
+                    	    lv_imports_4_0=ruleImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"Import");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop2;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:170:3: ( (lv_types_5_0= ruleScalarType ) )*
+                    loop3:
+                    do {
+                        int alt3=2;
+                        int LA3_0 = input.LA(1);
+
+                        if ( (LA3_0==19||LA3_0==47) ) {
+                            alt3=1;
+                        }
+
+
+                        switch (alt3) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:171:1: (lv_types_5_0= ruleScalarType )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:171:1: (lv_types_5_0= ruleScalarType )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:172:3: lv_types_5_0= ruleScalarType
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesScalarTypeParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleScalarType_in_ruleTypedPackage299);
+                    	    lv_types_5_0=ruleScalarType();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"types",
+                    	              		lv_types_5_0, 
+                    	              		"ScalarType");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop3;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleTypedPackage312); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTypedPackage"
+
+
+    // $ANTLR start "entryRuleClass"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:202:1: entryRuleClass returns [EObject current=null] : iv_ruleClass= ruleClass EOF ;
+    public final EObject entryRuleClass() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleClass = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:203:2: (iv_ruleClass= ruleClass EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:204:2: iv_ruleClass= ruleClass EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getClassRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleClass_in_entryRuleClass352);
+            iv_ruleClass=ruleClass();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleClass; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleClass362); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleClass"
+
+
+    // $ANTLR start "ruleClass"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:211:1: ruleClass returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' ) ;
+    public final EObject ruleClass() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_3=null;
+        EObject lv_annotations_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:214:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:215:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:215:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:215:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'class'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:215:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:216:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getClassAccess().getLClassAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:221:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop5:
+            do {
+                int alt5=2;
+                int LA5_0 = input.LA(1);
+
+                if ( (LA5_0==73) ) {
+                    alt5=1;
+                }
+
+
+                switch (alt5) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:222:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:222:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:223:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleClass417);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop5;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:239:3: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:240:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_3=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleClass439); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getClassAccess().getClassKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleClass"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:257:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
+    public final EObject entryRuleImport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleImport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:258:2: (iv_ruleImport= ruleImport EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:259:2: iv_ruleImport= ruleImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getImportRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleImport_in_entryRuleImport475);
+            iv_ruleImport=ruleImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleImport; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImport485); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:266:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) otherlv_2= ';' ) ;
+    public final EObject ruleImport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:269:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) otherlv_2= ';' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:270:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) otherlv_2= ';' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:270:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) otherlv_2= ';' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:270:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) otherlv_2= ';'
+            {
+            otherlv_0=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleImport522); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:274:1: ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:275:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:275:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:276:3: lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLQualifiedNameWithWildCard_in_ruleImport543);
+            lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getImportRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"importedNamespace",
+                      		lv_importedNamespace_1_0, 
+                      		"LQualifiedNameWithWildCard");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleImport555); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleDataType"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:304:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
+    public final EObject entryRuleDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:305:2: (iv_ruleDataType= ruleDataType EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:306:2: iv_ruleDataType= ruleDataType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataType_in_entryRuleDataType591);
+            iv_ruleDataType=ruleDataType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataType601); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataType"
+
+
+    // $ANTLR start "ruleDataType"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:313:1: ruleDataType returns [EObject current=null] : (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) ;
+    public final EObject ruleDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_asPrimitive_4_0=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token lv_date_12_0=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token lv_asBlob_21_0=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_jvmTypeReference_3_0 = null;
+
+        EObject lv_constraints_5_0 = null;
+
+        EObject lv_properties_8_0 = null;
+
+        EObject lv_properties_10_0 = null;
+
+        Enumerator lv_dateType_13_0 = null;
+
+        EObject lv_constraints_14_0 = null;
+
+        EObject lv_properties_17_0 = null;
+
+        EObject lv_properties_19_0 = null;
+
+        EObject lv_constraints_22_0 = null;
+
+        EObject lv_properties_25_0 = null;
+
+        EObject lv_properties_27_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:316:28: ( (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:317:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:317:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:317:3: otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )?
+            {
+            otherlv_0=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleDataType638); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:321:1: ( (lv_name_1_0= ruleValidIDWithKeywords ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:322:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:322:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:323:3: lv_name_1_0= ruleValidIDWithKeywords
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDataType659);
+            lv_name_1_0=ruleValidIDWithKeywords();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidIDWithKeywords");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:339:2: ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) )
+            int alt16=3;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt16=1;
+                }
+                break;
+            case 26:
+                {
+                alt16=2;
+                }
+                break;
+            case 27:
+                {
+                alt16=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 16, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt16) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:339:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:339:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:339:5: otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    {
+                    otherlv_2=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleDataType673); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:343:1: ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:344:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:344:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:345:3: lv_jvmTypeReference_3_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleDataType694);
+                    lv_jvmTypeReference_3_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"jvmTypeReference",
+                              		lv_jvmTypeReference_3_0, 
+                              		"JvmTypeReference");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:361:2: ( (lv_asPrimitive_4_0= 'as primitive' ) )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0==21) ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:362:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            {
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:362:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:363:3: lv_asPrimitive_4_0= 'as primitive'
+                            {
+                            lv_asPrimitive_4_0=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleDataType712); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		setWithLastConsumed(current, "asPrimitive", true, "as primitive");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:376:3: ( (lv_constraints_5_0= ruleDataTypeConstraint ) )*
+                    loop7:
+                    do {
+                        int alt7=2;
+                        int LA7_0 = input.LA(1);
+
+                        if ( (LA7_0==28||(LA7_0>=35 && LA7_0<=38)||(LA7_0>=41 && LA7_0<=46)) ) {
+                            alt7=1;
+                        }
+
+
+                        switch (alt7) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:377:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:377:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:378:3: lv_constraints_5_0= ruleDataTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_ruleDataType747);
+                    	    lv_constraints_5_0=ruleDataTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_5_0, 
+                    	              		"DataTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop7;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:394:3: (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0==22) ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:394:5: otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')'
+                            {
+                            otherlv_6=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType761); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+                                  
+                            }
+                            otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType773); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:402:1: ( (lv_properties_8_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:403:1: (lv_properties_8_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:403:1: (lv_properties_8_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:404:3: lv_properties_8_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType794);
+                            lv_properties_8_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_8_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:420:2: (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )*
+                            loop8:
+                            do {
+                                int alt8=2;
+                                int LA8_0 = input.LA(1);
+
+                                if ( (LA8_0==24) ) {
+                                    alt8=1;
+                                }
+
+
+                                switch (alt8) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:420:4: otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType807); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:424:1: ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:425:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:425:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:426:3: lv_properties_10_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType828);
+                            	    lv_properties_10_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_10_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop8;
+                                }
+                            } while (true);
+
+                            otherlv_11=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType842); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:447:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:447:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:447:7: ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:447:7: ( (lv_date_12_0= 'dateType' ) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:448:1: (lv_date_12_0= 'dateType' )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:448:1: (lv_date_12_0= 'dateType' )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:449:3: lv_date_12_0= 'dateType'
+                    {
+                    lv_date_12_0=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDataType870); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "date", true, "dateType");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:462:2: ( (lv_dateType_13_0= ruleDateType ) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:463:1: (lv_dateType_13_0= ruleDateType )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:463:1: (lv_dateType_13_0= ruleDateType )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:464:3: lv_dateType_13_0= ruleDateType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDateType_in_ruleDataType904);
+                    lv_dateType_13_0=ruleDateType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"dateType",
+                              		lv_dateType_13_0, 
+                              		"DateType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:480:2: ( (lv_constraints_14_0= ruleDateConstraint ) )*
+                    loop10:
+                    do {
+                        int alt10=2;
+                        int LA10_0 = input.LA(1);
+
+                        if ( ((LA10_0>=39 && LA10_0<=40)||(LA10_0>=43 && LA10_0<=44)) ) {
+                            alt10=1;
+                        }
+
+
+                        switch (alt10) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:481:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:481:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:482:3: lv_constraints_14_0= ruleDateConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_ruleDataType925);
+                    	    lv_constraints_14_0=ruleDateConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_14_0, 
+                    	              		"DateConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop10;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:498:3: (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0==22) ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:498:5: otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')'
+                            {
+                            otherlv_15=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType939); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+                                  
+                            }
+                            otherlv_16=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType951); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:506:1: ( (lv_properties_17_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:507:1: (lv_properties_17_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:507:1: (lv_properties_17_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:508:3: lv_properties_17_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType972);
+                            lv_properties_17_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_17_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:524:2: (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )*
+                            loop11:
+                            do {
+                                int alt11=2;
+                                int LA11_0 = input.LA(1);
+
+                                if ( (LA11_0==24) ) {
+                                    alt11=1;
+                                }
+
+
+                                switch (alt11) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:524:4: otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_18=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType985); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:528:1: ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:529:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:529:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:530:3: lv_properties_19_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1006);
+                            	    lv_properties_19_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_19_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop11;
+                                }
+                            } while (true);
+
+                            otherlv_20=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType1020); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:551:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:551:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:551:7: ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:551:7: ( (lv_asBlob_21_0= 'as blob' ) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:552:1: (lv_asBlob_21_0= 'as blob' )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:552:1: (lv_asBlob_21_0= 'as blob' )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:553:3: lv_asBlob_21_0= 'as blob'
+                    {
+                    lv_asBlob_21_0=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleDataType1048); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "asBlob", true, "as blob");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:566:2: ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )*
+                    loop13:
+                    do {
+                        int alt13=2;
+                        int LA13_0 = input.LA(1);
+
+                        if ( ((LA13_0>=43 && LA13_0<=44)) ) {
+                            alt13=1;
+                        }
+
+
+                        switch (alt13) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:567:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:567:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:568:3: lv_constraints_22_0= ruleBlobTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_ruleDataType1082);
+                    	    lv_constraints_22_0=ruleBlobTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_22_0, 
+                    	              		"BlobTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop13;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:584:3: (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    int alt15=2;
+                    int LA15_0 = input.LA(1);
+
+                    if ( (LA15_0==22) ) {
+                        alt15=1;
+                    }
+                    switch (alt15) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:584:5: otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')'
+                            {
+                            otherlv_23=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType1096); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+                                  
+                            }
+                            otherlv_24=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType1108); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:592:1: ( (lv_properties_25_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:593:1: (lv_properties_25_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:593:1: (lv_properties_25_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:594:3: lv_properties_25_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1129);
+                            lv_properties_25_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_25_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:610:2: (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )*
+                            loop14:
+                            do {
+                                int alt14=2;
+                                int LA14_0 = input.LA(1);
+
+                                if ( (LA14_0==24) ) {
+                                    alt14=1;
+                                }
+
+
+                                switch (alt14) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:610:4: otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_26=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType1142); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:614:1: ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:615:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:615:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:616:3: lv_properties_27_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1163);
+                            	    lv_properties_27_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_27_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop14;
+                                }
+                            } while (true);
+
+                            otherlv_28=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType1177); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:636:5: (otherlv_29= ';' )?
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==18) ) {
+                alt17=1;
+            }
+            switch (alt17) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:636:7: otherlv_29= ';'
+                    {
+                    otherlv_29=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleDataType1194); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataType"
+
+
+    // $ANTLR start "entryRuleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:650:1: entryRuleDataTypeConstraint returns [EObject current=null] : iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF ;
+    public final EObject entryRuleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:651:2: (iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:652:2: iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint1234);
+            iv_ruleDataTypeConstraint=ruleDataTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataTypeConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataTypeConstraint1244); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataTypeConstraint"
+
+
+    // $ANTLR start "ruleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:659:1: ruleDataTypeConstraint returns [EObject current=null] : (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) ;
+    public final EObject ruleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCAssertFalse_0 = null;
+
+        EObject this_DtCAssertTrue_1 = null;
+
+        EObject this_DtCDecimalMax_2 = null;
+
+        EObject this_DtCDecimalMin_3 = null;
+
+        EObject this_DtCDigits_4 = null;
+
+        EObject this_DtCNumericMax_5 = null;
+
+        EObject this_DtCNumericMin_6 = null;
+
+        EObject this_DtCNotNull_7 = null;
+
+        EObject this_DtCNull_8 = null;
+
+        EObject this_DtCRegEx_9 = null;
+
+        EObject this_DtCSize_10 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:662:28: ( (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:663:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:663:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            int alt18=11;
+            switch ( input.LA(1) ) {
+            case 28:
+                {
+                alt18=1;
+                }
+                break;
+            case 35:
+                {
+                alt18=2;
+                }
+                break;
+            case 36:
+                {
+                alt18=3;
+                }
+                break;
+            case 37:
+                {
+                alt18=4;
+                }
+                break;
+            case 38:
+                {
+                alt18=5;
+                }
+                break;
+            case 41:
+                {
+                alt18=6;
+                }
+                break;
+            case 42:
+                {
+                alt18=7;
+                }
+                break;
+            case 43:
+                {
+                alt18=8;
+                }
+                break;
+            case 44:
+                {
+                alt18=9;
+                }
+                break;
+            case 45:
+                {
+                alt18=10;
+                }
+                break;
+            case 46:
+                {
+                alt18=11;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt18) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:664:5: this_DtCAssertFalse_0= ruleDtCAssertFalse
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCAssertFalse_in_ruleDataTypeConstraint1291);
+                    this_DtCAssertFalse_0=ruleDtCAssertFalse();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertFalse_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:674:5: this_DtCAssertTrue_1= ruleDtCAssertTrue
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCAssertTrue_in_ruleDataTypeConstraint1318);
+                    this_DtCAssertTrue_1=ruleDtCAssertTrue();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertTrue_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:684:5: this_DtCDecimalMax_2= ruleDtCDecimalMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMax_in_ruleDataTypeConstraint1345);
+                    this_DtCDecimalMax_2=ruleDtCDecimalMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMax_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:694:5: this_DtCDecimalMin_3= ruleDtCDecimalMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMin_in_ruleDataTypeConstraint1372);
+                    this_DtCDecimalMin_3=ruleDtCDecimalMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMin_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:704:5: this_DtCDigits_4= ruleDtCDigits
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDigits_in_ruleDataTypeConstraint1399);
+                    this_DtCDigits_4=ruleDtCDigits();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDigits_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:714:5: this_DtCNumericMax_5= ruleDtCNumericMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNumericMax_in_ruleDataTypeConstraint1426);
+                    this_DtCNumericMax_5=ruleDtCNumericMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMax_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:724:5: this_DtCNumericMin_6= ruleDtCNumericMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNumericMin_in_ruleDataTypeConstraint1453);
+                    this_DtCNumericMin_6=ruleDtCNumericMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMin_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:734:5: this_DtCNotNull_7= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleDataTypeConstraint1480);
+                    this_DtCNotNull_7=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:744:5: this_DtCNull_8= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleDataTypeConstraint1507);
+                    this_DtCNull_8=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:754:5: this_DtCRegEx_9= ruleDtCRegEx
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCRegEx_in_ruleDataTypeConstraint1534);
+                    this_DtCRegEx_9=ruleDtCRegEx();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCRegEx_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:764:5: this_DtCSize_10= ruleDtCSize
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCSize_in_ruleDataTypeConstraint1561);
+                    this_DtCSize_10=ruleDtCSize();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCSize_10; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDateConstraint"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:780:1: entryRuleDateConstraint returns [EObject current=null] : iv_ruleDateConstraint= ruleDateConstraint EOF ;
+    public final EObject entryRuleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDateConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:781:2: (iv_ruleDateConstraint= ruleDateConstraint EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:782:2: iv_ruleDateConstraint= ruleDateConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDateConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint1596);
+            iv_ruleDateConstraint=ruleDateConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDateConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDateConstraint1606); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDateConstraint"
+
+
+    // $ANTLR start "ruleDateConstraint"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:789:1: ruleDateConstraint returns [EObject current=null] : (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) ;
+    public final EObject ruleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCFuture_0 = null;
+
+        EObject this_DtCPast_1 = null;
+
+        EObject this_DtCNotNull_2 = null;
+
+        EObject this_DtCNull_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:792:28: ( (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:793:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:793:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            int alt19=4;
+            switch ( input.LA(1) ) {
+            case 39:
+                {
+                alt19=1;
+                }
+                break;
+            case 40:
+                {
+                alt19=2;
+                }
+                break;
+            case 43:
+                {
+                alt19=3;
+                }
+                break;
+            case 44:
+                {
+                alt19=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:794:5: this_DtCFuture_0= ruleDtCFuture
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCFuture_in_ruleDateConstraint1653);
+                    this_DtCFuture_0=ruleDtCFuture();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCFuture_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:804:5: this_DtCPast_1= ruleDtCPast
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCPast_in_ruleDateConstraint1680);
+                    this_DtCPast_1=ruleDtCPast();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCPast_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:814:5: this_DtCNotNull_2= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleDateConstraint1707);
+                    this_DtCNotNull_2=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:824:5: this_DtCNull_3= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleDateConstraint1734);
+                    this_DtCNull_3=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDateConstraint"
+
+
+    // $ANTLR start "entryRuleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:840:1: entryRuleBlobTypeConstraint returns [EObject current=null] : iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF ;
+    public final EObject entryRuleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBlobTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:841:2: (iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:842:2: iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint1769);
+            iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleBlobTypeConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlobTypeConstraint1779); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBlobTypeConstraint"
+
+
+    // $ANTLR start "ruleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:849:1: ruleBlobTypeConstraint returns [EObject current=null] : (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) ;
+    public final EObject ruleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCNotNull_0 = null;
+
+        EObject this_DtCNull_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:852:28: ( (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:853:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:853:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==43) ) {
+                alt20=1;
+            }
+            else if ( (LA20_0==44) ) {
+                alt20=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:854:5: this_DtCNotNull_0= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleBlobTypeConstraint1826);
+                    this_DtCNotNull_0=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:864:5: this_DtCNull_1= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleBlobTypeConstraint1853);
+                    this_DtCNull_1=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBlobTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:880:1: entryRuleDtCAssertFalse returns [EObject current=null] : iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF ;
+    public final EObject entryRuleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertFalse = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:881:2: (iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:882:2: iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertFalseRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse1888);
+            iv_ruleDtCAssertFalse=ruleDtCAssertFalse();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertFalse; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCAssertFalse1898); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertFalse"
+
+
+    // $ANTLR start "ruleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:889:1: ruleDtCAssertFalse returns [EObject current=null] : ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:892:28: ( ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:893:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:893:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:893:2: () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:893:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:894:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleDtCAssertFalse1944); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:903:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( (LA24_0==29||(LA24_0>=32 && LA24_0<=34)) ) {
+                alt24=1;
+            }
+            switch (alt24) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:905:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:905:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:906:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:909:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:910:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:910:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt23=0;
+                    loop23:
+                    do {
+                        int alt23=4;
+                        int LA23_0 = input.LA(1);
+
+                        if ( LA23_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                            alt23=1;
+                        }
+                        else if ( LA23_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                            alt23=2;
+                        }
+                        else if ( LA23_0 >=33 && LA23_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                            alt23=3;
+                        }
+
+
+                        switch (alt23) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:912:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:912:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:913:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:913:111: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:914:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:917:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:917:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:917:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:917:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCAssertFalse2002); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:921:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt21=2;
+                    	    int LA21_0 = input.LA(1);
+
+                    	    if ( (LA21_0==30) ) {
+                    	        alt21=1;
+                    	    }
+                    	    switch (alt21) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:921:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCAssertFalse2015); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertFalse2027); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:929:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:930:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:930:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:931:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse2048);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:954:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:954:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:955:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:955:111: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:956:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:959:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:959:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:959:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:959:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCAssertFalse2118); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertFalse2130); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:967:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:968:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:968:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:969:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse2151);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:992:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:992:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:993:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:993:111: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:994:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:997:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:997:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:997:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:997:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:997:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt22=2;
+                    	    int LA22_0 = input.LA(1);
+
+                    	    if ( (LA22_0==33) ) {
+                    	        alt22=1;
+                    	    }
+                    	    switch (alt22) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:997:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCAssertFalse2220); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertFalse2232); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1005:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1006:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1006:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1007:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertFalse2253);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCAssertFalse2267); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt23 >= 1 ) break loop23;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(23, input);
+                                throw eee;
+                        }
+                        cnt23++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertFalse"
+
+
+    // $ANTLR start "entryRuleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1050:1: entryRuleDtCAssertTrue returns [EObject current=null] : iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF ;
+    public final EObject entryRuleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertTrue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1051:2: (iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1052:2: iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertTrueRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue2351);
+            iv_ruleDtCAssertTrue=ruleDtCAssertTrue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertTrue; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCAssertTrue2361); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertTrue"
+
+
+    // $ANTLR start "ruleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1059:1: ruleDtCAssertTrue returns [EObject current=null] : ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1062:28: ( ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1063:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1063:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1063:2: () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1063:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1064:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleDtCAssertTrue2407); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1073:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==29||(LA28_0>=32 && LA28_0<=34)) ) {
+                alt28=1;
+            }
+            switch (alt28) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1075:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1075:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1076:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1079:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1080:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1080:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt27=0;
+                    loop27:
+                    do {
+                        int alt27=4;
+                        int LA27_0 = input.LA(1);
+
+                        if ( LA27_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                            alt27=1;
+                        }
+                        else if ( LA27_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                            alt27=2;
+                        }
+                        else if ( LA27_0 >=33 && LA27_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                            alt27=3;
+                        }
+
+
+                        switch (alt27) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1082:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1082:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1083:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1083:110: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1084:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1087:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1087:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1087:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1087:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCAssertTrue2465); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1091:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt25=2;
+                    	    int LA25_0 = input.LA(1);
+
+                    	    if ( (LA25_0==30) ) {
+                    	        alt25=1;
+                    	    }
+                    	    switch (alt25) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1091:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCAssertTrue2478); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertTrue2490); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1099:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1100:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1100:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1101:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue2511);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1124:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1124:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1125:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1125:110: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1126:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1129:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1129:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1129:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1129:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCAssertTrue2581); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertTrue2593); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1137:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1138:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1138:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1139:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue2614);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1162:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1162:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1163:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1163:110: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1164:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1167:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1167:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1167:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1167:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1167:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt26=2;
+                    	    int LA26_0 = input.LA(1);
+
+                    	    if ( (LA26_0==33) ) {
+                    	        alt26=1;
+                    	    }
+                    	    switch (alt26) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1167:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCAssertTrue2683); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCAssertTrue2695); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1175:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1176:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1176:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1177:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertTrue2716);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCAssertTrue2730); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt27 >= 1 ) break loop27;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(27, input);
+                                throw eee;
+                        }
+                        cnt27++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertTrue"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1220:1: entryRuleDtCDecimalMax returns [EObject current=null] : iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF ;
+    public final EObject entryRuleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1221:2: (iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1222:2: iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax2814);
+            iv_ruleDtCDecimalMax=ruleDtCDecimalMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMax; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCDecimalMax2824); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMax"
+
+
+    // $ANTLR start "ruleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1229:1: ruleDtCDecimalMax returns [EObject current=null] : ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1232:28: ( ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1233:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1233:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1233:2: () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1233:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1234:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleDtCDecimalMax2870); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtCDecimalMax2882); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1247:1: ( (lv_max_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1248:1: (lv_max_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1248:1: (lv_max_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1249:3: lv_max_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMax2903);
+            lv_max_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1265:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==29||(LA32_0>=32 && LA32_0<=34)) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1267:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1267:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1268:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1271:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1272:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1272:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt31=0;
+                    loop31:
+                    do {
+                        int alt31=4;
+                        int LA31_0 = input.LA(1);
+
+                        if ( LA31_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt31=1;
+                        }
+                        else if ( LA31_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt31=2;
+                        }
+                        else if ( LA31_0 >=33 && LA31_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt31=3;
+                        }
+
+
+                        switch (alt31) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1274:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1274:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1275:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1275:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1276:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1279:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1279:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1279:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1279:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCDecimalMax2961); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1283:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt29=2;
+                    	    int LA29_0 = input.LA(1);
+
+                    	    if ( (LA29_0==30) ) {
+                    	        alt29=1;
+                    	    }
+                    	    switch (alt29) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1283:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCDecimalMax2974); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMax2986); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1291:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1292:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1292:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1293:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax3007);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1316:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1316:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1317:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1317:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1318:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1321:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1321:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1321:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1321:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCDecimalMax3077); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMax3089); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1329:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1330:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1330:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1331:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax3110);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1354:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1354:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1355:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1355:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1356:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1359:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1359:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1359:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1359:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1359:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt30=2;
+                    	    int LA30_0 = input.LA(1);
+
+                    	    if ( (LA30_0==33) ) {
+                    	        alt30=1;
+                    	    }
+                    	    switch (alt30) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1359:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCDecimalMax3179); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMax3191); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1367:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1368:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1368:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1369:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMax3212);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCDecimalMax3226); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt31 >= 1 ) break loop31;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(31, input);
+                                throw eee;
+                        }
+                        cnt31++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtCDecimalMax3286); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMax"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1416:1: entryRuleDtCDecimalMin returns [EObject current=null] : iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF ;
+    public final EObject entryRuleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1417:2: (iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1418:2: iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMinRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin3322);
+            iv_ruleDtCDecimalMin=ruleDtCDecimalMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMin; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCDecimalMin3332); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMin"
+
+
+    // $ANTLR start "ruleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1425:1: ruleDtCDecimalMin returns [EObject current=null] : ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1428:28: ( ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1429:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1429:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1429:2: () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1429:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1430:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCDecimalMin3378); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtCDecimalMin3390); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1443:1: ( (lv_min_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1444:1: (lv_min_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1444:1: (lv_min_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1445:3: lv_min_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMin3411);
+            lv_min_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1461:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt36=2;
+            int LA36_0 = input.LA(1);
+
+            if ( (LA36_0==29||(LA36_0>=32 && LA36_0<=34)) ) {
+                alt36=1;
+            }
+            switch (alt36) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1463:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1463:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1464:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1467:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1468:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1468:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt35=0;
+                    loop35:
+                    do {
+                        int alt35=4;
+                        int LA35_0 = input.LA(1);
+
+                        if ( LA35_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt35=1;
+                        }
+                        else if ( LA35_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt35=2;
+                        }
+                        else if ( LA35_0 >=33 && LA35_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt35=3;
+                        }
+
+
+                        switch (alt35) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1470:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1470:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1471:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1471:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1472:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1475:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1475:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1475:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1475:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCDecimalMin3469); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1479:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt33=2;
+                    	    int LA33_0 = input.LA(1);
+
+                    	    if ( (LA33_0==30) ) {
+                    	        alt33=1;
+                    	    }
+                    	    switch (alt33) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1479:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCDecimalMin3482); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMin3494); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1487:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1488:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1488:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1489:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin3515);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1512:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1512:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1513:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1513:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1514:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1517:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1517:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1517:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1517:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCDecimalMin3585); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMin3597); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1525:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1526:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1526:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1527:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin3618);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1550:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1550:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1551:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1551:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1552:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1555:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1555:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1555:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1555:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1555:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt34=2;
+                    	    int LA34_0 = input.LA(1);
+
+                    	    if ( (LA34_0==33) ) {
+                    	        alt34=1;
+                    	    }
+                    	    switch (alt34) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1555:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtCDecimalMin3687); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDecimalMin3699); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1563:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1564:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1564:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1565:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMin3720);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCDecimalMin3734); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt35 >= 1 ) break loop35;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(35, input);
+                                throw eee;
+                        }
+                        cnt35++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtCDecimalMin3794); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMin"
+
+
+    // $ANTLR start "entryRuleDtCDigits"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1612:1: entryRuleDtCDigits returns [EObject current=null] : iv_ruleDtCDigits= ruleDtCDigits EOF ;
+    public final EObject entryRuleDtCDigits() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDigits = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1613:2: (iv_ruleDtCDigits= ruleDtCDigits EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1614:2: iv_ruleDtCDigits= ruleDtCDigits EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDigitsRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits3830);
+            iv_ruleDtCDigits=ruleDtCDigits();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDigits; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCDigits3840); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDigits"
+
+
+    // $ANTLR start "ruleDtCDigits"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1621:1: ruleDtCDigits returns [EObject current=null] : ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) ;
+    public final EObject ruleDtCDigits() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_intDigits_3_0=null;
+        Token otherlv_4=null;
+        Token lv_fractionDigits_5_0=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        AntlrDatatypeRuleToken lv_msgCode_10_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_13_0 = null;
+
+        Enumerator lv_severity_16_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1624:28: ( ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1625:1: ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1625:1: ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1625:2: () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1625:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1626:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleDtCDigits3886); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtCDigits3898); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1639:1: ( (lv_intDigits_3_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1640:1: (lv_intDigits_3_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1640:1: (lv_intDigits_3_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1641:3: lv_intDigits_3_0= RULE_INT
+            {
+            lv_intDigits_3_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleDtCDigits3915); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCDigitsRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"intDigits",
+                      		lv_intDigits_3_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtCDigits3932); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1661:1: ( (lv_fractionDigits_5_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1662:1: (lv_fractionDigits_5_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1662:1: (lv_fractionDigits_5_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1663:3: lv_fractionDigits_5_0= RULE_INT
+            {
+            lv_fractionDigits_5_0=(Token)match(input,RULE_INT,FollowSets000.FOLLOW_RULE_INT_in_ruleDtCDigits3949); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCDigitsRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"fractionDigits",
+                      		lv_fractionDigits_5_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1679:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==29||(LA40_0>=32 && LA40_0<=34)) ) {
+                alt40=1;
+            }
+            switch (alt40) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1681:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1681:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1682:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1685:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1686:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1686:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+
+                    int cnt39=0;
+                    loop39:
+                    do {
+                        int alt39=4;
+                        int LA39_0 = input.LA(1);
+
+                        if ( LA39_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0) ) {
+                            alt39=1;
+                        }
+                        else if ( LA39_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1) ) {
+                            alt39=2;
+                        }
+                        else if ( LA39_0 >=33 && LA39_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2) ) {
+                            alt39=3;
+                        }
+
+
+                        switch (alt39) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1688:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1688:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1689:5: {...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1689:106: ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1690:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1693:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1693:7: {...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1693:16: (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1693:18: otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_7=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtCDigits4012); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1697:1: (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    int alt37=2;
+                    	    int LA37_0 = input.LA(1);
+
+                    	    if ( (LA37_0==30) ) {
+                    	        alt37=1;
+                    	    }
+                    	    switch (alt37) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1697:3: otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_8=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtCDigits4025); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_9=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDigits4037); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1705:1: ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1706:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1706:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1707:3: lv_msgCode_10_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCDigits4058);
+                    	            lv_msgCode_10_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_10_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1730:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1730:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1731:5: {...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1731:106: ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1732:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1735:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1735:7: {...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1735:16: (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1735:18: otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_11=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtCDigits4128); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+                    	          
+                    	    }
+                    	    otherlv_12=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtCDigits4140); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1743:1: ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1744:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1744:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1745:3: lv_msgI18nKey_13_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDigits4161);
+                    	    lv_msgI18nKey_13_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_13_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1768:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1768:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1769:5: {...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1769:106: ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1770:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1773:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1773:7: {...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1773:16: ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1773:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1773:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )?
+                    	    int alt38=2;
+                    	    int LA38_0 = input.LA(1);
+
+                    	    if ( (LA38_0==33) ) {
+                    	        alt38=1;
+                    	    }
+                    	    switch (alt38) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1773:19: otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_14=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCDigits4230); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_15=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCDigits4242); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1781:1: ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1782:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1782:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1783:3: lv_severity_16_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCDigits4263);
+                    	            lv_severity_16_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_16_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_17=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCDigits4277); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt39 >= 1 ) break loop39;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(39, input);
+                                throw eee;
+                        }
+                        cnt39++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_18=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCDigits4337); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDigits"
+
+
+    // $ANTLR start "entryRuleDtCFuture"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1830:1: entryRuleDtCFuture returns [EObject current=null] : iv_ruleDtCFuture= ruleDtCFuture EOF ;
+    public final EObject entryRuleDtCFuture() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCFuture = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1831:2: (iv_ruleDtCFuture= ruleDtCFuture EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1832:2: iv_ruleDtCFuture= ruleDtCFuture EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCFutureRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture4373);
+            iv_ruleDtCFuture=ruleDtCFuture();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCFuture; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCFuture4383); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCFuture"
+
+
+    // $ANTLR start "ruleDtCFuture"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1839:1: ruleDtCFuture returns [EObject current=null] : ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCFuture() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1842:28: ( ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1843:1: ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1843:1: ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1843:2: () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1843:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1844:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCFuture4429); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1853:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==29||(LA44_0>=32 && LA44_0<=34)) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1855:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1855:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1856:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1859:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1860:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1860:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt43=0;
+                    loop43:
+                    do {
+                        int alt43=4;
+                        int LA43_0 = input.LA(1);
+
+                        if ( LA43_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {
+                            alt43=1;
+                        }
+                        else if ( LA43_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {
+                            alt43=2;
+                        }
+                        else if ( LA43_0 >=33 && LA43_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {
+                            alt43=3;
+                        }
+
+
+                        switch (alt43) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1862:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1862:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1863:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1863:106: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1864:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1867:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1867:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1867:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1867:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCFuture4487); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1871:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt41=2;
+                    	    int LA41_0 = input.LA(1);
+
+                    	    if ( (LA41_0==30) ) {
+                    	        alt41=1;
+                    	    }
+                    	    switch (alt41) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1871:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCFuture4500); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCFuture4512); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1879:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1880:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1880:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1881:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCFuture4533);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1904:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1904:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1905:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1905:106: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1906:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1909:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1909:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1909:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1909:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCFuture4603); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCFuture4615); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1917:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1918:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1918:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1919:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCFuture4636);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1942:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1942:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1943:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1943:106: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1944:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1947:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1947:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1947:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1947:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1947:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt42=2;
+                    	    int LA42_0 = input.LA(1);
+
+                    	    if ( (LA42_0==33) ) {
+                    	        alt42=1;
+                    	    }
+                    	    switch (alt42) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1947:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCFuture4705); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCFuture4717); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1955:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1956:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1956:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:1957:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCFuture4738);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCFuture4752); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt43 >= 1 ) break loop43;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(43, input);
+                                throw eee;
+                        }
+                        cnt43++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCFuture"
+
+
+    // $ANTLR start "entryRuleDtCPast"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2000:1: entryRuleDtCPast returns [EObject current=null] : iv_ruleDtCPast= ruleDtCPast EOF ;
+    public final EObject entryRuleDtCPast() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCPast = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2001:2: (iv_ruleDtCPast= ruleDtCPast EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2002:2: iv_ruleDtCPast= ruleDtCPast EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCPastRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCPast_in_entryRuleDtCPast4836);
+            iv_ruleDtCPast=ruleDtCPast();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCPast; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCPast4846); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCPast"
+
+
+    // $ANTLR start "ruleDtCPast"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2009:1: ruleDtCPast returns [EObject current=null] : ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCPast() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2012:28: ( ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2013:1: ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2013:1: ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2013:2: () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2013:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2014:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCPast4892); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2023:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+
+            if ( (LA48_0==29||(LA48_0>=32 && LA48_0<=34)) ) {
+                alt48=1;
+            }
+            switch (alt48) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2025:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2025:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2026:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2029:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2030:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2030:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt47=0;
+                    loop47:
+                    do {
+                        int alt47=4;
+                        int LA47_0 = input.LA(1);
+
+                        if ( LA47_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {
+                            alt47=1;
+                        }
+                        else if ( LA47_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {
+                            alt47=2;
+                        }
+                        else if ( LA47_0 >=33 && LA47_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {
+                            alt47=3;
+                        }
+
+
+                        switch (alt47) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2032:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2032:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2033:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2033:104: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2034:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2037:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2037:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2037:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2037:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCPast4950); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2041:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt45=2;
+                    	    int LA45_0 = input.LA(1);
+
+                    	    if ( (LA45_0==30) ) {
+                    	        alt45=1;
+                    	    }
+                    	    switch (alt45) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2041:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCPast4963); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCPast4975); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2049:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2050:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2050:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2051:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCPast4996);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2074:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2074:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2075:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2075:104: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2076:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2079:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2079:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2079:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2079:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCPast5066); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCPast5078); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2087:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2088:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2088:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2089:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCPast5099);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2112:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2112:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2113:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2113:104: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2114:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2117:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2117:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2117:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2117:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2117:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt46=2;
+                    	    int LA46_0 = input.LA(1);
+
+                    	    if ( (LA46_0==33) ) {
+                    	        alt46=1;
+                    	    }
+                    	    switch (alt46) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2117:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCPast5168); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCPast5180); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2125:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2126:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2126:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2127:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCPast5201);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCPast5215); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt47 >= 1 ) break loop47;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(47, input);
+                                throw eee;
+                        }
+                        cnt47++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCPast"
+
+
+    // $ANTLR start "entryRuleDtCNumericMax"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2170:1: entryRuleDtCNumericMax returns [EObject current=null] : iv_ruleDtCNumericMax= ruleDtCNumericMax EOF ;
+    public final EObject entryRuleDtCNumericMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNumericMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2171:2: (iv_ruleDtCNumericMax= ruleDtCNumericMax EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2172:2: iv_ruleDtCNumericMax= ruleDtCNumericMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNumericMaxRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax5299);
+            iv_ruleDtCNumericMax=ruleDtCNumericMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNumericMax; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNumericMax5309); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNumericMax"
+
+
+    // $ANTLR start "ruleDtCNumericMax"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2179:1: ruleDtCNumericMax returns [EObject current=null] : ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCNumericMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2182:28: ( ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2183:1: ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2183:1: ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2183:2: () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2183:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2184:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,41,FollowSets001.FOLLOW_41_in_ruleDtCNumericMax5355); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCNumericMax5367); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2197:1: ( (lv_max_3_0= ruleLInt ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2198:1: (lv_max_3_0= ruleLInt )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2198:1: (lv_max_3_0= ruleLInt )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2199:3: lv_max_3_0= ruleLInt
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLInt_in_ruleDtCNumericMax5388);
+            lv_max_3_0=ruleLInt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LInt");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2215:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( (LA52_0==29||(LA52_0>=32 && LA52_0<=34)) ) {
+                alt52=1;
+            }
+            switch (alt52) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2217:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2217:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2218:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2221:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2222:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2222:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt51=0;
+                    loop51:
+                    do {
+                        int alt51=4;
+                        int LA51_0 = input.LA(1);
+
+                        if ( LA51_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt51=1;
+                        }
+                        else if ( LA51_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt51=2;
+                        }
+                        else if ( LA51_0 >=33 && LA51_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt51=3;
+                        }
+
+
+                        switch (alt51) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2224:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2224:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2225:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2225:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2226:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2229:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2229:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2229:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2229:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNumericMax5446); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2233:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt49=2;
+                    	    int LA49_0 = input.LA(1);
+
+                    	    if ( (LA49_0==30) ) {
+                    	        alt49=1;
+                    	    }
+                    	    switch (alt49) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2233:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNumericMax5459); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMax5471); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2241:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2242:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2242:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2243:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax5492);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2266:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2266:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2267:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2267:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2268:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2271:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2271:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2271:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2271:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNumericMax5562); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMax5574); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2279:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2280:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2280:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2281:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax5595);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2304:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2304:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2305:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2305:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2306:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2309:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2309:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2309:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2309:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2309:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt50=2;
+                    	    int LA50_0 = input.LA(1);
+
+                    	    if ( (LA50_0==33) ) {
+                    	        alt50=1;
+                    	    }
+                    	    switch (alt50) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2309:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNumericMax5664); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMax5676); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2317:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2318:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2318:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2319:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMax5697);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNumericMax5711); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt51 >= 1 ) break loop51;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(51, input);
+                                throw eee;
+                        }
+                        cnt51++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCNumericMax5771); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNumericMax"
+
+
+    // $ANTLR start "entryRuleDtCNumericMin"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2366:1: entryRuleDtCNumericMin returns [EObject current=null] : iv_ruleDtCNumericMin= ruleDtCNumericMin EOF ;
+    public final EObject entryRuleDtCNumericMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNumericMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2367:2: (iv_ruleDtCNumericMin= ruleDtCNumericMin EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2368:2: iv_ruleDtCNumericMin= ruleDtCNumericMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNumericMinRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin5807);
+            iv_ruleDtCNumericMin=ruleDtCNumericMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNumericMin; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNumericMin5817); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNumericMin"
+
+
+    // $ANTLR start "ruleDtCNumericMin"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2375:1: ruleDtCNumericMin returns [EObject current=null] : ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCNumericMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2378:28: ( ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2379:1: ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2379:1: ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2379:2: () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2379:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2380:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,42,FollowSets001.FOLLOW_42_in_ruleDtCNumericMin5863); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCNumericMin5875); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2393:1: ( (lv_min_3_0= ruleLInt ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2394:1: (lv_min_3_0= ruleLInt )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2394:1: (lv_min_3_0= ruleLInt )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2395:3: lv_min_3_0= ruleLInt
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLInt_in_ruleDtCNumericMin5896);
+            lv_min_3_0=ruleLInt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LInt");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2411:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==29||(LA56_0>=32 && LA56_0<=34)) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2413:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2413:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2414:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2417:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2418:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2418:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt55=0;
+                    loop55:
+                    do {
+                        int alt55=4;
+                        int LA55_0 = input.LA(1);
+
+                        if ( LA55_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt55=1;
+                        }
+                        else if ( LA55_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt55=2;
+                        }
+                        else if ( LA55_0 >=33 && LA55_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt55=3;
+                        }
+
+
+                        switch (alt55) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2420:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2420:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2421:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2421:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2422:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2425:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2425:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2425:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2425:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNumericMin5954); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2429:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt53=2;
+                    	    int LA53_0 = input.LA(1);
+
+                    	    if ( (LA53_0==30) ) {
+                    	        alt53=1;
+                    	    }
+                    	    switch (alt53) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2429:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNumericMin5967); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMin5979); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2437:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2438:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2438:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2439:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin6000);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2462:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2462:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2463:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2463:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2464:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2467:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2467:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2467:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2467:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNumericMin6070); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMin6082); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2475:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2476:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2476:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2477:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin6103);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2500:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2500:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2501:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2501:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2502:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2505:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2505:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2505:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2505:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2505:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt54=2;
+                    	    int LA54_0 = input.LA(1);
+
+                    	    if ( (LA54_0==33) ) {
+                    	        alt54=1;
+                    	    }
+                    	    switch (alt54) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2505:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNumericMin6172); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNumericMin6184); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2513:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2514:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2514:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2515:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMin6205);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNumericMin6219); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt55 >= 1 ) break loop55;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(55, input);
+                                throw eee;
+                        }
+                        cnt55++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCNumericMin6279); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNumericMin"
+
+
+    // $ANTLR start "entryRuleDtCNotNull"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2562:1: entryRuleDtCNotNull returns [EObject current=null] : iv_ruleDtCNotNull= ruleDtCNotNull EOF ;
+    public final EObject entryRuleDtCNotNull() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNotNull = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2563:2: (iv_ruleDtCNotNull= ruleDtCNotNull EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2564:2: iv_ruleDtCNotNull= ruleDtCNotNull EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNotNullRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull6315);
+            iv_ruleDtCNotNull=ruleDtCNotNull();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNotNull; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNotNull6325); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNotNull"
+
+
+    // $ANTLR start "ruleDtCNotNull"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2571:1: ruleDtCNotNull returns [EObject current=null] : ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCNotNull() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2574:28: ( ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2575:1: ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2575:1: ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2575:2: () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2575:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2576:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,43,FollowSets001.FOLLOW_43_in_ruleDtCNotNull6371); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2585:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==29||(LA60_0>=32 && LA60_0<=34)) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2587:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2587:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2588:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2591:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2592:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2592:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt59=0;
+                    loop59:
+                    do {
+                        int alt59=4;
+                        int LA59_0 = input.LA(1);
+
+                        if ( LA59_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {
+                            alt59=1;
+                        }
+                        else if ( LA59_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {
+                            alt59=2;
+                        }
+                        else if ( LA59_0 >=33 && LA59_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {
+                            alt59=3;
+                        }
+
+
+                        switch (alt59) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2594:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2594:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2595:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2595:107: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2596:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2599:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2599:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2599:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2599:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNotNull6429); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2603:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt57=2;
+                    	    int LA57_0 = input.LA(1);
+
+                    	    if ( (LA57_0==30) ) {
+                    	        alt57=1;
+                    	    }
+                    	    switch (alt57) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2603:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNotNull6442); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNotNull6454); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2611:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2612:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2612:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2613:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNotNull6475);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2636:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2636:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2637:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2637:107: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2638:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2641:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2641:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2641:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2641:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNotNull6545); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNotNull6557); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2649:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2650:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2650:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2651:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNotNull6578);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2674:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2674:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2675:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2675:107: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2676:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2679:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2679:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2679:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2679:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2679:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt58=2;
+                    	    int LA58_0 = input.LA(1);
+
+                    	    if ( (LA58_0==33) ) {
+                    	        alt58=1;
+                    	    }
+                    	    switch (alt58) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2679:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNotNull6647); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNotNull6659); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2687:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2688:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2688:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2689:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNotNull6680);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNotNull6694); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt59 >= 1 ) break loop59;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(59, input);
+                                throw eee;
+                        }
+                        cnt59++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNotNull"
+
+
+    // $ANTLR start "entryRuleDtCNull"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2732:1: entryRuleDtCNull returns [EObject current=null] : iv_ruleDtCNull= ruleDtCNull EOF ;
+    public final EObject entryRuleDtCNull() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNull = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2733:2: (iv_ruleDtCNull= ruleDtCNull EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2734:2: iv_ruleDtCNull= ruleDtCNull EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNullRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_entryRuleDtCNull6778);
+            iv_ruleDtCNull=ruleDtCNull();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNull; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNull6788); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNull"
+
+
+    // $ANTLR start "ruleDtCNull"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2741:1: ruleDtCNull returns [EObject current=null] : ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCNull() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2744:28: ( ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2745:1: ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2745:1: ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2745:2: () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2745:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2746:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,44,FollowSets001.FOLLOW_44_in_ruleDtCNull6834); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2755:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( (LA64_0==29||(LA64_0>=32 && LA64_0<=34)) ) {
+                alt64=1;
+            }
+            switch (alt64) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2757:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2757:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2758:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2761:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2762:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2762:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt63=0;
+                    loop63:
+                    do {
+                        int alt63=4;
+                        int LA63_0 = input.LA(1);
+
+                        if ( LA63_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {
+                            alt63=1;
+                        }
+                        else if ( LA63_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {
+                            alt63=2;
+                        }
+                        else if ( LA63_0 >=33 && LA63_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {
+                            alt63=3;
+                        }
+
+
+                        switch (alt63) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2764:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2764:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2765:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2765:104: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2766:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2769:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2769:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2769:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2769:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCNull6892); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2773:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt61=2;
+                    	    int LA61_0 = input.LA(1);
+
+                    	    if ( (LA61_0==30) ) {
+                    	        alt61=1;
+                    	    }
+                    	    switch (alt61) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2773:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCNull6905); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNull6917); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2781:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2782:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2782:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2783:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNull6938);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2806:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2806:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2807:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2807:104: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2808:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2811:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2811:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2811:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2811:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCNull7008); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNull7020); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2819:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2820:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2820:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2821:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNull7041);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2844:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2844:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2845:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2845:104: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2846:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2849:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2849:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2849:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2849:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2849:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt62=2;
+                    	    int LA62_0 = input.LA(1);
+
+                    	    if ( (LA62_0==33) ) {
+                    	        alt62=1;
+                    	    }
+                    	    switch (alt62) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2849:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCNull7110); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCNull7122); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2857:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2858:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2858:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2859:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNull7143);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCNull7157); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt63 >= 1 ) break loop63;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(63, input);
+                                throw eee;
+                        }
+                        cnt63++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNull"
+
+
+    // $ANTLR start "entryRuleDtCRegEx"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2902:1: entryRuleDtCRegEx returns [EObject current=null] : iv_ruleDtCRegEx= ruleDtCRegEx EOF ;
+    public final EObject entryRuleDtCRegEx() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCRegEx = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2903:2: (iv_ruleDtCRegEx= ruleDtCRegEx EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2904:2: iv_ruleDtCRegEx= ruleDtCRegEx EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCRegExRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx7241);
+            iv_ruleDtCRegEx=ruleDtCRegEx();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCRegEx; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCRegEx7251); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCRegEx"
+
+
+    // $ANTLR start "ruleDtCRegEx"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2911:1: ruleDtCRegEx returns [EObject current=null] : ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCRegEx() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_pattern_3_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2914:28: ( ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2915:1: ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2915:1: ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2915:2: () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2915:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2916:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,45,FollowSets001.FOLLOW_45_in_ruleDtCRegEx7297); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCRegEx7309); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2929:1: ( (lv_pattern_3_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2930:1: (lv_pattern_3_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2930:1: (lv_pattern_3_0= RULE_STRING )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2931:3: lv_pattern_3_0= RULE_STRING
+            {
+            lv_pattern_3_0=(Token)match(input,RULE_STRING,FollowSets001.FOLLOW_RULE_STRING_in_ruleDtCRegEx7326); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCRegExRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"pattern",
+                      		lv_pattern_3_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2947:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==29||(LA68_0>=32 && LA68_0<=34)) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2949:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2949:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2950:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2953:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2954:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2954:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt67=0;
+                    loop67:
+                    do {
+                        int alt67=4;
+                        int LA67_0 = input.LA(1);
+
+                        if ( LA67_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0) ) {
+                            alt67=1;
+                        }
+                        else if ( LA67_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1) ) {
+                            alt67=2;
+                        }
+                        else if ( LA67_0 >=33 && LA67_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2) ) {
+                            alt67=3;
+                        }
+
+
+                        switch (alt67) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2956:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2956:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2957:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2957:105: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2958:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2961:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2961:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2961:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2961:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCRegEx7389); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2965:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt65=2;
+                    	    int LA65_0 = input.LA(1);
+
+                    	    if ( (LA65_0==30) ) {
+                    	        alt65=1;
+                    	    }
+                    	    switch (alt65) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2965:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCRegEx7402); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCRegEx7414); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2973:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2974:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2974:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2975:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCRegEx7435);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2998:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2998:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2999:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:2999:105: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3000:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3003:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3003:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3003:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3003:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCRegEx7505); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCRegEx7517); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3011:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3012:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3012:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3013:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCRegEx7538);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3036:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3036:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3037:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3037:105: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3038:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3041:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3041:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCRegEx", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3041:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3041:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3041:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt66=2;
+                    	    int LA66_0 = input.LA(1);
+
+                    	    if ( (LA66_0==33) ) {
+                    	        alt66=1;
+                    	    }
+                    	    switch (alt66) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3041:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCRegEx7607); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCRegEx7619); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3049:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3050:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3050:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3051:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCRegEx7640);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCRegEx7654); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt67 >= 1 ) break loop67;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(67, input);
+                                throw eee;
+                        }
+                        cnt67++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCRegEx", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCRegEx7714); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCRegEx"
+
+
+    // $ANTLR start "entryRuleDtCSize"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3098:1: entryRuleDtCSize returns [EObject current=null] : iv_ruleDtCSize= ruleDtCSize EOF ;
+    public final EObject entryRuleDtCSize() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCSize = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3099:2: (iv_ruleDtCSize= ruleDtCSize EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3100:2: iv_ruleDtCSize= ruleDtCSize EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCSizeRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCSize_in_entryRuleDtCSize7750);
+            iv_ruleDtCSize=ruleDtCSize();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCSize; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCSize7760); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCSize"
+
+
+    // $ANTLR start "ruleDtCSize"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3107:1: ruleDtCSize returns [EObject current=null] : ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) ;
+    public final EObject ruleDtCSize() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_min_3_0=null;
+        Token otherlv_4=null;
+        Token lv_max_5_0=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        AntlrDatatypeRuleToken lv_msgCode_10_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_13_0 = null;
+
+        Enumerator lv_severity_16_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3110:28: ( ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3111:1: ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3111:1: ( () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3111:2: () otherlv_1= 'minMaxSize' otherlv_2= '(' ( (lv_min_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_max_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')'
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3111:2: ()
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3112:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,46,FollowSets001.FOLLOW_46_in_ruleDtCSize7806); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCSize7818); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3125:1: ( (lv_min_3_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3126:1: (lv_min_3_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3126:1: (lv_min_3_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3127:3: lv_min_3_0= RULE_INT
+            {
+            lv_min_3_0=(Token)match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_ruleDtCSize7835); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCSizeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCSize7852); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3147:1: ( (lv_max_5_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3148:1: (lv_max_5_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3148:1: (lv_max_5_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3149:3: lv_max_5_0= RULE_INT
+            {
+            lv_max_5_0=(Token)match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_ruleDtCSize7869); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCSizeRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"max",
+                      		lv_max_5_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3165:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==29||(LA72_0>=32 && LA72_0<=34)) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3167:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3167:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3168:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3171:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3172:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3172:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+
+                    int cnt71=0;
+                    loop71:
+                    do {
+                        int alt71=4;
+                        int LA71_0 = input.LA(1);
+
+                        if ( LA71_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0) ) {
+                            alt71=1;
+                        }
+                        else if ( LA71_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1) ) {
+                            alt71=2;
+                        }
+                        else if ( LA71_0 >=33 && LA71_0<=34 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2) ) {
+                            alt71=3;
+                        }
+
+
+                        switch (alt71) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3174:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3174:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3175:5: {...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3175:104: ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3176:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3179:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3179:7: {...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3179:16: (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3179:18: otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_7=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCSize7932); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3183:1: (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    int alt69=2;
+                    	    int LA69_0 = input.LA(1);
+
+                    	    if ( (LA69_0==30) ) {
+                    	        alt69=1;
+                    	    }
+                    	    switch (alt69) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3183:3: otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_8=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCSize7945); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_9=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCSize7957); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3191:1: ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3192:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3192:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3193:3: lv_msgCode_10_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCSize7978);
+                    	            lv_msgCode_10_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_10_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3216:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3216:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3217:5: {...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3217:104: ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3218:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3221:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3221:7: {...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3221:16: (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3221:18: otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_11=(Token)match(input,32,FollowSets001.FOLLOW_32_in_ruleDtCSize8048); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+                    	          
+                    	    }
+                    	    otherlv_12=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCSize8060); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3229:1: ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3230:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3230:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3231:3: lv_msgI18nKey_13_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCSize8081);
+                    	    lv_msgI18nKey_13_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_13_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3254:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3254:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3255:5: {...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3255:104: ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3256:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3259:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3259:7: {...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCSize", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3259:16: ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3259:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3259:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )?
+                    	    int alt70=2;
+                    	    int LA70_0 = input.LA(1);
+
+                    	    if ( (LA70_0==33) ) {
+                    	        alt70=1;
+                    	    }
+                    	    switch (alt70) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3259:19: otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_14=(Token)match(input,33,FollowSets001.FOLLOW_33_in_ruleDtCSize8150); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_15=(Token)match(input,31,FollowSets001.FOLLOW_31_in_ruleDtCSize8162); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3267:1: ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3268:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3268:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3269:3: lv_severity_16_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCSize8183);
+                    	            lv_severity_16_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_16_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_17=(Token)match(input,34,FollowSets001.FOLLOW_34_in_ruleDtCSize8197); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt71 >= 1 ) break loop71;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(71, input);
+                                throw eee;
+                        }
+                        cnt71++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCSize", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_18=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCSize8257); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCSize"
+
+
+    // $ANTLR start "entryRuleScalarType"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3316:1: entryRuleScalarType returns [EObject current=null] : iv_ruleScalarType= ruleScalarType EOF ;
+    public final EObject entryRuleScalarType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleScalarType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3317:2: (iv_ruleScalarType= ruleScalarType EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3318:2: iv_ruleScalarType= ruleScalarType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getScalarTypeRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleScalarType_in_entryRuleScalarType8293);
+            iv_ruleScalarType=ruleScalarType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleScalarType; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleScalarType8303); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleScalarType"
+
+
+    // $ANTLR start "ruleScalarType"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3325:1: ruleScalarType returns [EObject current=null] : (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum ) ;
+    public final EObject ruleScalarType() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DataType_0 = null;
+
+        EObject this_Enum_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3328:28: ( (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3329:1: (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3329:1: (this_DataType_0= ruleDataType | this_Enum_1= ruleEnum )
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==19) ) {
+                alt73=1;
+            }
+            else if ( (LA73_0==47) ) {
+                alt73=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 73, 0, input);
+
+                throw nvae;
+            }
+            switch (alt73) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3330:5: this_DataType_0= ruleDataType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDataType_in_ruleScalarType8350);
+                    this_DataType_0=ruleDataType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DataType_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3340:5: this_Enum_1= ruleEnum
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleEnum_in_ruleScalarType8377);
+                    this_Enum_1=ruleEnum();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_Enum_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleScalarType"
+
+
+    // $ANTLR start "entryRuleEnum"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3358:1: entryRuleEnum returns [EObject current=null] : iv_ruleEnum= ruleEnum EOF ;
+    public final EObject entryRuleEnum() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEnum = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3359:2: (iv_ruleEnum= ruleEnum EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3360:2: iv_ruleEnum= ruleEnum EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEnumRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleEnum_in_entryRuleEnum8414);
+            iv_ruleEnum=ruleEnum();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEnum; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleEnum8424); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEnum"
+
+
+    // $ANTLR start "ruleEnum"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3367:1: ruleEnum returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' ) ;
+    public final EObject ruleEnum() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token lv_name_1_0=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        EObject lv_literals_3_0 = null;
+
+        EObject lv_literals_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3370:28: ( (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3371:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3371:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}' )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3371:3: otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_literals_3_0= ruleEnumLiteral ) ) (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )* otherlv_6= '}'
+            {
+            otherlv_0=(Token)match(input,47,FollowSets001.FOLLOW_47_in_ruleEnum8461); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3375:1: ( (lv_name_1_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3376:1: (lv_name_1_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3376:1: (lv_name_1_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3377:3: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FollowSets001.FOLLOW_RULE_ID_in_ruleEnum8478); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getEnumRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_2=(Token)match(input,14,FollowSets001.FOLLOW_14_in_ruleEnum8495); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3397:1: ( (lv_literals_3_0= ruleEnumLiteral ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3398:1: (lv_literals_3_0= ruleEnumLiteral )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3398:1: (lv_literals_3_0= ruleEnumLiteral )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3399:3: lv_literals_3_0= ruleEnumLiteral
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleEnumLiteral_in_ruleEnum8516);
+            lv_literals_3_0=ruleEnumLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getEnumRule());
+              	        }
+                     		add(
+                     			current, 
+                     			"literals",
+                      		lv_literals_3_0, 
+                      		"EnumLiteral");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3415:2: (otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) ) )*
+            loop74:
+            do {
+                int alt74=2;
+                int LA74_0 = input.LA(1);
+
+                if ( (LA74_0==24) ) {
+                    alt74=1;
+                }
+
+
+                switch (alt74) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3415:4: otherlv_4= ', ' ( (lv_literals_5_0= ruleEnumLiteral ) )
+            	    {
+            	    otherlv_4=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleEnum8529); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3419:1: ( (lv_literals_5_0= ruleEnumLiteral ) )
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3420:1: (lv_literals_5_0= ruleEnumLiteral )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3420:1: (lv_literals_5_0= ruleEnumLiteral )
+            	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3421:3: lv_literals_5_0= ruleEnumLiteral
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets001.FOLLOW_ruleEnumLiteral_in_ruleEnum8550);
+            	    lv_literals_5_0=ruleEnumLiteral();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getEnumRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"literals",
+            	              		lv_literals_5_0, 
+            	              		"EnumLiteral");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop74;
+                }
+            } while (true);
+
+            otherlv_6=(Token)match(input,15,FollowSets001.FOLLOW_15_in_ruleEnum8564); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEnum"
+
+
+    // $ANTLR start "entryRuleEnumLiteral"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3449:1: entryRuleEnumLiteral returns [EObject current=null] : iv_ruleEnumLiteral= ruleEnumLiteral EOF ;
+    public final EObject entryRuleEnumLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEnumLiteral = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3450:2: (iv_ruleEnumLiteral= ruleEnumLiteral EOF )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3451:2: iv_ruleEnumLiteral= ruleEnumLiteral EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEnumLiteralRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleEnumLiteral_in_entryRuleEnumLiteral8600);
+            iv_ruleEnumLiteral=ruleEnumLiteral();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEnumLiteral; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleEnumLiteral8610); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEnumLiteral"
+
+
+    // $ANTLR start "ruleEnumLiteral"
+    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3458:1: ruleEnumLiteral returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleEnumLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_name_0_0=null;
+        Token otherlv_2=null;
+        Token lv_default_3_0=null;
+        Token lv_null_4_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token lv_value_7_0=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3461:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3462:1: ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3462:1: ( ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3462:2: ( (lv_name_0_0= RULE_ID ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3462:2: ( (lv_name_0_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3463:1: (lv_name_0_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3463:1: (lv_name_0_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3464:3: lv_name_0_0= RULE_ID
+            {
+            lv_name_0_0=(Token)match(input,RULE_ID,FollowSets001.FOLLOW_RULE_ID_in_ruleEnumLiteral8652); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getEnumLiteralRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_0_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3480:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) ) )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==23||LA79_0==25||LA79_0==49) ) {
+                alt79=1;
+            }
+            switch (alt79) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3482:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3482:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3483:2: ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3486:2: ( ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3487:3: ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3487:3: ( ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) ) )+
+                    int cnt78=0;
+                    loop78:
+                    do {
+                        int alt78=3;
+                        int LA78_0 = input.LA(1);
+
+                        if ( LA78_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0) ) {
+                            alt78=1;
+                        }
+                        else if ( (LA78_0==25||LA78_0==49) && getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1) ) {
+                            alt78=2;
+                        }
+
+
+                        switch (alt78) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3489:4: ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3489:4: ({...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3490:5: {...}? => ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3490:108: ( ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3491:6: ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3494:6: ({...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3494:7: {...}? => (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3494:16: (otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3494:18: otherlv_2= '(' ( (lv_default_3_0= 'asDefault' ) )?
+                    	    {
+                    	    otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleEnumLiteral8715); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3498:1: ( (lv_default_3_0= 'asDefault' ) )?
+                    	    int alt75=2;
+                    	    int LA75_0 = input.LA(1);
+
+                    	    if ( (LA75_0==48) ) {
+                    	        alt75=1;
+                    	    }
+                    	    switch (alt75) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3499:1: (lv_default_3_0= 'asDefault' )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3499:1: (lv_default_3_0= 'asDefault' )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3500:3: lv_default_3_0= 'asDefault'
+                    	            {
+                    	            lv_default_3_0=(Token)match(input,48,FollowSets001.FOLLOW_48_in_ruleEnumLiteral8733); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getEnumLiteralRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "default", true, "asDefault");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3520:4: ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3520:4: ({...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3521:5: {...}? => ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3521:108: ( ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3522:6: ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3525:6: ({...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3525:7: {...}? => ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleEnumLiteral", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3525:16: ( ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3525:17: ( (lv_null_4_0= 'forNull' ) )? otherlv_5= ')' (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )?
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3525:17: ( (lv_null_4_0= 'forNull' ) )?
+                    	    int alt76=2;
+                    	    int LA76_0 = input.LA(1);
+
+                    	    if ( (LA76_0==49) ) {
+                    	        alt76=1;
+                    	    }
+                    	    switch (alt76) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3526:1: (lv_null_4_0= 'forNull' )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3526:1: (lv_null_4_0= 'forNull' )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3527:3: lv_null_4_0= 'forNull'
+                    	            {
+                    	            lv_null_4_0=(Token)match(input,49,FollowSets002.FOLLOW_49_in_ruleEnumLiteral8821); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getEnumLiteralRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "null", true, "forNull");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_5=(Token)match(input,25,FollowSets002.FOLLOW_25_in_ruleEnumLiteral8847); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3544:1: (otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) ) )?
+                    	    int alt77=2;
+                    	    int LA77_0 = input.LA(1);
+
+                    	    if ( (LA77_0==31) ) {
+                    	        alt77=1;
+                    	    }
+                    	    switch (alt77) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3544:3: otherlv_6= '=' ( (lv_value_7_0= RULE_INT ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,31,FollowSets002.FOLLOW_31_in_ruleEnumLiteral8860); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getEnumLiteralAccess().getEqualsSignKeyword_1_1_2_0());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3548:1: ( (lv_value_7_0= RULE_INT ) )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3549:1: (lv_value_7_0= RULE_INT )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3549:1: (lv_value_7_0= RULE_INT )
+                    	            // ../org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/parser/antlr/internal/InternalDatatypeGrammar.g:3550:3: lv_value_7_0= RULE_INT
+                    	            {
+                    	            lv_value_7_0=(Token)match(input,RULE_INT,FollowSets002.FOLLOW_RULE_INT_in_ruleEnumLiteral8877); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              			newLeafNode(lv_value_7_0, grammarAccess.getEnumLiteralAccess().getValueINTTerminalRuleCall_1_1_2_1_0()); 
+                    	              		
+                    	            }
+                    	            if ( state.backtracking==0 ) {
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/AbstractDatatypeGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/AbstractDatatypeGrammarSemanticSequencer.java
new file mode 100644
index 0000000..4a51d5a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/AbstractDatatypeGrammarSemanticSequencer.java
@@ -0,0 +1,1567 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.common.xtext.serializer.CommonGrammarSemanticSequencer;
+import org.eclipse.osbp.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LCommonModel;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+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.diagnostic.ISemanticSequencerDiagnosticProvider;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+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.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 abstract class AbstractDatatypeGrammarSemanticSequencer extends CommonGrammarSemanticSequencer {
+
+	@Inject
+	private DatatypeGrammarGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LANNOTATION_DEF:
+				if(context == grammarAccess.getAnnotationDefRule()) {
+					sequence_AnnotationDef(context, (LAnnotationDef) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT:
+				if(context == grammarAccess.getAttributeMatchingConstraintRule() ||
+				   context == grammarAccess.getResultFilterRule()) {
+					sequence_AttributeMatchingConstraint(context, (LAttributeMatchingConstraint) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LCLASS:
+				if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LClass) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getClassAccess().getLClassAnnotationInfoAction_2()) {
+					sequence_Class_LClass_2(context, (LClass) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LCOMMON_MODEL:
+				if(context == grammarAccess.getLCommonModelRule()) {
+					sequence_LCommonModel(context, (LCommonModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDATA_TYPE:
+				if(context == grammarAccess.getDataTypeRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_DataType(context, (LDataType) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertFalseRule()) {
+					sequence_DtCAssertFalse(context, (LDtCAssertFalse) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertTrueRule()) {
+					sequence_DtCAssertTrue(context, (LDtCAssertTrue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMaxRule()) {
+					sequence_DtCDecimalMax(context, (LDtCDecimalMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMinRule()) {
+					sequence_DtCDecimalMin(context, (LDtCDecimalMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDIGITS:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDigitsRule()) {
+					sequence_DtCDigits(context, (LDtCDigits) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CFUTURE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCFutureRule()) {
+					sequence_DtCFuture(context, (LDtCFuture) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNOT_NULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNotNullRule()) {
+					sequence_DtCNotNull(context, (LDtCNotNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNullRule()) {
+					sequence_DtCNull(context, (LDtCNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMaxRule()) {
+					sequence_DtCNumericMax(context, (LDtCNumericMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMinRule()) {
+					sequence_DtCNumericMin(context, (LDtCNumericMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CPAST:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCPastRule()) {
+					sequence_DtCPast(context, (LDtCPast) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CREG_EX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCRegExRule()) {
+					sequence_DtCRegEx(context, (LDtCRegEx) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CSIZE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCSizeRule()) {
+					sequence_DtCSize(context, (LDtCSize) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM:
+				if(context == grammarAccess.getEnumRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Enum(context, (LEnum) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM_LITERAL:
+				if(context == grammarAccess.getEnumLiteralRule()) {
+					sequence_EnumLiteral(context, (LEnumLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getImportRule()) {
+					sequence_Import(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LKEY_AND_VALUE:
+				if(context == grammarAccess.getKeyAndValueRule()) {
+					sequence_KeyAndValue(context, (LKeyAndValue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMODIFIER:
+				if(context == grammarAccess.getModifierRule()) {
+					sequence_Modifier(context, (LModifier) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMULTIPLICITY:
+				if(context == grammarAccess.getMultiplicityRule()) {
+					sequence_Multiplicity(context, (LMultiplicity) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LRESULT_FILTERS:
+				if(context == grammarAccess.getResultFiltersRule()) {
+					sequence_ResultFilters(context, (LResultFilters) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LTYPED_PACKAGE:
+				if(context == grammarAccess.getTypedPackageRule()) {
+					sequence_TypedPackage(context, (LTypedPackage) 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:
+	 *     packages+=TypedPackage*
+	 */
+	protected void sequence_LCommonModel(EObject context, LCommonModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (name=QualifiedName (imports+=Import* types+=ScalarType*)?)
+	 */
+	protected void sequence_TypedPackage(EObject context, LTypedPackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/AbstractDatatypeGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/AbstractDatatypeGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..b12fc1a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/serializer/AbstractDatatypeGrammarSyntacticSequencer.java
@@ -0,0 +1,883 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public abstract class AbstractDatatypeGrammarSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected DatatypeGrammarGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_DataType_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p;
+	protected AbstractElementAlias match_TypedPackage___LeftCurlyBracketKeyword_3_0_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 = (DatatypeGrammarGrammarAccess) access;
+		match_DataType_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+		match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a = new GroupAlias(true, true, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().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_DataType_SemicolonKeyword_3_q.equals(syntax))
+				emit_DataType_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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:
+	 *     ';'?
+	 */
+	protected void emit_DataType_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')+
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' | ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')' '('*)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'* '(')+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'+ '('+)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/services/DatatypeGrammarGrammarAccess.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/services/DatatypeGrammarGrammarAccess.java
new file mode 100644
index 0000000..0de742b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/services/DatatypeGrammarGrammarAccess.java
@@ -0,0 +1,1558 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.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.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+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 DatatypeGrammarGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class LCommonModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LCommonModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesTypedPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//LCommonModel returns types::LCommonModel:
+		//	packages+=TypedPackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=TypedPackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//TypedPackage
+		public RuleCall getPackagesTypedPackageParserRuleCall_0() { return cPackagesTypedPackageParserRuleCall_0; }
+	}
+
+	public class TypedPackageElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TypedPackage");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLTypedPackageAction_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 cImportsImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
+		private final Assignment cTypesAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
+		private final RuleCall cTypesScalarTypeParserRuleCall_3_2_0 = (RuleCall)cTypesAssignment_3_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		
+		//TypedPackage returns types::LTypedPackage:
+		//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=ScalarType* "}")?;
+		public ParserRule getRule() { return rule; }
+
+		//{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=ScalarType* "}")?
+		public Group getGroup() { return cGroup; }
+
+		//{types::LTypedPackage}
+		public Action getLTypedPackageAction_0() { return cLTypedPackageAction_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+=Import* types+=ScalarType* "}")?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
+
+		//imports+=Import*
+		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
+
+		//Import
+		public RuleCall getImportsImportParserRuleCall_3_1_0() { return cImportsImportParserRuleCall_3_1_0; }
+
+		//types+=ScalarType*
+		public Assignment getTypesAssignment_3_2() { return cTypesAssignment_3_2; }
+
+		//ScalarType
+		public RuleCall getTypesScalarTypeParserRuleCall_3_2_0() { return cTypesScalarTypeParserRuleCall_3_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+	}
+	
+	
+	private final LCommonModelElements pLCommonModel;
+	private final TypedPackageElements pTypedPackage;
+	
+	private final Grammar grammar;
+
+	private final CommonGrammarGrammarAccess gaCommonGrammar;
+
+	@Inject
+	public DatatypeGrammarGrammarAccess(GrammarProvider grammarProvider,
+		CommonGrammarGrammarAccess gaCommonGrammar) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaCommonGrammar = gaCommonGrammar;
+		this.pLCommonModel = new LCommonModelElements();
+		this.pTypedPackage = new TypedPackageElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar".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 CommonGrammarGrammarAccess getCommonGrammarGrammarAccess() {
+		return gaCommonGrammar;
+	}
+
+	
+	//LCommonModel returns types::LCommonModel:
+	//	packages+=TypedPackage*;
+	public LCommonModelElements getLCommonModelAccess() {
+		return pLCommonModel;
+	}
+	
+	public ParserRule getLCommonModelRule() {
+		return getLCommonModelAccess().getRule();
+	}
+
+	//TypedPackage returns types::LTypedPackage:
+	//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=ScalarType* "}")?;
+	public TypedPackageElements getTypedPackageAccess() {
+		return pTypedPackage;
+	}
+	
+	public ParserRule getTypedPackageRule() {
+		return getTypedPackageAccess().getRule();
+	}
+
+	//Type returns types::LType:
+	//	ScalarType | Class;
+	public CommonGrammarGrammarAccess.TypeElements getTypeAccess() {
+		return gaCommonGrammar.getTypeAccess();
+	}
+	
+	public ParserRule getTypeRule() {
+		return getTypeAccess().getRule();
+	}
+
+	/// **
+	// * Needs to be overridden by sub grammar
+	// * / Class returns types::LClass:
+	//	{types::LClass} annotations+=AnnotationDef* {types::LClass.annotationInfo=current} "class";
+	public CommonGrammarGrammarAccess.ClassElements getClassAccess() {
+		return gaCommonGrammar.getClassAccess();
+	}
+	
+	public ParserRule getClassRule() {
+		return getClassAccess().getRule();
+	}
+
+	//Import returns types::LImport:
+	//	"import" importedNamespace=LQualifiedNameWithWildCard ";";
+	public CommonGrammarGrammarAccess.ImportElements getImportAccess() {
+		return gaCommonGrammar.getImportAccess();
+	}
+	
+	public ParserRule getImportRule() {
+		return getImportAccess().getRule();
+	}
+
+	//DataType returns types::LDataType:
+	//	"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+	//	constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+	//	date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?;
+	public CommonGrammarGrammarAccess.DataTypeElements getDataTypeAccess() {
+		return gaCommonGrammar.getDataTypeAccess();
+	}
+	
+	public ParserRule getDataTypeRule() {
+		return getDataTypeAccess().getRule();
+	}
+
+	//AllConstraints returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast;
+	public CommonGrammarGrammarAccess.AllConstraintsElements getAllConstraintsAccess() {
+		return gaCommonGrammar.getAllConstraintsAccess();
+	}
+	
+	public ParserRule getAllConstraintsRule() {
+		return getAllConstraintsAccess().getRule();
+	}
+
+	//DataTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize;
+	public CommonGrammarGrammarAccess.DataTypeConstraintElements getDataTypeConstraintAccess() {
+		return gaCommonGrammar.getDataTypeConstraintAccess();
+	}
+	
+	public ParserRule getDataTypeConstraintRule() {
+		return getDataTypeConstraintAccess().getRule();
+	}
+
+	//DateConstraint returns types::LDatatypeConstraint:
+	//	DtCFuture | DtCPast | DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.DateConstraintElements getDateConstraintAccess() {
+		return gaCommonGrammar.getDateConstraintAccess();
+	}
+	
+	public ParserRule getDateConstraintRule() {
+		return getDateConstraintAccess().getRule();
+	}
+
+	//BlobTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.BlobTypeConstraintElements getBlobTypeConstraintAccess() {
+		return gaCommonGrammar.getBlobTypeConstraintAccess();
+	}
+	
+	public ParserRule getBlobTypeConstraintRule() {
+		return getBlobTypeConstraintAccess().getRule();
+	}
+
+	//enum ConstraintSeverity returns types::LConstraintSeverity:
+	//	INFO="info" | WARNING="warn" | ERROR="error";
+	public CommonGrammarGrammarAccess.ConstraintSeverityElements getConstraintSeverityAccess() {
+		return gaCommonGrammar.getConstraintSeverityAccess();
+	}
+	
+	public EnumRule getConstraintSeverityRule() {
+		return getConstraintSeverityAccess().getRule();
+	}
+
+	//DtCAssertFalse returns types::LDtCAssertFalse:
+	//	{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertFalseElements getDtCAssertFalseAccess() {
+		return gaCommonGrammar.getDtCAssertFalseAccess();
+	}
+	
+	public ParserRule getDtCAssertFalseRule() {
+		return getDtCAssertFalseAccess().getRule();
+	}
+
+	//DtCAssertTrue returns types::LDtCAssertTrue:
+	//	{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertTrueElements getDtCAssertTrueAccess() {
+		return gaCommonGrammar.getDtCAssertTrueAccess();
+	}
+	
+	public ParserRule getDtCAssertTrueRule() {
+		return getDtCAssertTrueAccess().getRule();
+	}
+
+	//DtCDecimalMax returns types::LDtCDecimalMax:
+	//	{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMaxElements getDtCDecimalMaxAccess() {
+		return gaCommonGrammar.getDtCDecimalMaxAccess();
+	}
+	
+	public ParserRule getDtCDecimalMaxRule() {
+		return getDtCDecimalMaxAccess().getRule();
+	}
+
+	//DtCDecimalMin returns types::LDtCDecimalMin:
+	//	{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMinElements getDtCDecimalMinAccess() {
+		return gaCommonGrammar.getDtCDecimalMinAccess();
+	}
+	
+	public ParserRule getDtCDecimalMinRule() {
+		return getDtCDecimalMinAccess().getRule();
+	}
+
+	//DtCDigits returns types::LDtCDigits:
+	//	{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+	//	("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDigitsElements getDtCDigitsAccess() {
+		return gaCommonGrammar.getDtCDigitsAccess();
+	}
+	
+	public ParserRule getDtCDigitsRule() {
+		return getDtCDigitsAccess().getRule();
+	}
+
+	//DtCFuture returns types::LDtCFuture:
+	//	{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCFutureElements getDtCFutureAccess() {
+		return gaCommonGrammar.getDtCFutureAccess();
+	}
+	
+	public ParserRule getDtCFutureRule() {
+		return getDtCFutureAccess().getRule();
+	}
+
+	//DtCPast returns types::LDtCPast:
+	//	{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCPastElements getDtCPastAccess() {
+		return gaCommonGrammar.getDtCPastAccess();
+	}
+	
+	public ParserRule getDtCPastRule() {
+		return getDtCPastAccess().getRule();
+	}
+
+	//DtCNumericMax returns types::LDtCNumericMax:
+	//	{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMaxElements getDtCNumericMaxAccess() {
+		return gaCommonGrammar.getDtCNumericMaxAccess();
+	}
+	
+	public ParserRule getDtCNumericMaxRule() {
+		return getDtCNumericMaxAccess().getRule();
+	}
+
+	//DtCNumericMin returns types::LDtCNumericMin:
+	//	{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMinElements getDtCNumericMinAccess() {
+		return gaCommonGrammar.getDtCNumericMinAccess();
+	}
+	
+	public ParserRule getDtCNumericMinRule() {
+		return getDtCNumericMinAccess().getRule();
+	}
+
+	//DtCNotNull returns types::LDtCNotNull:
+	//	{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNotNullElements getDtCNotNullAccess() {
+		return gaCommonGrammar.getDtCNotNullAccess();
+	}
+	
+	public ParserRule getDtCNotNullRule() {
+		return getDtCNotNullAccess().getRule();
+	}
+
+	//DtCNull returns types::LDtCNull:
+	//	{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNullElements getDtCNullAccess() {
+		return gaCommonGrammar.getDtCNullAccess();
+	}
+	
+	public ParserRule getDtCNullRule() {
+		return getDtCNullAccess().getRule();
+	}
+
+	//DtCRegEx returns types::LDtCRegEx:
+	//	{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCRegExElements getDtCRegExAccess() {
+		return gaCommonGrammar.getDtCRegExAccess();
+	}
+	
+	public ParserRule getDtCRegExRule() {
+		return getDtCRegExAccess().getRule();
+	}
+
+	//DtCSize returns types::LDtCSize:
+	//	{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey"
+	//	"=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCSizeElements getDtCSizeAccess() {
+		return gaCommonGrammar.getDtCSizeAccess();
+	}
+	
+	public ParserRule getDtCSizeRule() {
+		return getDtCSizeAccess().getRule();
+	}
+
+	//enum DateType returns types::LDateType:
+	//	DATE="date" | TIME="time" | TIMESTAMP="timestamp";
+	public CommonGrammarGrammarAccess.DateTypeElements getDateTypeAccess() {
+		return gaCommonGrammar.getDateTypeAccess();
+	}
+	
+	public EnumRule getDateTypeRule() {
+		return getDateTypeAccess().getRule();
+	}
+
+	//ScalarType returns types::LScalarType:
+	//	DataType | Enum;
+	public CommonGrammarGrammarAccess.ScalarTypeElements getScalarTypeAccess() {
+		return gaCommonGrammar.getScalarTypeAccess();
+	}
+	
+	public ParserRule getScalarTypeRule() {
+		return getScalarTypeAccess().getRule();
+	}
+
+	//Modifier returns types::LModifier:
+	//	final?="final"? & static?="static"? & visibility=LVisibility;
+	public CommonGrammarGrammarAccess.ModifierElements getModifierAccess() {
+		return gaCommonGrammar.getModifierAccess();
+	}
+	
+	public ParserRule getModifierRule() {
+		return getModifierAccess().getRule();
+	}
+
+	//Enum returns types::LEnum:
+	//	"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}";
+	public CommonGrammarGrammarAccess.EnumElements getEnumAccess() {
+		return gaCommonGrammar.getEnumAccess();
+	}
+	
+	public ParserRule getEnumRule() {
+		return getEnumAccess().getRule();
+	}
+
+	//EnumLiteral returns types::LEnumLiteral:
+	//	name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?;
+	public CommonGrammarGrammarAccess.EnumLiteralElements getEnumLiteralAccess() {
+		return gaCommonGrammar.getEnumLiteralAccess();
+	}
+	
+	public ParserRule getEnumLiteralRule() {
+		return getEnumLiteralAccess().getRule();
+	}
+
+	//AnnotationDef returns types::LAnnotationDef:
+	//	=> (annotation=XAnnotation);
+	public CommonGrammarGrammarAccess.AnnotationDefElements getAnnotationDefAccess() {
+		return gaCommonGrammar.getAnnotationDefAccess();
+	}
+	
+	public ParserRule getAnnotationDefRule() {
+		return getAnnotationDefAccess().getRule();
+	}
+
+	//enum LVisibility returns types::LVisibility:
+	//	PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public";
+	public CommonGrammarGrammarAccess.LVisibilityElements getLVisibilityAccess() {
+		return gaCommonGrammar.getLVisibilityAccess();
+	}
+	
+	public EnumRule getLVisibilityRule() {
+		return getLVisibilityAccess().getRule();
+	}
+
+	//ResultFilters returns types::LResultFilters:
+	//	{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}";
+	public CommonGrammarGrammarAccess.ResultFiltersElements getResultFiltersAccess() {
+		return gaCommonGrammar.getResultFiltersAccess();
+	}
+	
+	public ParserRule getResultFiltersRule() {
+		return getResultFiltersAccess().getRule();
+	}
+
+	//ResultFilter returns types::LResultFilter:
+	//	AttributeMatchingConstraint;
+	public CommonGrammarGrammarAccess.ResultFilterElements getResultFilterAccess() {
+		return gaCommonGrammar.getResultFilterAccess();
+	}
+	
+	public ParserRule getResultFilterRule() {
+		return getResultFilterAccess().getRule();
+	}
+
+	//AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+	//	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+	//	matchingLiteral=[types::LEnumLiteral]) ";";
+	public CommonGrammarGrammarAccess.AttributeMatchingConstraintElements getAttributeMatchingConstraintAccess() {
+		return gaCommonGrammar.getAttributeMatchingConstraintAccess();
+	}
+	
+	public ParserRule getAttributeMatchingConstraintRule() {
+		return getAttributeMatchingConstraintAccess().getRule();
+	}
+
+	//KeyAndValue returns types::LKeyAndValue:
+	//	"key" "=" key=STRING "value" "=" value=STRING;
+	public CommonGrammarGrammarAccess.KeyAndValueElements getKeyAndValueAccess() {
+		return gaCommonGrammar.getKeyAndValueAccess();
+	}
+	
+	public ParserRule getKeyAndValueRule() {
+		return getKeyAndValueAccess().getRule();
+	}
+
+	//enum LComparatorType returns types::LComparatorType:
+	//	EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>";
+	public CommonGrammarGrammarAccess.LComparatorTypeElements getLComparatorTypeAccess() {
+		return gaCommonGrammar.getLComparatorTypeAccess();
+	}
+	
+	public EnumRule getLComparatorTypeRule() {
+		return getLComparatorTypeAccess().getRule();
+	}
+
+	//LQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public CommonGrammarGrammarAccess.LQualifiedNameWithWildCardElements getLQualifiedNameWithWildCardAccess() {
+		return gaCommonGrammar.getLQualifiedNameWithWildCardAccess();
+	}
+	
+	public ParserRule getLQualifiedNameWithWildCardRule() {
+		return getLQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//LFQN:
+	//	ID ("." ID)*;
+	public CommonGrammarGrammarAccess.LFQNElements getLFQNAccess() {
+		return gaCommonGrammar.getLFQNAccess();
+	}
+	
+	public ParserRule getLFQNRule() {
+		return getLFQNAccess().getRule();
+	}
+
+	//TYPE_CROSS_REFERENCE:
+	//	ID;
+	public CommonGrammarGrammarAccess.TYPE_CROSS_REFERENCEElements getTYPE_CROSS_REFERENCEAccess() {
+		return gaCommonGrammar.getTYPE_CROSS_REFERENCEAccess();
+	}
+	
+	public ParserRule getTYPE_CROSS_REFERENCERule() {
+		return getTYPE_CROSS_REFERENCEAccess().getRule();
+	}
+
+	//ValidIDWithKeywords:
+	//	"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+	//	"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID;
+	public CommonGrammarGrammarAccess.ValidIDWithKeywordsElements getValidIDWithKeywordsAccess() {
+		return gaCommonGrammar.getValidIDWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidIDWithKeywordsRule() {
+		return getValidIDWithKeywordsAccess().getRule();
+	}
+
+	//ValidLFQNWithKeywords:
+	//	ValidIDWithKeywords ("." ValidIDWithKeywords)*;
+	public CommonGrammarGrammarAccess.ValidLFQNWithKeywordsElements getValidLFQNWithKeywordsAccess() {
+		return gaCommonGrammar.getValidLFQNWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidLFQNWithKeywordsRule() {
+		return getValidLFQNWithKeywordsAccess().getRule();
+	}
+
+	//Multiplicity returns types::LMultiplicity:
+	//	"[" lower=LowerBound (".." upper=UpperBound)? "]";
+	public CommonGrammarGrammarAccess.MultiplicityElements getMultiplicityAccess() {
+		return gaCommonGrammar.getMultiplicityAccess();
+	}
+	
+	public ParserRule getMultiplicityRule() {
+		return getMultiplicityAccess().getRule();
+	}
+
+	//enum LowerBound returns types::LLowerBound:
+	//	MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1";
+	public CommonGrammarGrammarAccess.LowerBoundElements getLowerBoundAccess() {
+		return gaCommonGrammar.getLowerBoundAccess();
+	}
+	
+	public EnumRule getLowerBoundRule() {
+		return getLowerBoundAccess().getRule();
+	}
+
+	//enum UpperBound returns types::LUpperBound:
+	//	MANY="*" | ONE="1";
+	public CommonGrammarGrammarAccess.UpperBoundElements getUpperBoundAccess() {
+		return gaCommonGrammar.getUpperBoundAccess();
+	}
+	
+	public EnumRule getUpperBoundRule() {
+		return getUpperBoundAccess().getRule();
+	}
+
+	//LInt returns ecore::EInt:
+	//	("+" | "-")? INT;
+	public CommonGrammarGrammarAccess.LIntElements getLIntAccess() {
+		return gaCommonGrammar.getLIntAccess();
+	}
+	
+	public ParserRule getLIntRule() {
+		return getLIntAccess().getRule();
+	}
+
+	//LDecimal returns ecore::EFloat:
+	//	LInt ("." INT)?;
+	public CommonGrammarGrammarAccess.LDecimalElements getLDecimalAccess() {
+		return gaCommonGrammar.getLDecimalAccess();
+	}
+	
+	public ParserRule getLDecimalRule() {
+		return getLDecimalAccess().getRule();
+	}
+
+	//XAnnotation:
+	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
+	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
+	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
+		return gaCommonGrammar.getXAnnotationAccess();
+	}
+	
+	public ParserRule getXAnnotationRule() {
+		return getXAnnotationAccess().getRule();
+	}
+
+	//XAnnotationElementValuePair:
+	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAnnotationElementValueOrCommaListAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueOrCommaListRule() {
+		return getXAnnotationElementValueOrCommaListAccess().getRule();
+	}
+
+	//XAnnotationElementValue returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
+	//	XAnnotationOrExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
+		return gaCommonGrammar.getXAnnotationElementValueAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueRule() {
+		return getXAnnotationElementValueAccess().getRule();
+	}
+
+	//XAnnotationOrExpression returns xbase::XExpression:
+	//	XAnnotation | XExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
+		return gaCommonGrammar.getXAnnotationOrExpressionAccess();
+	}
+	
+	public ParserRule getXAnnotationOrExpressionRule() {
+		return getXAnnotationOrExpressionAccess().getRule();
+	}
+
+	//XExpression:
+	//	XAssignment;
+	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAssignmentAccess();
+	}
+	
+	public ParserRule getXAssignmentRule() {
+		return getXAssignmentAccess().getRule();
+	}
+
+	//OpSingleAssign:
+	//	"=";
+	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
+		return gaCommonGrammar.getOpSingleAssignAccess();
+	}
+	
+	public ParserRule getOpSingleAssignRule() {
+		return getOpSingleAssignAccess().getRule();
+	}
+
+	//OpMultiAssign:
+	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOrExpressionAccess();
+	}
+	
+	public ParserRule getXOrExpressionRule() {
+		return getXOrExpressionAccess().getRule();
+	}
+
+	//OpOr:
+	//	"||";
+	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAndExpressionAccess();
+	}
+	
+	public ParserRule getXAndExpressionRule() {
+		return getXAndExpressionAccess().getRule();
+	}
+
+	//OpAnd:
+	//	"&&";
+	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXEqualityExpressionAccess();
+	}
+	
+	public ParserRule getXEqualityExpressionRule() {
+		return getXEqualityExpressionAccess().getRule();
+	}
+
+	//OpEquality:
+	//	"==" | "!=" | "===" | "!==";
+	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXRelationalExpressionAccess();
+	}
+	
+	public ParserRule getXRelationalExpressionRule() {
+		return getXRelationalExpressionAccess().getRule();
+	}
+
+	//OpCompare:
+	//	">=" | "<" "=" | ">" | "<";
+	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOtherOperatorExpressionAccess();
+	}
+	
+	public ParserRule getXOtherOperatorExpressionRule() {
+		return getXOtherOperatorExpressionAccess().getRule();
+	}
+
+	//OpOther:
+	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAdditiveExpressionAccess();
+	}
+	
+	public ParserRule getXAdditiveExpressionRule() {
+		return getXAdditiveExpressionAccess().getRule();
+	}
+
+	//OpAdd:
+	//	"+" | "-";
+	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXMultiplicativeExpressionAccess();
+	}
+	
+	public ParserRule getXMultiplicativeExpressionRule() {
+		return getXMultiplicativeExpressionAccess().getRule();
+	}
+
+	//OpMulti:
+	//	"*" | "**" | "/" | "%";
+	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
+		return gaCommonGrammar.getOpMultiAccess();
+	}
+	
+	public ParserRule getOpMultiRule() {
+		return getOpMultiAccess().getRule();
+	}
+
+	//XUnaryOperation returns XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
+		return gaCommonGrammar.getXUnaryOperationAccess();
+	}
+	
+	public ParserRule getXUnaryOperationRule() {
+		return getXUnaryOperationAccess().getRule();
+	}
+
+	//OpUnary:
+	//	"!" | "-" | "+";
+	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
+		return gaCommonGrammar.getOpUnaryAccess();
+	}
+	
+	public ParserRule getOpUnaryRule() {
+		return getOpUnaryAccess().getRule();
+	}
+
+	//XCastedExpression returns XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
+		return gaCommonGrammar.getXCastedExpressionAccess();
+	}
+	
+	public ParserRule getXCastedExpressionRule() {
+		return getXCastedExpressionAccess().getRule();
+	}
+
+	//XPostfixOperation returns XExpression:
+	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
+	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
+		return gaCommonGrammar.getXPostfixOperationAccess();
+	}
+	
+	public ParserRule getXPostfixOperationRule() {
+		return getXPostfixOperationAccess().getRule();
+	}
+
+	//OpPostfix:
+	//	"++" | "--";
+	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getXPrimaryExpressionAccess();
+	}
+	
+	public ParserRule getXPrimaryExpressionRule() {
+		return getXPrimaryExpressionAccess().getRule();
+	}
+
+	//XLiteral returns XExpression:
+	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
+	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
+		return gaCommonGrammar.getXLiteralAccess();
+	}
+	
+	public ParserRule getXLiteralRule() {
+		return getXLiteralAccess().getRule();
+	}
+
+	//XCollectionLiteral:
+	//	XSetLiteral | XListLiteral;
+	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
+		return gaCommonGrammar.getXCollectionLiteralAccess();
+	}
+	
+	public ParserRule getXCollectionLiteralRule() {
+		return getXCollectionLiteralAccess().getRule();
+	}
+
+	//XSetLiteral:
+	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
+		return gaCommonGrammar.getXSetLiteralAccess();
+	}
+	
+	public ParserRule getXSetLiteralRule() {
+		return getXSetLiteralAccess().getRule();
+	}
+
+	//XListLiteral:
+	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
+		return gaCommonGrammar.getXListLiteralAccess();
+	}
+	
+	public ParserRule getXListLiteralRule() {
+		return getXListLiteralAccess().getRule();
+	}
+
+	//XClosure returns XExpression:
+	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
+	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
+		return gaCommonGrammar.getXClosureAccess();
+	}
+	
+	public ParserRule getXClosureRule() {
+		return getXClosureAccess().getRule();
+	}
+
+	//XExpressionInClosure returns XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
+		return gaCommonGrammar.getXExpressionInClosureAccess();
+	}
+	
+	public ParserRule getXExpressionInClosureRule() {
+		return getXExpressionInClosureAccess().getRule();
+	}
+
+	//XShortClosure returns XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?="|") expression=XExpression;
+	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
+		return gaCommonGrammar.getXShortClosureAccess();
+	}
+	
+	public ParserRule getXShortClosureRule() {
+		return getXShortClosureAccess().getRule();
+	}
+
+	//XParenthesizedExpression returns XExpression:
+	//	"(" XExpression ")";
+	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
+		return gaCommonGrammar.getXParenthesizedExpressionAccess();
+	}
+	
+	public ParserRule getXParenthesizedExpressionRule() {
+		return getXParenthesizedExpressionAccess().getRule();
+	}
+
+	//XIfExpression returns XExpression:
+	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXSwitchExpressionAccess();
+	}
+	
+	public ParserRule getXSwitchExpressionRule() {
+		return getXSwitchExpressionAccess().getRule();
+	}
+
+	//XCasePart:
+	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
+		return gaCommonGrammar.getXCasePartAccess();
+	}
+	
+	public ParserRule getXCasePartRule() {
+		return getXCasePartAccess().getRule();
+	}
+
+	//XForLoopExpression returns XExpression:
+	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	//	eachExpression=XExpression;
+	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXBasicForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXBasicForLoopExpressionRule() {
+		return getXBasicForLoopExpressionAccess().getRule();
+	}
+
+	//XWhileExpression returns XExpression:
+	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
+		return gaCommonGrammar.getXWhileExpressionAccess();
+	}
+	
+	public ParserRule getXWhileExpressionRule() {
+		return getXWhileExpressionAccess().getRule();
+	}
+
+	//XDoWhileExpression returns XExpression:
+	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
+		return gaCommonGrammar.getXDoWhileExpressionAccess();
+	}
+	
+	public ParserRule getXDoWhileExpressionRule() {
+		return getXDoWhileExpressionAccess().getRule();
+	}
+
+	//XBlockExpression returns XExpression:
+	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
+		return gaCommonGrammar.getXBlockExpressionAccess();
+	}
+	
+	public ParserRule getXBlockExpressionRule() {
+		return getXBlockExpressionAccess().getRule();
+	}
+
+	//XExpressionOrVarDeclaration returns XExpression:
+	//	XVariableDeclaration | XExpression;
+	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXVariableDeclarationAccess();
+	}
+	
+	public ParserRule getXVariableDeclarationRule() {
+		return getXVariableDeclarationAccess().getRule();
+	}
+
+	//JvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference? name=ValidID;
+	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
+		return gaCommonGrammar.getJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getJvmFormalParameterRule() {
+		return getJvmFormalParameterAccess().getRule();
+	}
+
+	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXFeatureCallAccess();
+	}
+	
+	public ParserRule getXFeatureCallRule() {
+		return getXFeatureCallAccess().getRule();
+	}
+
+	//FeatureCallID:
+	//	ValidID | "extends" | "static" | "import" | "extension";
+	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
+		return gaCommonGrammar.getFeatureCallIDAccess();
+	}
+	
+	public ParserRule getFeatureCallIDRule() {
+		return getFeatureCallIDAccess().getRule();
+	}
+
+	//IdOrSuper:
+	//	FeatureCallID | "super";
+	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXConstructorCallAccess();
+	}
+	
+	public ParserRule getXConstructorCallRule() {
+		return getXConstructorCallAccess().getRule();
+	}
+
+	//XBooleanLiteral returns XExpression:
+	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
+		return gaCommonGrammar.getXBooleanLiteralAccess();
+	}
+	
+	public ParserRule getXBooleanLiteralRule() {
+		return getXBooleanLiteralAccess().getRule();
+	}
+
+	//XNullLiteral returns XExpression:
+	//	{XNullLiteral} "null";
+	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
+		return gaCommonGrammar.getXNullLiteralAccess();
+	}
+	
+	public ParserRule getXNullLiteralRule() {
+		return getXNullLiteralAccess().getRule();
+	}
+
+	//XNumberLiteral returns XExpression:
+	//	{XNumberLiteral} value=Number;
+	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
+		return gaCommonGrammar.getXNumberLiteralAccess();
+	}
+	
+	public ParserRule getXNumberLiteralRule() {
+		return getXNumberLiteralAccess().getRule();
+	}
+
+	//XStringLiteral returns XExpression:
+	//	{XStringLiteral} value=STRING;
+	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
+		return gaCommonGrammar.getXStringLiteralAccess();
+	}
+	
+	public ParserRule getXStringLiteralRule() {
+		return getXStringLiteralAccess().getRule();
+	}
+
+	//XTypeLiteral returns XExpression:
+	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
+		return gaCommonGrammar.getXTypeLiteralAccess();
+	}
+	
+	public ParserRule getXTypeLiteralRule() {
+		return getXTypeLiteralAccess().getRule();
+	}
+
+	//XThrowExpression returns XExpression:
+	//	{XThrowExpression} "throw" expression=XExpression;
+	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
+		return gaCommonGrammar.getXThrowExpressionAccess();
+	}
+	
+	public ParserRule getXThrowExpressionRule() {
+		return getXThrowExpressionAccess().getRule();
+	}
+
+	//XReturnExpression returns XExpression:
+	//	{XReturnExpression} "return" -> expression=XExpression?;
+	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXTryCatchFinallyExpressionAccess();
+	}
+	
+	public ParserRule getXTryCatchFinallyExpressionRule() {
+		return getXTryCatchFinallyExpressionAccess().getRule();
+	}
+
+	//XSynchronizedExpression returns XExpression:
+	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
+		return gaCommonGrammar.getXSynchronizedExpressionAccess();
+	}
+	
+	public ParserRule getXSynchronizedExpressionRule() {
+		return getXSynchronizedExpressionAccess().getRule();
+	}
+
+	//XCatchClause:
+	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
+		return gaCommonGrammar.getXCatchClauseAccess();
+	}
+	
+	public ParserRule getXCatchClauseRule() {
+		return getXCatchClauseAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaCommonGrammar.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//Number hidden():
+	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	public XbaseGrammarAccess.NumberElements getNumberAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getHEXRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9" ("0".."9" | "_")*;
+	public TerminalRule getINTRule() {
+		return gaCommonGrammar.getINTRule();
+	} 
+
+	//terminal DECIMAL:
+	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	public TerminalRule getDECIMALRule() {
+		return gaCommonGrammar.getDECIMALRule();
+	} 
+
+	//JvmTypeReference:
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
+	//	XFunctionTypeRef;
+	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmTypeReferenceRule() {
+		return getJvmTypeReferenceAccess().getRule();
+	}
+
+	//ArrayBrackets:
+	//	"[" "]";
+	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+		return gaCommonGrammar.getArrayBracketsAccess();
+	}
+	
+	public ParserRule getArrayBracketsRule() {
+		return getArrayBracketsAccess().getRule();
+	}
+
+	//XFunctionTypeRef:
+	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getJvmParameterizedTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmParameterizedTypeReferenceRule() {
+		return getJvmParameterizedTypeReferenceAccess().getRule();
+	}
+
+	//JvmArgumentTypeReference returns JvmTypeReference:
+	//	JvmTypeReference | JvmWildcardTypeReference;
+	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmArgumentTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmArgumentTypeReferenceRule() {
+		return getJvmArgumentTypeReferenceAccess().getRule();
+	}
+
+	//JvmWildcardTypeReference:
+	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
+	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmWildcardTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmWildcardTypeReferenceRule() {
+		return getJvmWildcardTypeReferenceAccess().getRule();
+	}
+
+	//JvmUpperBound:
+	//	"extends" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundRule() {
+		return getJvmUpperBoundAccess().getRule();
+	}
+
+	//JvmUpperBoundAnded returns JvmUpperBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundAndedRule() {
+		return getJvmUpperBoundAndedAccess().getRule();
+	}
+
+	//JvmLowerBound:
+	//	"super" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundRule() {
+		return getJvmLowerBoundAccess().getRule();
+	}
+
+	//JvmLowerBoundAnded returns JvmLowerBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundAndedRule() {
+		return getJvmLowerBoundAndedAccess().getRule();
+	}
+
+	//JvmTypeParameter:
+	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
+	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+		return gaCommonGrammar.getJvmTypeParameterAccess();
+	}
+	
+	public ParserRule getJvmTypeParameterRule() {
+		return getJvmTypeParameterAccess().getRule();
+	}
+
+	//QualifiedNameWithWildcard:
+	//	QualifiedName "." "*";
+	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+		return gaCommonGrammar.getQualifiedNameWithWildcardAccess();
+	}
+	
+	public ParserRule getQualifiedNameWithWildcardRule() {
+		return getQualifiedNameWithWildcardAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaCommonGrammar.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+
+	//XImportSection:
+	//	importDeclarations+=XImportDeclaration+;
+	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+
+	//QualifiedNameInStaticImport:
+	//	(ValidID ".")+;
+	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+		return gaCommonGrammar.getQualifiedNameInStaticImportAccess();
+	}
+	
+	public ParserRule getQualifiedNameInStaticImportRule() {
+		return getQualifiedNameInStaticImportAccess().getRule();
+	}
+
+	//terminal ID:
+	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaCommonGrammar.getIDRule();
+	} 
+
+	//terminal STRING:
+	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
+	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	public TerminalRule getSTRINGRule() {
+		return gaCommonGrammar.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaCommonGrammar.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaCommonGrammar.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaCommonGrammar.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaCommonGrammar.getANY_OTHERRule();
+	} 
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarJavaValidator.java b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarJavaValidator.java
new file mode 100644
index 0000000..d6e9674
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src-gen/org/eclipse/osbp/dsl/datatype/xtext/validation/AbstractDatatypeGrammarJavaValidator.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractDatatypeGrammarJavaValidator extends org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    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.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammar.xtext b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammar.xtext
new file mode 100644
index 0000000..d881b9d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammar.xtext
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar with org.eclipse.osbp.dsl.common.xtext.CommonGrammar
+
+import "http://osbp.eclipse.org/dsl/common/types/v1" as types
+
+LCommonModel returns types::LCommonModel:
+	packages+=TypedPackage*;
+
+TypedPackage returns types::LTypedPackage:
+	{types::LTypedPackage}
+	'package' name=QualifiedName ('{'
+	(imports+=Import)*
+	(types+=ScalarType)*
+	'}')?;
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarBundleSpaceModule.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarBundleSpaceModule.java
new file mode 100644
index 0000000..5fda82f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarBundleSpaceModule.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext;
+
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+@SuppressWarnings("restriction")
+public class DatatypeGrammarBundleSpaceModule extends
+		DatatypeGrammarRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	public Class<? extends AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarBundleSpaceSetup.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarBundleSpaceSetup.java
new file mode 100644
index 0000000..8ce05fa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarBundleSpaceSetup.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * It uses the <code>BundleSpaceTypeProviderFactory</code>.
+ */
+@SuppressWarnings("restriction")
+public class DatatypeGrammarBundleSpaceSetup extends
+		DatatypeGrammarStandaloneSetup {
+
+	public static void doSetup() {
+		new DatatypeGrammarBundleSpaceSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarBundleSpaceSetup
+				.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	public Injector createInjector() {
+		return Guice.createInjector(new DatatypeGrammarBundleSpaceModule());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarRuntimeModule.java
new file mode 100644
index 0000000..3633fcf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarRuntimeModule.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext;
+
+import org.eclipse.xtext.formatting.IFormatter;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.osbp.dsl.datatype.xtext.formatter.DatatypeGrammarFormatter;
+import org.eclipse.osbp.dsl.datatype.xtext.generator.Generator;
+import org.eclipse.osbp.dsl.datatype.xtext.generator.OutputConfigurationProvider;
+import org.eclipse.osbp.dsl.datatype.xtext.valueconverter.DatatypesQualifiedNameProvider;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.FastLinkingService;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+public class DatatypeGrammarRuntimeModule extends
+		org.eclipse.osbp.dsl.datatype.xtext.AbstractDatatypeGrammarRuntimeModule {
+
+	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return DatatypesQualifiedNameProvider.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	public Class<? extends ILinkingService> bindILinkingService() {
+		return FastLinkingService.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return Generator.class;
+	}
+
+	public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
+		return OutputConfigurationProvider.class;
+	}
+
+	public Class<? extends IFormatter> bindIFormatter() {
+		return DatatypeGrammarFormatter.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarStandaloneSetup.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarStandaloneSetup.java
new file mode 100644
index 0000000..4fb2ed5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammarStandaloneSetup.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+/**
+ * Initialization support for running Xtext languages without equinox extension
+ * registry
+ */
+public class DatatypeGrammarStandaloneSetup extends
+		DatatypeGrammarStandaloneSetupGenerated {
+
+	public static void doSetup() {
+		if (!EPackage.Registry.INSTANCE
+				.containsKey("http://osbp.eclipse.org/dsl/common/types/v1")) {
+			EPackage.Registry.INSTANCE.put(
+					"http://osbp.eclipse.org/dsl/common/types/v1",
+					OSBPTypesPackage.eINSTANCE);
+		}
+
+		new DatatypeGrammarStandaloneSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/GenerateDatatypeGrammar.mwe2 b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/GenerateDatatypeGrammar.mwe2
new file mode 100644
index 0000000..c6ff3a1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/GenerateDatatypeGrammar.mwe2
@@ -0,0 +1,117 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+module org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.xtext.generator.parser.antlr.*
+import org.eclipse.xtext.resource.XtextResourceSet
+
+var fileExtensions = "datatype"
+var projectName = "org.eclipse.osbp.dsl.datatype.xtext"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/dsl/datatype/xtext/DatatypeGrammar.xtext"
+var runtimeProject = "../${projectName}"
+var backtrack = false
+var memoize = false
+  
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+ 
+	bean = org.eclipse.osbp.dsl.mwe.SemanticModelSetupComponent {
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/common/types/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl"
+		}
+	}
+
+	bean = StandaloneSetup {
+		scanClassPath = true
+		platformUri = "${runtimeProject}/.."
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}/src-gen"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		encoding = "UTF-8"
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		pathTestProject = "${runtimeProject}.tests"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			uri = grammarURI
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "150"
+					methodsPerClass = "300"
+				}
+			}
+			fragment = parser.antlr.DebugAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			fragment = validation.JavaValidatorFragment {}
+			fragment = generator.GeneratorFragment {}
+			fragment = scoping.ImportNamespacesScopingFragment {}
+			fragment = builder.BuilderIntegrationFragment {}
+			fragment = quickfix.QuickfixProviderFragment {}
+			fragment = labeling.LabelProviderFragment {
+				generateStub = false
+			}
+			fragment = outline.OutlineTreeProviderFragment {}
+			fragment = outline.QuickOutlineFragment {}
+			fragment = compare.CompareFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "100"
+					methodsPerClass = "200"
+				}
+			}
+			fragment = refactoring.RefactorElementNameFragment {
+				useJdtRefactoring = true
+			}
+			fragment = types.TypesGeneratorFragment {}
+			fragment = xbase.XbaseGeneratorFragment {
+				generateXtendInferrer = true
+			}
+			fragment = templates.CodetemplatesGeneratorFragment {}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/formatter/DatatypeGrammarFormatter.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/formatter/DatatypeGrammarFormatter.java
new file mode 100644
index 0000000..f15a4a0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/formatter/DatatypeGrammarFormatter.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.formatter;
+
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.osbp.dsl.common.xtext.formatting.CommonGrammarFormatter;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess.DataTypeConstraintElements;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess.KeyAndValueElements;
+import org.eclipse.osbp.dsl.datatype.xtext.services.DatatypeGrammarGrammarAccess;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ * 
+ * Also see org.eclipse.xtext.xtext.XtextFormattingTokenSerializer as an
+ * example
+ */
+public class DatatypeGrammarFormatter extends CommonGrammarFormatter {
+
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		configure(c, (DatatypeGrammarGrammarAccess) getGrammarAccess());
+	}
+
+	public void configure(FormattingConfig c, DatatypeGrammarGrammarAccess ga) {
+		DatatypeGrammarGrammarAccess f = (DatatypeGrammarGrammarAccess) getGrammarAccess();
+
+		super.configure(c, ga.getCommonGrammarGrammarAccess());
+
+		configureDatatypeDef(c, f.getDataTypeAccess());
+		configureConstraintsDef(c, f.getDataTypeConstraintAccess());
+		configureKeyAndValueDef(c, f.getKeyAndValueAccess());
+
+		c.setAutoLinewrap(160);
+		
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).after(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(1, 1, 1).after(f.getML_COMMENTRule());
+
+		for (Keyword kw : ga.findKeywords("@")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(")")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(";")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(",")) {
+			c.setNoSpace().before(kw);
+		}
+	}
+
+	@SuppressWarnings("restriction")
+	private void configureKeyAndValueDef(FormattingConfig c,
+			KeyAndValueElements ele) {
+//		c.setLinewrap().before(ele.getRule());
+//		c.setIndentationIncrement().before(ele.getRule());
+//		c.setIndentationDecrement().after(ele.getRule());
+	}
+
+	@SuppressWarnings("restriction")
+	private void configureConstraintsDef(FormattingConfig c,
+			DataTypeConstraintElements ele) {
+		c.setLinewrap().before(ele.getRule());
+		c.setIndentationIncrement().before(ele.getRule());
+		c.setIndentationDecrement().after(ele.getRule());
+	}
+
+	@SuppressWarnings("restriction")
+	protected void configureDatatypeDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.DataTypeElements ele) {
+		c.setLinewrap(1, 1, 2).around(ele.getRule());
+		c.setLinewrap().before(ele.getPropertiesKeyword_2_0_4_0());
+		c.setLinewrap().before(ele.getPropertiesKeyword_2_1_3_0());
+		c.setLinewrap().before(ele.getPropertiesKeyword_2_2_2_0());
+		
+		c.setIndentationIncrement().before(ele.getPropertiesKeyword_2_0_4_0());
+		c.setIndentationIncrement().before(ele.getPropertiesKeyword_2_1_3_0());
+		c.setIndentationIncrement().before(ele.getPropertiesKeyword_2_2_2_0());
+		c.setIndentationDecrement().after(ele.getRightParenthesisKeyword_2_0_4_4());
+		c.setIndentationDecrement().after(ele.getRightParenthesisKeyword_2_1_3_4());
+		c.setIndentationDecrement().after(ele.getRightParenthesisKeyword_2_2_2_4());
+		
+		c.setIndentationIncrement().before(ele.getRule());
+		c.setIndentationDecrement().after(ele.getSemicolonKeyword_3());
+		
+	}
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/generator/Generator.xtend b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/generator/Generator.xtend
new file mode 100644
index 0000000..905c89b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/generator/Generator.xtend
@@ -0,0 +1,39 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.generator
+
+import java.io.StringWriter
+import java.io.Writer
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.emf.ecore.xmi.XMLResource
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.osbp.dsl.semantic.common.types.LCommonModel
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingGenerator
+
+class Generator extends DelegatingGenerator {
+
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+
+		super.doGenerate(input, fsa)
+
+		val XMLResource outputRes = new XMLResourceImpl
+		val LCommonModel lModel = input.contents.get(0) as LCommonModel
+		outputRes.contents += EcoreUtil.copy(lModel)
+
+		val Writer writer = new StringWriter
+		outputRes.save(writer, null)
+
+		fsa.generateFile(input.URI.lastSegment + ".datatypes_bin", "ModelBin", writer.toString)
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/generator/OutputConfigurationProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/generator/OutputConfigurationProvider.java
new file mode 100644
index 0000000..9199eaa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/generator/OutputConfigurationProvider.java
@@ -0,0 +1,41 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.datatype.xtext.generator;
+
+import java.util.Set;
+
+import org.eclipse.xtext.generator.OutputConfiguration;
+
+public class OutputConfigurationProvider extends
+		org.eclipse.xtext.generator.OutputConfigurationProvider {
+
+	/**
+	 * @return a set of {@link OutputConfiguration} available for the generator
+	 */
+	public Set<OutputConfiguration> getOutputConfigurations() {
+		Set<OutputConfiguration> configs = super.getOutputConfigurations();
+
+		OutputConfiguration componentOutput = new OutputConfiguration(
+				"ModelBin");
+		componentOutput.setDescription("ModelBin");
+		componentOutput.setOutputDirectory("./modelsbin");
+		componentOutput.setOverrideExistingResources(true);
+		componentOutput.setCreateOutputDirectory(true);
+		componentOutput.setCleanUpDerivedResources(true);
+		componentOutput.setSetDerivedProperty(true);
+		componentOutput.setKeepLocalHistory(true);
+		configs.add(componentOutput);
+
+		return configs;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.xtend b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.xtend
new file mode 100644
index 0000000..44f4080
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/jvmmodel/DatatypeGrammarJvmModelInferrer.xtend
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.jvmmodel
+
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer
+
+/**
+ * <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 DatatypeGrammarJvmModelInferrer extends AbstractModelInferrer {
+	// nothing to do
+}
+
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scope/DatatypeBatchScopeProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scope/DatatypeBatchScopeProvider.java
new file mode 100644
index 0000000..2478f3b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scope/DatatypeBatchScopeProvider.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.scope;
+
+import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonBatchScopeProvider;
+
+/**
+ * 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 DatatypeBatchScopeProvider extends CommonBatchScopeProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scope/DatatypeScopeProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scope/DatatypeScopeProvider.java
new file mode 100644
index 0000000..dd4e6e0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/scope/DatatypeScopeProvider.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.scope;
+
+/**
+ * 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 DatatypeScopeProvider extends DatatypeBatchScopeProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java
new file mode 100644
index 0000000..187ea0e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSemanticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.serializer;
+
+public class DatatypeGrammarSemanticSequencer extends AbstractDatatypeGrammarSemanticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..3af1d60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/serializer/DatatypeGrammarSyntacticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.serializer;
+
+public class DatatypeGrammarSyntacticSequencer extends AbstractDatatypeGrammarSyntacticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarJavaValidator.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarJavaValidator.java
new file mode 100644
index 0000000..ce2fcf6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/validation/DatatypeGrammarJavaValidator.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.validation;
+
+/**
+ * Custom validation rules. 
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+public class DatatypeGrammarJavaValidator extends org.eclipse.osbp.dsl.datatype.xtext.validation.AbstractDatatypeGrammarJavaValidator {
+
+
+
+}
diff --git a/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/valueconverter/DatatypesQualifiedNameProvider.java b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/valueconverter/DatatypesQualifiedNameProvider.java
new file mode 100644
index 0000000..ce9a55e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.datatype.xtext/src/org/eclipse/osbp/dsl/datatype/xtext/valueconverter/DatatypesQualifiedNameProvider.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.datatype.xtext.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonQualifiedNameProvider;
+
+import com.google.inject.Inject;
+
+public class DatatypesQualifiedNameProvider extends CommonQualifiedNameProvider {
+
+	
+	@Inject
+	private ModelExtensions extensions;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		return super.getFullyQualifiedName(obj);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/.project b/org.eclipse.osbp.dsl.dto.lib/.project
new file mode 100644
index 0000000..f3c7748
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.dto.lib</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.dto.lib/LICENSE.txt b/org.eclipse.osbp.dsl.dto.lib/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/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.dsl.dto.lib/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.dto.lib/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..90dd924
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.dto.lib
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.dto.lib
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.dto.lib;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.impl;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.services;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.services.filters;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.services.impl;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;version="0.9.0"
+Import-Package: javax.persistence,
+ javax.persistence.criteria;version="2.1.0",
+ javax.transaction;version="1.1.0",
+ javax.validation;version="1.1.0",
+ javax.validation.metadata;version="1.1.0",
+ org.osgi.dto;version="1.0.0",
+ org.osgi.framework;version="1.8.0",
+ org.osgi.service.component;version="1.2.2",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.util.tracker;version="1.5.1",
+ org.slf4j;version="1.7.0"
+Service-Component: OSGI-INF/org.eclipse.osbp.dsl.dto.lib.impl.MapperAccess.xml
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.persistence.core;bundle-version="2.6.0";resolution:=optional,
+ org.eclipse.persistence.jpa;bundle-version="2.6.0";resolution:=optional,
+ org.apache.commons.lang;bundle-version="2.6.0",
+ org.eclipse.osbp.runtime.jsr303.validation;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.datatype.lib,
+ org.junit
diff --git a/org.eclipse.osbp.dsl.dto.lib/META-INF/persistence.xml b/org.eclipse.osbp.dsl.dto.lib/META-INF/persistence.xml
new file mode 100644
index 0000000..15d31be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/META-INF/persistence.xml
@@ -0,0 +1,17 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
+	version="1.0">
+	<persistence-unit name="DEFAULT" 
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Base</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Car</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Addon</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Person</class>
+	
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+	</persistence-unit>
+</persistence>
diff --git a/org.eclipse.osbp.dsl.dto.lib/OSGI-INF/org.eclipse.osbp.dsl.dto.lib.impl.MapperAccess.xml b/org.eclipse.osbp.dsl.dto.lib/OSGI-INF/org.eclipse.osbp.dsl.dto.lib.impl.MapperAccess.xml
new file mode 100644
index 0000000..623b283
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/OSGI-INF/org.eclipse.osbp.dsl.dto.lib.impl.MapperAccess.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="true" name="org.eclipse.osbp.dsl.dto.lib.impl.MapperAccess">
+   <implementation class="org.eclipse.osbp.dsl.dto.lib.impl.MapperAccess"/>
+   <service>
+      <provide interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess"/>
+   </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.lib/README.txt b/org.eclipse.osbp.dsl.dto.lib/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.lib/about.html b/org.eclipse.osbp.dsl.dto.lib/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/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.dsl.dto.lib/about.ini b/org.eclipse.osbp.dsl.dto.lib/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/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.dsl.dto.lib/about.mappings b/org.eclipse.osbp.dsl.dto.lib/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/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.dsl.dto.lib/about.properties b/org.eclipse.osbp.dsl.dto.lib/about.properties
new file mode 100644
index 0000000..e348446
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.dto.lib
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.dto.lib/build.properties b/org.eclipse.osbp.dsl.dto.lib/build.properties
new file mode 100644
index 0000000..5e02a4f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/build.properties
@@ -0,0 +1,15 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               .project,\
+               .classpath,\
+               OSGI-INF/,\
+               LICENSE.txt,\
+               README.txt
+output.. = target/classes
+source.. = src/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               epl-v10.html,\
+               license.html,\
+               README.txt
diff --git a/org.eclipse.osbp.dsl.dto.lib/epl-v10.html b/org.eclipse.osbp.dsl.dto.lib/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/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.dsl.dto.lib/license.html b/org.eclipse.osbp.dsl.dto.lib/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/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.dsl.dto.lib/plugin.properties b/org.eclipse.osbp.dsl.dto.lib/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.dto.lib/pom.xml b/org.eclipse.osbp.dsl.dto.lib/pom.xml
new file mode 100644
index 0000000..6c75c38
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.dto.lib</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java
new file mode 100644
index 0000000..421f7c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/AbstractOppositeDtoList.java
@@ -0,0 +1,524 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.Spliterator;
+import java.util.function.Consumer;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
+import java.util.stream.Stream;
+
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare;
+import org.eclipse.osbp.runtime.common.hash.HashUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("serial")
+public abstract class AbstractOppositeDtoList<D> extends ArrayList<D> implements
+		IEntityMappingList<D> {
+
+	private static Logger LOGGER = LoggerFactory
+			.getLogger(AbstractOppositeDtoList.class);
+
+	private final Class<?> dtoType;
+	private final String parentProperty;
+	private final Supplier<Object> idSupplier;
+
+	private boolean resolved;
+	private boolean resolving;
+
+	private Map<Object, D> addedToSuper = new HashMap<>();
+	private Map<Object, D> added = new HashMap<>();
+	private Map<Object, D> removed = new HashMap<>();
+	private Map<Object, D> updated = new HashMap<>();
+
+	private MappingContext mappingContext;
+
+	public AbstractOppositeDtoList(MappingContext mappingContext,
+			Class<?> dtoType, String parentProperty, Supplier<Object> idSupplier) {
+		super();
+		this.mappingContext = mappingContext != null ? mappingContext
+				: new MappingContext();
+		this.dtoType = dtoType;
+		this.idSupplier = idSupplier;
+		this.parentProperty = parentProperty;
+
+		// if (this.mappingContext == null) {
+		// resolved = true;
+		// }
+	}
+
+	public List<D> getAdded() {
+		return new ArrayList<>(added.values());
+	}
+
+	public List<D> getRemoved() {
+		return new ArrayList<>(removed.values());
+	}
+
+	public List<D> getUpdated() {
+		return new ArrayList<>(updated.values());
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void resolve() {
+		syncContextWithTransaction();
+
+		if (resolved || resolving || mappingContext.isNoCollectionResolving()) {
+			return;
+		}
+
+		try {
+			resolving = true;
+			mappingContext.makeCurrent();
+
+			IDTOService<?> service = DtoServiceAccess.getService(dtoType);
+
+			Query query = new Query(new LCompare.Equal(parentProperty,
+					idSupplier.get()));
+			Collection<D> dtos = (Collection<D>) service.find(query);
+
+			// remove the removed from the added
+			for (D removed : getRemoved()) {
+				String hash = hashDto(removed);
+				added.remove(hash);
+
+				// remove from super
+				D toSuper = addedToSuper.remove(hash);
+				if (toSuper != null) {
+					super.remove(toSuper);
+				}
+			}
+
+			// now merge the query result
+			if (dtos.isEmpty()) {
+				// if result is empty, add all added
+				super.addAll(getAdded());
+				addedToSuper.putAll(added);
+			} else {
+				HashMap<Object, D> tempAdded = new HashMap<>(added);
+				for (D dto : dtos) {
+					String hashCode = hashDto(dto);
+
+					if (removed.containsKey(hashCode)) {
+						// if it was removed, we do not add the dto
+						continue;
+					} else {
+						if (tempAdded.containsKey(hashCode)) {
+							// if it was added and contained in the DB, then we
+							// add the added one
+							D instance = tempAdded.get(hashCode);
+							super.add(instance);
+							addedToSuper.put(hashCode, instance);
+							tempAdded.remove(hashCode);
+						} else {
+							// otherwise we add the persistent dto
+							super.add(dto);
+							addedToSuper.put(hashCode, dto);
+						}
+					}
+				}
+
+				// now we add the pending added
+				super.addAll(tempAdded.values());
+				addedToSuper.putAll(tempAdded);
+			}
+
+		} catch (Exception ex) {
+			resolved = false;
+			resolving = false;
+			throw new RuntimeException(ex);
+		} finally {
+			resolved = true;
+			resolving = false;
+			mappingContext.unmakeCurrent();
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.IEntityMappingList#mapToEntity(org.eclipse
+	 * .osbp.dsl.dto.lib.IMapper, java.util.function.Consumer,
+	 * java.util.function.Consumer)
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public <E> void mapToEntity(IMapper<D, E> childMapper,
+			Consumer<E> oppositeAdder, Consumer<E> oppositeRemover) {
+
+		syncContextWithTransaction();
+
+		boolean oldNoContainerMapping = mappingContext.isNoContainerMapping();
+		try {
+			mappingContext.makeCurrent();
+
+			// no container mapping! Otherwise childMapper.mapToEntity will
+			// map the opposite side, which will cause a wrong container entity
+			mappingContext.setNoContainerMapping(true);
+			for (D added : getAdded()) {
+				E addedE = mappingContext.get(childMapper
+						.createEntityHash(added));
+				if (addedE == null) {
+					addedE = childMapper.createEntity();
+					childMapper.mapToEntity(added, addedE, mappingContext);
+				}
+				oppositeAdder.accept(addedE);
+				super.add(added);
+				addedToSuper.put(hashDto(added), added);
+			}
+			added.clear();
+
+			// for remove we use container mapping! The container is null
+			// and removeFromChildren will not remove the elements.
+			mappingContext.setNoContainerMapping(true);
+			for (D removed : getRemoved()) {
+				E removedE = mappingContext.get(childMapper
+						.createEntityHash(removed));
+				if (removedE == null) {
+					IDTOService<D> service = (IDTOService<D>) DtoServiceAccess
+							.getService(dtoType);
+					Object id = service.getId((D) removed);
+					removedE = (E) mappingContext.findEntityByEntityManager(
+							childMapper.createEntity().getClass(), id);
+					if (removedE == null) {
+						removedE = childMapper.createEntity();
+						childMapper.mapToEntity(removed, removedE,
+								mappingContext);
+					}
+				}
+				oppositeRemover.accept(removedE);
+				super.remove(removed);
+				addedToSuper.remove(hashDto(removed));
+			}
+			removed.clear();
+
+		} finally {
+			mappingContext.setNoContainerMapping(oldNoContainerMapping);
+			mappingContext.unmakeCurrent();
+		}
+	}
+
+	/**
+	 * Checks if there is a current context from a transaction done right now.
+	 * If so then use this one as the new mapping context since it is connected
+	 * to the root service.
+	 */
+	private void syncContextWithTransaction() {
+		MappingContext currentContext = MappingContext.getCurrent();
+		if (currentContext != null) {
+			mappingContext = currentContext;
+		}
+	}
+
+	public boolean isResolved() {
+		return resolved;
+	}
+
+	private String hashDto(D dto) {
+		return HashUtil.createObjectWithIdHash(dto.getClass(), dto);
+	}
+
+	@Override
+	public Stream<D> parallelStream() {
+		resolve();
+		return super.parallelStream();
+	}
+
+	@Override
+	public Stream<D> stream() {
+		resolve();
+		return super.stream();
+	}
+
+	@Override
+	public boolean add(D arg0) {
+		String hash = hashDto(arg0);
+		removed.remove(hash);
+		added.put(hash, arg0);
+		if (resolving) {
+			return false;
+		}
+		if (!resolved) {
+			return true;
+		} else {
+			// add to super
+			addedToSuper.put(hash, arg0);
+			return super.add(arg0);
+		}
+	}
+
+	@Override
+	public void add(int arg0, D arg1) {
+		add(arg1);
+	}
+
+	@Override
+	public boolean addAll(Collection<? extends D> arg0) {
+		boolean result = true;
+		for (D dto : arg0) {
+			result &= add(dto);
+		}
+		return result;
+	}
+
+	@Override
+	public boolean addAll(int arg0, Collection<? extends D> arg1) {
+		boolean result = true;
+		for (D dto : arg1) {
+			result &= add(dto);
+		}
+		return result;
+	}
+
+	@Override
+	public void clear() {
+		super.clear();
+		added.clear();
+		removed.clear();
+	}
+
+	@Override
+	public Object clone() {
+		resolve();
+		return super.clone();
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public boolean contains(Object arg0) {
+		String hash = hashDto((D) arg0);
+		if (getAdded().contains(hash)) {
+			return true;
+		}
+
+		if (getRemoved().contains(hash)) {
+			return false;
+		}
+
+		if (isResolved()) {
+			return addedToSuper.containsKey(hash);
+		} else {
+			IDTOService<D> service = (IDTOService<D>) DtoServiceAccess
+					.getService(dtoType);
+			Object id = service.getId((D) arg0);
+			D persDto = service.get(id);
+			return persDto != null;
+		}
+	}
+
+	@Override
+	public void forEach(Consumer<? super D> arg0) {
+		resolve();
+		super.forEach(arg0);
+	}
+
+	@Override
+	public D get(int arg0) {
+		resolve();
+		return super.get(arg0);
+	}
+
+	@Override
+	public int indexOf(Object arg0) {
+		resolve();
+		return super.indexOf(arg0);
+	}
+
+	@Override
+	public boolean isEmpty() {
+		return size() == 0;
+	}
+
+	@Override
+	public Iterator<D> iterator() {
+		resolve();
+		return super.iterator();
+	}
+
+	@Override
+	public int lastIndexOf(Object arg0) {
+		resolve();
+		return super.lastIndexOf(arg0);
+	}
+
+	@Override
+	public ListIterator<D> listIterator() {
+		resolve();
+		return super.listIterator();
+	}
+
+	@Override
+	public ListIterator<D> listIterator(int arg0) {
+		resolve();
+		return super.listIterator(arg0);
+	}
+
+	@Override
+	public D remove(int arg0) {
+		// now we need to resolve, since we got an index...
+		resolve();
+		D result = super.remove(arg0);
+		addedToSuper.remove(hashDto(result));
+		removed.put(hashDto(result), result);
+		return result;
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public boolean remove(Object arg0) {
+		String hash = hashDto((D) arg0);
+		removed.put(hash, (D) arg0);
+		added.remove(hash);
+		if (!resolved) {
+			return true;
+		} else {
+			D ref = addedToSuper.remove(hash);
+			return super.remove(ref);
+		}
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public boolean removeAll(Collection<?> arg0) {
+		boolean result = true;
+		for (Object x : arg0) {
+			D dto = (D) x;
+			result &= remove(dto);
+		}
+		return result;
+	}
+
+	@Override
+	public boolean removeIf(Predicate<? super D> arg0) {
+		// resolve();
+		// return super.removeIf(arg0);
+		throw new UnsupportedOperationException("Not supported for now.");
+	}
+
+	@Override
+	protected void removeRange(int arg0, int arg1) {
+		// resolve();
+		// super.removeRange(arg0, arg1);
+		throw new UnsupportedOperationException("Not supported for now.");
+	}
+
+	@Override
+	public void replaceAll(UnaryOperator<D> arg0) {
+		// resolve();
+		// super.replaceAll(arg0);
+		throw new UnsupportedOperationException("Not supported for now.");
+	}
+
+	@Override
+	public boolean retainAll(Collection<?> arg0) {
+		// resolve();
+		// return super.retainAll(arg0);
+		throw new UnsupportedOperationException("Not supported for now.");
+	}
+
+	@Override
+	public D set(int arg0, D arg1) {
+		resolve();
+		D dto = super.set(arg0, arg1);
+		removed.put(hashDto(dto), dto);
+		added.put(hashDto(arg1), arg1);
+		return dto;
+	}
+
+	@Override
+	public int size() {
+		if (resolved) {
+			return super.size();
+		} else if (mappingContext.isNoCollectionResolving()) {
+			return 0;
+		}
+		IDTOService<?> service = DtoServiceAccess.getService(dtoType);
+
+		Query query = new Query(new LCompare.Equal(parentProperty,
+				idSupplier.get()));
+		int size = service.size(query) + getAdded().size()
+				- getRemoved().size();
+
+		return size;
+	}
+
+	@Override
+	public void sort(Comparator<? super D> arg0) {
+		resolve();
+		super.sort(arg0);
+	}
+
+	@Override
+	public Spliterator<D> spliterator() {
+		resolve();
+		return super.spliterator();
+	}
+
+	@Override
+	public List<D> subList(int arg0, int arg1) {
+		resolve();
+		return super.subList(arg0, arg1);
+	}
+
+	@Override
+	public Object[] toArray() {
+		resolve();
+		return super.toArray();
+	}
+
+	@Override
+	public <T> T[] toArray(T[] arg0) {
+		resolve();
+		return super.toArray(arg0);
+	}
+
+	@Override
+	public void trimToSize() {
+		resolve();
+		super.trimToSize();
+	}
+
+	@Override
+	public boolean containsAll(Collection<?> arg0) {
+		for (Object dto : arg0) {
+			if (!contains(dto)) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public boolean equals(Object o) {
+		if (added.size() > 0 || removed.size() > 0) {
+			return false;
+		}
+
+		LOGGER.error("equals - Check what to do here!");
+		return super.equals(o);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/Copier.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/Copier.java
new file mode 100644
index 0000000..3037db8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/Copier.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class Copier.
+ *
+ * @param <A>
+ *            the generic type
+ */
+public abstract class Copier<A> {
+
+	/** The context. */
+	protected MappingContext context;
+
+	/**
+	 * Copies the given DTO including it's attributes and containment-reference
+	 * tree. So referenced DTOs that are part of the lifecycle will be also
+	 * copied.<br>
+	 * References are only copied in two cases:
+	 * <ol>
+	 * <li>The reference does not have an opposite</li>
+	 * <li>The reference has an opposite but the source and target dto is part
+	 * of the copied containment tree</li>
+	 * </ol>
+	 *
+	 * @param dto
+	 *            the DTO-context. Contains information about the current copy
+	 *            depth and the copied objects.
+	 * @param context
+	 *            the context
+	 * @return a copy of the given DTO
+	 * @throws IllegalArgumentException
+	 *             if the context is null.
+	 */
+	public A copy(A dto, MappingContext context) throws IllegalArgumentException {
+		this.context = context;
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		A newDto = createDto();
+		context.register(dto, newDto);
+
+		copyContainments(dto, newDto);
+		copyCrossReferences(dto, newDto);
+		return newDto;
+	}
+
+	/**
+	 * Creates a new instance of the DTO.
+	 *
+	 * @return the a
+	 */
+	public abstract A createDto();
+
+	/**
+	 * Creates a copy of the given DTO. The copy needs to contain all copied
+	 * attributes and a copy of the containment-reference tree.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param newDto
+	 *            the new dto
+	 */
+	public abstract void copyContainments(A dto, A newDto);
+
+	/**
+	 * Copies the pending references of the DTO. For details about
+	 * "reference-copy" see {@link #copy(Object, MappingContext)}.
+	 * 
+	 * @param dto
+	 *            - the DTO providing the references
+	 * @param newDto
+	 *            - the new DTO
+	 */
+	public abstract void copyCrossReferences(A dto, A newDto);
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/CopyHelper.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/CopyHelper.java
new file mode 100644
index 0000000..03136cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/CopyHelper.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.util.Date;
+
+public class CopyHelper {
+
+	public static Date copy(Date date) {
+		if (date == null) {
+			return date;
+		}
+		return new Date(date.getTime());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/CrossReference.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/CrossReference.java
new file mode 100644
index 0000000..c5bca06
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/CrossReference.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+@SuppressWarnings("serial")
+public class CrossReference implements ICrossReferenceInfo {
+
+	private String target;
+	private Object id;
+	private String number;
+	private String description;
+
+	@Override
+	public String getTarget() {
+		return target;
+	}
+
+	@Override
+	public Object getId() {
+		return id;
+	}
+
+	@Override
+	public String getNumber() {
+		return number;
+	}
+
+	@Override
+	public String getDescription() {
+		return description;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICopyable.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICopyable.java
new file mode 100644
index 0000000..93b8686
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICopyable.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+/**
+ * Objects implementing this interface can be copied using a copy context.
+ */
+public interface ICopyable<A> {
+
+	/**
+	 * Creates a copy of the current object. If a copy of current object is
+	 * already registered in the context, this element needs to be returned.
+	 * Otherwise the object needs to be copied and registered in the context.
+	 * 
+	 * @param context
+	 * @return
+	 */
+	A copy(MappingContext context);
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICrossReference.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICrossReference.java
new file mode 100644
index 0000000..ffb4233
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICrossReference.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.io.Serializable;
+
+public interface ICrossReference extends Serializable {
+
+	String getTarget();
+
+	Object getId();
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICrossReferenceInfo.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICrossReferenceInfo.java
new file mode 100644
index 0000000..70a7109
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/ICrossReferenceInfo.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+public interface ICrossReferenceInfo extends ICrossReference {
+
+	String getNumber();
+	
+	String getDescription();
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IEntityMappingList.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IEntityMappingList.java
new file mode 100644
index 0000000..21c4fc8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IEntityMappingList.java
@@ -0,0 +1,24 @@
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.util.List;
+import java.util.function.Consumer;
+
+public interface IEntityMappingList<D> extends List<D> {
+
+	/**
+	 * Maps the content of this list to entities list using the adder and
+	 * remover consumer instance.
+	 * 
+	 * @param childMapper
+	 * @param oppositeAdder
+	 * @param oppositeRemover
+	 */
+	public abstract <E> void mapToEntity(IMapper<D, E> childMapper,
+			Consumer<E> oppositeAdder, Consumer<E> oppositeRemover);
+
+	public List<D> getAdded();
+
+	public List<D> getRemoved();
+
+	public List<D> getUpdated();
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IMapper.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IMapper.java
new file mode 100644
index 0000000..d1eaa65
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IMapper.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+public interface IMapper<D, E> {
+
+	/**
+	 * Maps the given entity to the given dto.
+	 * 
+	 * @param dto
+	 * @param entity
+	 * @param context
+	 */
+	void mapToDTO(D dto, E entity, MappingContext context);
+
+	/**
+	 * Maps the given dto to the given entity.
+	 * 
+	 * @param dto
+	 * @param entity
+	 * @param context
+	 */
+	void mapToEntity(D dto, E entity, MappingContext context);
+
+	/**
+	 * Creates a new dto that is mapped by the current mapper.
+	 * 
+	 * @return
+	 */
+	<X> X createDto();
+
+	/**
+	 * Creates a new entity that is mapped by the current mapper.
+	 * 
+	 * @return
+	 */
+	<X> X createEntity();
+
+	/**
+	 * Calculates a unique hash code for the DTO based on the entity. <br>
+	 * For entity based dtos the FQN of the dto and the id of entity is used.
+	 * <p>
+	 * org.eclipse.osbp.dtos.ItemDTO(id=17):
+	 * <code>hash=org.eclipse.osbp.dtos.ItemDto({entity.hashCode()})</code>
+	 * 
+	 * @param entity
+	 * @return
+	 */
+	String createDtoHash(Object entity);
+	
+	/**
+	 * Calculates a unique hash code for the entity based on the dto. <br>
+	 * For entity based dtos the FQN of the entity and the id of dto is used.
+	 * <p>
+	 * org.eclipse.osbp.entities.Item(id=17):
+	 * <code>hash=org.eclipse.osbp.entities.Item({dto.hashCode()})</code>
+	 * 
+	 * @param dto
+	 * @return
+	 */
+	String createEntityHash(Object dto);
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IMapperAccess.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IMapperAccess.java
new file mode 100644
index 0000000..92ab543
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/IMapperAccess.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+public interface IMapperAccess {
+
+	/**
+	 * Returns the best mapper available to map from the given entity to the
+	 * given DTO.
+	 * 
+	 * @param dto
+	 * @param entity
+	 * @return
+	 */
+	<D, E> IMapper<D, E> getToDtoMapper(Class<D> dto, Class<E> entity);
+
+	/**
+	 * Returns the best mapper available to map from the given DTO to the given
+	 * entity.
+	 * 
+	 * @param dto
+	 * @param entity
+	 * @return
+	 */
+	<D, E> IMapper<D, E> getToEntityMapper(Class<D> dto, Class<E> entity);
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/MappingContext.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/MappingContext.java
new file mode 100644
index 0000000..e4134a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/MappingContext.java
@@ -0,0 +1,377 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.persistence.EntityManager;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.runtime.common.annotations.DirtyStateAdapter;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A common context for mappings. The registered entries will be reused. If an
+ * object for a given key is available, this instance will be returned.
+ * <p>
+ * At the end of the mapping process, the dirty adapter will be activated. The
+ * user needs to call {@link #flush()}. Calls to {@link #flush()} during the
+ * mapping process has no effect, if the current level is greater zero.
+ * <p>
+ * The option {@link #isRefresh} indicates, that existing objects should be
+ * remapped and their value beeing refreshed.
+ * <p>
+ * The option {@link #isUseDirtyAdapter()} indicates, that a
+ * {@link DirtyStateAdapter} is added to any registered dtos.
+ */
+public class MappingContext implements Serializable {
+
+	private static final long serialVersionUID = 8983308985143365450L;
+	@SuppressWarnings("unused")
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(MappingContext.class);
+
+	private static final ThreadLocal<MappingContext> current = new ThreadLocal<>();
+
+	/**
+	 * Returns the current instance of the mapping context, if running in the
+	 * proper thread. It is used to initialize several parts of the Entity -&gt;
+	 * Dto mapping process.
+	 *
+	 * @return the current
+	 */
+	public static MappingContext getCurrent() {
+		return current.get();
+	}
+
+	public static boolean isMappingMode() {
+		return getCurrent() != null;
+	}
+
+	private int level = 0;
+
+	private boolean isRefresh;
+	private Map<Object, Object> cache;
+	private Map<Object, Object> mappingRootCache;
+	private Map<Object, Object> refreshingCache;
+
+	private Map<Object, Integer> typesByLevel = new HashMap<>();
+
+	private boolean useDirtyAdapter = true;
+	private DirtyStateAdapter dirtyAdapter;
+
+	private boolean noCollectionResolving;
+
+	private boolean noContainerMapping;
+
+	/**
+	 * Counts the calls to makeCurrent. And subs the calls to unmakeCurrent.
+	 */
+	private int currentCounter;
+	
+	// em is only available if mapping is done from DTO --> Entity
+	private transient EntityManager em;
+
+	public MappingContext() {
+		cache = new HashMap<Object, Object>();
+		makeCurrent();
+	}
+
+	/**
+	 * Associates this MappingContext with the current thread. You also need to
+	 * call #unmakeCurrent() in a finally block;
+	 */
+	public void makeCurrent() {
+		currentCounter++;
+		MappingContext.current.set(this);
+	}
+
+	/**
+	 * @See {@link #makeCurrent()}
+	 */
+	public void unmakeCurrent() {
+		currentCounter--;
+		if (currentCounter == 0) {
+			MappingContext.current.set(null);
+		} else if (currentCounter < 0) {
+			throw new IllegalStateException(
+					"CurrentCounter must never be negative");
+		}
+	}
+
+	/**
+	 * @return the isRefresh
+	 */
+	public boolean isRefresh() {
+		return isRefresh;
+	}
+
+	/**
+	 * @param isRefresh
+	 *            the isRefresh to set
+	 */
+	public void setRefresh(boolean isRefresh) {
+		this.isRefresh = isRefresh;
+		if (isRefresh) {
+			refreshingCache = new HashMap<Object, Object>();
+		}
+	}
+
+	/**
+	 * True if the dirty adapter should be used.
+	 * 
+	 * @return
+	 */
+	public boolean isUseDirtyAdapter() {
+		return useDirtyAdapter;
+	}
+
+	/**
+	 * True if the dirty adapter should be used.
+	 * 
+	 * @param useDirtyAdapter
+	 */
+	public void setUseDirtyAdapter(boolean useDirtyAdapter) {
+		this.useDirtyAdapter = useDirtyAdapter;
+	}
+
+	/**
+	 * Increases the level of the mapping process.
+	 */
+	public void increaseLevel() {
+		level++;
+	}
+
+	/**
+	 * Decreases the level of the mapping process.
+	 */
+	public void decreaseLevel() {
+		level--;
+	}
+
+	/**
+	 * For later use.
+	 * 
+	 * @return
+	 */
+	public boolean isMaxLevel() {
+		return false;
+	}
+
+	/**
+	 * Returns true, if a recursion was detected and mapping should be stopped
+	 * now.
+	 * 
+	 * @param in
+	 * @return
+	 */
+	public boolean isDetectRecursion(Object in) {
+		if (level > 2) {
+			return true;
+		}
+		if (in instanceof Class) {
+			if (typesByLevel.containsKey(in) /*
+											 * && typesByLevel.get(in) < level
+											 */) {
+				return true;
+			}
+		} else {
+			if (typesByLevel.containsKey(in.getClass()) /*
+														 * &&
+														 * typesByLevel.get(in
+														 * .getClass()) < level
+														 */) {
+				return true;
+			}
+		}
+
+		return false;
+	}
+
+	/**
+	 * Registers the object in the temporary internal cache. If {@link #flush()}
+	 * is called, the internal cache will be cleared and objects are forwarded
+	 * to the {@link ISharedStateContext}.
+	 * 
+	 * @param key
+	 * @param target
+	 */
+	public void register(Object key, Object target) {
+		if(cache.containsKey(key)) {
+			if(cache.get(key) != target) {
+				throw new IllegalStateException();
+			}
+		}
+		cache.put(key, target);
+
+		// register the type of the target with the highest level
+		typesByLevel.put(target.getClass(), level);
+
+		if (isUseDirtyAdapter()) {
+			if (target instanceof IDto) {
+				DtoUtils.registerAdapter(getDirtyStateAdapter(), target);
+			}
+		}
+	}
+
+	/**
+	 * Creates or returns a new dirty state adapter.
+	 * 
+	 * @return
+	 */
+	protected PropertyChangeListener getDirtyStateAdapter() {
+		if (dirtyAdapter == null) {
+			dirtyAdapter = new DirtyStateAdapter();
+		}
+		return dirtyAdapter;
+	}
+
+	/**
+	 * Registers the object in the a internal cache. If {@link #flush()} is
+	 * called, the internal cache will be cleared.
+	 * <p>
+	 * Throws {@link IllegalArgumentException} if this method is called, but
+	 * {@link #isRefresh() refresh mode} not active.
+	 * 
+	 * @param key
+	 * @param target
+	 */
+	public void registerRefreshed(Object key, Object target)
+			throws IllegalArgumentException {
+		if (!isRefresh()) {
+			throw new IllegalArgumentException("Only allowed in refresh mode!");
+		}
+		refreshingCache.put(key, target);
+	}
+
+	/**
+	 * Registers the object that was used as a template to map the cached
+	 * object.
+	 * 
+	 * @param key
+	 * @param target
+	 */
+	public void registerMappingRoot(Object key, Object target) {
+		if (mappingRootCache == null) {
+			mappingRootCache = new HashMap<Object, Object>();
+		}
+		if(mappingRootCache.containsKey(key)) {
+			if(mappingRootCache.get(key) != target) {
+				throw new IllegalStateException();
+			}
+		}
+		mappingRootCache.put(key, target);
+	}
+
+	@SuppressWarnings("unchecked")
+	public <A> A get(Object key) {
+		A result = (A) cache.get(key);
+
+		if (isRefresh() && result != null) {
+			refreshingCache.put(key, result);
+		}
+
+		return result;
+	}
+
+	@SuppressWarnings("unchecked")
+	public <A> A getMappingRoot(Object key) {
+		return (A) mappingRootCache.get(key);
+	}
+	
+	/**
+	 * Tries to find the entity by the entity manager.
+	 * @param clazz
+	 * @param id
+	 */
+	public Object findEntityByEntityManager(Class<?> clazz, Object id) {
+		return em.find(clazz, id);
+	}
+	
+	public void setEntityManager(EntityManager em) {
+		this.em = em;
+	}
+
+	/**
+	 * The cache will only become flushed, if the level is zero. The
+	 * dirtyAdapter will become activated.
+	 */
+	public void flush() {
+		if (level > 0) {
+			return;
+		}
+
+		if (dirtyAdapter != null) {
+			dirtyAdapter.setActive(true);
+		}
+	}
+
+	/**
+	 * This flag is used by LazyResolvingLists to ensure, that no resolving is
+	 * done right now. For instance if DTOs are mapped back to Entities, a
+	 * LazyLoadingDtoList does not need to become resolved.
+	 * 
+	 * @return
+	 */
+	public boolean isNoCollectionResolving() {
+		return noCollectionResolving;
+	}
+
+	/**
+	 * @see MappingContext#isNoCollectionResolving()
+	 * @param value
+	 */
+	public void setNoCollectionResolving(boolean value) {
+		noCollectionResolving = value;
+	}
+
+	/**
+	 * If true, then the opposite reference (parent or container) will not be
+	 * applied during the mapping process. Otherwise, list entries are being
+	 * added twice.
+	 * 
+	 * @return
+	 */
+	public boolean isNoContainerMapping() {
+		return noContainerMapping;
+	}
+
+	/**
+	 * If true, then the opposite reference (parent or container) will not be
+	 * applied during the mapping process. Otherwise, list entries are being
+	 * added twice.
+	 * 
+	 * @param noContainerMapping
+	 */
+	public void setNoContainerMapping(boolean noContainerMapping) {
+		this.noContainerMapping = noContainerMapping;
+	}
+
+	public void printCache() {
+		for(Entry<Object, Object> entry : cache.entrySet()) {
+			System.out.println(entry.getKey() + " : " + entry.getValue() + " # " + entry.getValue().hashCode());
+		}
+	}
+	
+	public void printCacheCsv() {
+		for(Entry<Object, Object> entry : cache.entrySet()) {
+			System.out.println(entry.getKey() + "; " + entry.getValue() + "; " + entry.getValue().hashCode());
+		}
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/OppositeContainmentDtoList.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/OppositeContainmentDtoList.java
new file mode 100644
index 0000000..63659a3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/OppositeContainmentDtoList.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.util.function.Supplier;
+
+@SuppressWarnings("serial")
+public class OppositeContainmentDtoList<D> extends AbstractOppositeDtoList<D> {
+
+	public OppositeContainmentDtoList(MappingContext mappingContext,
+			Class<?> dtoType, String parentProperty, Supplier<Object> idSupplier) {
+		super(mappingContext, dtoType, parentProperty, idSupplier);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/OppositeDtoList.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/OppositeDtoList.java
new file mode 100644
index 0000000..0b05a55
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/OppositeDtoList.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.lib;
+
+import java.util.function.Supplier;
+
+@SuppressWarnings("serial")
+public class OppositeDtoList<D> extends AbstractOppositeDtoList<D> {
+
+	public OppositeDtoList(MappingContext mappingContext, Class<?> dtoType,
+			String parentProperty, Supplier<Object> idSupplier) {
+		super(mappingContext, dtoType, parentProperty, idSupplier);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/impl/DtoServiceAccess.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/impl/DtoServiceAccess.java
new file mode 100644
index 0000000..56c7b19
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/impl/DtoServiceAccess.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.impl;
+
+import java.util.Collection;
+
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Is responsible to return mappers for the given types.
+ */
+public class DtoServiceAccess {
+
+	/** The Constant LOGGER. */
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(DtoServiceAccess.class);
+
+	/**
+	 * Returns a proper mapper for the dto.
+	 *
+	 * @param <D>
+	 *            the generic type
+	 * @param dto
+	 *            the dto
+	 * @return the service
+	 */
+	public static <D> IDTOService<D> getService(Class<D> dto) {
+		return getService(dto.getCanonicalName());
+	}
+
+	/**
+	 * Returns a proper mapper for the dto.
+	 *
+	 * @param <D>
+	 *            the generic type
+	 * @param dtoName
+	 *            the dto name
+	 * @return the service
+	 */
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	public static <D> IDTOService<D> getService(String dtoName) {
+		Bundle bundle = FrameworkUtil.getBundle(DtoServiceAccess.class);
+
+		String filterString = String.format("(&(objectClass=%s)(dto=%s))",
+				IDTOService.class.getCanonicalName(), dtoName);
+		try {
+			BundleContext context = bundle.getBundleContext();
+			Collection<ServiceReference<IDTOService>> references = context
+					.getServiceReferences(IDTOService.class, filterString);
+			if (!references.isEmpty()) {
+				ServiceReference<IDTOService> reference = references.iterator()
+						.next();
+				IDTOService<D> service = context.getService(reference);
+				return service;
+			}
+		} catch (InvalidSyntaxException e) {
+			LOGGER.error("{}", e);
+		}
+
+		LOGGER.error("No dtoService available for dto: {}", dtoName);
+
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/impl/MapperAccess.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/impl/MapperAccess.java
new file mode 100644
index 0000000..6f41f25
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/impl/MapperAccess.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.impl;
+
+import java.util.Collection;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.runtime.common.metric.TimeLogger;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.annotations.Component;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Is responsible to return mappers for the given types.
+ */
+@Component(immediate = true)
+public class MapperAccess implements IMapperAccess {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(MapperAccess.class);
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@Override
+	public <D, E> IMapper<D, E> getToDtoMapper(Class<D> dto, Class<E> entity) {
+		TimeLogger logger = TimeLogger.start(MapperAccess.class);
+
+		Bundle bundle = FrameworkUtil.getBundle(getClass());
+
+		String filterString = String
+				.format("(&(&(objectClass=%s)(fordto.to.dto=%s))(fordto.from.entity=%s))",
+						IMapper.class.getCanonicalName(),
+						dto.getCanonicalName(), entity.getCanonicalName());
+		try {
+			BundleContext context = bundle.getBundleContext();
+			Collection<ServiceReference<IMapper>> references = context
+					.getServiceReferences(IMapper.class, filterString);
+			if (!references.isEmpty()) {
+				ServiceReference<IMapper> reference = references.iterator()
+						.next();
+				IMapper<D, E> mapper = context.getService(reference);
+				return mapper;
+			}
+
+		} catch (InvalidSyntaxException e) {
+			LOGGER.error("{}", e);
+		} finally {
+			logger.stop("Accessing mapper took: ");
+		}
+
+		LOGGER.error("No To-Dto-Mapper available for dto: {} and entity: {}",
+				dto, entity);
+
+		return null;
+	}
+
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	@Override
+	public <D, E> IMapper<D, E> getToEntityMapper(Class<D> dto, Class<E> entity) {
+		TimeLogger logger = TimeLogger.start(MapperAccess.class);
+		
+		Bundle bundle = FrameworkUtil.getBundle(getClass());
+
+		String filterString = String
+				.format("(&(&(objectClass=%s)(forentity.to.entity=%s))(forentity.from.dto=%s))",
+						IMapper.class.getCanonicalName(),
+						entity.getCanonicalName(), dto.getCanonicalName());
+		try {
+			BundleContext context = bundle.getBundleContext();
+			Collection<ServiceReference<IMapper>> references = context
+					.getServiceReferences(IMapper.class, filterString);
+			if (!references.isEmpty()) {
+				ServiceReference<IMapper> reference = references.iterator()
+						.next();
+				IMapper<D, E> mapper = context.getService(reference);
+				return mapper;
+			}
+
+		} catch (InvalidSyntaxException e) {
+			LOGGER.error("{}", e);
+		} finally {
+			logger.stop("Accessing mapper took: ");
+		}
+
+		LOGGER.error(
+				"No To-Entity-Mapper available for dto: {} and entity: {}",
+				dto, entity);
+
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/DtoServiceException.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/DtoServiceException.java
new file mode 100644
index 0000000..c364256
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/DtoServiceException.java
@@ -0,0 +1,33 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+/**
+ * Contains converted SQLExceptions.
+ */
+@SuppressWarnings("serial")
+public class DtoServiceException extends RuntimeException {
+
+	private final String sqlState;
+
+	public DtoServiceException(String sqlState, String message, Throwable cause) {
+		super(message, cause);
+		this.sqlState = sqlState;
+	}
+
+	/**
+	 * @return the sqlState
+	 */
+	protected String getSqlState() {
+		return sqlState;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IDTOService.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IDTOService.java
new file mode 100644
index 0000000..2c2573e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IDTOService.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.ValidationKind;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IDTOService.
+ *
+ * @param <A>
+ *            the generic type
+ */
+public interface IDTOService<A> extends IService {
+
+	/** The Constant PROP_MAX_COLLECTION_CONTENT. */
+	public static final int PROP_MAX_COLLECTION_CONTENT = 2000;
+
+	/**
+	 * Returns the dto for the given id.
+	 *
+	 * @param id
+	 *            the id
+	 * @return the a
+	 */
+	A get(Object id);
+
+	/**
+	 * Reloads the given dto and returns the refreshed values by a new instance.<br>
+	 * If the data basis for the dto is not available anymore. For instance the
+	 * entity was deleted, then <code>null</code> will be returned.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return A
+	 */
+	A reload(A dto);
+
+	/**
+	 * Returns a collection of dtos matching the filter in the query. <br>
+	 * The maximum amount of contained elements is limited by
+	 * {@link #PROP_MAX_COLLECTION_CONTENT}.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the collection
+	 */
+	Collection<A> find(IQuery query);
+
+	/**
+	 * Returns a collection of dtos matching the filter defined in the query and
+	 * starting from the given startIndex. <br>
+	 * May be used for lazy loading issues. Ensure that a sort order is used in
+	 * that case.
+	 * 
+	 * The maximum amount of contained elements is limited by
+	 * {@link #PROP_MAX_COLLECTION_CONTENT}.
+	 *
+	 * @param query
+	 *            the query
+	 * @param startIndex
+	 *            the start index
+	 * @return the collection
+	 */
+	Collection<A> find(IQuery query, int startIndex);
+
+	/**
+	 * Updates the given DTO.
+	 *
+	 * @param dto
+	 *            the dto
+	 */
+	void update(A dto);
+
+	/**
+	 * Deletes the given DTO.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @throws DtoServiceException
+	 *             if the record can not be deleted
+	 */
+	void delete(A dto) throws DtoServiceException;
+
+	/**
+	 * Returns the count of all dto matching the filter.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the int
+	 */
+	int size(IQuery query);
+
+	/**
+	 * Returns true, if the the dto exists for the given filter.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return true, if successful
+	 */
+	boolean contains(Object dto, IQuery query);
+
+	/**
+	 * Returns the next dto for the given one using the filter and the
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return the next
+	 */
+	A getNext(A dto, IQuery query);
+
+	/**
+	 * Returns the previous dto for the given one using the filter and the
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return the previous
+	 */
+	A getPrevious(A dto, IQuery query);
+
+	/**
+	 * Returns the first dto for the given filter and the sortOrder.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the first
+	 */
+	A getFirst(IQuery query);
+
+	/**
+	 * Returns the last dto for the given filter and the sortOrder.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the last
+	 */
+	A getLast(IQuery query);
+
+	/**
+	 * Returns true, if the given dto is the first one for the filter and
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return true, if is first
+	 */
+	boolean isFirst(A dto, IQuery query);
+
+	/**
+	 * Returns true, if the given dto is the last one for the filter and
+	 * sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return true, if is last
+	 */
+	boolean isLast(A dto, IQuery query);
+
+	/**
+	 * Returns the index of the given dto for the filter and sortOrder.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @param query
+	 *            the query
+	 * @return the int
+	 */
+	int indexOf(A dto, IQuery query);
+
+	/**
+	 * Returns the dto for the given index, filter and sortOrder.
+	 *
+	 * @param index
+	 *            the index
+	 * @param query
+	 *            the query
+	 * @return the by index
+	 */
+	A getByIndex(int index, IQuery query);
+
+	/**
+	 * Returns a list of dtos with size &lt;= numberOfItems, starting from the
+	 * startIndex in respect to the filter and sortOrder.
+	 *
+	 * @param startIndex
+	 *            the start index
+	 * @param numberOfItems
+	 *            the number of items
+	 * @param query
+	 *            the query
+	 * @return the by index
+	 */
+	List<A> getByIndex(int startIndex, int numberOfItems, IQuery query);
+
+	/**
+	 * Validates the given DTO.
+	 *
+	 * @param object
+	 *            the object
+	 * @param kind
+	 *            the kind of validation
+	 * @param properties
+	 *            any kind of properties required in validation
+	 * @return the sets the
+	 * @throws IllegalStateException
+	 *             if no Validator is available
+	 */
+	Set<IStatus> validate(A object, ValidationKind kind,
+			Map<String, Object> properties) throws IllegalStateException;
+
+	/**
+	 * Gets the id.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return the id
+	 */
+	Object getId(A dto);
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IDTOServiceWithMutablePersistence.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IDTOServiceWithMutablePersistence.java
new file mode 100644
index 0000000..03c0673
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IDTOServiceWithMutablePersistence.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+import javax.persistence.EntityManagerFactory;
+
+/**
+ * This DTO service allows to specify a deviating persistence ID.
+ *
+ * @param <A>
+ */
+public interface IDTOServiceWithMutablePersistence<A> extends IDTOService<A> {
+
+	/**
+	 * Returns the persistence Id which is used to find the proper
+	 * {@link EntityManagerFactory},
+	 * 
+	 * @return
+	 */
+	String getPersistenceId();
+
+	/**
+	 * Sets the persistence Id which is used to find the proper
+	 * {@link EntityManagerFactory},
+	 * 
+	 * @param persistenceId
+	 */
+	void setPersistenceId(String persistenceId);
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IQuery.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IQuery.java
new file mode 100644
index 0000000..1ee9966
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IQuery.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+import java.io.Serializable;
+import java.util.Map;
+
+import org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter;
+
+/**
+ * 
+ * @noimplement by clients. Will be changed in future!
+ */
+public interface IQuery extends Serializable {
+
+	/**
+	 * Returns the root filter that should be used for the query.
+	 * 
+	 * @return
+	 */
+	ILFilter getFilter();
+
+	/**
+	 * Replaces the root filter that should be used for the query.
+	 * 
+	 */
+	void replaceFilter(ILFilter filter);
+	
+	/**
+	 * Returns the sortable columns.
+	 * 
+	 * @return
+	 */
+	SortOrder getSortOrder();
+
+	/**
+	 * Returns the map with additional information.
+	 * 
+	 * @return
+	 */
+	Map<String, Object> getMap();
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IService.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IService.java
new file mode 100644
index 0000000..321b557
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/IService.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+public interface IService {
+
+} 
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/Query.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/Query.java
new file mode 100644
index 0000000..aed1636
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/Query.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter;
+
+public class Query implements IQuery {
+
+	private ILFilter filter;
+	private final SortOrder sortOrder;
+	private final Map<String, Object> map;
+	public final static String ENTITY_CLASSES_KEY = "entityClassesKey";
+
+	public Query() {
+		this(null);
+	}
+
+	public Query(ILFilter filter) {
+		this(filter, null);
+	}
+
+	public Query(ILFilter filter, SortOrder sortOrder) {
+		this(filter, sortOrder, new HashMap<String, Object>());
+	}
+	
+	public Query(ILFilter filter, SortOrder sortOrder, Map<String, Object> map) {
+		super();
+		this.filter = filter;
+		this.sortOrder = sortOrder != null ? sortOrder : new SortOrder();
+		this.map = map;
+	}
+	
+	@Override
+	public ILFilter getFilter() {
+		return filter;
+	}
+
+	@Override
+	public SortOrder getSortOrder() {
+		return sortOrder;
+	}
+
+	@Override
+	public void replaceFilter(ILFilter filter) {
+		this.filter = filter;
+	}
+
+	@Override
+	public Map<String, Object> getMap() {
+		return map;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/SortBy.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/SortBy.java
new file mode 100644
index 0000000..1b93113
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/SortBy.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+import java.io.Serializable;
+
+public class SortBy  implements Serializable {
+
+    private static final long serialVersionUID = -6308560006578484770L;
+
+    /**
+     * The property ID to sort by.
+     */
+    private final Object propertyId;
+
+    /**
+     * True to sort ascendingly, false to sort descendingly.
+     */
+    private final boolean ascending;
+
+    /**
+     * Gets the property ID to sort by.
+     */
+    public Object getPropertyId() {
+        return propertyId;
+    }
+
+    /**
+     * Returns true to sort ascendingly, false to sort descendingly.
+     */
+    public boolean isAscending() {
+        return ascending;
+    }
+
+    /**
+     * Creates a new <code>SortBy</code> instance.
+     * 
+     * @param propertyId
+     *            the property ID to sort by (must not be null).
+     * @param ascending
+     *            true to sort ascendingly, false to sort descendingly.
+     */
+    public SortBy(Object propertyId, boolean ascending) {
+        assert propertyId != null : "propertyId must not be null";
+        this.propertyId = propertyId;
+        this.ascending = ascending;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj.getClass() == getClass()) {
+            SortBy o = (SortBy) obj;
+            return o.propertyId.equals(propertyId) && o.ascending == ascending;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = propertyId.hashCode();
+        hash = hash * 7 + new Boolean(ascending).hashCode();
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/SortOrder.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/SortOrder.java
new file mode 100644
index 0000000..afd361a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/SortOrder.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SortOrder implements Serializable {
+
+	private final List<SortBy> sortBy = new ArrayList<SortBy>();
+
+	public SortOrder() {
+	}
+
+	/**
+	 * @return the sortOrder
+	 */
+	public List<SortBy> getSortBy() {
+		return sortBy;
+	}
+	
+	/**
+	 * @param e
+	 * @return
+	 * @see java.util.List#add(java.lang.Object)
+	 */
+	public boolean add(SortBy e) {
+		return sortBy.add(e);
+	}
+
+	public void clear() {
+		sortBy.clear();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/IFilterEnhancer.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/IFilterEnhancer.java
new file mode 100644
index 0000000..1175169
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/IFilterEnhancer.java
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+ 
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+import org.eclipse.osbp.dsl.dto.lib.services.IQuery;
+
+public interface IFilterEnhancer {
+	
+	public void enhanceQuery(IQuery query);
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/ILFilter.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/ILFilter.java
new file mode 100644
index 0000000..122905f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/ILFilter.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+import java.io.Serializable;
+
+public interface ILFilter extends Serializable {
+
+    /**
+     * Check if a change in the value of a property can affect the filtering
+     * result. May always return true, at the cost of performance.
+     * 
+     * If the filter cannot determine whether it may depend on the property
+     * or not, should return true.
+     * 
+     * @param propertyId
+     * @return true if the filtering result may/does change based on changes
+     *         to the property identified by propertyId
+     */
+    public boolean appliesToProperty(Object propertyId);
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAbstractJunctionFilter.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAbstractJunctionFilter.java
new file mode 100644
index 0000000..c67a4e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAbstractJunctionFilter.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+
+
+public class LAbstractJunctionFilter implements ILFilter {
+
+    protected final Collection<ILFilter> filters;
+
+    public LAbstractJunctionFilter(ILFilter... filters) {
+        this.filters = Collections.unmodifiableCollection(Arrays
+                .asList(filters));
+    }
+
+    /**
+     * Returns an unmodifiable collection of the sub-filters of this composite
+     * filter.
+     * 
+     * @return
+     */
+    public Collection<ILFilter> getFilters() {
+        return filters;
+    }
+
+    /**
+     * Returns true if a change in the named property may affect the filtering
+     * result. If some of the sub-filters are not in-memory filters, true is
+     * returned.
+     * 
+     * By default, all sub-filters are iterated to check if any of them applies.
+     * If there are no sub-filters, false is returned - override in subclasses
+     * to change this behavior.
+     */
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        for (ILFilter filter : getFilters()) {
+            if (filter.appliesToProperty(propertyId)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null || !getClass().equals(obj.getClass())) {
+            return false;
+        }
+        LAbstractJunctionFilter other = (LAbstractJunctionFilter) obj;
+        // contents comparison with equals()
+        return Arrays.equals(filters.toArray(), other.filters.toArray());
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = getFilters().size();
+        for (ILFilter filter : filters) {
+            hash = (hash << 1) ^ filter.hashCode();
+        }
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAdvancedFilterable.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAdvancedFilterable.java
new file mode 100644
index 0000000..8c087f5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAdvancedFilterable.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * Container that supports a bit more advanced filtering than <code>Filterable</code>
+ * . It has been designed to be used explicitly with JPA.
+ * 
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public interface LAdvancedFilterable {
+
+	/**
+	 * Gets the IDs of all the properties that are filterable.
+	 * 
+	 * @return an unmodifiable collection of property IDs (never null).
+	 */
+	public Collection<Object> getFilterablePropertyIds();
+
+	/**
+	 * Checks if <code>propertyId</code> is filterable.
+	 * 
+	 * @param propertyId
+	 *            the property ID to check (must not be null).
+	 * @return true if the property is filterable, false otherwise.
+	 */
+	public boolean isFilterable(Object propertyId);
+
+	/**
+	 * Gets the list of filters to apply. The filters will be applied as a
+	 * conjunction (i.e. AND) in the order they appear in.
+	 * 
+	 * @return an unmodifiable list of filters (never null).
+	 */
+	public List<ILFilter> getFilters();
+
+	/**
+	 * Gets the list of filters that are currently applied. If
+	 * {@link #isApplyFiltersImmediately() } returns true, this list will be the
+	 * same as the one returned by {@link #getFilters() }.
+	 * 
+	 * @return an unmodifiable list of filters (never null).
+	 */
+	public List<ILFilter> getAppliedFilters();
+
+	/**
+	 * Sets whether the filters should be applied immediately when a filter is
+	 * added or removed.
+	 * 
+	 * @see #isApplyFiltersImmediately()
+	 * @param applyFiltersImmediately
+	 *            true to apply filters immediately, false to apply when
+	 *            {@link #applyFilters() } is called.
+	 */
+	public void setApplyFiltersImmediately(boolean applyFiltersImmediately);
+
+	/**
+	 * Returns whether the filters should be applied immediately when a filter
+	 * is added or removed. Default is true. If false, {@link #applyFilters() }
+	 * has to be called to apply the filters and update the container.
+	 * 
+	 * @see #setApplyFiltersImmediately(boolean)
+	 * @return true if the filters are applied immediately, false otherwise.
+	 */
+	public boolean isApplyFiltersImmediately();
+
+	/**
+	 * Applies the filters to the data, possibly causing the items in the
+	 * container to change.
+	 * 
+	 * see FiltersAppliedEvent
+	 */
+	public void applyFilters();
+
+	/**
+	 * Checks if there are filters that have not yet been applied, or applied
+	 * filters that have been removed using <code>removeAllFilters</code> or
+	 * <code>removeFilter(org.eclipse.osbp.ILFilter.web.vaadin.components.fields.container.IFilter) </code>
+	 * .
+	 * <p>
+	 * If {@link #isApplyFiltersImmediately() } is true, this method always
+	 * returns false.
+	 * 
+	 * @see #applyFilters()
+	 * @return true if there are unapplied filters, false otherwise.
+	 */
+	public boolean hasUnappliedFilters();
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAdvancedFilterableSupport.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAdvancedFilterableSupport.java
new file mode 100644
index 0000000..c176ade
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAdvancedFilterableSupport.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.persistence.criteria.From;
+import javax.persistence.criteria.Path;
+
+/**
+ * Helper class that implements the filtering methods defined in
+ * {@link LAdvancedFilterable} and can be either extended or used as a delegate.
+ * 
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public class LAdvancedFilterableSupport implements LAdvancedFilterable,
+        Serializable {
+
+    private static final long serialVersionUID = 398382431841547719L;
+
+    /**
+     * ApplyFiltersListener interface to be implemented by classes that want to
+     * be notified when the filters are applied.
+     * 
+     * @author Petter Holmström (Vaadin Ltd)
+     * @since 1.0
+     */
+    public static interface ApplyFiltersListener extends Serializable {
+
+        /**
+         * Called when the filters have been applied.
+         * 
+         * @param sender
+         *            the sender of the event.
+         */
+        public void filtersApplied(LAdvancedFilterableSupport sender);
+    }
+
+    /**
+     * Adds <code>listener</code> to the list of listeners to be notified when
+     * the filters are applied. The listener will be notified as many times as
+     * it has been added.
+     * 
+     * @param listener
+     *            the listener to add (must not be null).
+     */
+    public void addListener(ApplyFiltersListener listener) {
+        assert listener != null : "listener must not be null";
+        listeners.add(listener);
+    }
+
+    /**
+     * Removes <code>listener</code> from the list of listeners. If the listener
+     * has been added more than once, it will be notified one less time. If the
+     * listener has not been added at all, nothing happens.
+     * 
+     * @param listener
+     *            the listener to remove (must not be null).
+     */
+    public void removeListener(ApplyFiltersListener listener) {
+        assert listener != null : "listener must not be null";
+        listeners.remove(listener);
+    }
+
+    @SuppressWarnings("unchecked")
+    protected void fireListeners() {
+        LinkedList<ApplyFiltersListener> listenerList = (LinkedList<ApplyFiltersListener>) listeners
+                .clone();
+        for (ApplyFiltersListener l : listenerList) {
+            l.filtersApplied(this);
+        }
+    }
+
+    private Collection<Object> filterablePropertyIds;
+
+    private LinkedList<ApplyFiltersListener> listeners = new LinkedList<ApplyFiltersListener>();
+
+    private LinkedList<ILFilter> appliedFilters = new LinkedList<ILFilter>();
+
+    private LinkedList<ILFilter> filters = new LinkedList<ILFilter>();
+
+    private boolean applyFiltersImmediately = true;
+
+    private boolean unappliedFilters = false;
+
+    /**
+     * @see LAdvancedFilterable#getFilterablePropertyIds()
+     */
+    public Collection<Object> getFilterablePropertyIds() {
+        if (filterablePropertyIds == null) {
+            return Collections.emptyList();
+        } else {
+            return Collections.unmodifiableCollection(filterablePropertyIds);
+        }
+    }
+
+    /**
+     * Sets the filterable property IDs.
+     * 
+     * @param propertyIds
+     *            the property IDs to set (must not be null).
+     */
+    @SuppressWarnings("unchecked")
+    public void setFilterablePropertyIds(Collection<?> propertyIds) {
+        assert propertyIds != null : "propertyIds must not be null";
+        filterablePropertyIds = (Collection<Object>) propertyIds;
+    }
+
+    /**
+     * Sets the filterable property IDs.
+     * 
+     * @param propertyIds
+     *            the property IDs to set (must not be null).
+     */
+    public void setFilterablePropertyIds(Object... propertyIds) {
+        assert propertyIds != null : "propertyIds must not be null";
+        setFilterablePropertyIds(Arrays.asList(propertyIds));
+    }
+
+    /**
+     * @see LAdvancedFilterable#isFilterable(java.lang.Object)
+     */
+    public boolean isFilterable(Object propertyId) {
+        return getFilterablePropertyIds().contains(propertyId);
+    }
+
+    /**
+     * Checks if <code>filter</code> is a valid filter, i.e. that all the
+     * properties that the filter restricts are filterable.
+     * 
+     * @param filter
+     *            the filter to check (must not be null).
+     * @return true if the filter is valid, false if it is not.
+     */
+    public boolean isValidFilter(ILFilter filter) {
+        assert filter != null : "filter must not be null";
+        if (filter instanceof LBetween) {
+            return isFilterable(((LBetween) filter).getPropertyId());
+        } else if (filter instanceof LCompare) {
+            return isFilterable(((LCompare) filter).getPropertyId());
+        } else if (filter instanceof LIsNull) {
+            return isFilterable(((LIsNull) filter).getPropertyId());
+        } else if (filter instanceof LLike) {
+            return isFilterable(((LLike) filter).getPropertyId());
+        } else if (filter instanceof LSimpleStringFilter) {
+            return isFilterable(((LSimpleStringFilter) filter).getPropertyId());
+        } else if (filter instanceof LAbstractJunctionFilter) {
+            for (ILFilter f : ((LAbstractJunctionFilter) filter).getFilters()) {
+                if (!isValidFilter(f)) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    /**
+     * @see LAdvancedFilterable#getFilters()
+     */
+    public List<ILFilter> getFilters() {
+        return Collections.unmodifiableList(filters);
+    }
+
+    /**
+     * @see LAdvancedFilterable#getAppliedFilters()
+     */
+    public List<ILFilter> getAppliedFilters() {
+        return isApplyFiltersImmediately() ? getFilters() : Collections
+                .unmodifiableList(appliedFilters);
+    }
+
+    /**
+     * @see LAdvancedFilterable#setApplyFiltersImmediately(boolean)
+     */
+    public void setApplyFiltersImmediately(boolean applyFiltersImmediately) {
+        this.applyFiltersImmediately = applyFiltersImmediately;
+    }
+
+    /**
+     * @see LAdvancedFilterable#isApplyFiltersImmediately()
+     */
+    public boolean isApplyFiltersImmediately() {
+        return applyFiltersImmediately;
+    }
+
+    /**
+     * @see LAdvancedFilterable#applyFilters()
+     */
+    public void applyFilters() {
+        unappliedFilters = false;
+        appliedFilters.clear();
+        appliedFilters.addAll(filters);
+        fireListeners();
+    }
+
+    /**
+     * @see LAdvancedFilterable#hasUnappliedFilters()
+     */
+    public boolean hasUnappliedFilters() {
+        return unappliedFilters;
+    }
+
+    @SuppressWarnings("unchecked")
+    public static Path<String> getPropertyPath(From<?, ?> root,
+            Object propertyId) {
+        return (Path<String>) getPropertyPathTyped(root, propertyId);
+    }
+
+    public static <X, Y> Path<X> getPropertyPathTyped(From<X, Y> root,
+            Object propertyId) {
+        String pid = propertyId.toString();
+        String[] idStrings = pid.split("\\.");
+        Path<X> path = root.get(idStrings[0]);
+        for (int i = 1; i < idStrings.length; i++) {
+            path = path.get(idStrings[i]);
+        }
+        return path;
+    }
+
+    /**
+     * @param filter
+     */
+    public void addFilter(ILFilter filter) {
+        filters.add(filter);
+        unappliedFilters = true;
+        if (isApplyFiltersImmediately()) {
+            applyFilters();
+        }
+    }
+
+    /**
+     * @param filter
+     */
+    public void removeFilter(ILFilter filter) {
+        filters.remove(filter);
+        unappliedFilters = true;
+        if (isApplyFiltersImmediately()) {
+            applyFilters();
+        }
+    }
+
+    public void removeAllFilters() {
+        filters.clear();
+        unappliedFilters = true;
+        if (isApplyFiltersImmediately()) {
+            applyFilters();
+        }
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAnd.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAnd.java
new file mode 100644
index 0000000..e509f39
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LAnd.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+
+public class LAnd extends LAbstractJunctionFilter {
+
+    /**
+     * 
+     * @param filters
+     *            filters of which the And filter will be composed
+     */
+    public LAnd(ILFilter... filters) {
+        super(filters);
+    }
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LBetween.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LBetween.java
new file mode 100644
index 0000000..5f1dfc0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LBetween.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+public class LBetween implements ILFilter {
+
+    private final Object propertyId;
+    private final Comparable<?> startValue;
+    private final Comparable<?> endValue;
+
+    public LBetween(Object propertyId, Comparable<?> startValue, Comparable<?> endValue) {
+        this.propertyId = propertyId;
+        this.startValue = startValue;
+        this.endValue = endValue;
+    }
+
+    public Object getPropertyId() {
+        return propertyId;
+    }
+
+    public Comparable<?> getStartValue() {
+        return startValue;
+    }
+
+    public Comparable<?> getEndValue() {
+        return endValue;
+    }
+
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        return getPropertyId() != null && getPropertyId().equals(propertyId);
+    }
+
+    @Override
+    public int hashCode() {
+        return getPropertyId().hashCode() + getStartValue().hashCode()
+                + getEndValue().hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+
+        // Only objects of the same class can be equal
+        if (!getClass().equals(obj.getClass())) {
+            return false;
+        }
+        final LBetween o = (LBetween) obj;
+
+        // Checks the properties one by one
+        boolean propertyIdEqual = (null != getPropertyId()) ? getPropertyId()
+                .equals(o.getPropertyId()) : null == o.getPropertyId();
+        boolean startValueEqual = (null != getStartValue()) ? getStartValue()
+                .equals(o.getStartValue()) : null == o.getStartValue();
+        boolean endValueEqual = (null != getEndValue()) ? getEndValue().equals(
+                o.getEndValue()) : null == o.getEndValue();
+        return propertyIdEqual && startValueEqual && endValueEqual;
+
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LCompare.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LCompare.java
new file mode 100644
index 0000000..8c52896
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LCompare.java
@@ -0,0 +1,291 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+
+public class LCompare implements ILFilter {
+
+    public enum Operation {
+        EQUAL, GREATER, LESS, GREATER_OR_EQUAL, LESS_OR_EQUAL
+    }
+
+    private final Object propertyId;
+    private final Operation operation;
+    private final Object value;
+
+    /**
+     * A {@link LCompare} filter that accepts items for which the identified
+     * property value is equal to <code>value</code>.
+     * 
+     * For in-memory filters, {@link Comparable#compareTo(Object)} or, if not
+     * Comparable, {@link #equals(Object)} is used for the comparison. For other
+     * containers, the comparison implementation is container dependent and may
+     * use e.g. database comparison operations.
+     * 
+     * @since 6.6
+     */
+    public static final class Equal extends LCompare {
+        /**
+         * Construct a filter that accepts items for which the identified
+         * property value is equal to <code>value</code>.
+         * 
+         * For in-memory filters, equals() is used for the comparison. For other
+         * containers, the comparison implementation is container dependent and
+         * may use e.g. database comparison operations.
+         * 
+         * @param propertyId
+         *            the identifier of the property whose value to compare
+         *            against value, not null
+         * @param value
+         *            the value to compare against - null values may or may not
+         *            be supported depending on the container
+         */
+        public Equal(Object propertyId, Object value) {
+            super(propertyId, value, Operation.EQUAL);
+        }
+    }
+
+    /**
+     * A {@link LCompare} filter that accepts items for which the identified
+     * property value is greater than <code>value</code>.
+     * 
+     * For in-memory filters, the values must implement {@link Comparable} and
+     * {@link Comparable#compareTo(Object)} is used for the comparison. For
+     * other containers, the comparison implementation is container dependent
+     * and may use e.g. database comparison operations.
+     * 
+     * @since 6.6
+     */
+    public static final class Greater extends LCompare {
+        /**
+         * Construct a filter that accepts items for which the identified
+         * property value is greater than <code>value</code>.
+         * 
+         * For in-memory filters, the values must implement {@link Comparable}
+         * and {@link Comparable#compareTo(Object)} is used for the comparison.
+         * For other containers, the comparison implementation is container
+         * dependent and may use e.g. database comparison operations.
+         * 
+         * @param propertyId
+         *            the identifier of the property whose value to compare
+         *            against value, not null
+         * @param value
+         *            the value to compare against - null values may or may not
+         *            be supported depending on the container
+         */
+        public Greater(Object propertyId, Object value) {
+            super(propertyId, value, Operation.GREATER);
+        }
+    }
+
+    /**
+     * A {@link LCompare} filter that accepts items for which the identified
+     * property value is less than <code>value</code>.
+     * 
+     * For in-memory filters, the values must implement {@link Comparable} and
+     * {@link Comparable#compareTo(Object)} is used for the comparison. For
+     * other containers, the comparison implementation is container dependent
+     * and may use e.g. database comparison operations.
+     * 
+     * @since 6.6
+     */
+    public static final class Less extends LCompare {
+        /**
+         * Construct a filter that accepts items for which the identified
+         * property value is less than <code>value</code>.
+         * 
+         * For in-memory filters, the values must implement {@link Comparable}
+         * and {@link Comparable#compareTo(Object)} is used for the comparison.
+         * For other containers, the comparison implementation is container
+         * dependent and may use e.g. database comparison operations.
+         * 
+         * @param propertyId
+         *            the identifier of the property whose value to compare
+         *            against value, not null
+         * @param value
+         *            the value to compare against - null values may or may not
+         *            be supported depending on the container
+         */
+        public Less(Object propertyId, Object value) {
+            super(propertyId, value, Operation.LESS);
+        }
+    }
+
+    /**
+     * A {@link LCompare} filter that accepts items for which the identified
+     * property value is greater than or equal to <code>value</code>.
+     * 
+     * For in-memory filters, the values must implement {@link Comparable} and
+     * {@link Comparable#compareTo(Object)} is used for the comparison. For
+     * other containers, the comparison implementation is container dependent
+     * and may use e.g. database comparison operations.
+     * 
+     * @since 6.6
+     */
+    public static final class GreaterOrEqual extends LCompare {
+        /**
+         * Construct a filter that accepts items for which the identified
+         * property value is greater than or equal to <code>value</code>.
+         * 
+         * For in-memory filters, the values must implement {@link Comparable}
+         * and {@link Comparable#compareTo(Object)} is used for the comparison.
+         * For other containers, the comparison implementation is container
+         * dependent and may use e.g. database comparison operations.
+         * 
+         * @param propertyId
+         *            the identifier of the property whose value to compare
+         *            against value, not null
+         * @param value
+         *            the value to compare against - null values may or may not
+         *            be supported depending on the container
+         */
+        public GreaterOrEqual(Object propertyId, Object value) {
+            super(propertyId, value, Operation.GREATER_OR_EQUAL);
+        }
+    }
+
+    /**
+     * A {@link LCompare} filter that accepts items for which the identified
+     * property value is less than or equal to <code>value</code>.
+     * 
+     * For in-memory filters, the values must implement {@link Comparable} and
+     * {@link Comparable#compareTo(Object)} is used for the comparison. For
+     * other containers, the comparison implementation is container dependent
+     * and may use e.g. database comparison operations.
+     * 
+     * @since 6.6
+     */
+    public static final class LessOrEqual extends LCompare {
+        /**
+         * Construct a filter that accepts items for which the identified
+         * property value is less than or equal to <code>value</code>.
+         * 
+         * For in-memory filters, the values must implement {@link Comparable}
+         * and {@link Comparable#compareTo(Object)} is used for the comparison.
+         * For other containers, the comparison implementation is container
+         * dependent and may use e.g. database comparison operations.
+         * 
+         * @param propertyId
+         *            the identifier of the property whose value to compare
+         *            against value, not null
+         * @param value
+         *            the value to compare against - null values may or may not
+         *            be supported depending on the container
+         */
+        public LessOrEqual(Object propertyId, Object value) {
+            super(propertyId, value, Operation.LESS_OR_EQUAL);
+        }
+    }
+
+    /**
+     * Constructor for a {@link LCompare} filter that compares the value of an
+     * item property with the given constant <code>value</code>.
+     * 
+     * This constructor is intended to be used by the nested static classes only
+     * ({@link Equal}, {@link Greater}, {@link Less}, {@link GreaterOrEqual},
+     * {@link LessOrEqual}).
+     * 
+     * For in-memory filtering, comparisons except EQUAL require that the values
+     * implement {@link Comparable} and {@link Comparable#compareTo(Object)} is
+     * used for the comparison. The equality comparison is performed using
+     * {@link Object#equals(Object)}.
+     * 
+     * For other containers, the comparison implementation is container
+     * dependent and may use e.g. database comparison operations. Therefore, the
+     * behavior of comparisons might differ in some cases between in-memory and
+     * other containers.
+     * 
+     * @param propertyId
+     *            the identifier of the property whose value to compare against
+     *            value, not null
+     * @param value
+     *            the value to compare against - null values may or may not be
+     *            supported depending on the container
+     * @param operation
+     *            the comparison {@link Operation} to use
+     */
+    LCompare(Object propertyId, Object value, Operation operation) {
+        this.propertyId = propertyId;
+        this.value = value;
+        this.operation = operation;
+    }
+
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        return getPropertyId().equals(propertyId);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+
+        // Only objects of the same class can be equal
+        if (!getClass().equals(obj.getClass())) {
+            return false;
+        }
+        final LCompare o = (LCompare) obj;
+
+        // Checks the properties one by one
+        if (getPropertyId() != o.getPropertyId() && null != o.getPropertyId()
+                && !o.getPropertyId().equals(getPropertyId())) {
+            return false;
+        }
+        if (getOperation() != o.getOperation()) {
+            return false;
+        }
+        return (null == getValue()) ? null == o.getValue() : getValue().equals(
+                o.getValue());
+    }
+
+    @Override
+    public int hashCode() {
+        return (null != getPropertyId() ? getPropertyId().hashCode() : 0)
+                ^ (null != getValue() ? getValue().hashCode() : 0);
+    }
+
+    /**
+     * Returns the property id of the property to compare against the fixed
+     * value.
+     * 
+     * @return property id (not null)
+     */
+    public Object getPropertyId() {
+        return propertyId;
+    }
+
+    /**
+     * Returns the comparison operation.
+     * 
+     * @return {@link Operation}
+     */
+    public Operation getOperation() {
+        return operation;
+    }
+
+    /**
+     * Returns the value to compare the property against.
+     * 
+     * @return comparison reference value
+     */
+    public Object getValue() {
+        return value;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LIn.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LIn.java
new file mode 100644
index 0000000..de16b92
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LIn.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+import java.util.List;
+
+public class LIn implements ILFilter {
+
+    private final String propertyId;
+    private final List<Comparable<?>> values;
+
+    public LIn(String propertyId, List<Comparable<?>> values) {
+        this.propertyId = propertyId;
+        this.values = values;
+    }
+
+    public String getPropertyId() {
+        return propertyId;
+    }
+
+    public List<Comparable<?>> getValues() {
+        return values;
+    }
+
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        return getPropertyId() != null && getPropertyId().equals(propertyId);
+    }
+
+    @Override
+    public int hashCode() {
+    	int valuesHashCode = 0;
+    	for (Comparable<?> value : getValues()) {
+			valuesHashCode = valuesHashCode + value.hashCode();
+		}
+        return getPropertyId().hashCode() + valuesHashCode;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+
+        // Only objects of the same class can be equal
+        if (!getClass().equals(obj.getClass())) {
+            return false;
+        }
+        final LIn o = (LIn) obj;
+
+        // Checks the properties one by one
+        boolean propertyIdEqual = (null != getPropertyId()) ? getPropertyId()
+                .equals(o.getPropertyId()) : null == o.getPropertyId();
+//        boolean startValueEqual = (null != getStartValue()) ? getStartValue()
+//                .equals(o.getStartValue()) : null == o.getStartValue();
+//        boolean endValueEqual = (null != getEndValue()) ? getEndValue().equals(
+//                o.getEndValue()) : null == o.getEndValue();
+//        return propertyIdEqual && startValueEqual && endValueEqual;
+        return propertyIdEqual;
+
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LIsNull.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LIsNull.java
new file mode 100644
index 0000000..9c54789
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LIsNull.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+
+public class LIsNull implements ILFilter {
+
+    private final Object propertyId;
+
+    /**
+     * Constructor for a filter that compares the value of an item property with
+     * null.
+     * 
+     * For in-memory filtering, a simple == check is performed. For other
+     * containers, the comparison implementation is container dependent but
+     * should correspond to the in-memory null check.
+     * 
+     * @param propertyId
+     *            the identifier (not null) of the property whose value to check
+     */
+    public LIsNull(Object propertyId) {
+        this.propertyId = propertyId;
+    }
+
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        return getPropertyId().equals(propertyId);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+
+        // Only objects of the same class can be equal
+        if (!getClass().equals(obj.getClass())) {
+            return false;
+        }
+        final LIsNull o = (LIsNull) obj;
+
+        // Checks the properties one by one
+        return (null != getPropertyId()) ? getPropertyId().equals(
+                o.getPropertyId()) : null == o.getPropertyId();
+    }
+
+    @Override
+    public int hashCode() {
+        return (null != getPropertyId() ? getPropertyId().hashCode() : 0);
+    }
+
+    /**
+     * Returns the property id of the property tested by the filter, not null
+     * for valid filters.
+     * 
+     * @return property id (not null)
+     */
+    public Object getPropertyId() {
+        return propertyId;
+    }
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LJoinFilter.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LJoinFilter.java
new file mode 100644
index 0000000..c856a6b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LJoinFilter.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+/**
+ * This filter allows you to implement filtering on joined tables using
+ * Hibernate, which lacks support for automatic joins. EclipseLink supports
+ * automatic joins, which allows you to filter by e.g.
+ * <code>new Equal("skills.skill", s)</code>, while Hibernate requires you to do
+ * the same using this filter e.g.
+ * <code>new JoinFilter("skills", new Equal("skill", s))</code>
+ */
+public class LJoinFilter extends LAbstractJunctionFilter {
+
+	private final String joinProperty;
+
+	/**
+	 * Constructs a HibernateJoin filter.
+	 * 
+	 * @param joinProperty
+	 *            the property that should be joined
+	 * @param filters
+	 *            a set of filters filtering on the joined property. By default
+	 *            all filters much pass for the item to be matched.
+	 */
+	public LJoinFilter(String joinProperty, ILFilter... filters) {
+		super(filters);
+		this.joinProperty = joinProperty;
+	}
+
+	/**
+	 * @return the property that is joined on
+	 */
+	public String getJoinProperty() {
+		return joinProperty;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LLike.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LLike.java
new file mode 100644
index 0000000..3e401ae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LLike.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+
+public class LLike implements ILFilter {
+    private final Object propertyId;
+    private final String value;
+    private boolean caseSensitive;
+
+    public LLike(Object propertyId, String value) {
+        this(propertyId, value, true);
+    }
+
+    public LLike(Object propertyId, String value, boolean caseSensitive) {
+        this.propertyId = propertyId;
+        this.value = value;
+        setCaseSensitive(caseSensitive);
+    }
+
+    public Object getPropertyId() {
+        return propertyId;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setCaseSensitive(boolean caseSensitive) {
+        this.caseSensitive = caseSensitive;
+    }
+
+    public boolean isCaseSensitive() {
+        return caseSensitive;
+    }
+
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        return getPropertyId() != null && getPropertyId().equals(propertyId);
+    }
+
+    @Override
+    public int hashCode() {
+        return getPropertyId().hashCode() + getValue().hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+
+        // Only objects of the same class can be equal
+        if (!getClass().equals(obj.getClass())) {
+            return false;
+        }
+        final LLike o = (LLike) obj;
+
+        // Checks the properties one by one
+        boolean propertyIdEqual = (null != getPropertyId()) ? getPropertyId()
+                .equals(o.getPropertyId()) : null == o.getPropertyId();
+        boolean valueEqual = (null != getValue()) ? getValue().equals(
+                o.getValue()) : null == o.getValue();
+        return propertyIdEqual && valueEqual;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LNot.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LNot.java
new file mode 100644
index 0000000..22129a0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LNot.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+public class LNot implements ILFilter {
+	private final ILFilter filter;
+
+	/**
+	 * Constructs a filter that negates a filter.
+	 * 
+	 * @param filter
+	 *            {@link ILFilter} to negate, not-null
+	 */
+	public LNot(ILFilter filter) {
+		this.filter = filter;
+	}
+
+	/**
+	 * Returns the negated filter.
+	 * 
+	 * @return IFilter
+	 */
+	public ILFilter getFilter() {
+		return filter;
+	}
+
+	/**
+	 * Returns true if a change in the named property may affect the filtering
+	 * result. Return value is the same as {@link #appliesToProperty(Object)}
+	 * for the negated filter.
+	 * 
+	 * @return boolean
+	 */
+	@Override
+	public boolean appliesToProperty(Object propertyId) {
+		return filter.appliesToProperty(propertyId);
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (obj == null || !getClass().equals(obj.getClass())) {
+			return false;
+		}
+		return filter.equals(((LNot) obj).getFilter());
+	}
+
+	@Override
+	public int hashCode() {
+		return filter.hashCode();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LOr.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LOr.java
new file mode 100644
index 0000000..98ac438
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LOr.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+
+public class LOr extends LAbstractJunctionFilter {
+
+    /**
+     * 
+     * @param filters
+     *            filters of which the Or filter will be composed
+     */
+    public LOr(ILFilter... filters) {
+        super(filters);
+    }
+
+    /**
+     * Returns true if a change in the named property may affect the filtering
+     * result. If some of the sub-filters are not in-memory filters, true is
+     * returned.
+     * 
+     * By default, all sub-filters are iterated to check if any of them applies.
+     * If there are no sub-filters, true is returned as an empty Or rejects all
+     * items.
+     */
+    @Override
+    public boolean appliesToProperty(Object propertyId) {
+        if (getFilters().isEmpty()) {
+            // empty Or filters out everything
+            return true;
+        } else {
+            return super.appliesToProperty(propertyId);
+        }
+    }
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LSimpleStringFilter.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LSimpleStringFilter.java
new file mode 100644
index 0000000..c104b22
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/filters/LSimpleStringFilter.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2000-2014 Vaadin Ltd.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ * 
+ * Contributor:
+ * 		Florian Pirchner - Copied filter and fixed them for osbp usecase.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.filters;
+
+public class LSimpleStringFilter implements ILFilter {
+
+	final Object propertyId;
+	final String filterString;
+	final boolean ignoreCase;
+	final boolean onlyMatchPrefix;
+
+	public LSimpleStringFilter(Object propertyId, String filterString,
+			boolean ignoreCase, boolean onlyMatchPrefix) {
+		this.propertyId = propertyId;
+		this.filterString = ignoreCase ? filterString.toLowerCase()
+				: filterString;
+		this.ignoreCase = ignoreCase;
+		this.onlyMatchPrefix = onlyMatchPrefix;
+	}
+
+	@Override
+	public boolean appliesToProperty(Object propertyId) {
+		return this.propertyId.equals(propertyId);
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (obj == null) {
+			return false;
+		}
+
+		// Only ones of the objects of the same class can be equal
+		if (!(obj instanceof LSimpleStringFilter)) {
+			return false;
+		}
+		final LSimpleStringFilter o = (LSimpleStringFilter) obj;
+
+		// Checks the properties one by one
+		if (propertyId != o.propertyId && o.propertyId != null
+				&& !o.propertyId.equals(propertyId)) {
+			return false;
+		}
+		if (filterString != o.filterString && o.filterString != null
+				&& !o.filterString.equals(filterString)) {
+			return false;
+		}
+		if (ignoreCase != o.ignoreCase) {
+			return false;
+		}
+		if (onlyMatchPrefix != o.onlyMatchPrefix) {
+			return false;
+		}
+
+		return true;
+	}
+
+	@Override
+	public int hashCode() {
+		return (propertyId != null ? propertyId.hashCode() : 0)
+				^ (filterString != null ? filterString.hashCode() : 0);
+	}
+
+	/**
+	 * Returns the property identifier to which this filter applies.
+	 * 
+	 * @return property id
+	 */
+	public Object getPropertyId() {
+		return propertyId;
+	}
+
+	/**
+	 * Returns the filter string.
+	 * 
+	 * Note: this method is intended only for implementations of lazy string
+	 * filters and may change in the future.
+	 * 
+	 * @return filter string given to the constructor
+	 */
+	public String getFilterString() {
+		return filterString;
+	}
+
+	/**
+	 * Returns whether the filter is case-insensitive or case-sensitive.
+	 * 
+	 * Note: this method is intended only for implementations of lazy string
+	 * filters and may change in the future.
+	 * 
+	 * @return true if performing case-insensitive filtering, false for
+	 *         case-sensitive
+	 */
+	public boolean isIgnoreCase() {
+		return ignoreCase;
+	}
+
+	/**
+	 * Returns true if the filter only applies to the beginning of the value
+	 * string, false for any location in the value.
+	 * 
+	 * Note: this method is intended only for implementations of lazy string
+	 * filters and may change in the future.
+	 * 
+	 * @return true if checking for matches at the beginning of the value only,
+	 *         false if matching any part of value
+	 */
+	public boolean isOnlyMatchPrefix() {
+		return onlyMatchPrefix;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java
new file mode 100644
index 0000000..e748e6d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOService.java
@@ -0,0 +1,1188 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.transaction.HeuristicMixedException;
+import javax.transaction.HeuristicRollbackException;
+import javax.transaction.NotSupportedException;
+import javax.transaction.RollbackException;
+import javax.transaction.SystemException;
+import javax.transaction.UserTransaction;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.dto.lib.services.DtoServiceException;
+import org.eclipse.osbp.dsl.dto.lib.services.IQuery;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer;
+import org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.EntityDelegate;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.validation.IStatus;
+import org.eclipse.osbp.runtime.common.validation.IValidationParticipant;
+import org.eclipse.osbp.runtime.common.validation.ValidationKind;
+import org.eclipse.persistence.internal.jpa.EntityManagerImpl;
+import org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork;
+import org.eclipse.persistence.sessions.SessionEvent;
+import org.eclipse.persistence.sessions.SessionEventAdapter;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class AbstractDTOService.
+ *
+ * @param <DTO>
+ *            the generic type
+ * @param <ENTITY>
+ *            the generic type
+ */
+@SuppressWarnings("all")
+public abstract class AbstractDTOService<DTO, ENTITY> implements
+		org.eclipse.osbp.dsl.dto.lib.services.IDTOService<DTO> {
+
+	/** The emf. */
+	private EntityManagerFactory emf;
+
+	/** The mapper access. */
+	protected IMapperAccess mapperAccess;
+
+	/** The validators. */
+	private HashSet<IValidationParticipant> validators = new HashSet<IValidationParticipant>();
+
+	/** The filter enhancers. */
+	private HashSet<IFilterEnhancer> filterEnhancers = new HashSet<IFilterEnhancer>();
+
+	/**
+	 * Gets the dto class.
+	 *
+	 * @return the dto class
+	 */
+	protected abstract Class<DTO> getDtoClass();
+
+	/**
+	 * Gets the entity class.
+	 *
+	 * @return the entity class
+	 */
+	protected abstract Class<ENTITY> getEntityClass();
+
+	/**
+	 * Gets the id.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return the id
+	 */
+	public abstract Object getId(DTO dto);
+
+	/**
+	 * Gets the DTO.
+	 *
+	 * @param id
+	 *            the id
+	 * @return the dto
+	 */
+	public DTO get(final Object id) {
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		boolean isJTA = isJTA(em);
+
+		if (isJTA) {
+
+		}
+		// find the entity
+		DTO result = null;
+		try {
+			ENTITY entity = delegate.getEntity(id);
+			if (entity != null) {
+				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(),
+						(Class<ENTITY>) entity.getClass());
+				MappingContext mappingContext = createMappingContext();
+				try {
+					mappingContext.increaseLevel();
+					result = mapSingle(entity, mapper, mappingContext);
+					mappingContext.decreaseLevel();
+					mappingContext.flush();
+				} finally {
+					mappingContext.unmakeCurrent();
+				}
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/**
+	 * Map single.
+	 *
+	 * @param entity
+	 *            the entity
+	 * @param mapper
+	 *            the mapper
+	 * @param context
+	 *            the context
+	 * @return the dto
+	 */
+	protected DTO mapSingle(ENTITY entity, IMapper<DTO, ENTITY> mapper,
+			MappingContext context) {
+		DTO result;
+		try {
+			context.increaseLevel();
+			DTO cached = context.get(mapper.createDtoHash(entity));
+			if (cached != null) {
+				result = cached;
+			} else {
+				DTO dto = mapper.createDto();
+				mapper.mapToDTO(dto, entity, context);
+				result = dto;
+			}
+		} finally {
+			context.decreaseLevel();
+		}
+		return result;
+	}
+
+	/**
+	 * See {@link IMapperAccess#getToDtoMapper(Class, Class)}.
+	 *
+	 * @param dtoClass
+	 *            the dto class
+	 * @param entityClass
+	 *            the entity class
+	 * @return the i mapper
+	 */
+	protected IMapper<DTO, ENTITY> findToDtoMapper(Class<DTO> dtoClass,
+			Class<ENTITY> entityClass) {
+		return (IMapper<DTO, ENTITY>) mapperAccess.getToDtoMapper(dtoClass,
+				entityClass);
+	}
+
+	/**
+	 * See {@link IMapperAccess#getToEntityMapper(Class, Class)}.
+	 *
+	 * @param dtoClass
+	 *            the dto class
+	 * @param entityClass
+	 *            the entity class
+	 * @return the i mapper
+	 */
+	protected IMapper<DTO, ENTITY> findToEntityMapper(Class<DTO> dtoClass,
+			Class<ENTITY> entityClass) {
+		return (IMapper<DTO, ENTITY>) mapperAccess.getToEntityMapper(dtoClass,
+				entityClass);
+	}
+
+	/**
+	 * {@inheritDoc}.
+	 *
+	 * @param query
+	 *            the query
+	 * @return the collection
+	 */
+	public Collection<DTO> find(final IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT);
+
+		List<DTO> result = new ArrayList<DTO>();
+		try {
+			MappingContext mappingContext = createMappingContext();
+			try {
+				mappingContext.increaseLevel();
+				for (ENTITY entity : delegate.getAllEntities(query)) {
+					IMapper<DTO, ENTITY> mapper = findToDtoMapper(
+							getDtoClass(), (Class<ENTITY>) entity.getClass());
+					result.add(mapSingle(entity, mapper, mappingContext));
+				}
+				mappingContext.decreaseLevel();
+				mappingContext.flush();
+			} finally {
+				mappingContext.unmakeCurrent();
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/**
+	 * {@inheritDoc}.
+	 *
+	 * @param query
+	 *            the query
+	 * @param startindex
+	 *            the startindex
+	 * @return the collection
+	 */
+	public Collection<DTO> find(final IQuery query, final int startindex) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, PROP_MAX_COLLECTION_CONTENT);
+
+		List<DTO> result = new ArrayList<DTO>();
+		try {
+			MappingContext mappingContext = createMappingContext();
+			try {
+				mappingContext.increaseLevel();
+				for (ENTITY entity : delegate.getAllEntities(query, startindex)) {
+					IMapper<DTO, ENTITY> mapper = findToDtoMapper(
+							getDtoClass(), (Class<ENTITY>) entity.getClass());
+					result.add(mapSingle(entity, mapper, mappingContext));
+				}
+				mappingContext.decreaseLevel();
+				mappingContext.flush();
+			} finally {
+				mappingContext.unmakeCurrent();
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/**
+	 * {@inheritDoc}.
+	 *
+	 * @param dto
+	 *            the dto
+	 */
+	public void update(final DTO dto) {
+		EntityManager em = emf.createEntityManager();
+
+		// create a new transaction
+		Transaction txn = new Transaction(em);
+
+		TransactionObserver entityTxnObserver = new TransactionObserver(
+				TransactionObserver.UPDATE, em);
+
+		try {
+			ENTITY entity = null;
+			MappingContext entityMappingContext = new MappingContext();
+			entityMappingContext.setEntityManager(em);
+			// do not resolve any dto-lazyloading-list during mapping
+			entityMappingContext.setNoCollectionResolving(true);
+			try {
+				txn.begin();
+				/*
+				 * Map the entity to the dto and merge the entity
+				 */
+				IMapper<DTO, ENTITY> toEntityMapper = findToEntityMapper(
+						(Class<DTO>) dto.getClass(),
+						(Class<ENTITY>) getEntityClass());
+
+				Object id = getId(dto);
+				if (id != null) {
+					entity = em.find(getEntityClass(), id);
+					if (entity == null) {
+						entity = toEntityMapper.createEntity();
+					}
+				} else {
+					entity = toEntityMapper.createEntity();
+				}
+
+				// map dto to entity and persist
+				toEntityMapper.mapToEntity(dto, entity, entityMappingContext);
+				entity = em.merge(entity);
+			} finally {
+				entityMappingContext.unmakeCurrent();
+			}
+
+			// no need for now. Everybody who wants refreshed dtos needs to call
+			//
+			// /*
+			// * Map the entity back to the dto since values may have changed in
+			// * entity during merge
+			// */
+			// MappingContext dtoMappingContext = new MappingContext();
+			// try {
+			// IMapper<DTO, ENTITY> toDtoMapper = findToDtoMapper(
+			// (Class<DTO>) dto.getClass(),
+			// (Class<ENTITY>) entity.getClass());
+			//
+			// dtoMappingContext.increaseLevel();
+			// toDtoMapper.mapToDTO(dto, entity, dtoMappingContext);
+			// } finally {
+			// dtoMappingContext.unmakeCurrent();
+			// }
+			txn.commit();
+			txn = null;
+		} catch (NamingException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (NotSupportedException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (SystemException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (IllegalStateException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (SecurityException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (HeuristicMixedException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (HeuristicRollbackException e) {
+			throw new ExceptionConverter().convertException(e);
+		} catch (RollbackException e) {
+			throw new ExceptionConverter().convertException(e);
+		} finally {
+			entityTxnObserver.dispose();
+			em.close();
+		}
+	}
+
+	/**
+	 * {@inheritDoc}.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @return the dto
+	 */
+	public DTO reload(final DTO dto) {
+		EntityManager em = emf.createEntityManager();
+
+		// find the entity
+		boolean reloaded = false;
+		IMapper<DTO, ENTITY> mapper = null;
+		try {
+			ENTITY entity = em.find(getEntityClass(), getId(dto));
+			if (entity != null) {
+				MappingContext dtoMappingContext = createMappingContext();
+				try {
+					dtoMappingContext.setRefresh(true);
+					dtoMappingContext.increaseLevel();
+
+					// entity available -> Map to the given DTO
+					mapper = findToDtoMapper(getDtoClass(),
+							(Class<ENTITY>) entity.getClass());
+					dtoMappingContext.registerRefreshed(
+							mapper.createDtoHash(dto), dto);
+					mapper.mapToDTO(dto, entity, dtoMappingContext);
+
+					// flush the changes to the shared state
+					dtoMappingContext.decreaseLevel();
+					dtoMappingContext.flush();
+
+					reloaded = true;
+				} finally {
+					dtoMappingContext.unmakeCurrent();
+				}
+			}
+		} finally {
+			em.close();
+		}
+
+		return reloaded ? null : mapper.<DTO> createDto();
+	}
+
+	/**
+	 * Removes the dto with the given key from the dirty state cache.
+	 *
+	 * @param dtoKey
+	 *            the dto key
+	 * @param affectedDto
+	 *            the affected dto
+	 * @param sharedState
+	 *            the shared state
+	 */
+	private void removeFromDirtyState(Object dtoKey, Object affectedDto,
+			ISharedStateContext sharedState) {
+		sharedState.makeUndirty(dtoKey, affectedDto);
+	}
+
+	/**
+	 * Removes the dto with the given key from the dirty state cache.
+	 *
+	 * @param dtoKey
+	 *            the dto key
+	 * @param affectedDto
+	 *            the affected dto
+	 * @param sharedState
+	 *            the shared state
+	 */
+	private void removeFromSharedState(Object dtoKey, Object affectedDto,
+			ISharedStateContext sharedState) {
+		// try to dispose the dto. Will remove it from caches automatically.
+		if (!DtoUtils.invokeDisposeMethod(affectedDto)) {
+			sharedState.getDirtyState().invalidate(dtoKey);
+			sharedState.getGlobalDataState().invalidate(dtoKey);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}.
+	 *
+	 * @param dto
+	 *            the dto
+	 * @throws DtoServiceException
+	 *             the dto service exception
+	 */
+	public void delete(final DTO dto) throws DtoServiceException {
+		javax.persistence.EntityManager em = emf.createEntityManager();
+
+		// create a new transaction
+		Transaction txn = new Transaction(em);
+
+		// create a txn observer to get all deleted elements
+		MappingContext entityMappingContext = createMappingContext();
+		// do not resolve any dto-lazyloading-list
+		entityMappingContext.setNoCollectionResolving(true);
+		try {
+			entityMappingContext.increaseLevel();
+			entityMappingContext.setEntityManager(em);
+			
+			TransactionObserver entityTxnObserver = new TransactionObserver(
+					TransactionObserver.DELETE, em);
+
+			try {
+				txn.begin();
+
+				// we need to do a mapping step first to get references from
+				// entity
+				// to DTOs
+				// then we know which dtos must be removed from shared context
+				IMapper<DTO, ENTITY> mapper = findToEntityMapper(
+						(Class<DTO>) dto.getClass(),
+						(Class<ENTITY>) getEntityClass());
+				// map dto to entity and persist
+				ENTITY entity = mapper.createEntity();
+				mapper.mapToEntity(dto, entity, entityMappingContext);
+
+				entity = em.find(getEntityClass(), getId(dto));
+				if (entity != null) {
+					em.remove(entity);
+				}
+
+				try {
+					txn.commit();
+					txn = null;
+				} catch (Exception e) {
+					throw new ExceptionConverter().convertException(e);
+				}
+			} catch (NamingException e) {
+				throw new ExceptionConverter().convertException(e);
+			} catch (NotSupportedException e) {
+				throw new ExceptionConverter().convertException(e);
+			} catch (SystemException e) {
+				throw new ExceptionConverter().convertException(e);
+			} finally {
+				entityTxnObserver.dispose();
+				em.close();
+			}
+		} finally {
+			entityMappingContext.unmakeCurrent();
+		}
+	}
+
+	/**
+	 * Binds the service {@link IMapperAccess} to this component. <br>
+	 * The cardinality is ONE_TO_ONE
+	 *
+	 * @param mapperAccess
+	 *            the mapper access
+	 */
+	protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+		this.mapperAccess = mapperAccess;
+	}
+
+	/**
+	 * Unbinds the service from this component. <br>
+	 * The cardinality is ONE_TO_ONE
+	 *
+	 * @param mapperAccess
+	 *            the mapper access
+	 */
+	protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+		this.mapperAccess = null;
+	}
+
+	/**
+	 * Binds the service {@link javax.persistence.EntityManagerFactory} to this
+	 * component. <br>
+	 * The cardinality is ONE_TO_ONE
+	 * 
+	 * @param emf
+	 *            the service
+	 */
+	protected void bindEmf(final EntityManagerFactory emf) {
+		this.emf = emf;
+	}
+
+	/**
+	 * Unbinds the service from this component. <br>
+	 * The cardinality is ONE_TO_ONE
+	 * 
+	 * @param emf
+	 *            the service
+	 */
+	protected void unbindEmf(final EntityManagerFactory emf) {
+		this.emf = null;
+	}
+
+	/**
+	 * Adds a new validation participant to the service.
+	 *
+	 * @param validator
+	 *            the validator
+	 */
+	protected void addValidationParticipant(IValidationParticipant validator) {
+		validators.add(validator);
+	}
+
+	/**
+	 * Removes a validation participant from the service.
+	 *
+	 * @param validator
+	 *            the validator
+	 */
+	protected void removeValidationParticipant(IValidationParticipant validator) {
+		validators.remove(validator);
+	}
+
+	/**
+	 * Gets the emf.
+	 *
+	 * @return the emf
+	 */
+	protected EntityManagerFactory getEmf() {
+		return emf;
+	}
+
+	/**
+	 * Returns true, if JTA is used.
+	 *
+	 * @param em
+	 *            the em
+	 * @return true, if is jta
+	 */
+	public static boolean isJTA(EntityManager em) {
+		try {
+			em.getTransaction();
+		} catch (Exception e) {
+			return true;
+		}
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#size(org.eclipse.osbp
+	 * .dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public int size(IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		int result = -1;
+		try {
+			result = delegate.getEntityCount(query);
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#contains(java.lang.
+	 * Object, org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public boolean contains(Object dto, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		boolean result = false;
+		try {
+			result = delegate.containsEntityIdentifier(dto, query);
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#getNext(java.lang.Object
+	 * , org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public DTO getNext(DTO dto, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		DTO result = null;
+		try {
+			ENTITY entity = delegate.getNextEntity(getId(dto), query);
+			if (entity != null) {
+				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(),
+						(Class<ENTITY>) entity.getClass());
+				MappingContext mappingContext = createMappingContext();
+				try {
+					mappingContext.increaseLevel();
+					result = mapSingle(entity, mapper, mappingContext);
+					mappingContext.decreaseLevel();
+					mappingContext.flush();
+				} finally {
+					mappingContext.unmakeCurrent();
+				}
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#getPrevious(java.lang
+	 * .Object, org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public DTO getPrevious(DTO dto, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		DTO result = null;
+		try {
+			ENTITY entity = delegate.getPreviousEntity(getId(dto), query);
+			if (entity != null) {
+				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(),
+						(Class<ENTITY>) entity.getClass());
+				MappingContext mappingContext = createMappingContext();
+				try {
+					mappingContext.increaseLevel();
+					result = mapSingle(entity, mapper, mappingContext);
+					mappingContext.decreaseLevel();
+					mappingContext.flush();
+				} finally {
+					mappingContext.unmakeCurrent();
+				}
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#getFirst(org.eclipse
+	 * .osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public DTO getFirst(IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		DTO result = null;
+		try {
+			ENTITY entity = delegate.getFirstEntity(query);
+			if (entity != null) {
+				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(),
+						(Class<ENTITY>) entity.getClass());
+				MappingContext mappingContext = createMappingContext();
+				try {
+					mappingContext.increaseLevel();
+					result = mapSingle(entity, mapper, mappingContext);
+					mappingContext.decreaseLevel();
+					mappingContext.flush();
+				} finally {
+					mappingContext.unmakeCurrent();
+				}
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#getLast(org.eclipse
+	 * .osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public DTO getLast(IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		DTO result = null;
+		try {
+			ENTITY entity = delegate.getLastEntity(query);
+			if (entity != null) {
+				IMapper<DTO, ENTITY> mapper = findToDtoMapper(getDtoClass(),
+						(Class<ENTITY>) entity.getClass());
+				MappingContext mappingContext = createMappingContext();
+				try {
+					mappingContext.increaseLevel();
+					result = mapSingle(entity, mapper, mappingContext);
+					mappingContext.decreaseLevel();
+					mappingContext.flush();
+				} finally {
+					mappingContext.unmakeCurrent();
+				}
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#isFirst(java.lang.Object
+	 * , org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public boolean isFirst(DTO dto, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		List<DTO> result = new ArrayList<DTO>();
+		try {
+			String firstId = (String) delegate.getFirstEntityIdentifier(query);
+			if (firstId != null && firstId.equals(getId(dto))) {
+				return true;
+			}
+		} finally {
+			em.close();
+		}
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#isLast(java.lang.Object
+	 * , org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public boolean isLast(DTO dto, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		List<DTO> result = new ArrayList<DTO>();
+		try {
+			String lastId = (String) delegate.getLastEntityIdentifier(query);
+			if (lastId != null && lastId.equals(getId(dto))) {
+				return true;
+			}
+		} finally {
+			em.close();
+		}
+
+		return false;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#indexOf(java.lang.Object
+	 * , org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public int indexOf(DTO dto, IQuery query) {
+		return 1;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.dsl.dto.lib.services.IDTOService#getByIndex(int,
+	 * org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public DTO getByIndex(int index, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, 1);
+
+		DTO result = null;
+		try {
+			MappingContext mappingContext = createMappingContext();
+			try {
+				mappingContext.increaseLevel();
+				for (ENTITY entity : delegate.getAllEntities(query, index)) {
+					IMapper<DTO, ENTITY> mapper = findToDtoMapper(
+							getDtoClass(), (Class<ENTITY>) entity.getClass());
+					result = mapSingle(entity, mapper, mappingContext);
+					break;
+				}
+				mappingContext.decreaseLevel();
+				mappingContext.flush();
+			} finally {
+				mappingContext.unmakeCurrent();
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.dsl.dto.lib.services.IDTOService#getByIndex(int,
+	 * int, org.eclipse.osbp.dsl.dto.lib.services.IQuery)
+	 */
+	@Override
+	public List<DTO> getByIndex(int startIndex, int numberOfItems, IQuery query) {
+		enhanceFilter(query);
+		javax.persistence.EntityManager em = emf.createEntityManager();
+		EntityDelegate<ENTITY> delegate = new EntityDelegate<ENTITY>(
+				getEntityClass(), em, numberOfItems);
+
+		List<DTO> result = new ArrayList<DTO>();
+		try {
+			MappingContext mappingContext = createMappingContext();
+			try {
+				mappingContext.increaseLevel();
+				for (ENTITY entity : delegate.getAllEntities(query, startIndex)) {
+					IMapper<DTO, ENTITY> mapper = findToDtoMapper(
+							getDtoClass(), (Class<ENTITY>) entity.getClass());
+					result.add(mapSingle(entity, mapper, mappingContext));
+				}
+				mappingContext.decreaseLevel();
+				mappingContext.flush();
+			} finally {
+				mappingContext.unmakeCurrent();
+			}
+		} finally {
+			em.close();
+		}
+
+		return result;
+	}
+
+	/**
+	 * Creates the mapping context.
+	 *
+	 * @return the mapping context
+	 */
+	protected MappingContext createMappingContext() {
+		if (MappingContext.getCurrent() != null) {
+			MappingContext current = MappingContext.getCurrent();
+			// call make current to ensure mapping levels
+			current.makeCurrent();
+			return current;
+		}
+		// call make current is internally done
+		return new MappingContext();
+	}
+
+	/**
+	 * Enhance filter.
+	 *
+	 * @param query
+	 *            the query
+	 */
+	private void enhanceFilter(IQuery query) {
+		Map<String, Object> queryMap = query.getMap();
+		List<Class> entityClasses = (List<Class>) queryMap
+				.get(Query.ENTITY_CLASSES_KEY);
+		entityClasses = ((entityClasses != null) ? entityClasses
+				: new ArrayList<Class>());
+		entityClasses.add(getEntityClass());
+		queryMap.put(Query.ENTITY_CLASSES_KEY, entityClasses);
+		if (filterEnhancers != null) {
+			for (IFilterEnhancer filterEnhancer : filterEnhancers) {
+				filterEnhancer.enhanceQuery(query);
+			}
+		}
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.dsl.dto.lib.services.IDTOService#validate(java.lang.
+	 * Object, org.eclipse.osbp.runtime.common.validation.ValidationKind,
+	 * java.util.Map)
+	 */
+	@Override
+	public Set<IStatus> validate(DTO object, ValidationKind kind,
+			Map<String, Object> properties) {
+
+		if (validators == null) {
+			return Collections.emptySet();
+		}
+
+		Set<IStatus> result = new HashSet<IStatus>();
+		for (IValidationParticipant val : validators) {
+			Set<IStatus> tempResult = val.validate(object, kind, properties);
+			if (tempResult != null) {
+				result.addAll(tempResult);
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Adds the filter enhancer
+	 * {@link org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer} to
+	 * this service. <br>
+	 * 
+	 * @param filterEnhancer
+	 *            the filter enhancer
+	 */
+	protected synchronized void addFilterEnhancer(
+			final IFilterEnhancer filterEnhancer) {
+		filterEnhancers.add(filterEnhancer);
+	}
+
+	/**
+	 * Removes the filter enhancer
+	 * {@link org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer}
+	 * from this service. <br>
+	 * 
+	 * @param filterEnhancer
+	 *            the filter enhancer
+	 */
+	protected synchronized void removeFilterEnhancer(
+			final IFilterEnhancer filterEnhancer) {
+		filterEnhancers.remove(filterEnhancer);
+	}
+
+	/**
+	 * An asynchronous update interface for receiving notifications about
+	 * Transaction information as the Transaction is constructed.
+	 */
+	private static class TransactionObserver extends SessionEventAdapter {
+
+		/** The Constant UPDATE. */
+		private static final int UPDATE = 0;
+
+		/** The Constant DELETE. */
+		private static final int DELETE = 1;
+
+		/** The affected. */
+		private List<Object> affected = new ArrayList<Object>();
+
+		/** The em. */
+		private EntityManager em;
+
+		/** The type. */
+		private int type;
+
+		/**
+		 * This method is called when information about an Transaction which was
+		 * previously requested using an asynchronous interface becomes
+		 * available.
+		 *
+		 * @param type
+		 *            the type
+		 * @param em
+		 *            the em
+		 */
+		public TransactionObserver(int type, EntityManager em) {
+			this.type = type;
+			this.em = em;
+			((EntityManagerImpl) em).getActiveSession().getEventManager()
+					.addListener(this);
+		}
+
+		/*
+		 * (non-Javadoc)
+		 * 
+		 * @see
+		 * org.eclipse.persistence.sessions.SessionEventAdapter#postCommitUnitOfWork
+		 * (org.eclipse.persistence.sessions.SessionEvent)
+		 */
+		@Override
+		public void postCommitUnitOfWork(SessionEvent event) {
+			RepeatableWriteUnitOfWork uow = (RepeatableWriteUnitOfWork) event
+					.getSource();
+			if (type == UPDATE) {
+				for (Object object : uow.getCloneMapping().values()) {
+					affected.add(object);
+				}
+			} else if (type == DELETE) {
+				for (Object object : uow.getDeletedObjects().values()) {
+					affected.add(object);
+				}
+			}
+		}
+
+		/**
+		 * This method is called when information about an Transaction which was
+		 * previously requested using an asynchronous interface becomes
+		 * available.
+		 */
+		public void dispose() {
+			((EntityManagerImpl) em).getActiveSession().getEventManager()
+					.removeListener(this);
+		}
+	}
+
+	/**
+	 * The Class Transaction.
+	 */
+	protected static class Transaction {
+
+		/** The em. */
+		private final EntityManager em;
+
+		/** The is jta. */
+		private boolean isJTA;
+
+		/** The ut. */
+		private UserTransaction ut;
+
+		/** The txn. */
+		private EntityTransaction txn;
+
+		/**
+		 * Instantiates a new transaction.
+		 *
+		 * @param em
+		 *            the em
+		 */
+		public Transaction(EntityManager em) {
+			super();
+			this.em = em;
+
+			isJTA = isJTA(em);
+		}
+
+		/**
+		 * Begin.
+		 *
+		 * @throws NamingException
+		 *             the naming exception
+		 * @throws NotSupportedException
+		 *             the not supported exception
+		 * @throws SystemException
+		 *             the system exception
+		 */
+		public void begin() throws NamingException, NotSupportedException,
+				SystemException {
+			if (isJTA) {
+				ut = (UserTransaction) new InitialContext()
+						.lookup("osgi:service/javax.transaction.UserTransaction");
+
+				// start the user transaction
+				ut.begin();
+				em.joinTransaction();
+			} else {
+				txn = em.getTransaction();
+				txn.begin();
+			}
+		}
+
+		/**
+		 * Commit.
+		 *
+		 * @throws IllegalStateException
+		 *             the illegal state exception
+		 * @throws SecurityException
+		 *             the security exception
+		 * @throws HeuristicMixedException
+		 *             the heuristic mixed exception
+		 * @throws HeuristicRollbackException
+		 *             the heuristic rollback exception
+		 * @throws RollbackException
+		 *             the rollback exception
+		 * @throws SystemException
+		 *             the system exception
+		 */
+		public void commit() throws IllegalStateException, SecurityException,
+				HeuristicMixedException, HeuristicRollbackException,
+				RollbackException, SystemException {
+			if (isJTA) {
+				ut.commit();
+			} else {
+				txn.commit();
+			}
+		}
+
+		/**
+		 * Rollback.
+		 *
+		 * @throws IllegalStateException
+		 *             the illegal state exception
+		 * @throws SecurityException
+		 *             the security exception
+		 * @throws SystemException
+		 *             the system exception
+		 */
+		public void rollback() throws IllegalStateException, SecurityException,
+				SystemException {
+			if (isJTA) {
+				ut.rollback();
+			} else {
+				txn.rollback();
+			}
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOServiceWithMutablePersistence.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOServiceWithMutablePersistence.java
new file mode 100644
index 0000000..fafa175
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/AbstractDTOServiceWithMutablePersistence.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.impl;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.osgi.framework.Filter;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.util.tracker.ServiceTracker;
+import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("all")
+public abstract class AbstractDTOServiceWithMutablePersistence<DTO, ENTITY>
+		extends AbstractDTOService<DTO, ENTITY>
+		implements
+		org.eclipse.osbp.dsl.dto.lib.services.IDTOServiceWithMutablePersistence<DTO>,
+		ServiceTrackerCustomizer<EntityManagerFactory, EntityManagerFactory> {
+
+	private static final String FILTER__EMF = "(objectClass=javax.persistence.EntityManagerFactory)";
+	private static final String FILTER__EMF_WITH_PERSISTENCE = "(&(objectClass=javax.persistence.EntityManagerFactory)(osgi.unit.name=%s))";
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(AbstractDTOServiceWithMutablePersistence.class);
+
+	private ServiceTracker<EntityManagerFactory, EntityManagerFactory> emfTracker;
+	private ComponentContext context;
+	private String persistenceId;
+
+	public String getPersistenceId() {
+		return persistenceId;
+	}
+
+	public void setPersistenceId(String persistenceId) {
+		this.persistenceId = persistenceId;
+
+		if (context != null) {
+			internalReset();
+		}
+	}
+
+	//
+	// OSGI Infrastructure
+	//
+
+	/**
+	 * Called by OSGi-DS to activate the service.
+	 * 
+	 * @param context
+	 */
+	protected void activate(ComponentContext context) throws Exception {
+		this.context = context;
+
+		internalActivate();
+	}
+
+	protected void internalActivate() throws InvalidSyntaxException {
+		if (emfTracker == null) {
+			emfTracker = new ServiceTracker<EntityManagerFactory, EntityManagerFactory>(
+					context.getBundleContext(), createEMFFilter(), this);
+			emfTracker.open();
+		}
+	}
+
+	/**
+	 * Create the filter to find the proper service.
+	 * 
+	 * @return
+	 * @throws InvalidSyntaxException
+	 */
+	protected Filter createEMFFilter() throws InvalidSyntaxException {
+		if (getPersistenceId() == null || getPersistenceId().equals("")) {
+			return context.getBundleContext().createFilter(FILTER__EMF);
+		} else {
+			return context.getBundleContext().createFilter(
+					String.format(FILTER__EMF_WITH_PERSISTENCE,
+							getPersistenceId()));
+		}
+	}
+
+	/**
+	 * Called by OSGi-DS to deactivate the service.
+	 * 
+	 * @param context
+	 */
+	protected void deactivate(ComponentContext context) {
+		internalDeactivate();
+		this.context = null;
+	}
+
+	/**
+	 * Resets the internal state.
+	 */
+	protected void internalReset() {
+		internalDeactivate();
+		if (context != null) {
+			try {
+				internalActivate();
+			} catch (InvalidSyntaxException e) {
+				LOGGER.error("{}", e);
+			}
+		}
+	}
+
+	protected void internalDeactivate() {
+		if (emfTracker != null) {
+			emfTracker.close();
+			emfTracker = null;
+		}
+	}
+
+	@Override
+	public EntityManagerFactory addingService(
+			ServiceReference<EntityManagerFactory> reference) {
+		EntityManagerFactory emf = context.getBundleContext().getService(
+				reference);
+		if (getEmf() == null) {
+			bindEmf(emf);
+		}
+		return emf;
+	}
+
+	@Override
+	public void modifiedService(
+			ServiceReference<EntityManagerFactory> reference,
+			EntityManagerFactory service) {
+		// nothing to do
+	}
+
+	@Override
+	public void removedService(
+			ServiceReference<EntityManagerFactory> reference,
+			EntityManagerFactory service) {
+		if (getEmf() == service) {
+			unbindEmf(getEmf());
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/ExceptionConverter.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/ExceptionConverter.java
new file mode 100644
index 0000000..71ddf60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/impl/ExceptionConverter.java
@@ -0,0 +1,46 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.impl;
+
+import java.sql.SQLException;
+
+import org.eclipse.osbp.dsl.dto.lib.services.DtoServiceException;
+
+/**
+ * Converts SQLExceptions.
+ * <p>
+ * TODO make it an OSGi service and support XOPEN SQLstate conventions and the
+ * SQL:2003 conventions
+ */
+public class ExceptionConverter {
+
+	/**
+	 * Converts SQL Exceptions.
+	 * 
+	 * @param e
+	 * @return
+	 */
+	protected DtoServiceException convertException(Exception e) {
+		Throwable cause = e.getCause();
+		if (cause instanceof RuntimeException) {
+			Throwable innercause = cause.getCause();
+			if (innercause instanceof SQLException) {
+				SQLException sqlEx = (SQLException) innercause;
+				String state = sqlEx.getSQLState();
+				if (state.equals("23503")) {
+					return new DtoServiceException(state,
+							"Delete not possible. The record is used.", e);
+				}
+			}
+		}
+		return new DtoServiceException("unknown", e.getMessage(), e);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/ClassMetadata.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/ClassMetadata.java
new file mode 100644
index 0000000..2bbd91c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/ClassMetadata.java
@@ -0,0 +1,488 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.io.Serializable;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+/**
+ * This class provides a way of accessing the JPA mapping metadata of
+ * <code>Entity</code> and <code>Embeddable</code> classes. This information may be used
+ * to construct queries or decide whether a property is sortable or not.
+ * 
+ * see EntityClassMetadata
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public class ClassMetadata<T> implements Serializable {
+
+    private static final long serialVersionUID = 2569781449737488799L;
+    private final Class<T> mappedClass;
+    private final Map<String, PropertyMetadata> allProperties = new LinkedHashMap<String, PropertyMetadata>();
+    private final Map<String, PersistentPropertyMetadata> persistentProperties = new LinkedHashMap<String, PersistentPropertyMetadata>();
+
+    /**
+     * Constructs a new <code>ClassMetadata</code> instance. Properties can be
+     * added using the
+     * {@link #addProperties(com.vaadin.addons.jpacontainer.metadata.PropertyMetadata[]) }
+     * method.
+     * 
+     * @param mappedClass
+     *            the mapped class (must not be null).
+     */
+    ClassMetadata(Class<T> mappedClass) {
+        assert mappedClass != null : "mappedClass must not be null";
+        this.mappedClass = mappedClass;
+    }
+
+    /**
+     * Adds the specified property metadata to the class. Any existing
+     * properties with the same names will be overwritten.
+     * 
+     * @param properties
+     *            an array of properties to add.
+     */
+    final void addProperties(PropertyMetadata... properties) {
+        assert properties != null : "properties must not be null";
+        for (PropertyMetadata pm : properties) {
+            allProperties.put(pm.getName(), pm);
+            if (pm instanceof PersistentPropertyMetadata) {
+                persistentProperties.put(pm.getName(),
+                        (PersistentPropertyMetadata) pm);
+            } else {
+                // If we have a previous property and want to overwrite
+                // it with another that is not persistent
+                persistentProperties.remove(pm.getName());
+            }
+        }
+    }
+
+    /**
+     * Gets the mapped class.
+     * 
+     * @return the class (never null).
+     */
+    public Class<T> getMappedClass() {
+        return mappedClass;
+    }
+
+    /**
+     * Gets all the persistent properties of the class.
+     * 
+     * @return an unmodifiable collection of property metadata.
+     */
+    public Collection<PersistentPropertyMetadata> getPersistentProperties() {
+        return Collections
+                .unmodifiableCollection(persistentProperties.values());
+    }
+
+    /**
+     * Gets the names of all persistent properties of this class.
+     * 
+     * @see #getPersistentProperties()
+     * @return an unmodifiable collection of property names.
+     */
+    public Collection<String> getPersistentPropertyNames() {
+        return Collections
+                .unmodifiableCollection(persistentProperties.keySet());
+    }
+
+    /**
+     * Gets all the properties of the class. In addition to the persistent
+     * properties, all public JavaBean properties are also included (even those
+     * who do not have setter methods).
+     * 
+     * @return an unmodifiable collection of property metadata.
+     */
+    public Collection<PropertyMetadata> getProperties() {
+        return Collections.unmodifiableCollection(allProperties.values());
+    }
+
+    /**
+     * Gets the names of all the properties of this class.
+     * 
+     * @see #getProperties()
+     * @return an unmodifiable collection of property names.
+     */
+    public Collection<String> getPropertyNames() {
+        return Collections.unmodifiableCollection(allProperties.keySet());
+    }
+
+    /**
+     * Gets the metadata of the named property.
+     * 
+     * @param propertyName
+     *            the name of the property (must not be null).
+     * @return the property metadata, or null if not found.
+     */
+    public PropertyMetadata getProperty(String propertyName) {
+        return allProperties.get(propertyName);
+    }
+
+    /**
+     * Gets the value of <code>property</code> from <code>object</code>.
+     * 
+     * @param object
+     *            the object from which the property will be retrieved (must not
+     *            be null).
+     * @param property
+     *            the metadata of the property (must not be null).
+     * @return the property value.
+     * @throws IllegalArgumentException
+     *             if the property could not be retrieved.
+     */
+    protected Object getPropertyValue(T object, PropertyMetadata property)
+            throws IllegalArgumentException { // NOSONAR
+        assert object != null : "object must not be null";
+        assert property != null : "property must not be null";
+        try {
+            if (property instanceof PersistentPropertyMetadata) {
+                PersistentPropertyMetadata ppmd = (PersistentPropertyMetadata) property;
+                if (ppmd.field != null) {
+                    return getPropertyValueFromField(object, ppmd);
+                }
+            }
+            return property.getter.invoke(object);
+        } catch (IllegalAccessException e) {
+            throw new IllegalArgumentException(
+                    "Cannot access the property value", e);
+        } catch (InvocationTargetException e) {
+            throw new IllegalArgumentException(
+                    "Cannot access the property value", e);
+        }
+    }
+
+    private Object getPropertyValueFromField(T object,
+            PersistentPropertyMetadata ppmd) throws IllegalAccessException,
+            IllegalArgumentException, InvocationTargetException { // NOSONAR
+        // First we try to find a getter for the field in order to
+        // make getter-based lazy loading work.
+        Class<?> clazz = ppmd.field.getDeclaringClass();
+        Method getter = null;
+        try {
+            getter = clazz.getMethod("get" + capitalize(ppmd.fieldName));
+        } catch (Exception e) { // NOSONAR
+            try {
+                getter = clazz.getMethod("is" + capitalize(ppmd.fieldName));
+            } catch (Exception e1) { // NOSONAR
+            }
+        }
+        if (getter == null) {
+            try {
+                ppmd.field.setAccessible(true);
+                return ppmd.field.get(object);
+            } finally {
+                ppmd.field.setAccessible(false);
+            }
+        }
+        return getter.invoke(object);
+    }
+
+    private String capitalize(String string) {
+        return string.substring(0, 1).toUpperCase() + string.substring(1);
+    }
+
+    /**
+     * Sets the value of <code>property</code> to <code>value</code> on
+     * <code>object</code>.
+     * 
+     * @param object
+     *            the object to which the property will be set (must not be
+     *            null).
+     * @param property
+     *            the metadata of the property (must not be null).
+     * @param value
+     *            the property value.
+     * @throws IllegalArgumentException
+     *             if the property could not be set.
+     */
+    protected void setPropertyValue(T object, PropertyMetadata property,
+            Object value) throws IllegalArgumentException { // NOSONAR
+        assert object != null : "object must not be null";
+        assert property != null : "property must not be null";
+        if (property != null && property.isWritable()) {
+            try {
+                if (property.setter == null
+                        && property instanceof PersistentPropertyMetadata) {
+                    // use direct field access of PersistentPropertyMetadata iff
+                    // the setter method does not exist
+                    PersistentPropertyMetadata ppmd = (PersistentPropertyMetadata) property;
+                    if (ppmd.field != null) {
+                        try {
+                            ppmd.field.setAccessible(true);
+                            ppmd.field.set(object, value);
+                            return;
+                        } finally {
+                            ppmd.field.setAccessible(false);
+                        }
+                    }
+                }
+                property.setter.invoke(object, value);
+            } catch (IllegalAccessException e) {
+                throw new IllegalArgumentException(
+                        "Cannot set the property value", e);
+            } catch (InvocationTargetException e) {
+                throw new IllegalArgumentException(
+                        "Cannot set the property value", e);
+            }
+        } else {
+            throw new IllegalArgumentException("No such writable property: "
+                    + (property != null?property.getName():"(property == null)") );
+        }
+    }
+
+    /**
+     * Gets the getter method for <code>propertyName</code> from
+     * <code>parent</code>.
+     * 
+     * @param propertyName
+     *            the JavaBean property name (must not be null).
+     * @param parent
+     *            the class from which to get the getter method (must not be
+     *            null).
+     * @return the getter method, or null if not found.
+     */
+    protected Method getGetterMethod(String propertyName, Class<?> parent) {
+        String methodName = "get" + propertyName.substring(0, 1).toUpperCase()
+                + propertyName.substring(1);
+        try {
+            Method m = parent.getMethod(methodName);
+            if (m.getReturnType() != Void.TYPE) {
+                return m;
+            } else {
+                return null;
+            }
+        } catch (NoSuchMethodException e) { // NOSONAR
+            return null;
+        }
+    }
+
+    /**
+     * Gets the setter method for <code>propertyName</code> from
+     * <code>parent</code>.
+     * 
+     * @param propertyName
+     *            the JavaBean property name (must not be null).
+     * @param parent
+     *            the class from which to get the setter method (must not be
+     *            null).
+     * @param propertyType
+     *            the type of the property (must not be null).
+     * @return the setter method, or null if not found.
+     */
+    protected Method getSetterMethod(String propertyName, Class<?> parent,
+            Class<?> propertyType) {
+        String methodName = "set" + propertyName.substring(0, 1).toUpperCase()
+                + propertyName.substring(1);
+        try {
+            Method m = parent.getMethod(methodName, propertyType);
+            if (m.getReturnType() == Void.TYPE) {
+                return m;
+            } else {
+                return null;
+            }
+        } catch (NoSuchMethodException e) { // NOSONAR
+            return null;
+        }
+    }
+
+    /**
+     * Gets the value of <code>object.propertyName</code>. The property name may
+     * be nested.
+     * 
+     * @param object
+     *            the entity object from which the property value should be
+     *            fetched (must not be null).
+     * @param propertyName
+     *            the name of the property (must not be null).
+     * @return the property value.
+     * @throws IllegalArgumentException
+     *             if the property value could not be fetched, e.g. due to
+     *             <code>propertyName</code> being invalid.
+     */
+    @SuppressWarnings("unchecked")
+    public Object getPropertyValue(T object, String propertyName)
+            throws IllegalArgumentException { // NOSONAR
+        assert object != null : "object must not be null";
+        assert propertyName != null : "propertyName must not be null";
+
+        StringTokenizer st = new StringTokenizer(propertyName, ".");
+        ClassMetadata<Object> typeMetadata = (ClassMetadata<Object>) this;
+        Class<?> type = null;
+        Object currentObject = object;
+        while (st.hasMoreTokens()) {
+            String propName = st.nextToken();
+            if (typeMetadata != null) {
+                PropertyMetadata pmd = typeMetadata.getProperty(propName);
+                if (pmd == null) {
+                    throw new IllegalArgumentException("Invalid property name");
+                }
+                currentObject = typeMetadata.getPropertyValue(currentObject,
+                        pmd);
+                if (currentObject == null) {
+                    return null;
+                }
+                if (pmd instanceof PersistentPropertyMetadata) {
+                    typeMetadata = (ClassMetadata<Object>) ((PersistentPropertyMetadata) pmd)
+                            .getTypeMetadata();
+                } else {
+                    typeMetadata = null;
+                }
+                if (typeMetadata == null) {
+                    type = pmd.getType();
+                } else {
+                    type = null;
+                }
+            } else if (type != null) {
+                Method getter = getGetterMethod(propName, type);
+                if (getter == null) {
+                    throw new IllegalArgumentException("Invalid property name");
+                }
+                try {
+                    currentObject = getter.invoke(currentObject);
+                    if (currentObject == null) {
+                        return null;
+                    }
+                    type = getter.getReturnType();
+                } catch (Exception e) {
+                    throw new IllegalArgumentException(
+                            "Could not access a nested property", e);
+                }
+            }
+        }
+        return currentObject;
+    }
+
+    /**
+     * Sets the value of <code>object.propertyName</code> to <code>value</code>.
+     * The property name may be nested.
+     * 
+     * @param object
+     *            the object whose property should be set (must not be null).
+     * @param propertyName
+     *            the name of the property to set (must not be null).
+     * @param value
+     *            the value to set.
+     * @throws IllegalArgumentException
+     *             if the value could not be set, e.g. due to
+     *             <code>propertyName</code> being invalid or the property being
+     *             read only.
+     * @throws IllegalStateException
+     *             if a nested property name is used and one of the nested
+     *             properties (other than the last one) is null.
+     */
+    @SuppressWarnings("unchecked")
+    public void setPropertyValue(T object, String propertyName, Object value)
+            throws IllegalArgumentException, IllegalStateException { // NOSONAR
+        assert object != null : "object must not be null";
+        assert propertyName != null : "propertyName must not be null";
+
+        StringTokenizer st = new StringTokenizer(propertyName, ".");
+        ClassMetadata<Object> typeMetadata = (ClassMetadata<Object>) this;
+        Class<?> type = null;
+        Object currentObject = object;
+        while (st.hasMoreTokens()) {
+            String propName = st.nextToken();
+            if (typeMetadata != null) {
+                PropertyMetadata pmd = typeMetadata.getProperty(propName);
+                if (pmd == null) {
+                    throw new IllegalArgumentException("Invalid property name");
+                }
+                if (!st.hasMoreTokens()) {
+                    // We have reached the end of the chain
+                    typeMetadata.setPropertyValue(currentObject, pmd, value);
+                } else {
+                    currentObject = typeMetadata.getPropertyValue(
+                            currentObject, pmd);
+                    if (currentObject == null) {
+                        throw new IllegalStateException(
+                                "A null value was found in the chain of nested properties");
+                    }
+                    if (pmd instanceof PersistentPropertyMetadata) {
+                        typeMetadata = (ClassMetadata<Object>) ((PersistentPropertyMetadata) pmd)
+                                .getTypeMetadata();
+                    } else {
+                        typeMetadata = null;
+                    }
+                    if (typeMetadata == null) {
+                        type = pmd.getType();
+                    } else {
+                        type = null;
+                    }
+                }
+            } else if (type != null) {
+                Method getter = getGetterMethod(propName, type);
+                if (getter == null) {
+                    throw new IllegalArgumentException("Invalid property name");
+                }
+                if (!st.hasMoreTokens()) {
+                    // We have reached the end of the chain
+                    Method setter = getSetterMethod(propName, type,
+                            getter.getReturnType());
+                    if (setter == null) {
+                        throw new IllegalArgumentException(
+                                "Property is read only");
+                    }
+                    try {
+                        setter.invoke(currentObject, value);
+                    } catch (Exception e) {
+                        throw new IllegalArgumentException(
+                                "Could not set the value");
+                    }
+                } else {
+                    try {
+                        currentObject = getter.invoke(currentObject);
+                        if (currentObject == null) {
+                            throw new IllegalStateException(
+                                    "A null value was found in the chain of nested properties");
+                        }
+                        type = getter.getReturnType();
+                    } catch (Exception e) {
+                        throw new IllegalArgumentException(
+                                "Could not access a nested property", e);
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj != null && obj.getClass() == getClass()) {
+            ClassMetadata<?> other = (ClassMetadata<?>) obj;
+            return mappedClass.equals(other.mappedClass)
+                    && allProperties.equals(other.allProperties)
+                    && persistentProperties.equals(other.persistentProperties);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = hash * 31 + mappedClass.hashCode();
+        hash = hash * 31 + allProperties.hashCode();
+        hash = hash * 31 + persistentProperties.hashCode();
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/CollectionUtil.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/CollectionUtil.java
new file mode 100644
index 0000000..31d6a8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/CollectionUtil.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.lang.reflect.Array;
+import java.util.Collection;
+
+public class CollectionUtil {
+
+    /**
+     * Converts a typed {@link Collection} to a typed array.
+     * 
+     * @param type
+     *            the type class
+     * @param collection
+     *            the collection to convert to an array.
+     * @return the array.
+     */
+    @SuppressWarnings("unchecked")
+    public static <T> T[] toArray(Class<T> type, Collection<T> collection) {
+        return collection.toArray((T[]) Array.newInstance(type,
+                collection.size()));
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/EntityClassMetadata.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/EntityClassMetadata.java
new file mode 100644
index 0000000..9fcb466
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/EntityClassMetadata.java
@@ -0,0 +1,171 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+
+/**
+ * An extended version of {@link ClassMetadata} that provides additional
+ * information about classes annotated with the <code>Entity</code> annotation.
+ * 
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public class EntityClassMetadata<T> extends ClassMetadata<T> {
+
+    private static final long serialVersionUID = -4870942071257502328L;
+    private final String entityName;
+    private String versionProperty;
+    private String identifierProperty;
+
+    /**
+     * Creates a new instance of <code>EntityClassMetadata</code>.
+     * 
+     * @param mappedClass
+     *            the entity class (must not be null).
+     * @param entityName
+     *            the entity name (must not be null).
+     */
+    EntityClassMetadata(Class<T> mappedClass, String entityName) {
+        super(mappedClass);
+        assert entityName != null : "entityName must not be null";
+        this.entityName = entityName;
+    }
+
+    /**
+     * Sets the name of the property that contains the version, if any.
+     * 
+     * @param propertyName
+     *            the property name, may be null.
+     */
+    void setVersionPropertyName(String propertyName) {
+        if (propertyName != null) {
+            PropertyMetadata pm = getProperty(propertyName);
+            if (pm == null || !(pm instanceof PersistentPropertyMetadata)) {
+                throw new IllegalArgumentException("Invalid property");
+            }
+        }
+        this.versionProperty = propertyName;
+    }
+
+    /**
+     * Sets the name of the property that contains the identifier, if any.
+     * 
+     * @param propertyName
+     *            the property name, may be null.
+     * @throws IllegalArgumentException
+     *             if <code>propertyName</code> is invalid (i.e. the property
+     *             does not exist or is transient).
+     */
+    void setIdentifierPropertyName(String propertyName)
+            throws IllegalArgumentException {
+        if (propertyName != null) {
+            PropertyMetadata pm = getProperty(propertyName);
+            if (pm == null || !(pm instanceof PersistentPropertyMetadata)) {
+                throw new IllegalArgumentException("Invalid property");
+            }
+        }
+        this.identifierProperty = propertyName;
+    }
+
+    /**
+     * The name of the entity. If no explicit entity name has been given, this
+     * is the simple class name.
+     */
+    public String getEntityName() {
+        return entityName;
+    }
+
+    /**
+     * If the entity has a version property or not.
+     * 
+     * @see #getVersionProperty()
+     */
+    public boolean hasVersionProperty() {
+        return versionProperty != null;
+    }
+
+    /**
+     * Gets the version property, if it exists.
+     * 
+     * @see #hasVersionProperty()
+     * @return the version property metadata, or null if not available.
+     */
+    public PersistentPropertyMetadata getVersionProperty() {
+        return versionProperty == null ? null
+                : (PersistentPropertyMetadata) getProperty(versionProperty);
+    }
+
+    /**
+     * If the entity has an identifier property or not.
+     * 
+     * @see #getIdentifierProperty()
+     * @see #hasEmbeddedIdentifier()
+     */
+    public boolean hasIdentifierProperty() {
+        return identifierProperty != null;
+    }
+
+    /**
+     * Gets the identifier property, if it exists. If
+     * {@link #hasEmbeddedIdentifier() } returns true, this property is the
+     * embedded identifier.
+     * 
+     * @see #hasIdentifierProperty()
+     * @see #hasEmbeddedIdentifier()
+     * @return the identifier property metadata, or null if not available.
+     */
+    public PersistentPropertyMetadata getIdentifierProperty() {
+        return identifierProperty == null ? null
+                : (PersistentPropertyMetadata) getProperty(identifierProperty);
+    }
+
+    /**
+     * If the entity has an embedded identifier. This property cannot be true
+     * unless {@link #hasIdentifierProperty() } also returns true.
+     */
+    public boolean hasEmbeddedIdentifier() {
+        return hasIdentifierProperty()
+                && getIdentifierProperty().getPropertyKind() == PropertyKind.EMBEDDED;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) { // Includes a check of the parameter class
+            EntityClassMetadata<?> other = (EntityClassMetadata<?>) obj;
+            return ( other == null ? false : entityName.equals(other.entityName) )
+                    && (versionProperty == null ? other.versionProperty == null
+                            : versionProperty.equals(other.versionProperty))
+                    && (identifierProperty == null ? other.identifierProperty == null
+                            : identifierProperty
+                                    .equals(other.identifierProperty));
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = super.hashCode();
+        hash = hash * 31 + entityName.hashCode();
+        if (versionProperty != null) {
+            hash = hash * 31 + versionProperty.hashCode();
+        }
+        if (identifierProperty != null) {
+            hash = hash * 31 + identifierProperty.hashCode();
+        }
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/EntityDelegate.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/EntityDelegate.java
new file mode 100644
index 0000000..cbb2d7b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/EntityDelegate.java
@@ -0,0 +1,1196 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityNotFoundException;
+import javax.persistence.TransactionRequiredException;
+import javax.persistence.TypedQuery;
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Join;
+import javax.persistence.criteria.JoinType;
+import javax.persistence.criteria.Order;
+import javax.persistence.criteria.Path;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.eclipse.osbp.dsl.dto.lib.services.IQuery;
+import org.eclipse.osbp.dsl.dto.lib.services.SortBy;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LAdvancedFilterableSupport;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LAnd;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Equal;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Greater;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Less;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LOr;
+
+/**
+ * A read-only entity provider that works with a local {@link EntityManager}.
+ * Most important features and limitations:
+ * <ul>
+ * <li>Does not do any internal caching, all information is always accessed
+ * directly from the EntityManager</li>
+ * <li>Explicitly detaches entities by default (see
+ * {@link #isEntitiesDetached() })
+ * <ul>
+ * <li>Performs a serialize-deserialize cycle to clone entities in order to
+ * explicitly detach them from the persistence context (<b>This is ugly!</b>).</li>
+ * </ul>
+ * </li>
+ * <li>Uses lazy-loading of entities (when using detached entities, references
+ * and collections within the entities should be configured to be fetched
+ * eagerly, though)</li>
+ * </ul>
+ * 
+ * This entity provider does not perform very well, as every method call results
+ * in at least one query being sent to the entity manager. If speed is desired,
+ * <code>CachingLocalEntityProvider</code> should be used instead. However, this
+ * entity provider consumes less memory than the caching provider.
+ * 
+ * @author Petter Holmstr��m (Vaadin Ltd)
+ * @since 1.0
+ */
+public class EntityDelegate<T> implements Serializable {
+
+	private static final long serialVersionUID = 1601796410565144708L;
+	private transient EntityManager entityManager;
+	private EntityClassMetadata<T> entityClassMetadata;
+	private boolean entitiesDetached = true;
+	private Serializable serializableEntityManager;
+	private QueryModifierDelegate queryModifierDelegate;
+	private int maxResults;
+
+	/**
+	 * Creates a new <code>LocalEntityProvider</code>.
+	 * 
+	 * @param entityClass
+	 *            the entity class (must not be null).
+	 * @param entityManager
+	 *            the entity manager to use (must not be null).
+	 */
+	public EntityDelegate(Class<T> entityClass, EntityManager entityManager,
+			int maxResults) {
+		this(entityClass);
+		this.maxResults = maxResults;
+		assert entityManager != null : "entityManager must not be null";
+		setEntityManager(entityManager);
+	}
+
+	/**
+	 * Creates a new <code>LocalEntityProvider</code>. The entity manager or an
+	 * entity manager provider must be set using
+	 * {@link #setEntityManager(javax.persistence.EntityManager)} or
+	 * <code>setEntityManagerProvider(com.vaadin.addon.jpacontainer.EntityManagerProvider)</Code>
+	 * respectively.
+	 * 
+	 * @param entityClass
+	 *            the entity class (must not be null).
+	 */
+	public EntityDelegate(Class<T> entityClass) {
+		assert entityClass != null : "entityClass must not be null";
+		this.entityClassMetadata = MetadataFactory.getInstance()
+				.getEntityClassMetadata(entityClass);
+	}
+
+	// TODO Test serialization of entity manager
+	protected Object writeReplace() throws ObjectStreamException {
+		if (entityManager != null && entityManager instanceof Serializable) {
+			serializableEntityManager = (Serializable) entityManager;
+		}
+		return this;
+	}
+
+	protected Object readResolve() throws ObjectStreamException {
+		if (serializableEntityManager != null) {
+			this.entityManager = (EntityManager) serializableEntityManager;
+		}
+		return this;
+	}
+
+	/**
+	 * Sets the entity manager.
+	 * 
+	 * @param entityManager
+	 *            the entity manager to set.
+	 */
+	public void setEntityManager(EntityManager entityManager) {
+		this.entityManager = entityManager;
+	}
+
+	/**
+	 * Gets the metadata for the entity class.
+	 * 
+	 * @return the metadata (never null).
+	 */
+	protected EntityClassMetadata<T> getEntityClassMetadata() {
+		return this.entityClassMetadata;
+	}
+
+	/**
+	 * Gets the entity manager. If no entity manager has been set, the one
+	 * returned by the registered entity manager provider is returned.
+	 * 
+	 * @return the entity manager.
+	 */
+	public EntityManager getEntityManager() {
+		return entityManager;
+	}
+
+	/**
+	 * Gets the entity manager.
+	 * 
+	 * @return the entity manager (never null).
+	 * @throws IllegalStateException
+	 *             if no entity manager is set.
+	 */
+	protected EntityManager doGetEntityManager() throws IllegalStateException {
+		if (getEntityManager() == null) {
+			throw new IllegalStateException("No entity manager specified");
+		}
+		return getEntityManager();
+	}
+
+	/**
+	 * Creates a copy of <code>original</code> and adds an entry for the primary
+	 * key to the end of the list.
+	 * 
+	 * @param original
+	 *            the original list of sorting instructions (must not be null,
+	 *            but may be empty).
+	 * @return a new list with the added entry for the primary key.
+	 */
+	protected List<SortBy> addPrimaryKeyToSortList(List<SortBy> original) {
+		if (sortByListContainsPrimaryKey(original)) {
+			return original;
+		}
+		ArrayList<SortBy> newList = new ArrayList<SortBy>();
+		newList.addAll(original);
+		if (getEntityClassMetadata().hasEmbeddedIdentifier()) {
+			for (String p : getEntityClassMetadata().getIdentifierProperty()
+					.getTypeMetadata().getPersistentPropertyNames()) {
+				newList.add(new SortBy(getEntityClassMetadata()
+						.getIdentifierProperty().getName() + "." + p, true));
+			}
+		} else {
+			newList.add(new SortBy(getEntityClassMetadata()
+					.getIdentifierProperty().getName(), true));
+		}
+		return Collections.unmodifiableList(newList);
+	}
+
+	/**
+	 * @param original
+	 * @return
+	 */
+	private boolean sortByListContainsPrimaryKey(List<SortBy> original) {
+		for (SortBy sb : original) {
+			EntityClassMetadata<T> metadata = getEntityClassMetadata();
+			if (metadata.hasEmbeddedIdentifier()) {
+				if (sb.getPropertyId()
+						.equals(metadata.getIdentifierProperty()
+								.getTypeMetadata().getPersistentPropertyNames()
+								.iterator().next())) {
+					return true;
+				}
+			} else {
+				if (sb.getPropertyId().equals(
+						metadata.getIdentifierProperty().getName())) {
+					return true;
+				}
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Translates SortBy instances, which possibly contain nested properties
+	 * (e.g. name.firstName, name.lastName) into Order instances which can be
+	 * used in a CriteriaQuery.
+	 * 
+	 * @param sortBy
+	 *            the SortBy instance to translate
+	 * @param swapSortOrder
+	 *            swaps the specified sort order if true.
+	 * @param cb
+	 *            the {@link CriteriaBuilder} to use
+	 * @param root
+	 *            the {@link CriteriaQuery} {@link Root} to be used.
+	 * @return
+	 */
+	protected Order translateSortBy(SortBy sortBy, boolean swapSortOrder,
+			CriteriaBuilder cb, Root<T> root) {
+		String sortedPropId = sortBy.getPropertyId().toString();
+		// First split the id and build a Path.
+		String[] idStrings = sortedPropId.split("\\.");
+		Path<T> path = null;
+		if (idStrings.length > 1 && !isEmbedded(idStrings[0])) {
+			// This is a nested property, we need to LEFT JOIN
+			path = root.join(idStrings[0], JoinType.LEFT);
+			for (int i = 1; i < idStrings.length; i++) {
+				if (i < idStrings.length - 1) {
+					path = ((Join<?, ?>) path)
+							.join(idStrings[i], JoinType.LEFT);
+				} else {
+					path = path.get(idStrings[i]);
+				}
+			}
+		} else {
+			// non-nested or embedded, we can select as usual
+			path = LAdvancedFilterableSupport.getPropertyPathTyped(root,
+					sortedPropId);
+		}
+
+		// Make and return the Order instances.
+		if (sortBy.isAscending() != swapSortOrder) {
+			return cb.asc(path);
+		} else {
+			return cb.desc(path);
+		}
+	}
+
+	/**
+	 * @param propertyId
+	 * @return
+	 */
+	private boolean isEmbedded(String propertyId) {
+		return entityClassMetadata.getProperty(propertyId).getPropertyKind() == PropertyKind.EMBEDDED;
+	}
+
+	/**
+	 * Creates a filtered query that does not do any sorting.
+	 * 
+	 * see createFilteredQuery(com.vaadin.addon.jpacontainer.EntityContainer,
+	 *      java.util.List,
+	 *      org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter.data.Container.IFilter,
+	 *      java.util.List, boolean)
+	 * @param fieldsToSelect
+	 *            the fields to select (must not be null).
+	 * @param filter
+	 *            the filter to apply, or null if no filters should be applied.
+	 * @return the query (never null).
+	 */
+	protected TypedQuery<Object> createUnsortedFilteredQuery(
+			List<String> fieldsToSelect, ILFilter filter) {
+		return createFilteredPropertyQuery(fieldsToSelect, filter, null, false);
+	}
+
+	/**
+	 * Creates a filtered, optionally sorted, query.
+	 * 
+	 * @param fieldsToSelect
+	 *            the fields to select (must not be null).
+	 * @param filter
+	 *            the filter to apply, or null if no filters should be applied.
+	 * @param sortBy
+	 *            the fields to sort by (must include at least one field), or
+	 *            null if the result should not be sorted at all.
+	 * @param swapSortOrder
+	 *            true to swap the sort order, false to use the sort order
+	 *            specified in <code>sortBy</code>. Only applies if
+	 *            <code>sortBy</code> is not null.
+	 * @return the query (never null).
+	 */
+	protected TypedQuery<Object> createFilteredPropertyQuery(
+			List<String> fieldsToSelect, ILFilter filter, List<SortBy> sortBy,
+			boolean swapSortOrder) {
+		assert fieldsToSelect != null : "fieldsToSelect must not be null";
+		assert sortBy == null || !sortBy.isEmpty() : "sortBy must be either null or non-empty";
+
+		CriteriaBuilder cb = doGetEntityManager().getCriteriaBuilder();
+		CriteriaQuery<Object> query = cb.createQuery();
+		Root<T> root = query.from(entityClassMetadata.getMappedClass());
+
+		tellDelegateQueryWillBeBuilt(cb, query);
+
+		List<Predicate> predicates = new ArrayList<Predicate>();
+		if (filter != null) {
+			predicates.add(FilterConverter.convertFilter(filter, cb, root));
+		}
+		tellDelegateFiltersWillBeAdded(cb, query, predicates);
+		if (!predicates.isEmpty()) {
+			query.where(CollectionUtil.toArray(Predicate.class, predicates));
+		}
+		tellDelegateFiltersWereAdded(cb, query);
+
+		List<Order> orderBy = new ArrayList<Order>();
+		if (sortBy != null && sortBy.size() > 0) {
+			for (SortBy sortedProperty : sortBy) {
+				orderBy.add(translateSortBy(sortedProperty, swapSortOrder, cb,
+						root));
+			}
+		}
+		tellDelegateOrderByWillBeAdded(cb, query, orderBy);
+		query.orderBy(orderBy);
+		tellDelegateOrderByWereAdded(cb, query);
+
+		if (fieldsToSelect.size() > 1
+				|| getEntityClassMetadata().hasEmbeddedIdentifier()) {
+			List<Path<?>> paths = new ArrayList<Path<?>>();
+			for (String fieldPath : fieldsToSelect) {
+				paths.add(LAdvancedFilterableSupport.getPropertyPathTyped(root,
+						fieldPath));
+			}
+			query.multiselect(paths.toArray(new Path<?>[paths.size()]));
+		} else {
+			query.select(LAdvancedFilterableSupport.getPropertyPathTyped(root,
+					fieldsToSelect.get(0)));
+		}
+		tellDelegateQueryHasBeenBuilt(cb, query);
+		return doGetEntityManager().createQuery(query);
+	}
+
+	// /**
+	// * Creates a filtered, optionally sorted, query.
+	// *
+	// * @param filter
+	// * the filter to apply, or null if no filters should be applied.
+	// * @param sortBy
+	// * the fields to sort by (must include at least one field), or
+	// * null if the result should not be sorted at all.
+	// * @param swapSortOrder
+	// * true to swap the sort order, false to use the sort order
+	// * specified in <code>sortBy</code>. Only applies if
+	// * <code>sortBy</code> is not null.
+	// * @return the query (never null).
+	// */
+	// protected TypedQuery<Long> createFilteredCountQuery(ILFilter filter,
+	// List<SortBy> sortBy, boolean swapSortOrder) {
+	// assert sortBy == null || !sortBy.isEmpty() :
+	// "sortBy must be either null or non-empty";
+	//
+	// CriteriaBuilder cb = doGetEntityManager().getCriteriaBuilder();
+	// CriteriaQuery<Long> query = cb.createQuery(Long.class);
+	// Root<T> root = query.from(entityClassMetadata.getMappedClass());
+	//
+	// tellDelegateQueryWillBeBuilt(cb, query);
+	//
+	// List<Predicate> predicates = new ArrayList<Predicate>();
+	// if (filter != null) {
+	// predicates.add(FilterConverter.convertFilter(filter, cb, root));
+	// }
+	// tellDelegateFiltersWillBeAdded(cb, query, predicates);
+	// if (!predicates.isEmpty()) {
+	// query.where(CollectionUtil.toArray(Predicate.class, predicates));
+	// }
+	// tellDelegateFiltersWereAdded(cb, query);
+	//
+	// // List<Order> orderBy = new ArrayList<Order>();
+	// // if (sortBy != null && sortBy.size() > 0) {
+	// // for (SortBy sortedProperty : sortBy) {
+	// // orderBy.add(translateSortBy(sortedProperty, swapSortOrder, cb,
+	// // root));
+	// // }
+	// // }
+	// // tellDelegateOrderByWillBeAdded(cb, query, orderBy);
+	// // query.orderBy(orderBy);
+	// // tellDelegateOrderByWereAdded(cb, query);
+	//
+	// String entityIdPropertyName = getEntityClassMetadata()
+	// .getIdentifierProperty().getName();
+	// query.select(cb.count(root.get(entityIdPropertyName)));
+	// // query.groupBy(root.get(entityIdPropertyName));
+	//
+	// tellDelegateQueryHasBeenBuilt(cb, query);
+	// return doGetEntityManager().createQuery(query);
+	// }
+
+	/**
+	 * Creates a filtered, optionally sorted, query.
+	 * 
+	 * @param filter
+	 *            the filter to apply, or null if no filters should be applied.
+	 * @param sortBy
+	 *            the fields to sort by (must include at least one field), or
+	 *            null if the result should not be sorted at all.
+	 * @param swapSortOrder
+	 *            true to swap the sort order, false to use the sort order
+	 *            specified in <code>sortBy</code>. Only applies if
+	 *            <code>sortBy</code> is not null.
+	 * @return the query (never null).
+	 */
+	@SuppressWarnings("unchecked")
+	protected TypedQuery<T> createFilteredEntityQuery(ILFilter filter,
+			List<SortBy> sortBy, boolean swapSortOrder) {
+		assert sortBy == null || !sortBy.isEmpty() : "sortBy must be either null or non-empty";
+
+		CriteriaBuilder cb = doGetEntityManager().getCriteriaBuilder();
+		CriteriaQuery<Object> query = cb.createQuery();
+		Root<T> root = query.from(entityClassMetadata.getMappedClass());
+
+		tellDelegateQueryWillBeBuilt(cb, query);
+
+		List<Predicate> predicates = new ArrayList<Predicate>();
+		if (filter != null) {
+			predicates.add(FilterConverter.convertFilter(filter, cb, root));
+		}
+		tellDelegateFiltersWillBeAdded(cb, query, predicates);
+		if (!predicates.isEmpty()) {
+			query.where(CollectionUtil.toArray(Predicate.class, predicates));
+		}
+		tellDelegateFiltersWereAdded(cb, query);
+
+		List<Order> orderBy = new ArrayList<Order>();
+		if (sortBy != null && sortBy.size() > 0) {
+			for (SortBy sortedProperty : sortBy) {
+				orderBy.add(translateSortBy(sortedProperty, swapSortOrder, cb,
+						root));
+			}
+		}
+		tellDelegateOrderByWillBeAdded(cb, query, orderBy);
+		query.orderBy(orderBy);
+		tellDelegateOrderByWereAdded(cb, query);
+
+		query.select(root);
+
+		tellDelegateQueryHasBeenBuilt(cb, query);
+		return (TypedQuery<T>) doGetEntityManager().createQuery(query);
+	}
+
+	protected boolean doContainsEntityIdentifier(Object entityId,
+			ILFilter filter) {
+		assert entityId != null : "entityId must not be null";
+		String entityIdPropertyName = getEntityClassMetadata()
+				.getIdentifierProperty().getName();
+
+		CriteriaBuilder cb = doGetEntityManager().getCriteriaBuilder();
+		CriteriaQuery<Long> query = cb.createQuery(Long.class);
+		Root<T> root = query.from(getEntityClassMetadata().getMappedClass());
+
+		tellDelegateQueryWillBeBuilt(cb, query);
+
+		List<Predicate> predicates = new ArrayList<Predicate>();
+		predicates.add(cb.equal(root.get(entityIdPropertyName),
+				cb.literal(entityId)));
+		if (filter != null) {
+			predicates.add(FilterConverter.convertFilter(filter, cb, root));
+		}
+		tellDelegateFiltersWillBeAdded(cb, query, predicates);
+		if (!predicates.isEmpty()) {
+			query.where(CollectionUtil.toArray(Predicate.class, predicates));
+		}
+		tellDelegateFiltersWereAdded(cb, query);
+
+		if (getEntityClassMetadata().hasEmbeddedIdentifier()) {
+			/*
+			 * Hibernate will generate SQL for "count(obj)" that does not run on
+			 * HSQLDB. "count(*)" works fine, but then EclipseLink won't work.
+			 * With this hack, this method should work with both Hibernate and
+			 * EclipseLink.
+			 */
+			query.select(cb.count(root.get(entityIdPropertyName).get(
+					getEntityClassMetadata().getIdentifierProperty()
+							.getTypeMetadata().getPersistentPropertyNames()
+							.iterator().next())));
+		} else {
+
+			query.select(cb.count(root.get(entityIdPropertyName)));
+		}
+		tellDelegateQueryHasBeenBuilt(cb, query);
+		TypedQuery<Long> tq = doGetEntityManager().createQuery(query);
+		return tq.getSingleResult() == 1;
+	}
+
+	public boolean containsEntityIdentifier(Object entityId, IQuery query) {
+		return doContainsEntityIdentifier(entityId, query.getFilter());
+	}
+
+	protected T doGetEntity(Object entityId) {
+		assert entityId != null : "entityId must not be null";
+		T entity = doGetEntityManager().find(
+				getEntityClassMetadata().getMappedClass(), entityId);
+		return detachEntity(entity);
+	}
+
+	public T getEntity(Object entityId) {
+		return doGetEntity(entityId);
+	}
+
+	protected Object doGetEntityIdentifierAt(ILFilter filter,
+			List<SortBy> sortBy, int index) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		TypedQuery<Object> query = createFilteredPropertyQuery(
+				Arrays.asList(getEntityClassMetadata().getIdentifierProperty()
+						.getName()), filter, addPrimaryKeyToSortList(sortBy),
+				false);
+		query.setMaxResults(1);
+		query.setFirstResult(index);
+		List<?> result = query.getResultList();
+		if (result.isEmpty()) {
+			return null;
+		} else {
+			return result.get(0);
+		}
+	}
+
+	public Object getEntityIdentifierAt(IQuery query, int index) {
+		return doGetEntityIdentifierAt(query.getFilter(), query.getSortOrder()
+				.getSortBy(), index);
+	}
+
+	protected int doGetEntityCount(ILFilter filter) {
+		String entityIdPropertyName = getEntityClassMetadata()
+				.getIdentifierProperty().getName();
+
+		CriteriaBuilder cb = doGetEntityManager().getCriteriaBuilder();
+		CriteriaQuery<Long> query = cb.createQuery(Long.class);
+		Root<T> root = query.from(getEntityClassMetadata().getMappedClass());
+
+		tellDelegateQueryWillBeBuilt(cb, query);
+
+		List<Predicate> predicates = new ArrayList<Predicate>();
+		if (filter != null) {
+			predicates.add(FilterConverter.convertFilter(filter, cb, root));
+		}
+		tellDelegateFiltersWillBeAdded(cb, query, predicates);
+		if (!predicates.isEmpty()) {
+			query.where(CollectionUtil.toArray(Predicate.class, predicates));
+		}
+		tellDelegateFiltersWereAdded(cb, query);
+
+		if (getEntityClassMetadata().hasEmbeddedIdentifier()) {
+			/*
+			 * Hibernate will generate SQL for "count(obj)" that does not run on
+			 * HSQLDB. "count(*)" works fine, but then EclipseLink won't work.
+			 * With this hack, this method should work with both Hibernate and
+			 * EclipseLink.
+			 */
+
+			query.select(cb.count(root.get(entityIdPropertyName).get(
+					getEntityClassMetadata().getIdentifierProperty()
+							.getTypeMetadata().getPersistentPropertyNames()
+							.iterator().next())));
+		} else {
+			query.select(cb.count(root.get(entityIdPropertyName)));
+		}
+		tellDelegateQueryHasBeenBuilt(cb, query);
+		TypedQuery<Long> tq = doGetEntityManager().createQuery(query);
+		return tq.getSingleResult().intValue();
+	}
+
+	public int getEntityCount(IQuery query) {
+		return doGetEntityCount(query.getFilter());
+	}
+
+	//
+	// public int getEntityIndex(Object entityId, IQuery query) {
+	// TypedQuery<Long> tQuery = createSiblingIndexQuery(entityId,
+	// query.getFilter(), query.getSortOrder().getSortBy(), true);
+	// return tQuery.getSingleResult().intValue();
+	// }
+
+	protected Object doGetFirstEntityIdentifier(ILFilter filter,
+			List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+
+		List<String> keyFields = Arrays.asList(getEntityClassMetadata()
+				.getIdentifierProperty().getName());
+		// if (getEntityClassMetadata().hasEmbeddedIdentifier()) {
+		// keyFields = new ArrayList<String>();
+		// for (String p : getEntityClassMetadata().getIdentifierProperty()
+		// .getTypeMetadata().getPersistentPropertyNames()) {
+		// keyFields.add(getEntityClassMetadata().getIdentifierProperty()
+		// .getName() + "." + p);
+		// }
+		// }
+		TypedQuery<Object> query = createFilteredPropertyQuery(keyFields,
+				filter, addPrimaryKeyToSortList(sortBy), false);
+		query.setMaxResults(1);
+		List<?> result = query.getResultList();
+		if (result.isEmpty()) {
+			return null;
+		} else {
+			return result.get(0);
+		}
+	}
+
+	public Object getFirstEntityIdentifier(IQuery query) {
+		return doGetFirstEntityIdentifier(query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	protected T doGetFirstEntity(ILFilter filter, List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+
+		TypedQuery<T> query = createFilteredEntityQuery(filter,
+				addPrimaryKeyToSortList(sortBy), false);
+		query.setMaxResults(1);
+		List<T> result = query.getResultList();
+		if (result.isEmpty()) {
+			return null;
+		} else {
+			return result.get(0);
+		}
+	}
+
+	public T getFirstEntity(IQuery query) {
+		return doGetFirstEntity(query.getFilter(), query.getSortOrder()
+				.getSortBy());
+	}
+
+	protected Object doGetLastEntityIdentifier(ILFilter filter,
+			List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		// The last 'true' parameter switches the sort order -> the last row is
+		// the first result.
+		TypedQuery<Object> query = createFilteredPropertyQuery(
+				Arrays.asList(getEntityClassMetadata().getIdentifierProperty()
+						.getName()), filter, addPrimaryKeyToSortList(sortBy),
+				true);
+		query.setMaxResults(1);
+		List<?> result = query.getResultList();
+		if (result.isEmpty()) {
+			return null;
+		} else {
+			return result.get(0);
+		}
+	}
+
+	public Object getLastEntityIdentifier(IQuery query) {
+		return doGetLastEntityIdentifier(query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	protected T doGetLastEntity(ILFilter filter, List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		// The last 'true' parameter switches the sort order -> the last row is
+		// the first result.
+		TypedQuery<T> query = createFilteredEntityQuery(filter,
+				addPrimaryKeyToSortList(sortBy), true);
+		query.setMaxResults(1);
+		List<T> result = query.getResultList();
+		if (result.isEmpty()) {
+			return null;
+		} else {
+			return result.get(0);
+		}
+	}
+
+	public T getLastEntity(IQuery query) {
+		return doGetLastEntity(query.getFilter(), query.getSortOrder()
+				.getSortBy());
+	}
+
+	/**
+	 * If <code>backwards</code> is false, this method will return the
+	 * identifier of the entity next to the entity identified by
+	 * <code>entityId</code>. If true, this method will return the identifier of
+	 * the entity previous to the entity identified by <code>entityId</code>.
+	 * <code>filter</code> and <code>sortBy</code> is used to define and limit
+	 * the list of entities to be used for determining the sibling.
+	 * 
+	 * @param entityId
+	 *            the identifier of the entity whose sibling to retrieve (must
+	 *            not be null).
+	 * @param filter
+	 *            an optional filter to limit the entities (may be null).
+	 * @param sortBy
+	 *            the order in which the list should be sorted (must not be
+	 *            null).
+	 * @param backwards
+	 *            true to fetch the previous sibling, false to fetch the next
+	 *            sibling.
+	 * @return the identifier of the "sibling".
+	 */
+	protected Object getSibling(Object entityId, ILFilter filter,
+			List<SortBy> sortBy, boolean backwards) {
+		TypedQuery<Object> query = createSiblingQuery(entityId, filter, sortBy,
+				backwards);
+		query.setMaxResults(1);
+		List<?> result = query.getResultList();
+		if (result.size() != 1) {
+			return null;
+		} else {
+			return result.get(0);
+		}
+	}
+
+	/**
+	 * This method creates a query that can be used to fetch the siblings of a
+	 * specific entity. If <code>backwards</code> is false, the query will begin
+	 * with the entity next to the entity identified by <code>entityId</code>.
+	 * If <code>backwards</code> is false, the query will begin with the entity
+	 * prior to the entity identified by <code>entityId</code>.
+	 * 
+	 * @param entityId
+	 *            the identifier of the entity whose sibling to retrieve (must
+	 *            not be null).
+	 * @param filter
+	 *            an optional filter to limit the entities (may be null).
+	 * @param sortBy
+	 *            the order in which the list should be sorted (must not be
+	 *            null).
+	 * @param backwards
+	 *            true to fetch the previous sibling, false to fetch the next
+	 *            sibling.
+	 * @return the query that will return the sibling and all the subsequent
+	 *         entities unless limited.
+	 */
+	protected TypedQuery<Object> createSiblingQuery(Object entityId,
+			ILFilter filter, List<SortBy> sortBy, boolean backwards) {
+		assert entityId != null : "entityId must not be null";
+		assert sortBy != null : "sortBy must not be null";
+		ILFilter limitingFilter;
+		sortBy = addPrimaryKeyToSortList(sortBy);
+		if (sortBy.size() == 1) {
+			// The list is sorted by primary key
+			if (backwards) {
+				limitingFilter = new Less(getEntityClassMetadata()
+						.getIdentifierProperty().getName(), entityId);
+			} else {
+				limitingFilter = new Greater(getEntityClassMetadata()
+						.getIdentifierProperty().getName(), entityId);
+			}
+		} else {
+			// We have to fetch the values of the sorted fields
+			T currentEntity = getEntity(entityId);
+			if (currentEntity == null) {
+				throw new EntityNotFoundException(
+						"No entity found with the ID " + entityId);
+			}
+			// Collect the values into a map for easy access
+			Map<Object, Object> filterValues = new HashMap<Object, Object>();
+			for (SortBy sb : sortBy) {
+				filterValues.put(
+						sb.getPropertyId(),
+						getEntityClassMetadata().getPropertyValue(
+								currentEntity, sb.getPropertyId().toString()));
+			}
+			// Now we can build a filter that limits the query to the entities
+			// below entityId
+			List<ILFilter> orFilters = new ArrayList<ILFilter>();
+			for (int i = sortBy.size() - 1; i >= 0; i--) {
+				// TODO Document this code snippet once it works
+				// TODO What happens with null values?
+				List<ILFilter> caseFilters = new ArrayList<ILFilter>();
+				SortBy sb;
+				for (int j = 0; j < i; j++) {
+					sb = sortBy.get(j);
+					caseFilters.add(new Equal(sb.getPropertyId(), filterValues
+							.get(sb.getPropertyId())));
+				}
+				sb = sortBy.get(i);
+				if (sb.isAscending() ^ backwards) {
+					caseFilters.add(new Greater(sb.getPropertyId(),
+							filterValues.get(sb.getPropertyId())));
+				} else {
+					caseFilters.add(new Less(sb.getPropertyId(), filterValues
+							.get(sb.getPropertyId())));
+				}
+				orFilters.add(new LAnd(CollectionUtil.toArray(ILFilter.class,
+						caseFilters)));
+			}
+			limitingFilter = new LOr(CollectionUtil.toArray(ILFilter.class,
+					orFilters));
+		}
+		// Now, we can create the query
+		ILFilter queryFilter;
+		if (filter == null) {
+			queryFilter = limitingFilter;
+		} else {
+			queryFilter = new LAnd(filter, limitingFilter);
+		}
+		TypedQuery<Object> query = createFilteredPropertyQuery(
+				Arrays.asList(getEntityClassMetadata().getIdentifierProperty()
+						.getName()), queryFilter, sortBy, backwards);
+		return query;
+	}
+
+	// /**
+	// * This method creates a query that can be used to fetch the siblings of a
+	// * specific entity. If <code>backwards</code> is false, the query will
+	// begin
+	// * with the entity next to the entity identified by <code>entityId</code>.
+	// * If <code>backwards</code> is false, the query will begin with the
+	// entity
+	// * prior to the entity identified by <code>entityId</code>.
+	// *
+	// * @param entityId
+	// * the identifier of the entity whose sibling to retrieve (must
+	// * not be null).
+	// * @param filter
+	// * an optional filter to limit the entities (may be null).
+	// * @param sortBy
+	// * the order in which the list should be sorted (must not be
+	// * null).
+	// * @param backwards
+	// * true to fetch the previous sibling, false to fetch the next
+	// * sibling.
+	// * @return the query that will return the sibling and all the subsequent
+	// * entities unless limited.
+	// */
+	// protected TypedQuery<Long> createSiblingIndexQuery(Object entityId,
+	// ILFilter filter, List<SortBy> sortBy, boolean backwards) {
+	// assert entityId != null : "entityId must not be null";
+	// assert sortBy != null : "sortBy must not be null";
+	// ILFilter limitingFilter;
+	// sortBy = addPrimaryKeyToSortList(sortBy);
+	// if (sortBy.size() == 1) {
+	// // The list is sorted by primary key
+	// if (backwards) {
+	// limitingFilter = new Less(getEntityClassMetadata()
+	// .getIdentifierProperty().getName(), entityId);
+	// } else {
+	// limitingFilter = new Greater(getEntityClassMetadata()
+	// .getIdentifierProperty().getName(), entityId);
+	// }
+	// } else {
+	// // We have to fetch the values of the sorted fields
+	// T currentEntity = getEntity(entityId);
+	// if (currentEntity == null) {
+	// throw new EntityNotFoundException(
+	// "No entity found with the ID " + entityId);
+	// }
+	// // Collect the values into a map for easy access
+	// Map<Object, Object> filterValues = new HashMap<Object, Object>();
+	// for (SortBy sb : sortBy) {
+	// filterValues.put(
+	// sb.getPropertyId(),
+	// getEntityClassMetadata().getPropertyValue(
+	// currentEntity, sb.getPropertyId().toString()));
+	// }
+	// // Now we can build a filter that limits the query to the entities
+	// // below entityId
+	// List<ILFilter> orFilters = new ArrayList<ILFilter>();
+	// for (int i = sortBy.size() - 1; i >= 0; i--) {
+	// // TODO Document this code snippet once it works
+	// // TODO What happens with null values?
+	// List<ILFilter> caseFilters = new ArrayList<ILFilter>();
+	// SortBy sb;
+	// for (int j = 0; j < i; j++) {
+	// sb = sortBy.get(j);
+	// caseFilters.add(new Equal(sb.getPropertyId(), filterValues
+	// .get(sb.getPropertyId())));
+	// }
+	// sb = sortBy.get(i);
+	// if (sb.isAscending() ^ backwards) {
+	// caseFilters.add(new Greater(sb.getPropertyId(),
+	// filterValues.get(sb.getPropertyId())));
+	// } else {
+	// caseFilters.add(new Less(sb.getPropertyId(), filterValues
+	// .get(sb.getPropertyId())));
+	// }
+	// orFilters.add(new LAnd(CollectionUtil.toArray(ILFilter.class,
+	// caseFilters)));
+	// }
+	// limitingFilter = new LOr(CollectionUtil.toArray(ILFilter.class,
+	// orFilters));
+	// }
+	// // Now, we can create the query
+	// ILFilter queryFilter;
+	// if (filter == null) {
+	// queryFilter = limitingFilter;
+	// } else {
+	// queryFilter = new LAnd(filter, limitingFilter);
+	// }
+	// TypedQuery<Long> query = createFilteredCountQuery(queryFilter, sortBy,
+	// backwards);
+	// return query;
+	// }
+
+	protected Object doGetNextEntityIdentifier(Object entityId,
+			ILFilter filter, List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		return getSibling(entityId, filter, sortBy, false);
+	}
+
+	public Object getNextEntityIdentifier(Object entityId, IQuery query) {
+		return doGetNextEntityIdentifier(entityId, query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	protected T doGetNextEntity(Object entityId, ILFilter filter,
+			List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		Object resultId = getSibling(entityId, filter, sortBy, false);
+		if (resultId != null) {
+			return getEntity(resultId);
+		}
+		return null;
+	}
+
+	public T getNextEntity(Object entityId, IQuery query) {
+		return doGetNextEntity(entityId, query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	protected Object doGetPreviousEntityIdentifier(Object entityId,
+			ILFilter filter, List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		return getSibling(entityId, filter, sortBy, true);
+	}
+
+	public Object getPreviousEntityIdentifier(Object entityId, IQuery query) {
+		return doGetPreviousEntityIdentifier(entityId, query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	protected T doGetPreviousEntity(Object entityId, ILFilter filter,
+			List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		Object resultId = getSibling(entityId, filter, sortBy, true);
+		if (resultId != null) {
+			return getEntity(resultId);
+		}
+		return null;
+	}
+
+	public T getPreviousEntity(Object entityId, IQuery query) {
+		return doGetPreviousEntity(entityId, query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	/**
+	 * Detaches <code>entity</code> from the entity manager. If
+	 * <code>entity</code> is null, then null is returned. If
+	 * {@link #isEntitiesDetached() } is false, <code>entity</code> is returned
+	 * directly.
+	 * 
+	 * @param entity
+	 *            the entity to detach.
+	 * @return the detached entity.
+	 */
+	protected T detachEntity(T entity) {
+		if (entity == null) {
+			return null;
+		}
+		if (isEntitiesDetached()) {
+			getEntityManager().detach(entity);
+		}
+		return entity;
+	}
+
+	public boolean isEntitiesDetached() {
+		return entitiesDetached;
+	}
+
+	public void setEntitiesDetached(boolean detached)
+			throws UnsupportedOperationException {
+		this.entitiesDetached = detached;
+	}
+
+	protected List<Object> doGetAllEntityIdentifiers(ILFilter filter,
+			List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		sortBy = addPrimaryKeyToSortList(sortBy);
+		TypedQuery<Object> query = createFilteredPropertyQuery(
+				Arrays.asList(getEntityClassMetadata().getIdentifierProperty()
+						.getName()), filter, sortBy, false);
+		return Collections.unmodifiableList(query.getResultList());
+	}
+
+	public List<Object> getAllEntityIdentifiers(IQuery query) {
+		return doGetAllEntityIdentifiers(query.getFilter(), query
+				.getSortOrder().getSortBy());
+	}
+
+	protected List<T> doGetAllEntities(ILFilter filter, List<SortBy> sortBy) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		sortBy = addPrimaryKeyToSortList(sortBy);
+		TypedQuery<T> query = createFilteredEntityQuery(filter, sortBy, false);
+		query.setMaxResults(maxResults);
+		return Collections.unmodifiableList(query.getResultList());
+	}
+
+	public List<T> getAllEntities(IQuery query) {
+		return doGetAllEntities(query.getFilter(), query.getSortOrder()
+				.getSortBy());
+	}
+
+	protected List<T> doGetAllEntities(ILFilter filter, List<SortBy> sortBy,
+			int startIndex) {
+		if (sortBy == null) {
+			sortBy = Collections.emptyList();
+		}
+		sortBy = addPrimaryKeyToSortList(sortBy);
+		TypedQuery<T> query = createFilteredEntityQuery(filter, sortBy, false);
+		query.setFirstResult(startIndex);
+		query.setMaxResults(maxResults);
+		return Collections.unmodifiableList(query.getResultList());
+	}
+
+	public List<T> getAllEntities(IQuery query, int startIndex) {
+		return doGetAllEntities(query.getFilter(), query.getSortOrder()
+				.getSortBy(), startIndex);
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * com.vaadin.addon.jpacontainer.EntityProvider#setQueryModifierDelegate
+	 * (com.vaadin.addon.jpacontainer.EntityProvider.QueryModifierDelegate)
+	 */
+	public void setQueryModifierDelegate(QueryModifierDelegate delegate) {
+		this.queryModifierDelegate = delegate;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * com.vaadin.addon.jpacontainer.EntityProvider#getQueryModifierDelegate()
+	 */
+	public QueryModifierDelegate getQueryModifierDelegate() {
+		return queryModifierDelegate;
+	}
+
+	// QueryModifierDelegate helper methods
+
+	private void tellDelegateQueryWillBeBuilt(CriteriaBuilder cb,
+			CriteriaQuery<?> query) {
+		if (queryModifierDelegate != null) {
+			queryModifierDelegate.queryWillBeBuilt(cb, query);
+		}
+	}
+
+	private void tellDelegateQueryHasBeenBuilt(CriteriaBuilder cb,
+			CriteriaQuery<?> query) {
+		if (queryModifierDelegate != null) {
+			queryModifierDelegate.queryHasBeenBuilt(cb, query);
+		}
+	}
+
+	private void tellDelegateFiltersWillBeAdded(CriteriaBuilder cb,
+			CriteriaQuery<?> query, List<Predicate> predicates) {
+		if (queryModifierDelegate != null) {
+			queryModifierDelegate.filtersWillBeAdded(cb, query, predicates);
+		}
+	}
+
+	private void tellDelegateFiltersWereAdded(CriteriaBuilder cb,
+			CriteriaQuery<?> query) {
+		if (queryModifierDelegate != null) {
+			queryModifierDelegate.filtersWereAdded(cb, query);
+		}
+	}
+
+	private void tellDelegateOrderByWillBeAdded(CriteriaBuilder cb,
+			CriteriaQuery<?> query, List<Order> orderBy) {
+		if (queryModifierDelegate != null) {
+			queryModifierDelegate.orderByWillBeAdded(cb, query, orderBy);
+		}
+	}
+
+	private void tellDelegateOrderByWereAdded(CriteriaBuilder cb,
+			CriteriaQuery<?> query) {
+		if (queryModifierDelegate != null) {
+			queryModifierDelegate.orderByWasAdded(cb, query);
+		}
+	}
+
+	public Object getIdentifier(T entity) {
+		return entityClassMetadata.getPropertyValue(entity, entityClassMetadata
+				.getIdentifierProperty().getName());
+	}
+
+	public T refreshEntity(T entity) {
+		if (getEntityManager().contains(entity)) {
+			try {
+				getEntityManager().refresh(entity);
+			} catch (IllegalArgumentException e) {
+				// detached, removed or something, get by id from em and refresh
+				// than non-detached object
+				entity = findAndRefresh(entity);
+			} catch (EntityNotFoundException e) {
+				return null;
+			} catch (TransactionRequiredException e) {
+				// TODO: handle exception, only in transactional?
+			}
+		} else {
+			entity = findAndRefresh(entity);
+		}
+		return entity;
+	}
+
+	private T findAndRefresh(T entity) {
+		entity = getEntityManager().find(
+				getEntityClassMetadata().getMappedClass(),
+				getIdentifier(entity));
+		if (entity != null) {
+			try {
+				// now try to refresh the attached entity
+				getEntityManager().refresh(entity);
+				entity = detachEntity(entity);
+			} catch (TransactionRequiredException e) {
+				// NOP
+			} catch (Exception e) {
+				throw new RuntimeException(e);
+			}
+		}
+		return entity;
+	}
+
+	// /*
+	// * (non-Javadoc)
+	// *
+	// * @see
+	// * com.vaadin.addon.jpacontainer.EntityContainer#setLazyLoadingDelegate(
+	// * com.vaadin.addon.jpacontainer.EntityContainer.LazyLoadingDelegate)
+	// */
+	// public void setLazyLoadingDelegate(LazyLoadingDelegate delegate) {
+	// lazyLoadingDelegate = delegate;
+	// if (lazyLoadingDelegate != null) {
+	// lazyLoadingDelegate.setEntityProvider(this);
+	// }
+	// }
+	//
+	// public LazyLoadingDelegate getLazyLoadingDelegate() {
+	// return lazyLoadingDelegate;
+	// }
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see com.vaadin.addon.jpacontainer.EntityProvider#refresh()
+	 */
+	public void refresh() {
+		// Nothing to do in this implementation, since we don't keep any
+		// items/entities cached.
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/FilterConverter.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/FilterConverter.java
new file mode 100644
index 0000000..fd36025
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/FilterConverter.java
@@ -0,0 +1,454 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Expression;
+import javax.persistence.criteria.From;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LAdvancedFilterableSupport;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LAnd;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LBetween;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Equal;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Greater;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LIn;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LIsNull;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LJoinFilter;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LLike;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LNot;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LOr;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LSimpleStringFilter;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Converts a Vaadin 6.6 container filter into a JPA criteria predicate.
+ *
+ * @since 2.0
+ */
+public class FilterConverter {
+
+	/**
+	 * Interface for a converter that can convert a certain kind of
+	 * {@link ILFilter} to a {@link Predicate}.
+	 */
+	private interface Converter {
+		
+		/**
+		 * Can convert.
+		 *
+		 * @param filter
+		 *            the filter
+		 * @return true, if successful
+		 */
+		public boolean canConvert(ILFilter filter);
+
+		/**
+		 * To predicate.
+		 *
+		 * @param <X>
+		 *            the generic type
+		 * @param <Y>
+		 *            the generic type
+		 * @param filter
+		 *            the filter
+		 * @param cb
+		 *            the cb
+		 * @param root
+		 *            the root
+		 * @return the predicate
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root);
+	}
+
+	/**
+	 * Converts {@link LAnd} filters.
+	 */
+	private static class AndConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LAnd;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			return cb.and(convertFiltersToArray(((LAnd) filter).getFilters(),
+					cb, root));
+		}
+	}
+
+	/**
+	 * Converts {@link LOr} filters.
+	 */
+	private static class OrConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LOr;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			return cb.or(convertFiltersToArray(((LOr) filter).getFilters(), cb,
+					root));
+		}
+	}
+
+	/**
+	 * Converts {@link LCompare} filters ({@link Equal}, {@link Greater}, etc).
+	 */
+	private static class CompareConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LCompare;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		@SuppressWarnings({ "rawtypes", "unchecked" })
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LCompare compare = (LCompare) filter;
+			Expression propertyExpr = LAdvancedFilterableSupport
+					.getPropertyPath(root, compare.getPropertyId());
+			if (LCompare.Operation.EQUAL == compare.getOperation()
+					&& compare.getValue() == null) {
+				// Make an IS NULL instead if "= null" is passed
+				return convertFilter(new LIsNull(compare.getPropertyId()), cb,
+						root);
+			}
+			Expression valueExpr = cb.literal(compare.getValue());
+			switch (compare.getOperation()) {
+			case EQUAL:
+				return cb.equal(propertyExpr, valueExpr);
+			case GREATER:
+				return cb.greaterThan(propertyExpr, valueExpr);
+			case GREATER_OR_EQUAL:
+				return cb.greaterThanOrEqualTo(propertyExpr, valueExpr);
+			case LESS:
+				return cb.lessThan(propertyExpr, valueExpr);
+			case LESS_OR_EQUAL:
+				return cb.lessThanOrEqualTo(propertyExpr, valueExpr);
+			default: // Shouldn't happen
+				return null;
+			}
+		}
+	}
+
+	/**
+	 * Converts {@link LIsNull} filters.
+	 */
+	private static class IsNullConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LIsNull;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			return cb.isNull(LAdvancedFilterableSupport.getPropertyPath(root,
+					((LIsNull) filter).getPropertyId()));
+		}
+	}
+
+	/**
+	 * Converts {@link LSimpleStringFilter} filters.
+	 */
+	private static class SimpleStringFilterConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LSimpleStringFilter;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LSimpleStringFilter stringFilter = (LSimpleStringFilter) filter;
+			String filterString = stringFilter.getFilterString();
+			if (stringFilter.isOnlyMatchPrefix()) {
+				filterString = filterString + "%";
+			} else {
+				filterString = "%" + filterString + "%";
+			}
+			if (stringFilter.isIgnoreCase()) {
+				return cb.like(cb.upper(LAdvancedFilterableSupport
+						.getPropertyPath(root, stringFilter.getPropertyId()
+								.toString())), cb.upper(cb
+						.literal(filterString)));
+			} else {
+				return cb.like(LAdvancedFilterableSupport.getPropertyPath(root,
+						stringFilter.getPropertyId().toString()), cb
+						.literal(filterString));
+			}
+		}
+	}
+
+	/**
+	 * Converts {@link LLike} filters.
+	 */
+	private static class LikeConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LLike;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LLike like = (LLike) filter;
+			if (like.isCaseSensitive()) {
+				return cb.like(LAdvancedFilterableSupport.getPropertyPath(root,
+						like.getPropertyId().toString()), cb.literal(like
+						.getValue()));
+			} else {
+				return cb.like(
+						cb.upper(LAdvancedFilterableSupport.getPropertyPath(
+								root, like.getPropertyId().toString())), cb
+								.upper(cb.literal(like.getValue())));
+			}
+		}
+	}
+
+	/**
+	 * The Class BetweenConverter.
+	 */
+	private static class BetweenConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LBetween;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		@SuppressWarnings({ "unchecked", "rawtypes" })
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LBetween between = (LBetween) filter;
+			Expression<? extends Comparable> field = LAdvancedFilterableSupport
+					.getPropertyPath(root, between.getPropertyId());
+			Expression<? extends Comparable> from = cb.literal(between
+					.getStartValue());
+			Expression<? extends Comparable> to = cb.literal(between
+					.getEndValue());
+			return cb.between(field, from, to);
+		}
+	}
+
+	/**
+	 * The Class InConverter.
+	 */
+	private static class InConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LIn;
+		}
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LIn in = (LIn) filter;
+			return root.get(in.getPropertyId()).in(in.getValues());
+		}
+	}
+	
+	/**
+	 * The Class JoinFilterConverter.
+	 */
+	private static class JoinFilterConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LJoinFilter;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LJoinFilter hibernateJoin = (LJoinFilter) filter;
+			From<X, Y> join = root.join(hibernateJoin.getJoinProperty());
+			return cb.and(convertFiltersToArray(hibernateJoin.getFilters(), cb,
+					join));
+		}
+
+	}
+
+	/**
+	 * The Class NotFilterConverter.
+	 */
+	private static class NotFilterConverter implements Converter {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#canConvert(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter)
+		 */
+		public boolean canConvert(ILFilter filter) {
+			return filter instanceof LNot;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.FilterConverter.Converter#toPredicate(org.eclipse.osbp.dsl.dto.lib.services.filters.ILFilter, javax.persistence.criteria.CriteriaBuilder, javax.persistence.criteria.From)
+		 */
+		public <X, Y> Predicate toPredicate(ILFilter filter, CriteriaBuilder cb,
+				From<X, Y> root) {
+			LNot not = (LNot) filter;
+			return cb.not(convertFilter(not.getFilter(), cb, root));
+		}
+	}
+
+	/** The converters. */
+	private static Collection<Converter> converters;
+	static {
+		converters = Collections.unmodifiableCollection(Arrays.asList(
+				new AndConverter(), new OrConverter(), new CompareConverter(),
+				new IsNullConverter(), new SimpleStringFilterConverter(),
+				new LikeConverter(), new BetweenConverter(), new InConverter(),
+				new JoinFilterConverter(), new NotFilterConverter()));
+	}
+
+	/**
+	 * Convert a single {@link ILFilter} to a criteria {@link Predicate}.
+	 *
+	 * @param <X>
+	 *            the generic type
+	 * @param <Y>
+	 *            the generic type
+	 * @param filter
+	 *            the {@link ILFilter} to convert
+	 * @param criteriaBuilder
+	 *            the {@link CriteriaBuilder} to use when creating the
+	 *            {@link Predicate}
+	 * @param root
+	 *            the {@link CriteriaQuery} {@link Root} to use for finding
+	 *            fields.
+	 * @return a {@link Predicate} representing the {@link ILFilter} or null if
+	 *         conversion failed.
+	 */
+	public static <X, Y> Predicate convertFilter(ILFilter filter,
+			CriteriaBuilder criteriaBuilder, From<X, Y> root) {
+		assert filter != null : "filter must not be null";
+
+		for (Converter c : converters) {
+			if (c.canConvert(filter)) {
+				return c.toPredicate(filter, criteriaBuilder, root);
+			}
+		}
+
+		throw new IllegalStateException("Cannot find any converters for "
+				+ filter.getClass().getSimpleName() + " filters!");
+	}
+
+	/**
+	 * Converts a collection of {@link ILFilter} into a list of
+	 * {@link Predicate} .
+	 *
+	 * @param <X>
+	 *            the generic type
+	 * @param <Y>
+	 *            the generic type
+	 * @param filters
+	 *            Collection of {@link ILFilter}
+	 * @param criteriaBuilder
+	 *            the criteria builder
+	 * @param root
+	 *            the root
+	 * @return List of {@link Predicate}
+	 */
+	public static <X, Y> List<Predicate> convertFilters(
+			Collection<ILFilter> filters, CriteriaBuilder criteriaBuilder,
+			From<X, Y> root) {
+		List<Predicate> result = new ArrayList<Predicate>();
+		for (ILFilter filter : filters) {
+			result.add(convertFilter(filter, criteriaBuilder, root));
+		}
+		return result;
+	}
+
+	/**
+	 * Convert filters to array.
+	 *
+	 * @param <X>
+	 *            the generic type
+	 * @param <Y>
+	 *            the generic type
+	 * @param filters
+	 *            the filters
+	 * @param criteriaBuilder
+	 *            the criteria builder
+	 * @param root
+	 *            the root
+	 * @return the predicate[]
+	 */
+	private static <X, Y> Predicate[] convertFiltersToArray(
+			Collection<ILFilter> filters, CriteriaBuilder criteriaBuilder,
+			From<X, Y> root) {
+		return CollectionUtil.toArray(Predicate.class,
+				convertFilters(filters, criteriaBuilder, root));
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/MetadataFactory.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/MetadataFactory.java
new file mode 100644
index 0000000..ec1d8c0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/MetadataFactory.java
@@ -0,0 +1,459 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.beans.Introspector;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.persistence.ElementCollection;
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.OneToMany;
+import javax.persistence.OneToOne;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+
+import org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata.PersistentPropertyMetadata.AccessType;
+
+/**
+ * Factory for creating and populating {@link ClassMetadata} and
+ * {@link EntityClassMetadata} instances.
+ * 
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public class MetadataFactory {
+
+    private static MetadataFactory INSTANCE;
+    private Map<Class<?>, ClassMetadata<?>> metadataMap = new HashMap<Class<?>, ClassMetadata<?>>();
+
+    protected MetadataFactory() {
+        // NOP
+    }
+
+    /**
+     * Gets the singleton instance of this factory.
+     * 
+     * @return the factory instance (never null).
+     */
+    public static MetadataFactory getInstance() {
+        if (INSTANCE == null) {
+            INSTANCE = new MetadataFactory();
+        }
+        return INSTANCE;
+    }
+
+    /**
+     * Extracts the entity class metadata from <code>mappedClass</code>. The
+     * access type (field or method) will be determined from the location of the
+     * {@link Id} or {@link EmbeddedId} annotation. If both of these are
+     * missing, this method will fail. This method will also fail if
+     * <code>mappedClass</code> lacks the {@link Entity} annotation.
+     * 
+     * @param mappedClass
+     *            the mapped class (must not be null).
+     * @return the class metadata.
+     * @throws IllegalArgumentException
+     *             if no metadata could be extracted.
+     */
+    public <T> EntityClassMetadata<T> getEntityClassMetadata(
+            Class<T> mappedClass) throws IllegalArgumentException {
+        assert mappedClass != null : "mappedClass must not be null";
+        if (mappedClass.getAnnotation(Entity.class) == null) {
+            throw new IllegalArgumentException("The class is not an entity");
+        }
+        PersistentPropertyMetadata.AccessType accessType = determineAccessType(mappedClass);
+        if (accessType == null) {
+            throw new IllegalArgumentException(
+                    "The access type could not be determined");
+        } else {
+            return (EntityClassMetadata<T>) getClassMetadata(mappedClass,
+                    accessType);
+        }
+    }
+
+    /**
+     * Extracts the class metadata from <code>mappedClass</code>. If
+     * <code>mappedClass</code> is {@link Embeddable}, the result will be an
+     * instance of {@link ClassMetadata}. If <code>mappedClass</code> is an
+     * {@link Entity}, the result will be an instance of
+     * {@link EntityClassMetadata}.
+     * <p>
+     * <code>accessType</code> instructs the factory where to look for
+     * annotations and which defaults to assume if there are no annotations.
+     * 
+     * @param mappedClass
+     *            the mapped class (must not be null).
+     * @param accessType
+     *            the location where to look for annotations (must not be null).
+     * @return the class metadata.
+     * @throws IllegalArgumentException
+     *             if no metadata could be extracted.
+     */
+    @SuppressWarnings("unchecked")
+    public <T> ClassMetadata<T> getClassMetadata(Class<T> mappedClass,
+            PersistentPropertyMetadata.AccessType accessType)
+            throws IllegalArgumentException {
+        assert mappedClass != null : "mappedClass must not be null";
+        assert accessType != null : "accessType must not be null";
+
+        // Check if we already have the metadata in cache
+        ClassMetadata<T> metadata = (ClassMetadata<T>) metadataMap
+                .get(mappedClass);
+        if (metadata != null) {
+            return metadata;
+        }
+
+        // Check if we are dealing with an entity class or an embeddable class
+        Entity entity = mappedClass.getAnnotation(Entity.class);
+        Embeddable embeddable = mappedClass.getAnnotation(Embeddable.class);
+        if (entity != null) {
+            // We have an entity class
+            String entityName = entity.name().length() == 0 ? mappedClass
+                    .getSimpleName() : entity.name();
+            metadata = new EntityClassMetadata<T>(mappedClass, entityName);
+            // Put the metadata instance in the cache in case it is referenced
+            // from loadProperties()
+            metadataMap.put(mappedClass, metadata);
+            loadProperties(mappedClass, metadata, accessType);
+
+            // Locate the version and identifier properties
+            EntityClassMetadata<T> entityMetadata = (EntityClassMetadata<T>) metadata;
+            for (PersistentPropertyMetadata pm : entityMetadata
+                    .getPersistentProperties()) {
+
+                if (pm.getAnnotation(Version.class) != null) {
+                    entityMetadata.setVersionPropertyName(pm.getName());
+                } else if (pm.getAnnotation(Id.class) != null
+                        || pm.getAnnotation(EmbeddedId.class) != null) {
+                    entityMetadata.setIdentifierPropertyName(pm.getName());
+                }
+                if (entityMetadata.hasIdentifierProperty()
+                        && entityMetadata.hasVersionProperty()) {
+                    // No use continuing the loop if both the version
+                    // and the identifier property have already been found.
+                    break;
+                }
+            }
+        } else if (embeddable != null) {
+            // We have an embeddable class
+            metadata = new ClassMetadata<T>(mappedClass);
+            // Put the metadata instance in the cache in case it is referenced
+            // from loadProperties()
+            metadataMap.put(mappedClass, metadata);
+            loadProperties(mappedClass, metadata, accessType);
+        } else {
+            throw new IllegalArgumentException("The class "
+                    + mappedClass.getName()
+                    + " is nether an entity nor embeddable");
+        }
+
+        return metadata;
+    }
+
+    protected void loadProperties(Class<?> type, ClassMetadata<?> metadata,
+            PersistentPropertyMetadata.AccessType accessType) {
+
+        // Also check superclass for metadata
+        Class<?> superclass = type.getSuperclass();
+        if (superclass != null
+        		&& (superclass.getAnnotation(MappedSuperclass.class) != null 
+                    || superclass.getAnnotation(Entity.class) != null )
+//TODO: check the change made for SONAR !!!                    
+                || (superclass != null
+                    && superclass.getAnnotation(Embeddable.class) != null)
+        	) {
+            loadProperties(superclass, metadata, accessType);
+        }
+
+        if (accessType == PersistentPropertyMetadata.AccessType.FIELD) {
+            extractPropertiesFromFields(type, metadata);
+        } else {
+            extractPropertiesFromMethods(type, metadata);
+        }
+    }
+
+    protected PersistentPropertyMetadata.AccessType determineAccessType(
+            Class<?> type) {
+        // Start by looking for annotated fields
+        for (Field f : type.getDeclaredFields()) {
+            if (f.getAnnotation(Id.class) != null
+                    || f.getAnnotation(EmbeddedId.class) != null) {
+                return AccessType.FIELD;
+            }
+        }
+
+        // Then look for annotated getter methods
+        for (Method m : type.getDeclaredMethods()) {
+            if (m.getAnnotation(Id.class) != null
+                    || m.getAnnotation(EmbeddedId.class) != null) {
+                return AccessType.METHOD;
+            }
+        }
+
+        // Nothing found? Try with the superclass!
+        Class<?> superclass = type.getSuperclass();
+        if (superclass != null
+                && (superclass.getAnnotation(MappedSuperclass.class) != null || superclass
+                        .getAnnotation(Entity.class) != null)) {
+            return determineAccessType(superclass);
+        }
+
+        // The access type could not be determined;
+        return null;
+    }
+
+    protected boolean isReference(AccessibleObject ab) {
+        return ab.getAnnotation(ManyToOne.class) != null;
+    }
+
+    private boolean isOneToOne(AccessibleObject ab) {
+        return ab.getAnnotation(OneToOne.class) != null;
+    }
+
+    protected boolean isCollection(AccessibleObject ab) {
+        return ab.getAnnotation(OneToMany.class) != null;
+    }
+
+    private boolean isManyToMany(AccessibleObject ab) {
+        return ab.getAnnotation(ManyToMany.class) != null;
+    }
+
+    protected boolean isEmbedded(AccessibleObject ab) {
+        return (ab.getAnnotation(Embedded.class) != null || ab
+                .getAnnotation(EmbeddedId.class) != null);
+    }
+
+    protected void extractPropertiesFromFields(Class<?> type,
+            ClassMetadata<?> metadata) {
+        for (Field f : type.getDeclaredFields()) {
+            int mod = f.getModifiers();
+            if (!Modifier.isFinal(mod) && !Modifier.isStatic(mod)
+                    && !Modifier.isTransient(mod)
+                    && f.getAnnotation(Transient.class) == null) {
+                Class<?> fieldType = getFieldType(f);
+                Method setterMethod = null;
+                try {
+                    final String assumedSetterName = "set"
+                            + f.getName().substring(0, 1).toUpperCase()
+                            + f.getName().substring(1);
+                    Method method = type
+                            .getMethod(assumedSetterName, fieldType);
+                    setterMethod = method;
+                } catch (Exception e) {
+                    // Setter does not exist or is not accessible
+                }
+
+                if (isEmbedded(f)) {
+                    ClassMetadata<?> cm = getClassMetadata(fieldType,
+                            AccessType.FIELD);
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), cm, PropertyKind.EMBEDDED, f,
+                            setterMethod));
+                } else if (isReference(f)) {
+                    ClassMetadata<?> cm = getClassMetadata(fieldType,
+                            AccessType.FIELD);
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), cm, PropertyKind.MANY_TO_ONE, f,
+                            setterMethod));
+                } else if (isOneToOne(f)) {
+                    ClassMetadata<?> cm = getClassMetadata(fieldType,
+                            AccessType.FIELD);
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), cm, PropertyKind.ONE_TO_ONE, f,
+                            setterMethod));
+                } else if (isCollection(f)) {
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), fieldType, PropertyKind.ONE_TO_MANY, f,
+                            setterMethod));
+                } else if (isManyToMany(f)) {
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), fieldType, PropertyKind.MANY_TO_MANY,
+                            f, setterMethod));
+                } else if (isElementCollection(f)) {
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), fieldType,
+                            PropertyKind.ELEMENT_COLLECTION, f, setterMethod));
+                } else {
+                    metadata.addProperties(new PersistentPropertyMetadata(f
+                            .getName(), convertPrimitiveType(fieldType),
+                            PropertyKind.SIMPLE, f, setterMethod));
+                }
+            }
+        }
+        // Find the transient properties
+        for (Method m : type.getDeclaredMethods()) {
+            int mod = m.getModifiers();
+            // Synthetic methods are excluded (#4590).
+            // In theory, this could filter out too much in some special cases,
+            // in which case the subclass could re-declare the accessor methods
+            // with the correct annotations as a workaround.
+            if (m.getName().startsWith("get") && m.getName().length() > 3
+                    && !Modifier.isStatic(mod) && !m.isSynthetic()
+                    && m.getReturnType() != Void.TYPE
+                    && m.getParameterTypes().length == 0) {
+                Method setter = null;
+                try {
+                    // Check if we have a setter
+                    setter = type.getDeclaredMethod("set"
+                            + m.getName().substring(3), m.getReturnType());
+                } catch (NoSuchMethodException ignoreit) {
+                }
+                String name = Introspector.decapitalize(m.getName()
+                        .substring(3));
+
+                if (metadata.getProperty(name) == null) {
+                    // No previous property has been added with the same name
+                    metadata.addProperties(new PropertyMetadata(name, m
+                            .getReturnType(), m, setter));
+                }
+            }
+        }
+    }
+
+    protected boolean isElementCollection(AccessibleObject ab) {
+        return (ab.getAnnotation(ElementCollection.class) != null);
+    }
+
+    /**
+     * Finds the actual pointed-to type of the field. The concrete type may be
+     * other than the declared type if the targetEntity parameter is specified
+     * in certain annotations.
+     * 
+     * @param f
+     *            the field.
+     * @return the type of the field.
+     */
+    private Class<?> getFieldType(Field f) {
+        Class<?> targetEntity = void.class;
+        if (isReference(f)) {
+            targetEntity = f.getAnnotation(ManyToOne.class).targetEntity();
+        } else if (isOneToOne(f)) {
+            targetEntity = f.getAnnotation(OneToOne.class).targetEntity();
+        }
+        if (targetEntity != void.class) {
+            return targetEntity;
+        }
+        return f.getType();
+    }
+
+    private Class<?> convertPrimitiveType(Class<?> type) {
+        // Vaadin fields don't work with primitive values, use wrapper types for
+        // primitives
+        if (type.isPrimitive()) {
+            if (type.equals(Boolean.TYPE)) {
+                type = Boolean.class;
+            } else if (type.equals(Integer.TYPE)) {
+                type = Integer.class;
+            } else if (type.equals(Float.TYPE)) {
+                type = Float.class;
+            } else if (type.equals(Double.TYPE)) {
+                type = Double.class;
+            } else if (type.equals(Byte.TYPE)) {
+                type = Byte.class;
+            } else if (type.equals(Character.TYPE)) {
+                type = Character.class;
+            } else if (type.equals(Short.TYPE)) {
+                type = Short.class;
+            } else if (type.equals(Long.TYPE)) {
+                type = Long.class;
+            }
+        }
+        return type;
+    }
+
+    protected void extractPropertiesFromMethods(Class<?> type,
+            ClassMetadata<?> metadata) {
+        for (Method m : type.getDeclaredMethods()) {
+            int mod = m.getModifiers();
+            // Synthetic methods are excluded (#4590) - otherwise you could e.g.
+            // have a synthetic and a concrete id getter (with different
+            // declared return types) in TestClasses.Integer_ConcreteId_M, and
+            // the synthetic method could override the concrete one and its
+            // annotations.
+            // In theory, this could filter out too much in some special cases,
+            // in which case the subclass could re-declare the accessor methods
+            // with the correct annotations as a workaround.
+            if (m.getName().startsWith("get") && m.getName().length() > 3
+                    && !Modifier.isStatic(mod) && !m.isSynthetic()
+                    && m.getReturnType() != Void.TYPE
+                    && m.getParameterTypes().length == 0) {
+                Method setter = null;
+                try {
+                    // Check if we have a setter
+                    setter = type.getDeclaredMethod("set"
+                            + m.getName().substring(3), m.getReturnType());
+                } catch (NoSuchMethodException ignoreit) {
+                    // No setter <=> transient property
+                }
+                String name = Introspector.decapitalize(m.getName()
+                        .substring(3));
+
+                if (setter != null && m.getAnnotation(Transient.class) == null) {
+                    // Persistent property
+                    if (isEmbedded(m)) {
+                        ClassMetadata<?> cm = getClassMetadata(
+                                m.getReturnType(), AccessType.METHOD);
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, cm, PropertyKind.EMBEDDED, m, setter));
+                    } else if (isReference(m)) {
+                        ClassMetadata<?> cm = getClassMetadata(
+                                m.getReturnType(), AccessType.METHOD);
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, cm, PropertyKind.MANY_TO_ONE, m, setter));
+                    } else if (isOneToOne(m)) {
+                        ClassMetadata<?> cm = getClassMetadata(
+                                m.getReturnType(), AccessType.METHOD);
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, cm, PropertyKind.ONE_TO_ONE, m, setter));
+                    } else if (isCollection(m)) {
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, m.getReturnType(),
+                                PropertyKind.ONE_TO_MANY, m, setter));
+                    } else if (isManyToMany(m)) {
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, m.getReturnType(),
+                                PropertyKind.MANY_TO_MANY, m, setter));
+                    } else if (isElementCollection(m)) {
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, m.getReturnType(),
+                                PropertyKind.ELEMENT_COLLECTION, m, setter));
+                    } else {
+                        metadata.addProperties(new PersistentPropertyMetadata(
+                                name, m.getReturnType(), PropertyKind.SIMPLE,
+                                m, setter));
+                    }
+                } else {
+                    // Transient property
+                    metadata.addProperties(new PropertyMetadata(name, m
+                            .getReturnType(), m, setter));
+                }
+            }
+        }
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PersistentPropertyMetadata.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PersistentPropertyMetadata.java
new file mode 100644
index 0000000..1c62919
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PersistentPropertyMetadata.java
@@ -0,0 +1,331 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * An extended version of {@link PropertyMetadata} that provides additional
+ * information about persistent properties.
+ * 
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public class PersistentPropertyMetadata extends PropertyMetadata {
+
+    private static final long serialVersionUID = -4097189601179456814L;
+
+    /**
+     * Enumeration defining the property access types.
+     * 
+     * @author Petter Holmström (Vaadin Ltd)
+     */
+    public enum AccessType {
+
+        /**
+         * The property is accessed as a JavaBean property using getters and
+         * setters.
+         */
+        METHOD,
+        /**
+         * The property is accessed directly as a field.
+         */
+        FIELD
+    }
+
+    private final PropertyKind propertyKind;
+    private final ClassMetadata<?> typeMetadata;
+    transient final Field field;
+    // Required for serialization
+    protected final String fieldName;
+    protected final Class<?> fieldDeclaringClass;
+
+    /**
+     * Creates a new instance of <code>PersistentPropertyMetadata</code>.
+     * 
+     * @param name
+     *            the name of the property (must not be null).
+     * @param type
+     *            the type of the property (must not be null).
+     * @param propertyKind
+     *            the kind of the property, must be either
+     *            {@link PropertyKind#ONE_TO_MANY},
+     *            {@link PropertyKind#MANY_TO_MANY},
+     *            {@link PropertyKind#ELEMENT_COLLECTION} or
+     *            {@link PropertyKind#SIMPLE} .
+     * @param field
+     *            the field that can be used to access the property (must not be
+     *            null).
+     */
+    PersistentPropertyMetadata(String name, Class<?> type,
+            PropertyKind propertyKind, Field field, Method setter) {
+        super(name, type, null, setter);
+        assert propertyKind == PropertyKind.ONE_TO_MANY
+                || propertyKind == PropertyKind.MANY_TO_MANY
+                || propertyKind == PropertyKind.ELEMENT_COLLECTION
+                || propertyKind == PropertyKind.SIMPLE : "propertyKind must be ONE_TO_MANY or SIMPLE";
+        assert field != null : "field must not be null";
+        this.propertyKind = propertyKind;
+        typeMetadata = null;
+        this.field = field;
+        fieldName = field.getName();
+        fieldDeclaringClass = field.getDeclaringClass();
+    }
+
+    /**
+     * Creates a new instance of <code>PersistentPropertyMetadata</code>.
+     * 
+     * @param name
+     *            the name of the property (must not be null).
+     * @param type
+     *            type type of the property (must not be null).
+     * @param propertyKind
+     *            the kind of the property, must be either
+     *            {@link PropertyKind#ONE_TO_MANY},
+     *            {@link PropertyKind#MANY_TO_MANY},
+     *            {@link PropertyKind#ELEMENT_COLLECTION} or
+     *            {@link PropertyKind#SIMPLE} .
+     * @param getter
+     *            the getter method that can be used to read the property value
+     *            (must not be null).
+     * @param setter
+     *            the setter method that can be used to set the property value
+     *            (must not be null).
+     */
+    PersistentPropertyMetadata(String name, Class<?> type,
+            PropertyKind propertyKind, Method getter, Method setter) {
+        super(name, type, getter, setter);
+        assert propertyKind == PropertyKind.ONE_TO_MANY
+                || propertyKind == PropertyKind.MANY_TO_MANY
+                || propertyKind == PropertyKind.ELEMENT_COLLECTION
+                || propertyKind == PropertyKind.SIMPLE : "propertyKind must be ONE_TO_MANY or SIMPLE";
+        assert getter != null : "getter must not be null";
+        assert setter != null : "setter must not be null";
+        this.propertyKind = propertyKind;
+        typeMetadata = null;
+        field = null;
+        fieldName = null;
+        fieldDeclaringClass = null;
+    }
+
+    /**
+     * Creates a new instance of <code>PersistentPropertyMetadata</code>.
+     * 
+     * @param name
+     *            the name of the property (must not be null).
+     * @param type
+     *            the type metadata of the property (must not be null).
+     * @param propertyKind
+     *            the kind of the property, must be either
+     *            {@link PropertyKind#MANY_TO_ONE},
+     *            {@link PropertyKind#ONE_TO_ONE} or
+     *            {@link PropertyKind#EMBEDDED}.
+     * @param field
+     *            the field that can be used to access the property (must not be
+     *            null).
+     */
+    PersistentPropertyMetadata(String name, ClassMetadata<?> type,
+            PropertyKind propertyKind, Field field, Method setter) {
+        super(name, type.getMappedClass(), null, setter);
+        assert type != null : "type must not be null";
+        assert propertyKind == PropertyKind.MANY_TO_ONE
+                || propertyKind == PropertyKind.ONE_TO_ONE
+                || propertyKind == PropertyKind.EMBEDDED : "propertyKind must be MANY_TO_ONE or EMBEDDED";
+        assert field != null : "field must not be null";
+        this.propertyKind = propertyKind;
+        typeMetadata = type;
+        this.field = field;
+        fieldName = field.getName();
+        fieldDeclaringClass = field.getDeclaringClass();
+    }
+
+    /**
+     * Creates a new instance of <code>PersistentPropertyMetadata</code>.
+     * 
+     * @param name
+     *            the name of the property (must not be null).
+     * @param type
+     *            the type metadata of the property (must not be null).
+     * @param propertyKind
+     *            the kind of the property, must be either
+     *            {@link PropertyKind#MANY_TO_ONE},
+     *            {@link PropertyKind#ONE_TO_ONE} or
+     *            {@link PropertyKind#EMBEDDED}.
+     * @param getter
+     *            the getter method that can be used to read the property value
+     *            (must not be null).
+     * @param setter
+     *            the setter method that can be used to set the property value
+     *            (must not be null).
+     */
+    PersistentPropertyMetadata(String name, ClassMetadata<?> type,
+            PropertyKind propertyKind, Method getter, Method setter) {
+        super(name, type.getMappedClass(), getter, setter);
+        assert type != null : "type must not be null";
+        assert propertyKind == PropertyKind.MANY_TO_ONE
+                || propertyKind == PropertyKind.ONE_TO_ONE
+                || propertyKind == PropertyKind.EMBEDDED : "propertyKind must be MANY_TO_ONE or EMBEDDED";
+        assert getter != null : "getter must not be null";
+        assert setter != null : "setter must not be null";
+        this.propertyKind = propertyKind;
+        typeMetadata = type;
+        field = null;
+        fieldName = null;
+        fieldDeclaringClass = null;
+    }
+
+    /**
+     * This constructor is used when deserializing the object.
+     * 
+     * @see #readResolve()
+     */
+    private PersistentPropertyMetadata(String name,
+            ClassMetadata<?> typeMetadata, Class<?> type,
+            PropertyKind propertyKind, Method getter, Method setter, Field field) {
+        super(name, type, getter, setter);
+        this.propertyKind = propertyKind;
+        this.typeMetadata = typeMetadata;
+        this.field = field;
+        if (this.field == null) {
+            fieldName = null;
+            fieldDeclaringClass = null;
+        } else {
+            fieldName = field.getName();
+            fieldDeclaringClass = field.getDeclaringClass();
+        }
+    }
+
+    /**
+     * The metadata of the property type, if it is embedded or a reference.
+     * Otherwise, this method returns null.
+     * 
+     * @see #getPropertyKind()
+     */
+    public ClassMetadata<?> getTypeMetadata() {
+        return typeMetadata;
+    }
+
+    /**
+     * The kind of the property.
+     */
+    @Override
+    public PropertyKind getPropertyKind() {
+        return propertyKind;
+    }
+
+    /**
+     * The way the property value is accessed (as a JavaBean property or as a
+     * field).
+     */
+    public AccessType getAccessType() {
+        return field != null ? AccessType.FIELD : AccessType.METHOD;
+    }
+
+    @Override
+    public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
+        if (field != null) {
+            return field.getAnnotation(annotationClass);
+        } else {
+            return super.getAnnotation(annotationClass);
+        }
+    }
+
+    @Override
+    public Annotation[] getAnnotations() {
+        if (field != null) {
+            return field.getAnnotations();
+        } else {
+            return super.getAnnotations();
+        }
+    }
+
+    @Override
+    public Object readResolve() throws ObjectStreamException {
+        try {
+            Field f = null;
+            if (fieldName != null) {
+                f = fieldDeclaringClass.getDeclaredField(fieldName);
+            }
+            Method getterM = null;
+            if (getterName != null) {
+                getterM = getterDeclaringClass.getDeclaredMethod(getterName);
+            }
+            Method setterM = null;
+            if (setterName != null) {
+                // use the type from field if possible. type is Vaadin property
+                // type, which means that for primitive types we convert it to
+                // wrapper type
+                Class<?> setterType = (f == null) ? getType() : f.getType();
+                setterM = setterDeclaringClass.getDeclaredMethod(setterName,
+                        setterType);
+            }
+            return new PersistentPropertyMetadata(getName(), typeMetadata,
+                    getType(), propertyKind, getterM, setterM, f);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new InvalidObjectException(e.getMessage());
+        }
+    }
+
+    /**
+     * Persistent properties are always writable.
+     * <p>
+     * {@inheritDoc }.
+     */
+    @Override
+    public boolean isWritable() {
+        return true; // field != null || super.isWritable();
+    }
+
+    /*
+     * Note, that we only compare the mapped classes of the typeMetadata fields.
+     * If we compared the typeMetadata fields themselves, we could run into an
+     * infinite loop if there are circular references (e.g. a parent-property of
+     * the same type) in the metadata.
+     */
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) { // Includes check of parameter type
+            PersistentPropertyMetadata other = (PersistentPropertyMetadata) obj;
+            return ( other != null && propertyKind.equals(other.propertyKind) )
+                    && (typeMetadata == null ? other.typeMetadata == null
+                            : typeMetadata.getMappedClass().equals(
+                                    other.typeMetadata.getMappedClass()))
+                    && (field == null ? other.field == null : field
+                            .equals(other.field));
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = super.hashCode();
+        hash = hash * 31 + propertyKind.hashCode();
+        if (typeMetadata != null) {
+            hash = hash * 31 + typeMetadata.getMappedClass().hashCode();
+        }
+        if (field != null) {
+            hash = hash * 31 + field.hashCode();
+        }
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PropertyKind.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PropertyKind.java
new file mode 100644
index 0000000..c795015
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PropertyKind.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import javax.persistence.Embeddable;
+
+
+/**
+ * Enumeration defining the property kind.
+ * 
+ * @author Petter Holmström (Vaadin Ltd)
+ */
+public enum PropertyKind {
+
+    /**
+     * The property is embedded.
+     * 
+     * @see javax.persistence.Embeddable
+     * @see javax.persistence.Embedded
+     */
+    EMBEDDED,
+    /**
+     * The property is a reference.
+     * 
+     * @see javax.persistence.OneToOne
+     * @see javax.persistence.ManyToOne
+     */
+    MANY_TO_ONE,
+    /**
+     * The property is a reference.
+     * 
+     * @see javax.persistence.ManyToOne
+     */
+    ONE_TO_ONE,
+     /**
+     * The property is a collection.
+     * 
+     * @see javax.persistence.OneToMany
+     */
+    ONE_TO_MANY,
+    /**
+     * The property is a reference.
+     * 
+     * @see javax.persistence.ManyToMany
+     */
+    MANY_TO_MANY,
+    /**
+     * The property is a collection {@link Embeddable}s or basic data types.
+     * 
+     * @see javax.persistence.ElementCollection
+     */
+    ELEMENT_COLLECTION,
+    /**
+     * The property is of a simple datatype.
+     */
+    SIMPLE,
+    /**
+     * The property is not persistent property.
+     */
+    NONPERSISTENT
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PropertyMetadata.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PropertyMetadata.java
new file mode 100644
index 0000000..8a72c9a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/PropertyMetadata.java
@@ -0,0 +1,189 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.io.InvalidObjectException;
+import java.io.ObjectStreamException;
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+
+/**
+ * This class represents the metadata of a property. If the property is
+ * transient, this is an ordinary JavaBean property consisting of a getter
+ * method and optionally a setter method. If the property is persistent,
+ * additional information is provided by the {@link PersistentPropertyMetadata}
+ * interface.
+ * 
+ * @see ClassMetadata
+ * @author Petter Holmström (Vaadin Ltd)
+ * @since 1.0
+ */
+public class PropertyMetadata implements Serializable {
+
+    private static final long serialVersionUID = -6500231861860229121L;
+    private final String name;
+    private final Class<?> type;
+    transient final Method getter;
+    transient final Method setter;
+    // Required for serialization:
+    protected final String getterName;
+    protected final String setterName;
+    protected final Class<?> getterDeclaringClass;
+    protected final Class<?> setterDeclaringClass;
+
+    /**
+     * Creates a new instance of <code>PropertyMetadata</code>.
+     * 
+     * @param name
+     *            the name of the property (must not be null).
+     * @param type
+     *            the type of the property (must not be null).
+     * @param getter
+     *            the getter method that can be used to read the value of the
+     *            property (must not be null).
+     * @param setter
+     *            the setter method that can be used to set the value of the
+     *            property (may be null).
+     */
+    PropertyMetadata(String name, Class<?> type, Method getter, Method setter) {
+        assert name != null : "name must not be null";
+        assert type != null : "type must not be null";
+        /*
+         * If we assert that getter != null, PersistentPropertyMetadata will not
+         * work.
+         */
+        this.name = name;
+        this.type = type;
+        this.getter = getter;
+        this.setter = setter;
+        /*
+         * The getter may also be null, e.g. if PersistentPropertyMetadata uses
+         * a field instead of a getter to access the property.
+         */
+        if (getter != null) {
+            getterName = getter.getName();
+            getterDeclaringClass = getter.getDeclaringClass();
+        } else {
+            getterName = null;
+            getterDeclaringClass = null;
+        }
+        if (setter != null) {
+            setterName = setter.getName();
+            setterDeclaringClass = setter.getDeclaringClass();
+        } else {
+            setterName = null;
+            setterDeclaringClass = null;
+        }
+    }
+
+    public Object readResolve() throws ObjectStreamException {
+        try {
+            Method getterM = null;
+            if (getterName != null) {
+                getterM = getterDeclaringClass.getDeclaredMethod(getterName);
+            }
+            Method setterM = null;
+            if (setterName != null) {
+                setterM = setterDeclaringClass.getDeclaredMethod(setterName,
+                        type);
+            }
+            return new PropertyMetadata(name, type, getterM, setterM);
+        } catch (Exception e) {
+            throw new InvalidObjectException(e.getMessage());
+        }
+    }
+
+    /**
+     * The name of the property.
+     */
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * The type of the property.
+     */
+    public Class<?> getType() {
+        return type;
+    }
+
+    /**
+     * The annotations of the property, if any.
+     * 
+     * @see #getAnnotation(java.lang.Class)
+     */
+    public Annotation[] getAnnotations() {
+        return getter.getAnnotations();
+    }
+
+    /**
+     * Gets the annotation of the specified annotation class, if available.
+     * 
+     * @see #getAnnotations()
+     * @see Class#getAnnotation(java.lang.Class)
+     * @param annotationClass
+     *            the annotation class.
+     * @return the annotation, or null if not found.
+     */
+    public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
+        return getter.getAnnotation(annotationClass);
+    }
+
+    /**
+     * Returns whether the property is writable or not. Transient properties
+     * (i.e. JavaBean properties) are only writable if they have a setter
+     * method.
+     * 
+     * @return true if the property is writable, false if it is not.
+     */
+    public boolean isWritable() {
+        return setter != null;
+    }
+    
+    public PropertyKind getPropertyKind() {
+        return PropertyKind.NONPERSISTENT;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj != null && obj.getClass() == getClass()) {
+            PropertyMetadata other = (PropertyMetadata) obj;
+            return name.equals(other.name)
+                    && type.equals(other.type)
+                    && (getter == null ? other.getter == null : getter
+                            .equals(other.getter))
+                    && (setter == null ? other.setter == null : setter
+                            .equals(other.setter));
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 7;
+        hash = hash * 31 + name.hashCode();
+        hash = hash * 31 + type.hashCode();
+        if (getter != null) {
+            hash = hash * 31 + getter.hashCode();
+        }
+        if (setter != null) {
+            hash = hash * 31 + setter.hashCode();
+        }
+        return hash;
+    }
+}
diff --git a/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/QueryModifierDelegate.java b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/QueryModifierDelegate.java
new file mode 100644
index 0000000..a24dd6c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.lib/src/org/eclipse/osbp/dsl/dto/lib/services/jpa/metadata/QueryModifierDelegate.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright 2009-2013 Oy Vaadin Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.eclipse.osbp.dsl.dto.lib.services.jpa.metadata;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.logging.Filter;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Order;
+import javax.persistence.criteria.Predicate;
+
+import org.eclipse.osbp.dsl.dto.lib.services.SortBy;
+
+/**
+ * The QueryModifierDelegate interface defines methods that will be called at
+ * the different stages of {@link CriteriaQuery} generation. Implement this
+ * interface and call
+ * {@link EntityDelegate#setQueryModifierDelegate(QueryModifierDelegate)} to
+ * receive calls while the {@link CriteriaQuery} is being built. The methods are
+ * allowed to modify the CriteriaQuery.
+ * 
+ * @since 2.0
+ */
+public interface QueryModifierDelegate extends Serializable {
+    /**
+     * This method is called after the {@link CriteriaQuery} instance (
+     * <code>query</code>) has been instantiated, but before any state has been
+     * set.
+     * 
+     * Operations and configuration may be performed on the query instance.
+     * 
+     * @param criteriaBuilder
+     *            the {@link CriteriaBuilder} used to build the query
+     * @param query
+     *            the {@link CriteriaQuery} being built
+     */
+    public void queryWillBeBuilt(CriteriaBuilder criteriaBuilder,
+            CriteriaQuery<?> query);
+
+    /**
+     * This method is called after the {@link CriteriaQuery} instance has been
+     * completely built (configured).
+     * 
+     * Any operations may be performed on the query instance.
+     * 
+     * @param criteriaBuilder
+     *            the {@link CriteriaBuilder} used to build the query
+     * @param query
+     *            the {@link CriteriaQuery} being built
+     */
+    public void queryHasBeenBuilt(CriteriaBuilder criteriaBuilder,
+            CriteriaQuery<?> query);
+
+    /**
+     * This method is called after filters (in the form of {@link Filter}) have
+     * been translated into instances of {@link Predicate}, but before the
+     * resulting predicates have been added to <code>query</code>.
+     * 
+     * The contents of the <code>predicates</code> list may be modified at this
+     * point. Any operations may be performed on the query instance.
+     * 
+     * @param criteriaBuilder
+     *            the {@link CriteriaBuilder} used to build the query
+     * @param query
+     *            the {@link CriteriaQuery} being built
+     * @param predicates
+     *            the list of predicates ({@link Predicate}) to be applied. The
+     *            contents of this list may be modified.
+     */
+    public void filtersWillBeAdded(CriteriaBuilder criteriaBuilder,
+            CriteriaQuery<?> query, List<Predicate> predicates);
+
+    /**
+     * This method is called after all filters have been applied to the query.
+     * 
+     * Any operations may be performed on the query instance.
+     * 
+     * @param criteriaBuilder
+     *            the {@link CriteriaBuilder} used to build the query
+     * @param query
+     *            the {@link CriteriaQuery} being built
+     */
+    public void filtersWereAdded(CriteriaBuilder criteriaBuilder,
+            CriteriaQuery<?> query);
+
+    /**
+     * This method is called after all {@link SortBy} instances have been
+     * translated into {@link Order} instances, but before they have been
+     * applied to the query.
+     * 
+     * The contents of the <code>orderBy</code> list may be modified at this
+     * point. Any operations may be performed on the query instance.
+     * 
+     * @param criteriaBuilder
+     *            the {@link CriteriaBuilder} used to build the query
+     * @param query
+     *            the {@link CriteriaQuery} being built
+     * @param orderBy
+     *            the list of order by rules ({@link Order}) to be applied. The
+     *            contents of this list may be modified.
+     */
+    public void orderByWillBeAdded(CriteriaBuilder criteriaBuilder,
+            CriteriaQuery<?> query, List<Order> orderBy);
+
+    /**
+     * This method is called after the order by has been applied for the query.
+     * 
+     * Any operations may be performed on the query instance.
+     * 
+     * @param criteriaBuilder
+     *            the {@link CriteriaBuilder} used to build the query
+     * @param query
+     *            the {@link CriteriaQuery} being built
+     */
+    public void orderByWasAdded(CriteriaBuilder criteriaBuilder,
+            CriteriaQuery<?> query);
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/.project b/org.eclipse.osbp.dsl.dto.xtext.edit/.project
new file mode 100644
index 0000000..7e73ad0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.dto.xtext.edit</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/LICENSE.txt b/org.eclipse.osbp.dsl.dto.xtext.edit/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/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.dsl.dto.xtext.edit/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.dto.xtext.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..6f3e543
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,22 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.dto.xtext.edit
+Bundle-SymbolicName: org.eclipse.osbp.dsl.dto.xtext.edit;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.osbp.dsl.semantic.dto.provider.DTOEditPlugin$Implementation
+Bundle-Vendor: Eclipse OSBP
+ Germany)
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.semantic.dto.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.osbp.dsl.dto.xtext;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.xtext.xbase;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.xtext.common.types;visibility:=reexport,
+ org.eclipse.xtext.common.types.edit;visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext;visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext.edit;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/about.html b/org.eclipse.osbp.dsl.dto.xtext.edit/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/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.dsl.dto.xtext.edit/about.ini b/org.eclipse.osbp.dsl.dto.xtext.edit/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/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.dsl.dto.xtext.edit/about.mappings b/org.eclipse.osbp.dsl.dto.xtext.edit/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/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.dsl.dto.xtext.edit/about.properties b/org.eclipse.osbp.dsl.dto.xtext.edit/about.properties
new file mode 100644
index 0000000..b06ef6f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.dto.xtext.edit
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/build.properties b/org.eclipse.osbp.dsl.dto.xtext.edit/build.properties
new file mode 100644
index 0000000..1c0af13
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..d192e7c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..0403fbd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..3fbacda
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..d7b26a7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..3119072
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..8e4853e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..0dabd12
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..f4ea4b7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..4c78bee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoAbstractReference_typeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoFeature_mapper_LDtoMapper.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoFeature_mapper_LDtoMapper.gif
new file mode 100644
index 0000000..c128024
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoFeature_mapper_LDtoMapper.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..76f9cb7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..88ba66a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..54a8425
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..cfb5278
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..a89d0ec
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..b6ac8cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..4e06b47
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..cc2ef52
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..6325826
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedAttribute_inheritedFeatureTypeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..cdb5a67
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..f933831
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..69d083e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..79e1b2d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..8a80c2d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..b7be165
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..cc6993f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..1254d2c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..ddd2316
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoInheritedReference_inheritedFeatureTypeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XAnnotation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XAnnotation.gif
new file mode 100644
index 0000000..3cb39d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XAnnotation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XAssignment.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XAssignment.gif
new file mode 100644
index 0000000..4368e6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XAssignment.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBasicForLoopExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBasicForLoopExpression.gif
new file mode 100644
index 0000000..04b6132
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBasicForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBinaryOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBinaryOperation.gif
new file mode 100644
index 0000000..af44325
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBinaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBlockExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBlockExpression.gif
new file mode 100644
index 0000000..a6e5cfd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBlockExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBooleanLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBooleanLiteral.gif
new file mode 100644
index 0000000..4368e6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XBooleanLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XCastedExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XCastedExpression.gif
new file mode 100644
index 0000000..4368e6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XCastedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XClosure.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XClosure.gif
new file mode 100644
index 0000000..7db9338
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XClosure.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XConstructorCall.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XConstructorCall.gif
new file mode 100644
index 0000000..1cf5062
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XConstructorCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XDoWhileExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XDoWhileExpression.gif
new file mode 100644
index 0000000..1cf5062
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XDoWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XFeatureCall.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XFeatureCall.gif
new file mode 100644
index 0000000..ceee52a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XForLoopExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XForLoopExpression.gif
new file mode 100644
index 0000000..e21fda5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XIfExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XIfExpression.gif
new file mode 100644
index 0000000..78f72fb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XIfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XInstanceOfExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XInstanceOfExpression.gif
new file mode 100644
index 0000000..c0e9a18
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XInstanceOfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XListLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XListLiteral.gif
new file mode 100644
index 0000000..a26e43a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XListLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XMemberFeatureCall.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XMemberFeatureCall.gif
new file mode 100644
index 0000000..90821e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XMemberFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XNullLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XNullLiteral.gif
new file mode 100644
index 0000000..4699099
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XNullLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XNumberLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XNumberLiteral.gif
new file mode 100644
index 0000000..a64a033
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XNumberLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XPostfixOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XPostfixOperation.gif
new file mode 100644
index 0000000..8949b1a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XPostfixOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XReturnExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XReturnExpression.gif
new file mode 100644
index 0000000..af44325
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XReturnExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSetLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSetLiteral.gif
new file mode 100644
index 0000000..98d80e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSetLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XStringLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XStringLiteral.gif
new file mode 100644
index 0000000..c9c2343
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XStringLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSwitchExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSwitchExpression.gif
new file mode 100644
index 0000000..3395195
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSwitchExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSynchronizedExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSynchronizedExpression.gif
new file mode 100644
index 0000000..01d709d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XSynchronizedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XThrowExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XThrowExpression.gif
new file mode 100644
index 0000000..98d80e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XThrowExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XTryCatchFinallyExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XTryCatchFinallyExpression.gif
new file mode 100644
index 0000000..bca376f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XTryCatchFinallyExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XTypeLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XTypeLiteral.gif
new file mode 100644
index 0000000..1dd69bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XTypeLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XUnaryOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XUnaryOperation.gif
new file mode 100644
index 0000000..caaed52
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XUnaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XVariableDeclaration.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XVariableDeclaration.gif
new file mode 100644
index 0000000..52f7346
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XVariableDeclaration.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XWhileExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XWhileExpression.gif
new file mode 100644
index 0000000..3cb39d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_fromDTO_XWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XAnnotation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XAnnotation.gif
new file mode 100644
index 0000000..3cb39d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XAnnotation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XAssignment.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XAssignment.gif
new file mode 100644
index 0000000..4368e6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XAssignment.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBasicForLoopExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBasicForLoopExpression.gif
new file mode 100644
index 0000000..04b6132
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBasicForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBinaryOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBinaryOperation.gif
new file mode 100644
index 0000000..af44325
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBinaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBlockExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBlockExpression.gif
new file mode 100644
index 0000000..a6e5cfd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBlockExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBooleanLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBooleanLiteral.gif
new file mode 100644
index 0000000..4368e6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XBooleanLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XCastedExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XCastedExpression.gif
new file mode 100644
index 0000000..4368e6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XCastedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XClosure.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XClosure.gif
new file mode 100644
index 0000000..7db9338
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XClosure.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XConstructorCall.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XConstructorCall.gif
new file mode 100644
index 0000000..1cf5062
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XConstructorCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XDoWhileExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XDoWhileExpression.gif
new file mode 100644
index 0000000..1cf5062
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XDoWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XFeatureCall.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XFeatureCall.gif
new file mode 100644
index 0000000..ceee52a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XForLoopExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XForLoopExpression.gif
new file mode 100644
index 0000000..e21fda5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XForLoopExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XIfExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XIfExpression.gif
new file mode 100644
index 0000000..78f72fb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XIfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XInstanceOfExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XInstanceOfExpression.gif
new file mode 100644
index 0000000..c0e9a18
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XInstanceOfExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XListLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XListLiteral.gif
new file mode 100644
index 0000000..a26e43a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XListLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XMemberFeatureCall.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XMemberFeatureCall.gif
new file mode 100644
index 0000000..90821e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XMemberFeatureCall.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XNullLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XNullLiteral.gif
new file mode 100644
index 0000000..4699099
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XNullLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XNumberLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XNumberLiteral.gif
new file mode 100644
index 0000000..a64a033
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XNumberLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XPostfixOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XPostfixOperation.gif
new file mode 100644
index 0000000..8949b1a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XPostfixOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XReturnExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XReturnExpression.gif
new file mode 100644
index 0000000..af44325
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XReturnExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSetLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSetLiteral.gif
new file mode 100644
index 0000000..98d80e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSetLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XStringLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XStringLiteral.gif
new file mode 100644
index 0000000..c9c2343
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XStringLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSwitchExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSwitchExpression.gif
new file mode 100644
index 0000000..3395195
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSwitchExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSynchronizedExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSynchronizedExpression.gif
new file mode 100644
index 0000000..01d709d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XSynchronizedExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XThrowExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XThrowExpression.gif
new file mode 100644
index 0000000..98d80e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XThrowExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XTryCatchFinallyExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XTryCatchFinallyExpression.gif
new file mode 100644
index 0000000..bca376f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XTryCatchFinallyExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XTypeLiteral.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XTypeLiteral.gif
new file mode 100644
index 0000000..1dd69bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XTypeLiteral.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XUnaryOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XUnaryOperation.gif
new file mode 100644
index 0000000..caaed52
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XUnaryOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XVariableDeclaration.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XVariableDeclaration.gif
new file mode 100644
index 0000000..52f7346
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XVariableDeclaration.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XWhileExpression.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XWhileExpression.gif
new file mode 100644
index 0000000..3cb39d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoMapper_toDTO_XWhileExpression.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoModel_packages_LTypedPackage.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoModel_packages_LTypedPackage.gif
new file mode 100644
index 0000000..f67fa30
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDtoModel_packages_LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoAttribute.gif
new file mode 100644
index 0000000..ddf43a1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoFeature.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoFeature.gif
new file mode 100644
index 0000000..4b36c8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoInheritedAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoInheritedAttribute.gif
new file mode 100644
index 0000000..e441ba7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoInheritedAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoInheritedReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoInheritedReference.gif
new file mode 100644
index 0000000..fd5f7bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoInheritedReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoOperation.gif
new file mode 100644
index 0000000..8d1ccfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoReference.gif
new file mode 100644
index 0000000..506a19b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_features_LDtoReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..f82b4be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..efa5ade
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..69c6119
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..f0eecfb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..b255669
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..8d1ccfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..506a19b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..3744cee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..66cbc4c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..f82b4be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..efa5ade
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..69c6119
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..f0eecfb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..b255669
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..8d1ccfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..506a19b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..3744cee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..66cbc4c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_superTypeMapperJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..f82b4be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..efa5ade
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..69c6119
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..f0eecfb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..b255669
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..8d1ccfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..506a19b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..3744cee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..66cbc4c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLDto_wrappedTypeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LAutoInheritDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LAutoInheritDto.gif
new file mode 100644
index 0000000..a188f9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LAutoInheritDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDto.gif
new file mode 100644
index 0000000..fcde3a0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoAttribute.gif
new file mode 100644
index 0000000..6203d5c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoFeature.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoFeature.gif
new file mode 100644
index 0000000..17db365
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoInheritedAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoInheritedAttribute.gif
new file mode 100644
index 0000000..4096600
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoInheritedAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoInheritedReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoInheritedReference.gif
new file mode 100644
index 0000000..f9d92bf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoInheritedReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoOperation.gif
new file mode 100644
index 0000000..f5b2b6f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoReference.gif
new file mode 100644
index 0000000..e9b813c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDtoReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LAutoInheritDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LAutoInheritDto.gif
new file mode 100644
index 0000000..2b85698
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LAutoInheritDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDto.gif
new file mode 100644
index 0000000..757aba3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoAttribute.gif
new file mode 100644
index 0000000..43da763
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoFeature.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoFeature.gif
new file mode 100644
index 0000000..d455c0c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoInheritedAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoInheritedAttribute.gif
new file mode 100644
index 0000000..c4063fe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoInheritedAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoInheritedReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoInheritedReference.gif
new file mode 100644
index 0000000..71d76c2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoInheritedReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoOperation.gif
new file mode 100644
index 0000000..c6c7731
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoReference.gif
new file mode 100644
index 0000000..7118da1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDtoReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LAutoInheritDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LAutoInheritDto.gif
new file mode 100644
index 0000000..c78943e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LAutoInheritDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDto.gif
new file mode 100644
index 0000000..fd60bf2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LAutoInheritDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LAutoInheritDto.gif
new file mode 100644
index 0000000..420eee1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LAutoInheritDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDto.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDto.gif
new file mode 100644
index 0000000..90d10f9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoAttribute.gif
new file mode 100644
index 0000000..e4b530e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoFeature.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoFeature.gif
new file mode 100644
index 0000000..136e3b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoInheritedAttribute.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoInheritedAttribute.gif
new file mode 100644
index 0000000..2b69256
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoInheritedAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoInheritedReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoInheritedReference.gif
new file mode 100644
index 0000000..a17dc7d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoInheritedReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoMapper.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoMapper.gif
new file mode 100644
index 0000000..4365960
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoMapper.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoModel.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoModel.gif
new file mode 100644
index 0000000..a3908bc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoModel.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoOperation.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoOperation.gif
new file mode 100644
index 0000000..b1f8afa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoReference.gif b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoReference.gif
new file mode 100644
index 0000000..ea58a65
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/icons/full/obj16/LDtoReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties
new file mode 100644
index 0000000..36c24d6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.properties
@@ -0,0 +1,331 @@
+# 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 = DTO Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_LDtoModel_type = LDto Model
+_UI_LDto_type = LDto
+_UI_LAutoInheritDto_type = LAuto Inherit Dto
+_UI_LDtoMapper_type = LDto Mapper
+_UI_LDtoFeature_type = LDto Feature
+_UI_LDtoAbstractAttribute_type = LDto Abstract Attribute
+_UI_LDtoInheritedAttribute_type = LDto Inherited Attribute
+_UI_LDtoAttribute_type = LDto Attribute
+_UI_LDtoAbstractReference_type = LDto Abstract Reference
+_UI_LDtoInheritedReference_type = LDto Inherited Reference
+_UI_LDtoReference_type = LDto Reference
+_UI_LDtoOperation_type = LDto Operation
+_UI_XAnnotation_type = XAnnotation
+_UI_XAnnotationElementValuePair_type = XAnnotation Element Value Pair
+_UI_EAttribute_type = EAttribute
+_UI_EAnnotation_type = EAnnotation
+_UI_EClass_type = EClass
+_UI_EClassifier_type = EClassifier
+_UI_EDataType_type = EData Type
+_UI_EEnum_type = EEnum
+_UI_EEnumLiteral_type = EEnum Literal
+_UI_EFactory_type = EFactory
+_UI_EModelElement_type = EModel Element
+_UI_ENamedElement_type = ENamed Element
+_UI_EObject_type = EObject
+_UI_EOperation_type = EOperation
+_UI_EPackage_type = EPackage
+_UI_EParameter_type = EParameter
+_UI_EReference_type = EReference
+_UI_EStructuralFeature_type = EStructural Feature
+_UI_ETypedElement_type = ETyped Element
+_UI_EStringToStringMapEntry_type = EString To String Map Entry
+_UI_EGenericType_type = EGeneric Type
+_UI_ETypeParameter_type = EType Parameter
+_UI_XExpression_type = XExpression
+_UI_XIfExpression_type = XIf Expression
+_UI_XSwitchExpression_type = XSwitch Expression
+_UI_XCasePart_type = XCase Part
+_UI_XBlockExpression_type = XBlock Expression
+_UI_XVariableDeclaration_type = XVariable Declaration
+_UI_XAbstractFeatureCall_type = XAbstract Feature Call
+_UI_XMemberFeatureCall_type = XMember Feature Call
+_UI_XFeatureCall_type = XFeature Call
+_UI_XConstructorCall_type = XConstructor Call
+_UI_XBooleanLiteral_type = XBoolean Literal
+_UI_XNullLiteral_type = XNull Literal
+_UI_XNumberLiteral_type = XNumber Literal
+_UI_XStringLiteral_type = XString Literal
+_UI_XCollectionLiteral_type = XCollection Literal
+_UI_XListLiteral_type = XList Literal
+_UI_XSetLiteral_type = XSet Literal
+_UI_XClosure_type = XClosure
+_UI_XCastedExpression_type = XCasted Expression
+_UI_XBinaryOperation_type = XBinary Operation
+_UI_XUnaryOperation_type = XUnary Operation
+_UI_XPostfixOperation_type = XPostfix Operation
+_UI_XForLoopExpression_type = XFor Loop Expression
+_UI_XBasicForLoopExpression_type = XBasic For Loop Expression
+_UI_XAbstractWhileExpression_type = XAbstract While Expression
+_UI_XDoWhileExpression_type = XDo While Expression
+_UI_XWhileExpression_type = XWhile Expression
+_UI_XTypeLiteral_type = XType Literal
+_UI_XInstanceOfExpression_type = XInstance Of Expression
+_UI_XThrowExpression_type = XThrow Expression
+_UI_XTryCatchFinallyExpression_type = XTry Catch Finally Expression
+_UI_XCatchClause_type = XCatch Clause
+_UI_XAssignment_type = XAssignment
+_UI_XReturnExpression_type = XReturn Expression
+_UI_XSynchronizedExpression_type = XSynchronized Expression
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_LDtoModel_packages_feature = Packages
+_UI_LDto_features_feature = Features
+_UI_LDto_superType_feature = Super Type
+_UI_LDto_superTypeJvm_feature = Super Type Jvm
+_UI_LDto_superTypeMapperJvm_feature = Super Type Mapper Jvm
+_UI_LDto_subTypes_feature = Sub Types
+_UI_LDto_wrappedType_feature = Wrapped Type
+_UI_LDto_wrappedTypeJvm_feature = Wrapped Type Jvm
+_UI_LDtoMapper_toDTO_feature = To DTO
+_UI_LDtoMapper_fromDTO_feature = From DTO
+_UI_LDtoFeature_mapper_feature = Mapper
+_UI_LDtoInheritedAttribute_inheritedFeature_feature = Inherited Feature
+_UI_LDtoInheritedAttribute_inheritedFeatureTypeJvm_feature = Inherited Feature Type Jvm
+_UI_LDtoAbstractReference_type_feature = Type
+_UI_LDtoAbstractReference_typeJvm_feature = Type Jvm
+_UI_LDtoInheritedReference_inheritedFeature_feature = Inherited Feature
+_UI_LDtoInheritedReference_inheritedFeatureTypeJvm_feature = Inherited Feature Type Jvm
+_UI_LDtoReference_opposite_feature = Opposite
+_UI_XAnnotation_elementValuePairs_feature = Element Value Pairs
+_UI_XAnnotation_annotationType_feature = Annotation Type
+_UI_XAnnotation_value_feature = Value
+_UI_XAnnotationElementValuePair_value_feature = Value
+_UI_XAnnotationElementValuePair_element_feature = Element
+_UI_EAttribute_iD_feature = ID
+_UI_EAttribute_iD_description = Whether the value of this attribute uniquely identifies an object within its containing resource
+_UI_EAttribute_eAttributeType_feature = EAttribute Type
+_UI_EAttribute_eAttributeType_description = The data type of this attribute
+_UI_EAnnotation_source_feature = Source
+_UI_EAnnotation_source_description = An identifier, typically an absolute URI, that uniquely identifies this kind of annotation
+_UI_EAnnotation_details_feature = Details
+_UI_EAnnotation_eModelElement_feature = EModel Element
+_UI_EAnnotation_contents_feature = Contents
+_UI_EAnnotation_references_feature = References
+_UI_EAnnotation_references_description = Objects referenced by this annotation
+_UI_EClass_abstract_feature = Abstract
+_UI_EClass_abstract_description = Whether instances of this class can be created
+_UI_EClass_interface_feature = Interface
+_UI_EClass_interface_description = Whether no corresponding implementation will be generated for this class
+_UI_EClass_eSuperTypes_feature = ESuper Types
+_UI_EClass_eSuperTypes_description = The immediate super types of this class
+_UI_EClass_eOperations_feature = EOperations
+_UI_EClass_eOperations_description = The operations defined by this class
+_UI_EClass_eAllAttributes_feature = EAll Attributes
+_UI_EClass_eAllReferences_feature = EAll References
+_UI_EClass_eReferences_feature = EReferences
+_UI_EClass_eAttributes_feature = EAttributes
+_UI_EClass_eAllContainments_feature = EAll Containments
+_UI_EClass_eAllOperations_feature = EAll Operations
+_UI_EClass_eAllStructuralFeatures_feature = EAll Structural Features
+_UI_EClass_eAllSuperTypes_feature = EAll Super Types
+_UI_EClass_eIDAttribute_feature = EID Attribute
+_UI_EClass_eStructuralFeatures_feature = EStructural Features
+_UI_EClass_eGenericSuperTypes_feature = EGeneric Super Types
+_UI_EClass_eAllGenericSuperTypes_feature = EAll Generic Super Types
+_UI_EClassifier_instanceClassName_feature = Instance Class Name
+_UI_EClassifier_instanceClassName_description = The erased instance class name denoted by this classifier
+_UI_EClassifier_instanceClass_feature = Instance Class
+_UI_EClassifier_defaultValue_feature = Default Value
+_UI_EClassifier_defaultValue_description = The default value for features of this type
+_UI_EClassifier_instanceTypeName_feature = Instance Type Name
+_UI_EClassifier_instanceTypeName_description = The full instance type name denoted by this classifier
+_UI_EClassifier_ePackage_feature = EPackage
+_UI_EClassifier_eTypeParameters_feature = EType Parameters
+_UI_EDataType_serializable_feature = Serializable
+_UI_EDataType_serializable_description = Whether a value of this data type can be serialized using the factory
+_UI_EEnum_eLiterals_feature = ELiterals
+_UI_EEnumLiteral_value_feature = Value
+_UI_EEnumLiteral_value_description = The integer value associated with this enumerator
+_UI_EEnumLiteral_instance_feature = Instance
+_UI_EEnumLiteral_literal_feature = Literal
+_UI_EEnumLiteral_literal_description = The literal value associated with this enumerator
+_UI_EEnumLiteral_eEnum_feature = EEnum
+_UI_EFactory_ePackage_feature = EPackage
+_UI_EFactory_ePackage_description = The package corresponding to this factory
+_UI_EModelElement_eAnnotations_feature = EAnnotations
+_UI_ENamedElement_name_feature = Name
+_UI_ENamedElement_name_description = The name of this model element
+_UI_EOperation_eContainingClass_feature = EContaining Class
+_UI_EOperation_eTypeParameters_feature = EType Parameters
+_UI_EOperation_eParameters_feature = EParameters
+_UI_EOperation_eExceptions_feature = EExceptions
+_UI_EOperation_eExceptions_description = The exceptions thrown by this operation
+_UI_EOperation_eGenericExceptions_feature = EGeneric Exceptions
+_UI_EPackage_nsURI_feature = Ns URI
+_UI_EPackage_nsURI_description = The universally unique namespace identifier, typically an absolute URI, for this package
+_UI_EPackage_nsPrefix_feature = Ns Prefix
+_UI_EPackage_nsPrefix_description = The namespace prefix used by default when serializing instances of the package's classes
+_UI_EPackage_eFactoryInstance_feature = EFactory Instance
+_UI_EPackage_eFactoryInstance_description = The factory corresponding to this package
+_UI_EPackage_eClassifiers_feature = EClassifiers
+_UI_EPackage_eSubpackages_feature = ESubpackages
+_UI_EPackage_eSuperPackage_feature = ESuper Package
+_UI_EParameter_eOperation_feature = EOperation
+_UI_EReference_containment_feature = Containment
+_UI_EReference_containment_description = Whether this reference represents a composite relationship
+_UI_EReference_container_feature = Container
+_UI_EReference_container_description = Whether this reference has as its opposite a containment reference
+_UI_EReference_resolveProxies_feature = Resolve Proxies
+_UI_EReference_resolveProxies_description = Whether this reference resolves proxies automatically
+_UI_EReference_eOpposite_feature = EOpposite
+_UI_EReference_eOpposite_description = The reference that represents the bidirectional opposite of this reference
+_UI_EReference_eReferenceType_feature = EReference Type
+_UI_EReference_eReferenceType_description = The target class of the reference
+_UI_EReference_eKeys_feature = EKeys
+_UI_EReference_eKeys_description = The attributes of the referenced class that uniquely identify a referenced instance
+_UI_EStructuralFeature_changeable_feature = Changeable
+_UI_EStructuralFeature_changeable_description = Whether the value of this feature can be changed
+_UI_EStructuralFeature_volatile_feature = Volatile
+_UI_EStructuralFeature_volatile_description = Whether no field will be generated for this feature
+_UI_EStructuralFeature_transient_feature = Transient
+_UI_EStructuralFeature_transient_description = Whether the value of this feature will be serialized
+_UI_EStructuralFeature_defaultValueLiteral_feature = Default Value Literal
+_UI_EStructuralFeature_defaultValueLiteral_description = The literal representation of the default value for this feature
+_UI_EStructuralFeature_defaultValue_feature = Default Value
+_UI_EStructuralFeature_defaultValue_description = The default value for this feature
+_UI_EStructuralFeature_unsettable_feature = Unsettable
+_UI_EStructuralFeature_unsettable_description = Whether the value space for this feature includes the state of not being set
+_UI_EStructuralFeature_derived_feature = Derived
+_UI_EStructuralFeature_derived_description = Whether the value of this feature is derived from the values of other features
+_UI_EStructuralFeature_eContainingClass_feature = EContaining Class
+_UI_EStructuralFeature_eContainingClass_description = The class that defines this feature
+_UI_ETypedElement_ordered_feature = Ordered
+_UI_ETypedElement_ordered_description = Whether the order in which values occur is meaningful
+_UI_ETypedElement_unique_feature = Unique
+_UI_ETypedElement_unique_description = Whether the same value may occur more than once
+_UI_ETypedElement_lowerBound_feature = Lower Bound
+_UI_ETypedElement_lowerBound_description = The minimum number of values that must occur
+_UI_ETypedElement_upperBound_feature = Upper Bound
+_UI_ETypedElement_upperBound_description = The maximum number of values that may occur; -1 represents unbounded and -2 represents unspecified
+_UI_ETypedElement_many_feature = Many
+_UI_ETypedElement_many_description = Whether more than one value may occur
+_UI_ETypedElement_required_feature = Required
+_UI_ETypedElement_required_description = Whether at least one value must occur
+_UI_ETypedElement_eType_feature = EType
+_UI_ETypedElement_eType_description = The type of this element
+_UI_ETypedElement_eGenericType_feature = EGeneric Type
+_UI_EStringToStringMapEntry_key_feature = Key
+_UI_EStringToStringMapEntry_key_description = The key of this map entry
+_UI_EStringToStringMapEntry_value_feature = Value
+_UI_EStringToStringMapEntry_value_description = The value of this map entry
+_UI_EGenericType_eUpperBound_feature = EUpper Bound
+_UI_EGenericType_eTypeArguments_feature = EType Arguments
+_UI_EGenericType_eRawType_feature = ERaw Type
+_UI_EGenericType_eRawType_description = The erased type denoted by this generic type
+_UI_EGenericType_eLowerBound_feature = ELower Bound
+_UI_EGenericType_eTypeParameter_feature = EType Parameter
+_UI_EGenericType_eTypeParameter_description = The type parameter denoted by this generic type
+_UI_EGenericType_eClassifier_feature = EClassifier
+_UI_EGenericType_eClassifier_description = The classifier denoted by this generic type
+_UI_ETypeParameter_eBounds_feature = EBounds
+_UI_XIfExpression_if_feature = If
+_UI_XIfExpression_then_feature = Then
+_UI_XIfExpression_else_feature = Else
+_UI_XSwitchExpression_switch_feature = Switch
+_UI_XSwitchExpression_cases_feature = Cases
+_UI_XSwitchExpression_default_feature = Default
+_UI_XSwitchExpression_declaredParam_feature = Declared Param
+_UI_XCasePart_case_feature = Case
+_UI_XCasePart_then_feature = Then
+_UI_XCasePart_typeGuard_feature = Type Guard
+_UI_XCasePart_fallThrough_feature = Fall Through
+_UI_XBlockExpression_expressions_feature = Expressions
+_UI_XVariableDeclaration_type_feature = Type
+_UI_XVariableDeclaration_name_feature = Name
+_UI_XVariableDeclaration_right_feature = Right
+_UI_XVariableDeclaration_writeable_feature = Writeable
+_UI_XAbstractFeatureCall_feature_feature = Feature
+_UI_XAbstractFeatureCall_typeArguments_feature = Type Arguments
+_UI_XAbstractFeatureCall_implicitReceiver_feature = Implicit Receiver
+_UI_XAbstractFeatureCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XAbstractFeatureCall_validFeature_feature = Valid Feature
+_UI_XAbstractFeatureCall_implicitFirstArgument_feature = Implicit First Argument
+_UI_XMemberFeatureCall_memberCallTarget_feature = Member Call Target
+_UI_XMemberFeatureCall_memberCallArguments_feature = Member Call Arguments
+_UI_XMemberFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XMemberFeatureCall_explicitStatic_feature = Explicit Static
+_UI_XMemberFeatureCall_nullSafe_feature = Null Safe
+_UI_XMemberFeatureCall_typeLiteral_feature = Type Literal
+_UI_XMemberFeatureCall_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XMemberFeatureCall_packageFragment_feature = Package Fragment
+_UI_XFeatureCall_featureCallArguments_feature = Feature Call Arguments
+_UI_XFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XFeatureCall_typeLiteral_feature = Type Literal
+_UI_XFeatureCall_packageFragment_feature = Package Fragment
+_UI_XConstructorCall_constructor_feature = Constructor
+_UI_XConstructorCall_arguments_feature = Arguments
+_UI_XConstructorCall_typeArguments_feature = Type Arguments
+_UI_XConstructorCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XConstructorCall_validFeature_feature = Valid Feature
+_UI_XConstructorCall_explicitConstructorCall_feature = Explicit Constructor Call
+_UI_XConstructorCall_anonymousClassConstructorCall_feature = Anonymous Class Constructor Call
+_UI_XBooleanLiteral_isTrue_feature = Is True
+_UI_XNumberLiteral_value_feature = Value
+_UI_XStringLiteral_value_feature = Value
+_UI_XCollectionLiteral_elements_feature = Elements
+_UI_XClosure_declaredFormalParameters_feature = Declared Formal Parameters
+_UI_XClosure_expression_feature = Expression
+_UI_XClosure_explicitSyntax_feature = Explicit Syntax
+_UI_XClosure_implicitFormalParameters_feature = Implicit Formal Parameters
+_UI_XCastedExpression_type_feature = Type
+_UI_XCastedExpression_target_feature = Target
+_UI_XBinaryOperation_leftOperand_feature = Left Operand
+_UI_XBinaryOperation_rightOperand_feature = Right Operand
+_UI_XBinaryOperation_reassignFirstArgument_feature = Reassign First Argument
+_UI_XUnaryOperation_operand_feature = Operand
+_UI_XPostfixOperation_operand_feature = Operand
+_UI_XForLoopExpression_forExpression_feature = For Expression
+_UI_XForLoopExpression_eachExpression_feature = Each Expression
+_UI_XForLoopExpression_declaredParam_feature = Declared Param
+_UI_XBasicForLoopExpression_expression_feature = Expression
+_UI_XBasicForLoopExpression_eachExpression_feature = Each Expression
+_UI_XBasicForLoopExpression_initExpressions_feature = Init Expressions
+_UI_XBasicForLoopExpression_updateExpressions_feature = Update Expressions
+_UI_XAbstractWhileExpression_predicate_feature = Predicate
+_UI_XAbstractWhileExpression_body_feature = Body
+_UI_XTypeLiteral_type_feature = Type
+_UI_XTypeLiteral_arrayDimensions_feature = Array Dimensions
+_UI_XInstanceOfExpression_type_feature = Type
+_UI_XInstanceOfExpression_expression_feature = Expression
+_UI_XThrowExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_finallyExpression_feature = Finally Expression
+_UI_XTryCatchFinallyExpression_catchClauses_feature = Catch Clauses
+_UI_XCatchClause_expression_feature = Expression
+_UI_XCatchClause_declaredParam_feature = Declared Param
+_UI_XAssignment_assignable_feature = Assignable
+_UI_XAssignment_value_feature = Value
+_UI_XAssignment_explicitStatic_feature = Explicit Static
+_UI_XAssignment_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XReturnExpression_expression_feature = Expression
+_UI_XSynchronizedExpression_param_feature = Param
+_UI_XSynchronizedExpression_expression_feature = Expression
+_UI_Unknown_feature = Unspecified
+
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml
new file mode 100644
index 0000000..24fc9d5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/plugin.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ 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 
+  
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated dto -->
+      <factory
+            uri="http://osbp.eclipse.org/dsl/dto/v1"
+            class="org.eclipse.osbp.dsl.semantic.dto.provider.OSBPDtoItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated dto -->
+      <extender
+            uri="http://osbp.eclipse.org/dsl/common/types/v1"
+            class="org.eclipse.osbp.dsl.semantic.dto.provider.OSBPDtoItemProviderAdapterFactory$OSBPTypesChildCreationExtender"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml
new file mode 100644
index 0000000..75659bf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.dto.xtext.edit</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/DTOEditPlugin.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/DTOEditPlugin.java
new file mode 100644
index 0000000..6377917
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/DTOEditPlugin.java
@@ -0,0 +1,104 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.TypesEditPlugin;
+
+/**
+ * This is the central singleton for the DTO edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class DTOEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final DTOEditPlugin INSTANCE = new DTOEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DTOEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     org.eclipse.xtext.common.types.provider.TypesEditPlugin.INSTANCE,
+		     TypesEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LAutoInheritDtoItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LAutoInheritDtoItemProvider.java
new file mode 100644
index 0000000..09824c5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LAutoInheritDtoItemProvider.java
@@ -0,0 +1,139 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LAutoInheritDtoItemProvider extends LDtoItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAutoInheritDtoItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LAutoInheritDto.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LAutoInheritDto"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LAutoInheritDto)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LAutoInheritDto_type") :
+			getString("_UI_LAutoInheritDto_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__FEATURES ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java
new file mode 100644
index 0000000..45e0958
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractAttributeItemProvider.java
@@ -0,0 +1,678 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.xbase.XbaseFactory;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoAbstractAttributeItemProvider extends LDtoFeatureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoAbstractAttributeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdPropertyDescriptor(object);
+			addUuidPropertyDescriptor(object);
+			addVersionPropertyDescriptor(object);
+			addLazyPropertyDescriptor(object);
+			addCascadingPropertyDescriptor(object);
+			addTransientPropertyDescriptor(object);
+			addDerivedPropertyDescriptor(object);
+			addDirtyPropertyDescriptor(object);
+			addDomainKeyPropertyDescriptor(object);
+			addDomainDescriptionPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_id_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_id_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uuid feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUuidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_uuid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_uuid_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__UUID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Version feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addVersionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_version_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_version_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__VERSION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Lazy feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLazyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_lazy_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_lazy_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__LAZY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cascading feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCascadingPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_cascading_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_cascading_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__CASCADING,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Transient feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTransientPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_transient_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_transient_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__TRANSIENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Derived feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDerivedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_derived_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_derived_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dirty feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDirtyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_dirty_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_dirty_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DIRTY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDomainKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_domainKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_domainKey_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDomainDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_domainDescription_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_domainDescription_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_type_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoAbstractAttribute)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoAbstractAttribute_type") :
+			getString("_UI_LDtoAbstractAttribute_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoAbstractAttribute.class)) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES:
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXIfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSwitchExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBlockExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXVariableDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXMemberFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXConstructorCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXNullLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXNumberLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXStringLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXListLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSetLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXClosure()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXCastedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBinaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXUnaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXPostfixOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBasicForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXDoWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXTypeLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXInstanceOfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXThrowExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXTryCatchFinallyExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXAssignment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXReturnExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSynchronizedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java
new file mode 100644
index 0000000..1515e95
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAbstractReferenceItemProvider.java
@@ -0,0 +1,338 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoAbstractReferenceItemProvider extends LDtoFeatureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoAbstractReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLazyPropertyDescriptor(object);
+			addCascadingPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Lazy feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLazyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_lazy_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_lazy_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__LAZY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cascading feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCascadingPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_cascading_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_cascading_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtoAbstractReference_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtoAbstractReference_type_feature", "_UI_LDtoAbstractReference_type"),
+				 OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LREFERENCE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoAbstractReference)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoAbstractReference_type") :
+			getString("_UI_LDtoAbstractReference_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoAbstractReference.class)) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAttributeItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAttributeItemProvider.java
new file mode 100644
index 0000000..aca85dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoAttributeItemProvider.java
@@ -0,0 +1,110 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoAttributeItemProvider extends LDtoAbstractAttributeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoAttributeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LDtoAttribute.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoAttribute"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoAttribute)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoAttribute_type") :
+			getString("_UI_LDtoAttribute_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoFeatureItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoFeatureItemProvider.java
new file mode 100644
index 0000000..2736bdb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoFeatureItemProvider.java
@@ -0,0 +1,286 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LAnnotationTargetItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoFeatureItemProvider extends LAnnotationTargetItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoFeatureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFeature_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFeature_name_feature", "_UI_LFeature_type"),
+				 OSBPTypesPackage.Literals.LFEATURE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_FEATURE__MAPPER);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDtoFeature.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoFeature"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoFeature)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoFeature_type") :
+			getString("_UI_LDtoFeature_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoFeature.class)) {
+			case OSBPDtoPackage.LDTO_FEATURE__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY:
+			case OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO:
+			case OSBPDtoPackage.LDTO_FEATURE__MAPPER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+				 OSBPTypesFactory.eINSTANCE.createLMultiplicity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_FEATURE__MAPPER,
+				 OSBPDtoFactory.eINSTANCE.createLDtoMapper()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DTOEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoInheritedAttributeItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoInheritedAttributeItemProvider.java
new file mode 100644
index 0000000..7d1c3c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoInheritedAttributeItemProvider.java
@@ -0,0 +1,240 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoInheritedAttributeItemProvider extends LDtoAbstractAttributeItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedAttributeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInheritedFeaturePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Inherited Feature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInheritedFeaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtoInheritedAttribute_inheritedFeature_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtoInheritedAttribute_inheritedFeature_feature", "_UI_LDtoInheritedAttribute_type"),
+				 OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDtoInheritedAttribute.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoInheritedAttribute"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoInheritedAttribute)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoInheritedAttribute_type") :
+			getString("_UI_LDtoInheritedAttribute_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoInheritedAttribute.class)) {
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM ||
+			childFeature == OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoInheritedReferenceItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoInheritedReferenceItemProvider.java
new file mode 100644
index 0000000..2a9f1a0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoInheritedReferenceItemProvider.java
@@ -0,0 +1,244 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoInheritedReferenceItemProvider extends LDtoAbstractReferenceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addInheritedFeaturePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Inherited Feature feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addInheritedFeaturePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtoInheritedReference_inheritedFeature_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtoInheritedReference_inheritedFeature_feature", "_UI_LDtoInheritedReference_type"),
+				 OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDtoInheritedReference.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoInheritedReference"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoInheritedReference)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoInheritedReference_type") :
+			getString("_UI_LDtoInheritedReference_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoInheritedReference.class)) {
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM ||
+			childFeature == OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoItemProvider.java
new file mode 100644
index 0000000..995f305
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoItemProvider.java
@@ -0,0 +1,477 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LClassItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDto} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoItemProvider extends LClassItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSuperTypePropertyDescriptor(object);
+			addSubTypesPropertyDescriptor(object);
+			addWrappedTypePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Super Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSuperTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDto_superType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDto_superType_feature", "_UI_LDto_type"),
+				 OSBPDtoPackage.Literals.LDTO__SUPER_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Sub Types feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSubTypesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDto_subTypes_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDto_subTypes_feature", "_UI_LDto_type"),
+				 OSBPDtoPackage.Literals.LDTO__SUB_TYPES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Wrapped Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addWrappedTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDto_wrappedType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDto_wrappedType_feature", "_UI_LDto_type"),
+				 OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO__FEATURES);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDto.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDto"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDto)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDto_type") :
+			getString("_UI_LDto_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDto.class)) {
+			case OSBPDtoPackage.LDTO__FEATURES:
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_JVM:
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM:
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__FEATURES,
+				 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__FEATURES,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__FEATURES,
+				 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__FEATURES,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__FEATURES,
+				 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__FEATURES,
+				 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__FEATURES ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM ||
+			childFeature == OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DTOEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoMapperItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoMapperItemProvider.java
new file mode 100644
index 0000000..0a0a31f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoMapperItemProvider.java
@@ -0,0 +1,483 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.xtext.xbase.XbaseFactory;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoMapperItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoMapperItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDtoMapper.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoMapper"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LDtoMapper_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoMapper.class)) {
+			case OSBPDtoPackage.LDTO_MAPPER__TO_DTO:
+			case OSBPDtoPackage.LDTO_MAPPER__FROM_DTO:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXIfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXSwitchExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXBlockExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXVariableDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXMemberFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXConstructorCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXNullLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXNumberLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXStringLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXListLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXSetLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXClosure()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXCastedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXBinaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXUnaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXPostfixOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXBasicForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXDoWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXTypeLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXInstanceOfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXThrowExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXTryCatchFinallyExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXAssignment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXReturnExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XbaseFactory.eINSTANCE.createXSynchronizedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXIfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXSwitchExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXBlockExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXVariableDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXMemberFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXConstructorCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXNullLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXNumberLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXStringLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXListLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXSetLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXClosure()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXCastedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXBinaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXUnaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXPostfixOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXBasicForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXDoWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXTypeLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXInstanceOfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXThrowExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXTryCatchFinallyExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXAssignment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXReturnExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XbaseFactory.eINSTANCE.createXSynchronizedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPDtoPackage.Literals.LDTO_MAPPER__TO_DTO ||
+			childFeature == OSBPDtoPackage.Literals.LDTO_MAPPER__FROM_DTO;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DTOEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoModelItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoModelItemProvider.java
new file mode 100644
index 0000000..24bee8f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoModelItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoModel;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoModelItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_MODEL__PACKAGES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDtoModel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoModel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LDtoModel_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoModel.class)) {
+			case OSBPDtoPackage.LDTO_MODEL__PACKAGES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_MODEL__PACKAGES,
+				 OSBPTypesFactory.eINSTANCE.createLTypedPackage()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DTOEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoOperationItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoOperationItemProvider.java
new file mode 100644
index 0000000..72564f5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoOperationItemProvider.java
@@ -0,0 +1,279 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LOperationItemProvider;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoOperation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoOperationItemProvider extends LOperationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoOperationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFeature_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFeature_name_feature", "_UI_LFeature_type"),
+				 OSBPTypesPackage.Literals.LFEATURE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_FEATURE__MAPPER);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDtoOperation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoOperation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoOperation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoOperation_type") :
+			getString("_UI_LDtoOperation_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDtoOperation.class)) {
+			case OSBPDtoPackage.LDTO_OPERATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY:
+			case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO:
+			case OSBPDtoPackage.LDTO_OPERATION__MAPPER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+				 OSBPTypesFactory.eINSTANCE.createLMultiplicity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_FEATURE__MAPPER,
+				 OSBPDtoFactory.eINSTANCE.createLDtoMapper()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return DTOEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoReferenceItemProvider.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoReferenceItemProvider.java
new file mode 100644
index 0000000..ca45c44
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/LDtoReferenceItemProvider.java
@@ -0,0 +1,135 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDtoReferenceItemProvider extends LDtoAbstractReferenceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addOppositePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Opposite feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOppositePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDtoReference_opposite_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDtoReference_opposite_feature", "_UI_LDtoReference_type"),
+				 OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LDtoReference.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDtoReference"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDtoReference)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDtoReference_type") :
+			getString("_UI_LDtoReference_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/OSBPDtoItemProviderAdapterFactory.java b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/OSBPDtoItemProviderAdapterFactory.java
new file mode 100644
index 0000000..7acf76f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.edit/src/org/eclipse/osbp/dsl/semantic/dto/provider/OSBPDtoItemProviderAdapterFactory.java
@@ -0,0 +1,637 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.edit.command.CommandParameter;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.util.OSBPTypesSwitch;
+
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+
+import org.eclipse.osbp.dsl.semantic.dto.util.OSBPDtoAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPDtoItemProviderAdapterFactory extends OSBPDtoAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPDtoItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoModelItemProvider lDtoModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoModelAdapter() {
+		if (lDtoModelItemProvider == null) {
+			lDtoModelItemProvider = new LDtoModelItemProvider(this);
+		}
+
+		return lDtoModelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDto} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoItemProvider lDtoItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDto}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoAdapter() {
+		if (lDtoItemProvider == null) {
+			lDtoItemProvider = new LDtoItemProvider(this);
+		}
+
+		return lDtoItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAutoInheritDtoItemProvider lAutoInheritDtoItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLAutoInheritDtoAdapter() {
+		if (lAutoInheritDtoItemProvider == null) {
+			lAutoInheritDtoItemProvider = new LAutoInheritDtoItemProvider(this);
+		}
+
+		return lAutoInheritDtoItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoMapperItemProvider lDtoMapperItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoMapperAdapter() {
+		if (lDtoMapperItemProvider == null) {
+			lDtoMapperItemProvider = new LDtoMapperItemProvider(this);
+		}
+
+		return lDtoMapperItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoFeatureItemProvider lDtoFeatureItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoFeatureAdapter() {
+		if (lDtoFeatureItemProvider == null) {
+			lDtoFeatureItemProvider = new LDtoFeatureItemProvider(this);
+		}
+
+		return lDtoFeatureItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoInheritedAttributeItemProvider lDtoInheritedAttributeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoInheritedAttributeAdapter() {
+		if (lDtoInheritedAttributeItemProvider == null) {
+			lDtoInheritedAttributeItemProvider = new LDtoInheritedAttributeItemProvider(this);
+		}
+
+		return lDtoInheritedAttributeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoAttributeItemProvider lDtoAttributeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoAttributeAdapter() {
+		if (lDtoAttributeItemProvider == null) {
+			lDtoAttributeItemProvider = new LDtoAttributeItemProvider(this);
+		}
+
+		return lDtoAttributeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoInheritedReferenceItemProvider lDtoInheritedReferenceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoInheritedReferenceAdapter() {
+		if (lDtoInheritedReferenceItemProvider == null) {
+			lDtoInheritedReferenceItemProvider = new LDtoInheritedReferenceItemProvider(this);
+		}
+
+		return lDtoInheritedReferenceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoReferenceItemProvider lDtoReferenceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoReferenceAdapter() {
+		if (lDtoReferenceItemProvider == null) {
+			lDtoReferenceItemProvider = new LDtoReferenceItemProvider(this);
+		}
+
+		return lDtoReferenceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.dto.LDtoOperation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoOperationItemProvider lDtoOperationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.dto.LDtoOperation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDtoOperationAdapter() {
+		if (lDtoOperationItemProvider == null) {
+			lDtoOperationItemProvider = new LDtoOperationItemProvider(this);
+		}
+
+		return lDtoOperationItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (lDtoModelItemProvider != null) lDtoModelItemProvider.dispose();
+		if (lDtoItemProvider != null) lDtoItemProvider.dispose();
+		if (lAutoInheritDtoItemProvider != null) lAutoInheritDtoItemProvider.dispose();
+		if (lDtoMapperItemProvider != null) lDtoMapperItemProvider.dispose();
+		if (lDtoFeatureItemProvider != null) lDtoFeatureItemProvider.dispose();
+		if (lDtoInheritedAttributeItemProvider != null) lDtoInheritedAttributeItemProvider.dispose();
+		if (lDtoAttributeItemProvider != null) lDtoAttributeItemProvider.dispose();
+		if (lDtoInheritedReferenceItemProvider != null) lDtoInheritedReferenceItemProvider.dispose();
+		if (lDtoReferenceItemProvider != null) lDtoReferenceItemProvider.dispose();
+		if (lDtoOperationItemProvider != null) lDtoOperationItemProvider.dispose();
+	}
+
+	/**
+	 * A child creation extender for the {@link OSBPTypesPackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class OSBPTypesChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected static class CreationSwitch extends OSBPTypesSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLTypedPackage(LTypedPackage object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLType(LType object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLFeature(LFeature object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject)object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ResourceLocator getResourceLocator() {
+			return DTOEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.tests/.project b/org.eclipse.osbp.dsl.dto.xtext.tests/.project
new file mode 100644
index 0000000..89d7cd3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.dto.xtext.tests</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>
+	</buildSpec>
+	<natures>
+		<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.dsl.dto.xtext.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.dto.xtext.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d2b764d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.dto.xtext.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.dto.xtext.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.dto.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
diff --git a/org.eclipse.osbp.dsl.dto.xtext.tests/build.properties b/org.eclipse.osbp.dsl.dto.xtext.tests/build.properties
new file mode 100644
index 0000000..c22eebe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+       .
diff --git a/org.eclipse.osbp.dsl.dto.xtext.tests/org.eclipse.osbp.dsl.dto.xtext.tests.launch b/org.eclipse.osbp.dsl.dto.xtext.tests/org.eclipse.osbp.dsl.dto.xtext.tests.launch
new file mode 100644
index 0000000..b002f1c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/org.eclipse.osbp.dsl.dto.xtext.tests.launch
@@ -0,0 +1,13 @@
+<?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.dsl.dto.xtext.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.dsl.dto.xtext.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.PROJECT_ATTR" value="org.eclipse.osbp.dsl.dto.xtext.tests"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml
new file mode 100644
index 0000000..0238a88
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.tests/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.dto.xtext.tests</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+						<fileset>
+							<directory>src-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.osbp.tools.maven</groupId>
+				<artifactId>org.eclipse.osbp.tools.maven.plugin.entity</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/src-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<failIfNoTests>true</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/.project b/org.eclipse.osbp.dsl.dto.xtext.ui/.project
new file mode 100644
index 0000000..f2f426c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/.project
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.dto.xtext.ui</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.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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.dto.xtext.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.dto.xtext.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..fd581f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,32 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.dto.xtext.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.dto.xtext.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ 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.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.jdt.ui,
+ org.eclipse.jdt.core,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.dsl.xtext.lazyresolver.ui;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.dto.xtext.ui;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.xtext.ui.contentassist;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.dsl.dto.xtext.ui.quickfix;x-internal:=true;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.dsl.dto.xtext.ui.internal.DtoGrammarActivator
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/about.html b/org.eclipse.osbp.dsl.dto.xtext.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.ui/about.ini b/org.eclipse.osbp.dsl.dto.xtext.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.ui/about.mappings b/org.eclipse.osbp.dsl.dto.xtext.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.ui/about.properties b/org.eclipse.osbp.dsl.dto.xtext.ui/about.properties
new file mode 100644
index 0000000..41558e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.dto.xtext.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties b/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties
new file mode 100644
index 0000000..432a799
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/build.properties
@@ -0,0 +1,11 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/,\
+               epl-v10.html,\
+               license.html
+jre.compilation.profile = JavaSE-1.8
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.dto.xtext.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.ui/icons/converter.gif b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/converter.gif
new file mode 100644
index 0000000..6357430
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/converter.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/icons/dsl_dto.png b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/dsl_dto.png
new file mode 100644
index 0000000..78fd873
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/dsl_dto.png
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/icons/import.gif b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/import.gif
new file mode 100644
index 0000000..b0a24b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/import.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/icons/inheritedfeature.gif b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/inheritedfeature.gif
new file mode 100644
index 0000000..acf4936
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/inheritedfeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/icons/inheritedproperty.gif b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/inheritedproperty.gif
new file mode 100644
index 0000000..ef371d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/inheritedproperty.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/icons/todto.gif b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/todto.gif
new file mode 100644
index 0000000..af2f47b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/todto.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/icons/toentity.gif b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/toentity.gif
new file mode 100644
index 0000000..1bd1155
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/icons/toentity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/license.html b/org.eclipse.osbp.dsl.dto.xtext.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.ui/plugin.xml b/org.eclipse.osbp.dsl.dto.xtext.ui/plugin.xml
new file mode 100644
index 0000000..bb23d9c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/plugin.xml
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+              class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="dto"
+              icon="icons/dsl_dto.png"
+              id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+              matchingStrategy="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+              name="OSBP DtoGrammar Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+		    icon="icons/dsl_dto.png"
+            name="OSBP DtoGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.coloring"
+		    icon="icons/dsl_dto.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.templates"
+		    icon="icons/dsl_dto.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+            name="OSBP DtoGrammar"
+		    icon="icons/dsl_dto.png">
+            <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+            <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.dsl.dto.xtext.ui.keyword_DtoGrammar"
+            label="DtoGrammar"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="dto">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="dto">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.eclipse.osbp.dsl.dto.xtext.DtoGrammar -->
+    <extension
+            id="DtoGrammar.check.fast"
+            name="DtoGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="DtoGrammar.check.normal"
+            name="DtoGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="DtoGrammar.check.expensive"
+            name="DtoGrammar 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.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.compiler.preferencePage"
+		    icon="icons/dsl_dto.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.compiler.propertyPage"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.dsl.dto.xtext.DtoGrammar -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.dto.xtext.ui.Dtogrammar.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.dto.xtext.ui.Dtogrammar.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.dto.xtext.ui.Dtogrammar.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.compare.contentViewers"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="dto">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.compare.contentMergeViewers"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="dto" label="DtoGrammar Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.editors.documentProviders"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="dto">
+    </provider>
+  </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar"
+	        class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.refactoring"
+		    icon="icons/dsl_dto.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.dsl.dto.xtext.ui.keyword_DtoGrammar"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory: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.dsl.dto.xtext.DtoGrammar" 
+                          id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.ide.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="example.rulerContextMenuId"
+         id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.ide.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="additions"
+            id="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.ide.rulerContextMenu.toggleBreakpointAction">
+         </action>
+      </viewerContribution>
+   </extension>
+   
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.dto.xtext.DtoGrammar.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.dsl.dto.xtext.DtoGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml
new file mode 100644
index 0000000..3ddc62c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	
+	<artifactId>org.eclipse.osbp.dsl.dto.xtext.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/AbstractDtoGrammarUiModule.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/AbstractDtoGrammarUiModule.java
new file mode 100644
index 0000000..41f06bd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/AbstractDtoGrammarUiModule.java
@@ -0,0 +1,371 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractDtoGrammarUiModule extends DefaultUiModule {
+	
+	public AbstractDtoGrammarUiModule(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.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarLexer.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.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.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.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.dsl.dto.xtext.ui.quickfix.DtoGrammarQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider.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.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider.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.dsl.dto.xtext.ui.outline.DtoGrammarOutlineTreeProvider.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.dsl.dto.xtext.ui.outline.DtoGrammarOutlineTreeProvider.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;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.DtoGrammarProposalProvider.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.dsl.dto.xtext.ui.contentassist.antlr.DtoGrammarParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarLexer.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.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarLexer.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.dsl.dto.xtext.ui.contentassist.antlr.PartialDtoGrammarContentAssistParser.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarExecutableExtensionFactory.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarExecutableExtensionFactory.java
new file mode 100644
index 0000000..70d2a18
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarExecutableExtensionFactory.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.dsl.dto.xtext.ui.internal.DtoGrammarActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class DtoGrammarExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return DtoGrammarActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return DtoGrammarActivator.getInstance().getInjector(DtoGrammarActivator.ORG_ECLIPSE_OSBP_DSL_DTO_XTEXT_DTOGRAMMAR);
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/AbstractDtoGrammarProposalProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/AbstractDtoGrammarProposalProvider.java
new file mode 100644
index 0000000..f6281e6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/AbstractDtoGrammarProposalProvider.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractDtoGrammarProposalProvider extends org.eclipse.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider {
+		
+	public void completeLDTOModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Abstract(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_SuperType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_WrappedType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Features(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_InheritedFeature(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		if (assignment.getTerminal() instanceof CrossReference) {
+			lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+		}
+		if (assignment.getTerminal() instanceof RuleCall) {
+			completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+		}
+	}
+	public void completeDtoFeature_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Mapper(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Transient(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Constraints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Dirty(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Derived(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_DomainDescription(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_DerivedGetterExpression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Version(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Uuid(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_DomainKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Multiplicity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Cascading(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Lazy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeDtoFeature_Opposite(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoFeature_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoMapper_ToDTO(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeDtoMapper_FromDTO(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeLimitedMapperDtoMapper_ToDTO(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_LDTOModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Class(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtoFeature(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DtoMapper(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LimitedMapperDtoMapper(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_RefFQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/DtoGrammarParser.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/DtoGrammarParser.java
new file mode 100644
index 0000000..9180007
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/DtoGrammarParser.java
@@ -0,0 +1,841 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+public class DtoGrammarParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private DtoGrammarGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarParser createParser() {
+		org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarParser result = new org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarParser(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.getClassAccess().getAlternatives_2(), "rule__Class__Alternatives_2");
+					put(grammarAccess.getDtoFeatureAccess().getAlternatives_2(), "rule__DtoFeature__Alternatives_2");
+					put(grammarAccess.getDtoFeatureAccess().getAlternatives_2_0_3(), "rule__DtoFeature__Alternatives_2_0_3");
+					put(grammarAccess.getDtoFeatureAccess().getAlternatives_2_1_5(), "rule__DtoFeature__Alternatives_2_1_5");
+					put(grammarAccess.getDtoFeatureAccess().getAlternatives_2_5_1(), "rule__DtoFeature__Alternatives_2_5_1");
+					put(grammarAccess.getDtoFeatureAccess().getAlternatives_2_6_2(), "rule__DtoFeature__Alternatives_2_6_2");
+					put(grammarAccess.getDtoFeatureAccess().getAlternatives_2_7_7(), "rule__DtoFeature__Alternatives_2_7_7");
+					put(grammarAccess.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
+					put(grammarAccess.getDataTypeAccess().getAlternatives_2(), "rule__DataType__Alternatives_2");
+					put(grammarAccess.getAllConstraintsAccess().getAlternatives(), "rule__AllConstraints__Alternatives");
+					put(grammarAccess.getDataTypeConstraintAccess().getAlternatives(), "rule__DataTypeConstraint__Alternatives");
+					put(grammarAccess.getDateConstraintAccess().getAlternatives(), "rule__DateConstraint__Alternatives");
+					put(grammarAccess.getBlobTypeConstraintAccess().getAlternatives(), "rule__BlobTypeConstraint__Alternatives");
+					put(grammarAccess.getScalarTypeAccess().getAlternatives(), "rule__ScalarType__Alternatives");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAlternatives_2(), "rule__AttributeMatchingConstraint__Alternatives_2");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives(), "rule__ValidIDWithKeywords__Alternatives");
+					put(grammarAccess.getLIntAccess().getAlternatives_0(), "rule__LInt__Alternatives_0");
+					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.getConstraintSeverityAccess().getAlternatives(), "rule__ConstraintSeverity__Alternatives");
+					put(grammarAccess.getDateTypeAccess().getAlternatives(), "rule__DateType__Alternatives");
+					put(grammarAccess.getLVisibilityAccess().getAlternatives(), "rule__LVisibility__Alternatives");
+					put(grammarAccess.getLComparatorTypeAccess().getAlternatives(), "rule__LComparatorType__Alternatives");
+					put(grammarAccess.getLowerBoundAccess().getAlternatives(), "rule__LowerBound__Alternatives");
+					put(grammarAccess.getUpperBoundAccess().getAlternatives(), "rule__UpperBound__Alternatives");
+					put(grammarAccess.getClassAccess().getGroup(), "rule__Class__Group__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0(), "rule__Class__Group_2_0__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0_4(), "rule__Class__Group_2_0_4__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0_5(), "rule__Class__Group_2_0_5__0");
+					put(grammarAccess.getClassAccess().getGroup_2_1(), "rule__Class__Group_2_1__0");
+					put(grammarAccess.getClassAccess().getGroup_2_1_4(), "rule__Class__Group_2_1_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup(), "rule__DtoFeature__Group__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_0(), "rule__DtoFeature__Group_2_0__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_0_0(), "rule__DtoFeature__Group_2_0_0__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_0_1(), "rule__DtoFeature__Group_2_0_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_0_2(), "rule__DtoFeature__Group_2_0_2__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_0_2_3(), "rule__DtoFeature__Group_2_0_2_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_1(), "rule__DtoFeature__Group_2_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_1_1(), "rule__DtoFeature__Group_2_1_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_1_4(), "rule__DtoFeature__Group_2_1_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_1_4_3(), "rule__DtoFeature__Group_2_1_4_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_2(), "rule__DtoFeature__Group_2_2__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1(), "rule__DtoFeature__Group_2_2_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_2(), "rule__DtoFeature__Group_2_2_1_2__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_4(), "rule__DtoFeature__Group_2_2_1_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_4_3(), "rule__DtoFeature__Group_2_2_1_4_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_3(), "rule__DtoFeature__Group_2_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1(), "rule__DtoFeature__Group_2_3_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1_3(), "rule__DtoFeature__Group_2_3_1_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1_3_3(), "rule__DtoFeature__Group_2_3_1_3_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_4(), "rule__DtoFeature__Group_2_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1(), "rule__DtoFeature__Group_2_4_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1_4(), "rule__DtoFeature__Group_2_4_1_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1_4_3(), "rule__DtoFeature__Group_2_4_1_4_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_5(), "rule__DtoFeature__Group_2_5__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_5_4(), "rule__DtoFeature__Group_2_5_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_5_6(), "rule__DtoFeature__Group_2_5_6__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_5_6_3(), "rule__DtoFeature__Group_2_5_6_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_6(), "rule__DtoFeature__Group_2_6__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1(), "rule__DtoFeature__Group_2_6_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1_4(), "rule__DtoFeature__Group_2_6_1_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1_6(), "rule__DtoFeature__Group_2_6_1_6__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1_7(), "rule__DtoFeature__Group_2_6_1_7__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1_7_3(), "rule__DtoFeature__Group_2_6_1_7_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_7(), "rule__DtoFeature__Group_2_7__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_7_4(), "rule__DtoFeature__Group_2_7_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_7_6(), "rule__DtoFeature__Group_2_7_6__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_7_6_3(), "rule__DtoFeature__Group_2_7_6_3__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_8(), "rule__DtoFeature__Group_2_8__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_8_1(), "rule__DtoFeature__Group_2_8_1__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_8_1_4(), "rule__DtoFeature__Group_2_8_1_4__0");
+					put(grammarAccess.getDtoFeatureAccess().getGroup_2_8_1_4_1(), "rule__DtoFeature__Group_2_8_1_4_1__0");
+					put(grammarAccess.getDtoMapperAccess().getGroup(), "rule__DtoMapper__Group__0");
+					put(grammarAccess.getDtoMapperAccess().getGroup_3(), "rule__DtoMapper__Group_3__0");
+					put(grammarAccess.getLimitedMapperDtoMapperAccess().getGroup(), "rule__LimitedMapperDtoMapper__Group__0");
+					put(grammarAccess.getRefFQNAccess().getGroup(), "rule__RefFQN__Group__0");
+					put(grammarAccess.getRefFQNAccess().getGroup_1(), "rule__RefFQN__Group_1__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup(), "rule__TypedPackage__Group__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup_3(), "rule__TypedPackage__Group_3__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup(), "rule__DataType__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0(), "rule__DataType__Group_2_0__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4(), "rule__DataType__Group_2_0_4__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3(), "rule__DataType__Group_2_0_4_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1(), "rule__DataType__Group_2_1__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3(), "rule__DataType__Group_2_1_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3(), "rule__DataType__Group_2_1_3_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2(), "rule__DataType__Group_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2(), "rule__DataType__Group_2_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3(), "rule__DataType__Group_2_2_2_3__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup(), "rule__DtCAssertFalse__Group__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0(), "rule__DtCAssertFalse__Group_2_0__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1(), "rule__DtCAssertFalse__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_1(), "rule__DtCAssertFalse__Group_2_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2(), "rule__DtCAssertFalse__Group_2_2__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0(), "rule__DtCAssertFalse__Group_2_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup(), "rule__DtCAssertTrue__Group__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0(), "rule__DtCAssertTrue__Group_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1(), "rule__DtCAssertTrue__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_1(), "rule__DtCAssertTrue__Group_2_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2(), "rule__DtCAssertTrue__Group_2_2__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0(), "rule__DtCAssertTrue__Group_2_2_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup(), "rule__DtCDecimalMax__Group__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0(), "rule__DtCDecimalMax__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1(), "rule__DtCDecimalMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_1(), "rule__DtCDecimalMax__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2(), "rule__DtCDecimalMax__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0(), "rule__DtCDecimalMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup(), "rule__DtCDecimalMin__Group__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0(), "rule__DtCDecimalMin__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1(), "rule__DtCDecimalMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_1(), "rule__DtCDecimalMin__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2(), "rule__DtCDecimalMin__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0(), "rule__DtCDecimalMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup(), "rule__DtCDigits__Group__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0(), "rule__DtCDigits__Group_6_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1(), "rule__DtCDigits__Group_6_0_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_1(), "rule__DtCDigits__Group_6_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2(), "rule__DtCDigits__Group_6_2__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0(), "rule__DtCDigits__Group_6_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup(), "rule__DtCFuture__Group__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0(), "rule__DtCFuture__Group_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0_1(), "rule__DtCFuture__Group_2_0_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_1(), "rule__DtCFuture__Group_2_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2(), "rule__DtCFuture__Group_2_2__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2_0(), "rule__DtCFuture__Group_2_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup(), "rule__DtCPast__Group__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0(), "rule__DtCPast__Group_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0_1(), "rule__DtCPast__Group_2_0_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_1(), "rule__DtCPast__Group_2_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2(), "rule__DtCPast__Group_2_2__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2_0(), "rule__DtCPast__Group_2_2_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup(), "rule__DtCNumericMax__Group__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0(), "rule__DtCNumericMax__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0_1(), "rule__DtCNumericMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_1(), "rule__DtCNumericMax__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2(), "rule__DtCNumericMax__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2_0(), "rule__DtCNumericMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup(), "rule__DtCNumericMin__Group__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0(), "rule__DtCNumericMin__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0_1(), "rule__DtCNumericMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_1(), "rule__DtCNumericMin__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2(), "rule__DtCNumericMin__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2_0(), "rule__DtCNumericMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup(), "rule__DtCNotNull__Group__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0(), "rule__DtCNotNull__Group_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0_1(), "rule__DtCNotNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_1(), "rule__DtCNotNull__Group_2_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2(), "rule__DtCNotNull__Group_2_2__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2_0(), "rule__DtCNotNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup(), "rule__DtCNull__Group__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0(), "rule__DtCNull__Group_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0_1(), "rule__DtCNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_1(), "rule__DtCNull__Group_2_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2(), "rule__DtCNull__Group_2_2__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2_0(), "rule__DtCNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup(), "rule__DtCRegEx__Group__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0(), "rule__DtCRegEx__Group_4_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0_1(), "rule__DtCRegEx__Group_4_0_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_1(), "rule__DtCRegEx__Group_4_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2(), "rule__DtCRegEx__Group_4_2__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2_0(), "rule__DtCRegEx__Group_4_2_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup(), "rule__DtCSize__Group__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0(), "rule__DtCSize__Group_6_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0_1(), "rule__DtCSize__Group_6_0_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_1(), "rule__DtCSize__Group_6_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2(), "rule__DtCSize__Group_6_2__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2_0(), "rule__DtCSize__Group_6_2_0__0");
+					put(grammarAccess.getEnumAccess().getGroup(), "rule__Enum__Group__0");
+					put(grammarAccess.getEnumAccess().getGroup_4(), "rule__Enum__Group_4__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup(), "rule__EnumLiteral__Group__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_0(), "rule__EnumLiteral__Group_1_0__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1(), "rule__EnumLiteral__Group_1_1__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1_2(), "rule__EnumLiteral__Group_1_1_2__0");
+					put(grammarAccess.getAnnotationDefAccess().getGroup(), "rule__AnnotationDef__Group__0");
+					put(grammarAccess.getResultFiltersAccess().getGroup(), "rule__ResultFilters__Group__0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getGroup(), "rule__AttributeMatchingConstraint__Group__0");
+					put(grammarAccess.getKeyAndValueAccess().getGroup(), "rule__KeyAndValue__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup(), "rule__LQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup_1(), "rule__LQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__0");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5(), "rule__ValidIDWithKeywords__Group_5__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup(), "rule__ValidLFQNWithKeywords__Group__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup_1(), "rule__ValidLFQNWithKeywords__Group_1__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup(), "rule__Multiplicity__Group__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup_2(), "rule__Multiplicity__Group_2__0");
+					put(grammarAccess.getLIntAccess().getGroup(), "rule__LInt__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup(), "rule__LDecimal__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup_1(), "rule__LDecimal__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__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.getLDTOModelAccess().getPackagesAssignment(), "rule__LDTOModel__PackagesAssignment");
+					put(grammarAccess.getClassAccess().getAnnotationsAssignment_1(), "rule__Class__AnnotationsAssignment_1");
+					put(grammarAccess.getClassAccess().getAbstractAssignment_2_0_1(), "rule__Class__AbstractAssignment_2_0_1");
+					put(grammarAccess.getClassAccess().getNameAssignment_2_0_3(), "rule__Class__NameAssignment_2_0_3");
+					put(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1(), "rule__Class__SuperTypeAssignment_2_0_4_1");
+					put(grammarAccess.getClassAccess().getWrappedTypeAssignment_2_0_5_1(), "rule__Class__WrappedTypeAssignment_2_0_5_1");
+					put(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_7(), "rule__Class__FeaturesAssignment_2_0_7");
+					put(grammarAccess.getClassAccess().getAbstractAssignment_2_1_1(), "rule__Class__AbstractAssignment_2_1_1");
+					put(grammarAccess.getClassAccess().getNameAssignment_2_1_3(), "rule__Class__NameAssignment_2_1_3");
+					put(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_4_1(), "rule__Class__SuperTypeAssignment_2_1_4_1");
+					put(grammarAccess.getClassAccess().getWrappedTypeAssignment_2_1_6(), "rule__Class__WrappedTypeAssignment_2_1_6");
+					put(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_8(), "rule__Class__FeaturesAssignment_2_1_8");
+					put(grammarAccess.getDtoFeatureAccess().getAnnotationsAssignment_1(), "rule__DtoFeature__AnnotationsAssignment_1");
+					put(grammarAccess.getDtoFeatureAccess().getInheritedFeatureAssignment_2_0_0_2(), "rule__DtoFeature__InheritedFeatureAssignment_2_0_0_2");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_0_1_1(), "rule__DtoFeature__TypeAssignment_2_0_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_0_2_2(), "rule__DtoFeature__PropertiesAssignment_2_0_2_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_0_2_3_1(), "rule__DtoFeature__PropertiesAssignment_2_0_2_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_0_3_0(), "rule__DtoFeature__MapperAssignment_2_0_3_0");
+					put(grammarAccess.getDtoFeatureAccess().getInheritedFeatureAssignment_2_1_1_1(), "rule__DtoFeature__InheritedFeatureAssignment_2_1_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_1_3(), "rule__DtoFeature__TypeAssignment_2_1_3");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_1_4_2(), "rule__DtoFeature__PropertiesAssignment_2_1_4_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_1_4_3_1(), "rule__DtoFeature__PropertiesAssignment_2_1_4_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_1_5_0(), "rule__DtoFeature__MapperAssignment_2_1_5_0");
+					put(grammarAccess.getDtoFeatureAccess().getTransientAssignment_2_2_1_0(), "rule__DtoFeature__TransientAssignment_2_2_1_0");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_2_1_1(), "rule__DtoFeature__TypeAssignment_2_2_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_2_1_2_1(), "rule__DtoFeature__ConstraintsAssignment_2_2_1_2_1");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_2_1_3(), "rule__DtoFeature__NameAssignment_2_2_1_3");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_2_1_4_2(), "rule__DtoFeature__PropertiesAssignment_2_2_1_4_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_2_1_4_3_1(), "rule__DtoFeature__PropertiesAssignment_2_2_1_4_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getDirtyAssignment_2_3_1_0(), "rule__DtoFeature__DirtyAssignment_2_3_1_0");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_3_1_1(), "rule__DtoFeature__TypeAssignment_2_3_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_3_1_2(), "rule__DtoFeature__NameAssignment_2_3_1_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_3_1_3_2(), "rule__DtoFeature__PropertiesAssignment_2_3_1_3_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_3_1_3_3_1(), "rule__DtoFeature__PropertiesAssignment_2_3_1_3_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getDerivedAssignment_2_4_1_0(), "rule__DtoFeature__DerivedAssignment_2_4_1_0");
+					put(grammarAccess.getDtoFeatureAccess().getDomainDescriptionAssignment_2_4_1_1(), "rule__DtoFeature__DomainDescriptionAssignment_2_4_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_4_1_2(), "rule__DtoFeature__TypeAssignment_2_4_1_2");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_4_1_3(), "rule__DtoFeature__NameAssignment_2_4_1_3");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_4_1_4_2(), "rule__DtoFeature__PropertiesAssignment_2_4_1_4_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_4_1_4_3_1(), "rule__DtoFeature__PropertiesAssignment_2_4_1_4_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getDerivedGetterExpressionAssignment_2_4_1_5(), "rule__DtoFeature__DerivedGetterExpressionAssignment_2_4_1_5");
+					put(grammarAccess.getDtoFeatureAccess().getIdAssignment_2_5_1_0(), "rule__DtoFeature__IdAssignment_2_5_1_0");
+					put(grammarAccess.getDtoFeatureAccess().getVersionAssignment_2_5_1_1(), "rule__DtoFeature__VersionAssignment_2_5_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getUuidAssignment_2_5_1_2(), "rule__DtoFeature__UuidAssignment_2_5_1_2");
+					put(grammarAccess.getDtoFeatureAccess().getDomainDescriptionAssignment_2_5_1_3(), "rule__DtoFeature__DomainDescriptionAssignment_2_5_1_3");
+					put(grammarAccess.getDtoFeatureAccess().getDomainKeyAssignment_2_5_1_4(), "rule__DtoFeature__DomainKeyAssignment_2_5_1_4");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_5_2(), "rule__DtoFeature__TypeAssignment_2_5_2");
+					put(grammarAccess.getDtoFeatureAccess().getMultiplicityAssignment_2_5_3(), "rule__DtoFeature__MultiplicityAssignment_2_5_3");
+					put(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_5_4_1(), "rule__DtoFeature__ConstraintsAssignment_2_5_4_1");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_5_5(), "rule__DtoFeature__NameAssignment_2_5_5");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_5_6_2(), "rule__DtoFeature__PropertiesAssignment_2_5_6_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_5_6_3_1(), "rule__DtoFeature__PropertiesAssignment_2_5_6_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getCascadingAssignment_2_6_1_1_0(), "rule__DtoFeature__CascadingAssignment_2_6_1_1_0");
+					put(grammarAccess.getDtoFeatureAccess().getLazyAssignment_2_6_1_1_1(), "rule__DtoFeature__LazyAssignment_2_6_1_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_6_1_2(), "rule__DtoFeature__TypeAssignment_2_6_1_2");
+					put(grammarAccess.getDtoFeatureAccess().getMultiplicityAssignment_2_6_1_3(), "rule__DtoFeature__MultiplicityAssignment_2_6_1_3");
+					put(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_6_1_4_1(), "rule__DtoFeature__ConstraintsAssignment_2_6_1_4_1");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_6_1_5(), "rule__DtoFeature__NameAssignment_2_6_1_5");
+					put(grammarAccess.getDtoFeatureAccess().getOppositeAssignment_2_6_1_6_1(), "rule__DtoFeature__OppositeAssignment_2_6_1_6_1");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_6_1_7_2(), "rule__DtoFeature__PropertiesAssignment_2_6_1_7_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_6_1_7_3_1(), "rule__DtoFeature__PropertiesAssignment_2_6_1_7_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_6_2_0(), "rule__DtoFeature__MapperAssignment_2_6_2_0");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_7_2(), "rule__DtoFeature__TypeAssignment_2_7_2");
+					put(grammarAccess.getDtoFeatureAccess().getMultiplicityAssignment_2_7_3(), "rule__DtoFeature__MultiplicityAssignment_2_7_3");
+					put(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_7_4_1(), "rule__DtoFeature__ConstraintsAssignment_2_7_4_1");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_7_5(), "rule__DtoFeature__NameAssignment_2_7_5");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_7_6_2(), "rule__DtoFeature__PropertiesAssignment_2_7_6_2");
+					put(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_7_6_3_1(), "rule__DtoFeature__PropertiesAssignment_2_7_6_3_1");
+					put(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_7_7_0(), "rule__DtoFeature__MapperAssignment_2_7_7_0");
+					put(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_8_1_1(), "rule__DtoFeature__TypeAssignment_2_8_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_8_1_2(), "rule__DtoFeature__NameAssignment_2_8_1_2");
+					put(grammarAccess.getDtoFeatureAccess().getParamsAssignment_2_8_1_4_0(), "rule__DtoFeature__ParamsAssignment_2_8_1_4_0");
+					put(grammarAccess.getDtoFeatureAccess().getParamsAssignment_2_8_1_4_1_1(), "rule__DtoFeature__ParamsAssignment_2_8_1_4_1_1");
+					put(grammarAccess.getDtoFeatureAccess().getBodyAssignment_2_8_1_6(), "rule__DtoFeature__BodyAssignment_2_8_1_6");
+					put(grammarAccess.getDtoMapperAccess().getToDTOAssignment_2(), "rule__DtoMapper__ToDTOAssignment_2");
+					put(grammarAccess.getDtoMapperAccess().getFromDTOAssignment_3_1(), "rule__DtoMapper__FromDTOAssignment_3_1");
+					put(grammarAccess.getLimitedMapperDtoMapperAccess().getToDTOAssignment_2(), "rule__LimitedMapperDtoMapper__ToDTOAssignment_2");
+					put(grammarAccess.getTypedPackageAccess().getNameAssignment_2(), "rule__TypedPackage__NameAssignment_2");
+					put(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1(), "rule__TypedPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2(), "rule__TypedPackage__TypesAssignment_3_2");
+					put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getNameAssignment_1(), "rule__DataType__NameAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1(), "rule__DataType__JvmTypeReferenceAssignment_2_0_1");
+					put(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2(), "rule__DataType__AsPrimitiveAssignment_2_0_2");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3(), "rule__DataType__ConstraintsAssignment_2_0_3");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2(), "rule__DataType__PropertiesAssignment_2_0_4_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1(), "rule__DataType__PropertiesAssignment_2_0_4_3_1");
+					put(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0(), "rule__DataType__DateAssignment_2_1_0");
+					put(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1(), "rule__DataType__DateTypeAssignment_2_1_1");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2(), "rule__DataType__ConstraintsAssignment_2_1_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2(), "rule__DataType__PropertiesAssignment_2_1_3_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1(), "rule__DataType__PropertiesAssignment_2_1_3_3_1");
+					put(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0(), "rule__DataType__AsBlobAssignment_2_2_0");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1(), "rule__DataType__ConstraintsAssignment_2_2_1");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2(), "rule__DataType__PropertiesAssignment_2_2_2_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1(), "rule__DataType__PropertiesAssignment_2_2_2_3_1");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertFalse__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertTrue__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3(), "rule__DtCDecimalMax__MaxAssignment_3");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3(), "rule__DtCDecimalMin__MinAssignment_3");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3(), "rule__DtCDigits__IntDigitsAssignment_3");
+					put(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5(), "rule__DtCDigits__FractionDigitsAssignment_5");
+					put(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCDigits__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCDigits__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCDigits__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCFuture__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCFuture__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCFutureAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCFuture__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCPastAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCPast__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCPastAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCPast__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCPastAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCPast__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMaxAssignment_3(), "rule__DtCNumericMax__MaxAssignment_3");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMinAssignment_3(), "rule__DtCNumericMin__MinAssignment_3");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNotNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNotNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCRegExAccess().getPatternAssignment_3(), "rule__DtCRegEx__PatternAssignment_3");
+					put(grammarAccess.getDtCRegExAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCRegEx__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCRegExAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCRegExAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCRegEx__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCSizeAccess().getMinAssignment_3(), "rule__DtCSize__MinAssignment_3");
+					put(grammarAccess.getDtCSizeAccess().getMaxAssignment_5(), "rule__DtCSize__MaxAssignment_5");
+					put(grammarAccess.getDtCSizeAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCSize__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCSizeAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCSize__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCSizeAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCSize__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getModifierAccess().getFinalAssignment_0(), "rule__Modifier__FinalAssignment_0");
+					put(grammarAccess.getModifierAccess().getStaticAssignment_1(), "rule__Modifier__StaticAssignment_1");
+					put(grammarAccess.getModifierAccess().getVisibilityAssignment_2(), "rule__Modifier__VisibilityAssignment_2");
+					put(grammarAccess.getEnumAccess().getNameAssignment_1(), "rule__Enum__NameAssignment_1");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_3(), "rule__Enum__LiteralsAssignment_3");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_4_1(), "rule__Enum__LiteralsAssignment_4_1");
+					put(grammarAccess.getEnumLiteralAccess().getNameAssignment_0(), "rule__EnumLiteral__NameAssignment_0");
+					put(grammarAccess.getEnumLiteralAccess().getDefaultAssignment_1_0_1(), "rule__EnumLiteral__DefaultAssignment_1_0_1");
+					put(grammarAccess.getEnumLiteralAccess().getNullAssignment_1_1_0(), "rule__EnumLiteral__NullAssignment_1_1_0");
+					put(grammarAccess.getEnumLiteralAccess().getValueAssignment_1_1_2_1(), "rule__EnumLiteral__ValueAssignment_1_1_2_1");
+					put(grammarAccess.getAnnotationDefAccess().getAnnotationAssignment_0(), "rule__AnnotationDef__AnnotationAssignment_0");
+					put(grammarAccess.getResultFiltersAccess().getResultFiltersAssignment_3(), "rule__ResultFilters__ResultFiltersAssignment_3");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAttributeAssignment_0(), "rule__AttributeMatchingConstraint__AttributeAssignment_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeAssignment_1(), "rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0(), "rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1(), "rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1");
+					put(grammarAccess.getKeyAndValueAccess().getKeyAssignment_2(), "rule__KeyAndValue__KeyAssignment_2");
+					put(grammarAccess.getKeyAndValueAccess().getValueAssignment_5(), "rule__KeyAndValue__ValueAssignment_5");
+					put(grammarAccess.getMultiplicityAccess().getLowerAssignment_1(), "rule__Multiplicity__LowerAssignment_1");
+					put(grammarAccess.getMultiplicityAccess().getUpperAssignment_2_1(), "rule__Multiplicity__UpperAssignment_2_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+					put(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), "rule__DtoFeature__UnorderedGroup_2_6_1_1");
+					put(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), "rule__DtCAssertFalse__UnorderedGroup_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), "rule__DtCAssertTrue__UnorderedGroup_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), "rule__DtCDecimalMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), "rule__DtCDecimalMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), "rule__DtCDigits__UnorderedGroup_6");
+					put(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), "rule__DtCFuture__UnorderedGroup_2");
+					put(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), "rule__DtCPast__UnorderedGroup_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), "rule__DtCNumericMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), "rule__DtCNumericMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), "rule__DtCNotNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), "rule__DtCNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), "rule__DtCRegEx__UnorderedGroup_4");
+					put(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), "rule__DtCSize__UnorderedGroup_6");
+					put(grammarAccess.getModifierAccess().getUnorderedGroup(), "rule__Modifier__UnorderedGroup");
+					put(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), "rule__EnumLiteral__UnorderedGroup_1");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarParser typedParser = (org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.antlr.internal.InternalDtoGrammarParser) parser;
+			typedParser.entryRuleLDTOModel();
+			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 DtoGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DtoGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/PartialDtoGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/PartialDtoGrammarContentAssistParser.java
new file mode 100644
index 0000000..8e2e83c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/PartialDtoGrammarContentAssistParser.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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 PartialDtoGrammarContentAssistParser extends DtoGrammarParser 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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g
new file mode 100644
index 0000000..e00af43
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalDtoGrammar;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.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.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private DtoGrammarGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(DtoGrammarGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleLDTOModel
+entryRuleLDTOModel 
+:
+{ before(grammarAccess.getLDTOModelRule()); }
+	 ruleLDTOModel
+{ after(grammarAccess.getLDTOModelRule()); } 
+	 EOF 
+;
+
+// Rule LDTOModel
+ruleLDTOModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLDTOModelAccess().getPackagesAssignment()); }
+(rule__LDTOModel__PackagesAssignment)*
+{ after(grammarAccess.getLDTOModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass 
+:
+{ before(grammarAccess.getClassRule()); }
+	 ruleClass
+{ after(grammarAccess.getClassRule()); } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassAccess().getGroup()); }
+(rule__Class__Group__0)
+{ after(grammarAccess.getClassAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtoFeature
+entryRuleDtoFeature 
+:
+{ before(grammarAccess.getDtoFeatureRule()); }
+	 ruleDtoFeature
+{ after(grammarAccess.getDtoFeatureRule()); } 
+	 EOF 
+;
+
+// Rule DtoFeature
+ruleDtoFeature
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup()); }
+(rule__DtoFeature__Group__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtoMapper
+entryRuleDtoMapper 
+:
+{ before(grammarAccess.getDtoMapperRule()); }
+	 ruleDtoMapper
+{ after(grammarAccess.getDtoMapperRule()); } 
+	 EOF 
+;
+
+// Rule DtoMapper
+ruleDtoMapper
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtoMapperAccess().getGroup()); }
+(rule__DtoMapper__Group__0)
+{ after(grammarAccess.getDtoMapperAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLimitedMapperDtoMapper
+entryRuleLimitedMapperDtoMapper 
+:
+{ before(grammarAccess.getLimitedMapperDtoMapperRule()); }
+	 ruleLimitedMapperDtoMapper
+{ after(grammarAccess.getLimitedMapperDtoMapperRule()); } 
+	 EOF 
+;
+
+// Rule LimitedMapperDtoMapper
+ruleLimitedMapperDtoMapper
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLimitedMapperDtoMapperAccess().getGroup()); }
+(rule__LimitedMapperDtoMapper__Group__0)
+{ after(grammarAccess.getLimitedMapperDtoMapperAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage 
+:
+{ before(grammarAccess.getTypedPackageRule()); }
+	 ruleTypedPackage
+{ after(grammarAccess.getTypedPackageRule()); } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup()); }
+(rule__TypedPackage__Group__0)
+{ after(grammarAccess.getTypedPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleType
+entryRuleType 
+:
+{ before(grammarAccess.getTypeRule()); }
+	 ruleType
+{ after(grammarAccess.getTypeRule()); } 
+	 EOF 
+;
+
+// Rule Type
+ruleType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeAccess().getAlternatives()); }
+(rule__Type__Alternatives)
+{ after(grammarAccess.getTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType 
+:
+{ before(grammarAccess.getDataTypeRule()); }
+	 ruleDataType
+{ after(grammarAccess.getDataTypeRule()); } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup()); }
+(rule__DataType__Group__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAllConstraints
+entryRuleAllConstraints 
+:
+{ before(grammarAccess.getAllConstraintsRule()); }
+	 ruleAllConstraints
+{ after(grammarAccess.getAllConstraintsRule()); } 
+	 EOF 
+;
+
+// Rule AllConstraints
+ruleAllConstraints
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAllConstraintsAccess().getAlternatives()); }
+(rule__AllConstraints__Alternatives)
+{ after(grammarAccess.getAllConstraintsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint 
+:
+{ before(grammarAccess.getDataTypeConstraintRule()); }
+	 ruleDataTypeConstraint
+{ after(grammarAccess.getDataTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+(rule__DataTypeConstraint__Alternatives)
+{ after(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint 
+:
+{ before(grammarAccess.getDateConstraintRule()); }
+	 ruleDateConstraint
+{ after(grammarAccess.getDateConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+(rule__DateConstraint__Alternatives)
+{ after(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint 
+:
+{ before(grammarAccess.getBlobTypeConstraintRule()); }
+	 ruleBlobTypeConstraint
+{ after(grammarAccess.getBlobTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+(rule__BlobTypeConstraint__Alternatives)
+{ after(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse 
+:
+{ before(grammarAccess.getDtCAssertFalseRule()); }
+	 ruleDtCAssertFalse
+{ after(grammarAccess.getDtCAssertFalseRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+(rule__DtCAssertFalse__Group__0)
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue 
+:
+{ before(grammarAccess.getDtCAssertTrueRule()); }
+	 ruleDtCAssertTrue
+{ after(grammarAccess.getDtCAssertTrueRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+(rule__DtCAssertTrue__Group__0)
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax 
+:
+{ before(grammarAccess.getDtCDecimalMaxRule()); }
+	 ruleDtCDecimalMax
+{ after(grammarAccess.getDtCDecimalMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+(rule__DtCDecimalMax__Group__0)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin 
+:
+{ before(grammarAccess.getDtCDecimalMinRule()); }
+	 ruleDtCDecimalMin
+{ after(grammarAccess.getDtCDecimalMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+(rule__DtCDecimalMin__Group__0)
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits 
+:
+{ before(grammarAccess.getDtCDigitsRule()); }
+	 ruleDtCDigits
+{ after(grammarAccess.getDtCDigitsRule()); } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup()); }
+(rule__DtCDigits__Group__0)
+{ after(grammarAccess.getDtCDigitsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture 
+:
+{ before(grammarAccess.getDtCFutureRule()); }
+	 ruleDtCFuture
+{ after(grammarAccess.getDtCFutureRule()); } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup()); }
+(rule__DtCFuture__Group__0)
+{ after(grammarAccess.getDtCFutureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast 
+:
+{ before(grammarAccess.getDtCPastRule()); }
+	 ruleDtCPast
+{ after(grammarAccess.getDtCPastRule()); } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCPastAccess().getGroup()); }
+(rule__DtCPast__Group__0)
+{ after(grammarAccess.getDtCPastAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax 
+:
+{ before(grammarAccess.getDtCNumericMaxRule()); }
+	 ruleDtCNumericMax
+{ after(grammarAccess.getDtCNumericMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+(rule__DtCNumericMax__Group__0)
+{ after(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin 
+:
+{ before(grammarAccess.getDtCNumericMinRule()); }
+	 ruleDtCNumericMin
+{ after(grammarAccess.getDtCNumericMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+(rule__DtCNumericMin__Group__0)
+{ after(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull 
+:
+{ before(grammarAccess.getDtCNotNullRule()); }
+	 ruleDtCNotNull
+{ after(grammarAccess.getDtCNotNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNotNullAccess().getGroup()); }
+(rule__DtCNotNull__Group__0)
+{ after(grammarAccess.getDtCNotNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull 
+:
+{ before(grammarAccess.getDtCNullRule()); }
+	 ruleDtCNull
+{ after(grammarAccess.getDtCNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNullAccess().getGroup()); }
+(rule__DtCNull__Group__0)
+{ after(grammarAccess.getDtCNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx 
+:
+{ before(grammarAccess.getDtCRegExRule()); }
+	 ruleDtCRegEx
+{ after(grammarAccess.getDtCRegExRule()); } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCRegExAccess().getGroup()); }
+(rule__DtCRegEx__Group__0)
+{ after(grammarAccess.getDtCRegExAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize 
+:
+{ before(grammarAccess.getDtCSizeRule()); }
+	 ruleDtCSize
+{ after(grammarAccess.getDtCSizeRule()); } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCSizeAccess().getGroup()); }
+(rule__DtCSize__Group__0)
+{ after(grammarAccess.getDtCSizeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType 
+:
+{ before(grammarAccess.getScalarTypeRule()); }
+	 ruleScalarType
+{ after(grammarAccess.getScalarTypeRule()); } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+(rule__ScalarType__Alternatives)
+{ after(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum 
+:
+{ before(grammarAccess.getEnumRule()); }
+	 ruleEnum
+{ after(grammarAccess.getEnumRule()); } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumAccess().getGroup()); }
+(rule__Enum__Group__0)
+{ after(grammarAccess.getEnumAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral 
+:
+{ before(grammarAccess.getEnumLiteralRule()); }
+	 ruleEnumLiteral
+{ after(grammarAccess.getEnumLiteralRule()); } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumLiteralAccess().getGroup()); }
+(rule__EnumLiteral__Group__0)
+{ after(grammarAccess.getEnumLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef 
+:
+{ before(grammarAccess.getAnnotationDefRule()); }
+	 ruleAnnotationDef
+{ after(grammarAccess.getAnnotationDefRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationDefAccess().getGroup()); }
+(rule__AnnotationDef__Group__0)
+{ after(grammarAccess.getAnnotationDefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter 
+:
+{ before(grammarAccess.getResultFilterRule()); }
+	 ruleResultFilter
+{ after(grammarAccess.getResultFilterRule()); } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+	ruleAttributeMatchingConstraint
+{ after(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint 
+:
+{ before(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 ruleAttributeMatchingConstraint
+{ after(grammarAccess.getAttributeMatchingConstraintRule()); } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+(rule__AttributeMatchingConstraint__Group__0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue 
+:
+{ before(grammarAccess.getKeyAndValueRule()); }
+	 ruleKeyAndValue
+{ after(grammarAccess.getKeyAndValueRule()); } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getKeyAndValueAccess().getGroup()); }
+(rule__KeyAndValue__Group__0)
+{ after(grammarAccess.getKeyAndValueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getLQualifiedNameWithWildCardRule()); }
+	 ruleLQualifiedNameWithWildCard
+{ after(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__LQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN 
+:
+{ before(grammarAccess.getLFQNRule()); }
+	 ruleLFQN
+{ after(grammarAccess.getLFQNRule()); } 
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLFQNAccess().getGroup()); }
+(rule__LFQN__Group__0)
+{ after(grammarAccess.getLFQNAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE 
+:
+{ before(grammarAccess.getTYPE_CROSS_REFERENCERule()); }
+	 ruleTYPE_CROSS_REFERENCE
+{ after(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords 
+:
+{ before(grammarAccess.getValidIDWithKeywordsRule()); }
+	 ruleValidIDWithKeywords
+{ after(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+(rule__ValidIDWithKeywords__Alternatives)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidLFQNWithKeywords
+entryRuleValidLFQNWithKeywords 
+:
+{ before(grammarAccess.getValidLFQNWithKeywordsRule()); }
+	 ruleValidLFQNWithKeywords
+{ after(grammarAccess.getValidLFQNWithKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule ValidLFQNWithKeywords
+ruleValidLFQNWithKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup()); }
+(rule__ValidLFQNWithKeywords__Group__0)
+{ after(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleMultiplicity
+entryRuleMultiplicity 
+:
+{ before(grammarAccess.getMultiplicityRule()); }
+	 ruleMultiplicity
+{ after(grammarAccess.getMultiplicityRule()); } 
+	 EOF 
+;
+
+// Rule Multiplicity
+ruleMultiplicity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityAccess().getGroup()); }
+(rule__Multiplicity__Group__0)
+{ after(grammarAccess.getMultiplicityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt 
+:
+{ before(grammarAccess.getLIntRule()); }
+	 ruleLInt
+{ after(grammarAccess.getLIntRule()); } 
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLIntAccess().getGroup()); }
+(rule__LInt__Group__0)
+{ after(grammarAccess.getLIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal 
+:
+{ before(grammarAccess.getLDecimalRule()); }
+	 ruleLDecimal
+{ after(grammarAccess.getLDecimalRule()); } 
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLDecimalAccess().getGroup()); }
+(rule__LDecimal__Group__0)
+{ after(grammarAccess.getLDecimalAccess().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 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 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 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 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 ConstraintSeverity
+ruleConstraintSeverity
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+(rule__ConstraintSeverity__Alternatives)
+{ after(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule DateType
+ruleDateType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getAlternatives()); }
+(rule__DateType__Alternatives)
+{ after(grammarAccess.getDateTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LVisibility
+ruleLVisibility
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+(rule__LVisibility__Alternatives)
+{ after(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LComparatorType
+ruleLComparatorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+(rule__LComparatorType__Alternatives)
+{ after(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LowerBound
+ruleLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+(rule__LowerBound__Alternatives)
+{ after(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule UpperBound
+ruleUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+(rule__UpperBound__Alternatives)
+{ after(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Class__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0()); }
+(rule__Class__Group_2_0__0)
+{ after(grammarAccess.getClassAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getClassAccess().getGroup_2_1()); }
+(rule__Class__Group_2_1__0)
+{ after(grammarAccess.getClassAccess().getGroup_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_0()); }
+(rule__DtoFeature__Group_2_0__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_1()); }
+(rule__DtoFeature__Group_2_1__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_2()); }
+(rule__DtoFeature__Group_2_2__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_3()); }
+(rule__DtoFeature__Group_2_3__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_4()); }
+(rule__DtoFeature__Group_2_4__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_5()); }
+(rule__DtoFeature__Group_2_5__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_5()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_6()); }
+(rule__DtoFeature__Group_2_6__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_6()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_7()); }
+(rule__DtoFeature__Group_2_7__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_7()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_8()); }
+(rule__DtoFeature__Group_2_8__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Alternatives_2_0_3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_0_3_0()); }
+(rule__DtoFeature__MapperAssignment_2_0_3_0)
+{ after(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_0_3_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_0_3_1()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_0_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Alternatives_2_1_5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_1_5_0()); }
+(rule__DtoFeature__MapperAssignment_2_1_5_0)
+{ after(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_1_5_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_1_5_1()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_1_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Alternatives_2_5_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getIdAssignment_2_5_1_0()); }
+(rule__DtoFeature__IdAssignment_2_5_1_0)
+{ after(grammarAccess.getDtoFeatureAccess().getIdAssignment_2_5_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getVersionAssignment_2_5_1_1()); }
+(rule__DtoFeature__VersionAssignment_2_5_1_1)
+{ after(grammarAccess.getDtoFeatureAccess().getVersionAssignment_2_5_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getUuidAssignment_2_5_1_2()); }
+(rule__DtoFeature__UuidAssignment_2_5_1_2)
+{ after(grammarAccess.getDtoFeatureAccess().getUuidAssignment_2_5_1_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getDomainDescriptionAssignment_2_5_1_3()); }
+(rule__DtoFeature__DomainDescriptionAssignment_2_5_1_3)
+{ after(grammarAccess.getDtoFeatureAccess().getDomainDescriptionAssignment_2_5_1_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getDomainKeyAssignment_2_5_1_4()); }
+(rule__DtoFeature__DomainKeyAssignment_2_5_1_4)
+{ after(grammarAccess.getDtoFeatureAccess().getDomainKeyAssignment_2_5_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Alternatives_2_6_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_6_2_0()); }
+(rule__DtoFeature__MapperAssignment_2_6_2_0)
+{ after(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_6_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_6_2_1()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_6_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Alternatives_2_7_7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_7_7_0()); }
+(rule__DtoFeature__MapperAssignment_2_7_7_0)
+{ after(grammarAccess.getDtoFeatureAccess().getMapperAssignment_2_7_7_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_7_7_1()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_7_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Type__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+	ruleScalarType
+{ after(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+	ruleClass
+{ after(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+(rule__DataType__Group_2_0__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+(rule__DataType__Group_2_1__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+(rule__DataType__Group_2_2__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AllConstraints__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); }
+	ruleDtCFuture
+{ after(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); }
+	ruleDtCPast
+{ after(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+	ruleDtCFuture
+{ after(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+	ruleDtCPast
+{ after(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+	ruleDtCNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BlobTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+	ruleDtCNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ScalarType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+	ruleDataType
+{ after(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+	ruleEnum
+{ after(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeMatchingConstraint__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+(rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+(rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValidIDWithKeywords__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+
+	'cachable' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+
+	'id' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+
+	'uuid' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+
+	'transient' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+
+	'version' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+(rule__ValidIDWithKeywords__Group_5__0)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+
+	'refers' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+
+	'settings' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+
+	'lazy' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+
+	'notnull' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+
+	'dto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+
+	'date' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+
+	'ref' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+
+	'cascade' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+
+	'var' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LInt__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_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__ConstraintSeverity__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+(	'info' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+(	'warn' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+(	'error' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+(	'date' 
+)
+{ after(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+(	'time' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+(	'timestamp' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LVisibility__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+(	'package' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+(	'private' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+(	'protected' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+(	'public' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LComparatorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+(	'==' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+(	'>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+(	'<' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+(	'>=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+(	'<=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+(	'<>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LowerBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+(	'0' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+(	'?' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+(	'+' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+(	'1' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UpperBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+(	'1' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Class__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__0__Impl
+	rule__Class__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLDtoAction_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLDtoAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__1__Impl
+	rule__Class__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+(rule__Class__AnnotationsAssignment_1)*
+{ after(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAlternatives_2()); }
+(rule__Class__Alternatives_2)
+{ after(grammarAccess.getClassAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Class__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__0__Impl
+	rule__Class__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLDtoAnnotationInfoAction_2_0_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLDtoAnnotationInfoAction_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__1__Impl
+	rule__Class__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAbstractAssignment_2_0_1()); }
+(rule__Class__AbstractAssignment_2_0_1)?
+{ after(grammarAccess.getClassAccess().getAbstractAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__2__Impl
+	rule__Class__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getDtoKeyword_2_0_2()); }
+
+	'dto' 
+
+{ after(grammarAccess.getClassAccess().getDtoKeyword_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__3__Impl
+	rule__Class__Group_2_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getNameAssignment_2_0_3()); }
+(rule__Class__NameAssignment_2_0_3)
+{ after(grammarAccess.getClassAccess().getNameAssignment_2_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__4__Impl
+	rule__Class__Group_2_0__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0_4()); }
+(rule__Class__Group_2_0_4__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_0_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__5__Impl
+	rule__Class__Group_2_0__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0_5()); }
+(rule__Class__Group_2_0_5__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_0_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__6__Impl
+	rule__Class__Group_2_0__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_6()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__7__Impl
+	rule__Class__Group_2_0__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_7()); }
+(rule__Class__FeaturesAssignment_2_0_7)*
+{ after(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_8()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_2_0_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_4__0__Impl
+	rule__Class__Group_2_0_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1()); }
+(rule__Class__SuperTypeAssignment_2_0_4_1)
+{ after(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Class__Group_2_0_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_5__0__Impl
+	rule__Class__Group_2_0_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getWrapsKeyword_2_0_5_0()); }
+
+	'wraps' 
+
+{ after(grammarAccess.getClassAccess().getWrapsKeyword_2_0_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getWrappedTypeAssignment_2_0_5_1()); }
+(rule__Class__WrappedTypeAssignment_2_0_5_1)
+{ after(grammarAccess.getClassAccess().getWrappedTypeAssignment_2_0_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Class__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__0__Impl
+	rule__Class__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLAutoInheritDtoAnnotationInfoAction_2_1_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLAutoInheritDtoAnnotationInfoAction_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__1__Impl
+	rule__Class__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAbstractAssignment_2_1_1()); }
+(rule__Class__AbstractAssignment_2_1_1)?
+{ after(grammarAccess.getClassAccess().getAbstractAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__2__Impl
+	rule__Class__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAutoDtoKeyword_2_1_2()); }
+
+	'autoDto' 
+
+{ after(grammarAccess.getClassAccess().getAutoDtoKeyword_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__3__Impl
+	rule__Class__Group_2_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getNameAssignment_2_1_3()); }
+(rule__Class__NameAssignment_2_1_3)
+{ after(grammarAccess.getClassAccess().getNameAssignment_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__4__Impl
+	rule__Class__Group_2_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_1_4()); }
+(rule__Class__Group_2_1_4__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__5__Impl
+	rule__Class__Group_2_1__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getWrapsKeyword_2_1_5()); }
+
+	'wraps' 
+
+{ after(grammarAccess.getClassAccess().getWrapsKeyword_2_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__6__Impl
+	rule__Class__Group_2_1__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getWrappedTypeAssignment_2_1_6()); }
+(rule__Class__WrappedTypeAssignment_2_1_6)
+{ after(grammarAccess.getClassAccess().getWrappedTypeAssignment_2_1_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__7__Impl
+	rule__Class__Group_2_1__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_7()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__8__Impl
+	rule__Class__Group_2_1__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_8()); }
+(rule__Class__FeaturesAssignment_2_1_8)*
+{ after(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_9()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_2_1_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_4__0__Impl
+	rule__Class__Group_2_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getExtendsKeyword_2_1_4_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getClassAccess().getExtendsKeyword_2_1_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_4_1()); }
+(rule__Class__SuperTypeAssignment_2_1_4_1)
+{ after(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group__0__Impl
+	rule__DtoFeature__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoFeatureAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoFeatureAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group__1__Impl
+	rule__DtoFeature__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getAnnotationsAssignment_1()); }
+(rule__DtoFeature__AnnotationsAssignment_1)*
+{ after(grammarAccess.getDtoFeatureAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getAlternatives_2()); }
+(rule__DtoFeature__Alternatives_2)
+{ after(grammarAccess.getDtoFeatureAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0__0__Impl
+	rule__DtoFeature__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_0_0()); }
+(rule__DtoFeature__Group_2_0_0__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0__1__Impl
+	rule__DtoFeature__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_0_1()); }
+(rule__DtoFeature__Group_2_0_1__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0__2__Impl
+	rule__DtoFeature__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_0_2()); }
+(rule__DtoFeature__Group_2_0_2__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getAlternatives_2_0_3()); }
+(rule__DtoFeature__Alternatives_2_0_3)
+{ after(grammarAccess.getDtoFeatureAccess().getAlternatives_2_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_0_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_0__0__Impl
+	rule__DtoFeature__Group_2_0_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_0__1__Impl
+	rule__DtoFeature__Group_2_0_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getInheritVarKeyword_2_0_0_1()); }
+
+	'inherit var' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getInheritVarKeyword_2_0_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getInheritedFeatureAssignment_2_0_0_2()); }
+(rule__DtoFeature__InheritedFeatureAssignment_2_0_0_2)
+{ after(grammarAccess.getDtoFeatureAccess().getInheritedFeatureAssignment_2_0_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_1__0__Impl
+	rule__DtoFeature__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_0_1_0()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_0_1_1()); }
+(rule__DtoFeature__TypeAssignment_2_0_1_1)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2__0__Impl
+	rule__DtoFeature__Group_2_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_0_2_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2__1__Impl
+	rule__DtoFeature__Group_2_0_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_0_2_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2__2__Impl
+	rule__DtoFeature__Group_2_0_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_0_2_2()); }
+(rule__DtoFeature__PropertiesAssignment_2_0_2_2)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_0_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2__3__Impl
+	rule__DtoFeature__Group_2_0_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_0_2_3()); }
+(rule__DtoFeature__Group_2_0_2_3__0)*
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_0_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_0_2_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_0_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_0_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2_3__0__Impl
+	rule__DtoFeature__Group_2_0_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_0_2_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_0_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_0_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_0_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_0_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_0_2_3_1()); }
+(rule__DtoFeature__PropertiesAssignment_2_0_2_3_1)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_0_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1__0__Impl
+	rule__DtoFeature__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoInheritedReferenceAnnotationInfoAction_2_1_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoInheritedReferenceAnnotationInfoAction_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1__1__Impl
+	rule__DtoFeature__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_1_1()); }
+(rule__DtoFeature__Group_2_1_1__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1__2__Impl
+	rule__DtoFeature__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_1_2()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1__3__Impl
+	rule__DtoFeature__Group_2_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_1_3()); }
+(rule__DtoFeature__TypeAssignment_2_1_3)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1__4__Impl
+	rule__DtoFeature__Group_2_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_1_4()); }
+(rule__DtoFeature__Group_2_1_4__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getAlternatives_2_1_5()); }
+(rule__DtoFeature__Alternatives_2_1_5)
+{ after(grammarAccess.getDtoFeatureAccess().getAlternatives_2_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_1__0__Impl
+	rule__DtoFeature__Group_2_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getInheritRefKeyword_2_1_1_0()); }
+
+	'inherit ref' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getInheritRefKeyword_2_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getInheritedFeatureAssignment_2_1_1_1()); }
+(rule__DtoFeature__InheritedFeatureAssignment_2_1_1_1)
+{ after(grammarAccess.getDtoFeatureAccess().getInheritedFeatureAssignment_2_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_1_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4__0__Impl
+	rule__DtoFeature__Group_2_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_1_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_1_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4__1__Impl
+	rule__DtoFeature__Group_2_1_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_1_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_1_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4__2__Impl
+	rule__DtoFeature__Group_2_1_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_1_4_2()); }
+(rule__DtoFeature__PropertiesAssignment_2_1_4_2)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_1_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4__3__Impl
+	rule__DtoFeature__Group_2_1_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_1_4_3()); }
+(rule__DtoFeature__Group_2_1_4_3__0)*
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_1_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_1_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_1_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_1_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4_3__0__Impl
+	rule__DtoFeature__Group_2_1_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_1_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_1_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_1_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_1_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_1_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_1_4_3_1()); }
+(rule__DtoFeature__PropertiesAssignment_2_1_4_3_1)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_1_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2__0__Impl
+	rule__DtoFeature__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_2_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1()); }
+(rule__DtoFeature__Group_2_2_1__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1__0__Impl
+	rule__DtoFeature__Group_2_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTransientAssignment_2_2_1_0()); }
+(rule__DtoFeature__TransientAssignment_2_2_1_0)
+{ after(grammarAccess.getDtoFeatureAccess().getTransientAssignment_2_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1__1__Impl
+	rule__DtoFeature__Group_2_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_2_1_1()); }
+(rule__DtoFeature__TypeAssignment_2_2_1_1)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1__2__Impl
+	rule__DtoFeature__Group_2_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_2()); }
+(rule__DtoFeature__Group_2_2_1_2__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1__3__Impl
+	rule__DtoFeature__Group_2_2_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_2_1_3()); }
+(rule__DtoFeature__NameAssignment_2_2_1_3)
+{ after(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1__4__Impl
+	rule__DtoFeature__Group_2_2_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_4()); }
+(rule__DtoFeature__Group_2_2_1_4__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_2_1_5()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_2_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_2_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_2__0__Impl
+	rule__DtoFeature__Group_2_2_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_2_1_2_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_2_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_2__1__Impl
+	rule__DtoFeature__Group_2_2_1_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_2_1_2_1()); }
+(rule__DtoFeature__ConstraintsAssignment_2_2_1_2_1)*
+{ after(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_2_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_2_1_2_2()); }
+
+	']' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_2_1_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_2_1_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4__0__Impl
+	rule__DtoFeature__Group_2_2_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_2_1_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_2_1_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4__1__Impl
+	rule__DtoFeature__Group_2_2_1_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_2_1_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_2_1_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4__2__Impl
+	rule__DtoFeature__Group_2_2_1_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_2_1_4_2()); }
+(rule__DtoFeature__PropertiesAssignment_2_2_1_4_2)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_2_1_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4__3__Impl
+	rule__DtoFeature__Group_2_2_1_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_4_3()); }
+(rule__DtoFeature__Group_2_2_1_4_3__0)*
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_2_1_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_2_1_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_2_1_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_2_1_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4_3__0__Impl
+	rule__DtoFeature__Group_2_2_1_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_2_1_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_2_1_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_2_1_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_2_1_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_2_1_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_2_1_4_3_1()); }
+(rule__DtoFeature__PropertiesAssignment_2_2_1_4_3_1)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_2_1_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3__0__Impl
+	rule__DtoFeature__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_3_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1()); }
+(rule__DtoFeature__Group_2_3_1__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_3_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1__0__Impl
+	rule__DtoFeature__Group_2_3_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getDirtyAssignment_2_3_1_0()); }
+(rule__DtoFeature__DirtyAssignment_2_3_1_0)
+{ after(grammarAccess.getDtoFeatureAccess().getDirtyAssignment_2_3_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1__1__Impl
+	rule__DtoFeature__Group_2_3_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_3_1_1()); }
+(rule__DtoFeature__TypeAssignment_2_3_1_1)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_3_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1__2__Impl
+	rule__DtoFeature__Group_2_3_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_3_1_2()); }
+(rule__DtoFeature__NameAssignment_2_3_1_2)
+{ after(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_3_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1__3__Impl
+	rule__DtoFeature__Group_2_3_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1_3()); }
+(rule__DtoFeature__Group_2_3_1_3__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_3_1_4()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_3_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_3_1_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3__0__Impl
+	rule__DtoFeature__Group_2_3_1_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_3_1_3_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_3_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3__1__Impl
+	rule__DtoFeature__Group_2_3_1_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_3_1_3_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_3_1_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3__2__Impl
+	rule__DtoFeature__Group_2_3_1_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_3_1_3_2()); }
+(rule__DtoFeature__PropertiesAssignment_2_3_1_3_2)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_3_1_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3__3__Impl
+	rule__DtoFeature__Group_2_3_1_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1_3_3()); }
+(rule__DtoFeature__Group_2_3_1_3_3__0)*
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_3_1_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_3_1_3_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_3_1_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_3_1_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3_3__0__Impl
+	rule__DtoFeature__Group_2_3_1_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_3_1_3_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_3_1_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_3_1_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_3_1_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_3_1_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_3_1_3_3_1()); }
+(rule__DtoFeature__PropertiesAssignment_2_3_1_3_3_1)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_3_1_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4__0__Impl
+	rule__DtoFeature__Group_2_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_4_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1()); }
+(rule__DtoFeature__Group_2_4_1__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1__0__Impl
+	rule__DtoFeature__Group_2_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getDerivedAssignment_2_4_1_0()); }
+(rule__DtoFeature__DerivedAssignment_2_4_1_0)
+{ after(grammarAccess.getDtoFeatureAccess().getDerivedAssignment_2_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1__1__Impl
+	rule__DtoFeature__Group_2_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getDomainDescriptionAssignment_2_4_1_1()); }
+(rule__DtoFeature__DomainDescriptionAssignment_2_4_1_1)?
+{ after(grammarAccess.getDtoFeatureAccess().getDomainDescriptionAssignment_2_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1__2__Impl
+	rule__DtoFeature__Group_2_4_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_4_1_2()); }
+(rule__DtoFeature__TypeAssignment_2_4_1_2)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_4_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1__3__Impl
+	rule__DtoFeature__Group_2_4_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_4_1_3()); }
+(rule__DtoFeature__NameAssignment_2_4_1_3)
+{ after(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_4_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1__4__Impl
+	rule__DtoFeature__Group_2_4_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1_4()); }
+(rule__DtoFeature__Group_2_4_1_4__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getDerivedGetterExpressionAssignment_2_4_1_5()); }
+(rule__DtoFeature__DerivedGetterExpressionAssignment_2_4_1_5)
+{ after(grammarAccess.getDtoFeatureAccess().getDerivedGetterExpressionAssignment_2_4_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_4_1_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4__0__Impl
+	rule__DtoFeature__Group_2_4_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_4_1_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_4_1_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4__1__Impl
+	rule__DtoFeature__Group_2_4_1_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_4_1_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_4_1_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4__2__Impl
+	rule__DtoFeature__Group_2_4_1_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_4_1_4_2()); }
+(rule__DtoFeature__PropertiesAssignment_2_4_1_4_2)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_4_1_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4__3__Impl
+	rule__DtoFeature__Group_2_4_1_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1_4_3()); }
+(rule__DtoFeature__Group_2_4_1_4_3__0)*
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_4_1_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_4_1_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_4_1_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_4_1_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4_3__0__Impl
+	rule__DtoFeature__Group_2_4_1_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_4_1_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_4_1_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_4_1_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_4_1_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_4_1_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_4_1_4_3_1()); }
+(rule__DtoFeature__PropertiesAssignment_2_4_1_4_3_1)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_4_1_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__0__Impl
+	rule__DtoFeature__Group_2_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_5_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__1__Impl
+	rule__DtoFeature__Group_2_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getAlternatives_2_5_1()); }
+(rule__DtoFeature__Alternatives_2_5_1)
+{ after(grammarAccess.getDtoFeatureAccess().getAlternatives_2_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__2__Impl
+	rule__DtoFeature__Group_2_5__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_5_2()); }
+(rule__DtoFeature__TypeAssignment_2_5_2)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__3__Impl
+	rule__DtoFeature__Group_2_5__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getMultiplicityAssignment_2_5_3()); }
+(rule__DtoFeature__MultiplicityAssignment_2_5_3)?
+{ after(grammarAccess.getDtoFeatureAccess().getMultiplicityAssignment_2_5_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__4__Impl
+	rule__DtoFeature__Group_2_5__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_5_4()); }
+(rule__DtoFeature__Group_2_5_4__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_5_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__5__Impl
+	rule__DtoFeature__Group_2_5__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_5_5()); }
+(rule__DtoFeature__NameAssignment_2_5_5)
+{ after(grammarAccess.getDtoFeatureAccess().getNameAssignment_2_5_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__6__Impl
+	rule__DtoFeature__Group_2_5__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_5_6()); }
+(rule__DtoFeature__Group_2_5_6__0)?
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_5_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_5_7()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_5_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_5_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_4__0__Impl
+	rule__DtoFeature__Group_2_5_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_5_4_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_5_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_4__1__Impl
+	rule__DtoFeature__Group_2_5_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_5_4_1()); }
+(rule__DtoFeature__ConstraintsAssignment_2_5_4_1)*
+{ after(grammarAccess.getDtoFeatureAccess().getConstraintsAssignment_2_5_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_5_4_2()); }
+
+	']' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_5_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_5_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6__0__Impl
+	rule__DtoFeature__Group_2_5_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_5_6_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_5_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6__1__Impl
+	rule__DtoFeature__Group_2_5_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_5_6_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_5_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6__2__Impl
+	rule__DtoFeature__Group_2_5_6__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_5_6_2()); }
+(rule__DtoFeature__PropertiesAssignment_2_5_6_2)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_5_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_6__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6__3__Impl
+	rule__DtoFeature__Group_2_5_6__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_5_6_3()); }
+(rule__DtoFeature__Group_2_5_6_3__0)*
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_5_6_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_6__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_5_6_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_5_6_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_5_6_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6_3__0__Impl
+	rule__DtoFeature__Group_2_5_6_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_5_6_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_5_6_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_5_6_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_5_6_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_5_6_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_5_6_3_1()); }
+(rule__DtoFeature__PropertiesAssignment_2_5_6_3_1)
+{ after(grammarAccess.getDtoFeatureAccess().getPropertiesAssignment_2_5_6_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtoFeature__Group_2_6__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_6__0__Impl
+	rule__DtoFeature__Group_2_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_6__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getLDtoReferenceAnnotationInfoAction_2_6_0()); }
+(
+
+)
+{ after(grammarAccess.getDtoFeatureAccess().getLDtoReferenceAnnotationInfoAction_2_6_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_6__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_6__1__Impl
+	rule__DtoFeature__Group_2_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_6__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1()); }
+(rule__DtoFeature__Group_2_6_1__0)
+{ after(grammarAccess.getDtoFeatureAccess().getGroup_2_6_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_6__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_6__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getAlternatives_2_6_2()); }
+(rule__DtoFeature__Alternatives_2_6_2)
+{ after(grammarAccess.getDtoFeatureAccess().getAlternatives_2_6_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtoFeature__Group_2_6_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_6_1__0__Impl
+	rule__DtoFeature__Group_2_6_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_6_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getRefKeyword_2_6_1_0()); }
+
+	'ref' 
+
+{ after(grammarAccess.getDtoFeatureAccess().getRefKeyword_2_6_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_6_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_6_1__1__Impl
+	rule__DtoFeature__Group_2_6_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_6_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1()); }
+(rule__DtoFeature__UnorderedGroup_2_6_1_1)
+{ after(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtoFeature__Group_2_6_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtoFeature__Group_2_6_1__2__Impl
+	rule__DtoFeature__Group_2_6_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtoFeature__Group_2_6_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_6_1_2()); }
+(rule__DtoFeature__TypeAssignment_2_6_1_2)
+{ after(grammarAccess.getDtoFeatureAccess().getTypeAssignment_2_6_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.tokens b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.tokens
new file mode 100644
index 0000000..795dab8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.tokens
@@ -0,0 +1,295 @@
+'!'=56
+'!='=40
+'!=='=42
+'#'=121
+'%'=55
+'%='=38
+'&&'=15
+'&'=142
+'('=86
+')'=87
+'*'=52
+'**'=53
+'*='=36
+'+'=32
+'++'=57
+'+='=34
+', '=88
+','=120
+'-'=33
+'--'=58
+'-='=35
+'->'=46
+'.'=59
+'..'=48
+'..<'=47
+'/'=54
+'/='=37
+'0'=77
+'1'=79
+':'=127
+'::'=152
+';'=16
+'<'=45
+'<='=76
+'<>'=50
+'='=13
+'=='=39
+'==='=41
+'=>'=49
+'>'=44
+'>='=43
+'?'=78
+'?.'=153
+'?:'=51
+'@'=119
+'['=90
+']'=91
+'abstract'=143
+'as blob'=149
+'as primitive'=147
+'as'=123
+'asDefault'=150
+'autoDto'=83
+'cachable'=17
+'cascade'=30
+'case'=129
+'catch'=141
+'collection'=118
+'datatype'=96
+'date'=27
+'dateType'=148
+'def'=93
+'default'=128
+'derived'=117
+'digits'=105
+'dirty'=144
+'do'=132
+'domainDescription'=145
+'domainKey'=146
+'dto'=26
+'else'=125
+'enum'=114
+'error'=69
+'extends'=61
+'extension'=64
+'false'=66
+'finally'=139
+'for'=130
+'forNull'=151
+'fromDTO'=95
+'id'=18
+'if'=124
+'import'=63
+'info'=67
+'inherit ref'=89
+'inherit var'=84
+'instanceof'=122
+'isFalse'=98
+'isFuture'=106
+'isNotNull'=110
+'isNull'=111
+'isPast'=107
+'isTrue'=102
+'jvmType'=97
+'key'=115
+'lazy'=24
+'mapto'=28
+'maxDecimal'=103
+'maxNumber'=108
+'minDecimal'=104
+'minMaxSize'=113
+'minNumber'=109
+'msgCode'=99
+'msgI18nKey'=100
+'new'=133
+'notnull'=25
+'null'=134
+'opposite'=92
+'package'=72
+'private'=73
+'properties'=85
+'protected'=74
+'public'=75
+'ref'=29
+'refers'=22
+'regex'=112
+'return'=137
+'settings'=23
+'severity'=101
+'static'=62
+'super'=65
+'switch'=126
+'synchronized'=140
+'throw'=136
+'time'=70
+'timestamp'=71
+'toDTO'=94
+'transient'=20
+'true'=155
+'try'=138
+'typeof'=135
+'uuid'=19
+'val'=60
+'value'=116
+'var'=31
+'version'=21
+'warn'=68
+'while'=131
+'wraps'=82
+'{'=80
+'|'=154
+'||'=14
+'}'=81
+RULE_ANY_OTHER=12
+RULE_DECIMAL=7
+RULE_HEX=5
+RULE_ID=4
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=8
+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__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammarLexer.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammarLexer.java
new file mode 100644
index 0000000..123411d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammarLexer.java
@@ -0,0 +1,5879 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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 InternalDtoGrammarLexer 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 RULE_HEX=5;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalDtoGrammarLexer() {;} 
+    public InternalDtoGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDtoGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:14:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:15:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:15:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:16:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:16:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:17:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:17:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:18:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:18:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:19:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:19:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:20:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:20:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:21:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:21:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:22:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:22:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:23:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:23:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:24:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:24:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:25:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:25:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:26:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:26:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:27:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:27:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:28:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:28:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:29:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:29:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:30:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:31:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:32:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:33:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:34:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:35:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:36:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:37:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:38:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:39:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:40:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:41:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:42:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:42:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:43:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:43:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:45:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:46:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:46:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:47:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:47:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:48:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:48:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:49:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:49:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:50:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:50:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:51:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:52:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:53:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:54:7: ( '!' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:55:7: ( '++' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:55:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:56:7: ( '--' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:56:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:57:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:57:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:58:7: ( 'val' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:58:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:59:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:59:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:60:7: ( 'static' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:60:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:61:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:61:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:62:7: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:62:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:63:7: ( 'super' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:63:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:64:7: ( 'false' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:64:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:65:7: ( 'info' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:65:9: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:66:7: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:66:9: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:67:7: ( 'error' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:67:9: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:68:7: ( 'time' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:68:9: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:69:7: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:69:9: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:70:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:70:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:71:7: ( 'private' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:71:9: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:72:7: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:72:9: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:73:7: ( 'public' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:73:9: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:74:7: ( '<=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:74:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:75:7: ( '0' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:75:9: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:76:7: ( '?' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:76:9: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:77:7: ( '1' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:77:9: '1'
+            {
+            match('1'); 
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:78:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:78:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:79:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:79:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:80:7: ( 'wraps' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:80:9: 'wraps'
+            {
+            match("wraps"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:81:7: ( 'autoDto' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:81:9: 'autoDto'
+            {
+            match("autoDto"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:82:7: ( 'inherit var' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:82:9: 'inherit var'
+            {
+            match("inherit var"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:83:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:83:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:84:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:84:9: '('
+            {
+            match('('); 
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:85:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:85:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:86:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:86:9: ', '
+            {
+            match(", "); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:87:7: ( 'inherit ref' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:87:9: 'inherit ref'
+            {
+            match("inherit ref"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:88:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:88:9: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:89:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:89:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:90:7: ( 'opposite' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:90:9: 'opposite'
+            {
+            match("opposite"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:91:7: ( 'def' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:91:9: 'def'
+            {
+            match("def"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:92:7: ( 'toDTO' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:92:9: 'toDTO'
+            {
+            match("toDTO"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:93:7: ( 'fromDTO' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:93:9: 'fromDTO'
+            {
+            match("fromDTO"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:94:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:94:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:95:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:95:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:96:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:96:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:97:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:97:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:98:8: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:98:10: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:99:8: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:99:10: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:100:8: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:100:10: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:101:8: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:101:10: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:102:8: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:102:10: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:103:8: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:103:10: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:104:8: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:104:10: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:105:8: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:105:10: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:106:8: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:106:10: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:107:8: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:107:10: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:108:8: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:108:10: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:109:8: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:109:10: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:110:8: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:110:10: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:111:8: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:111:10: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:112:8: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:112:10: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:113:8: ( 'key' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:113:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:114:8: ( 'value' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:114:10: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:115:8: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:115:10: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:116:8: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:116:10: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:117:8: ( '@' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:118:8: ( ',' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:119:8: ( '#' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:120:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:120:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:121:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:121:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:122:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:122:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:123:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:123:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:124:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:124:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:125:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:126:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:126:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:127:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:127:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:128:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:128:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:129:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:129:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:130:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:130:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:131:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:131:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:132:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:132:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:133:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:133:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:134:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:134:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:135:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:135:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:136:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:136:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:137:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:137:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:138:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:138:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:139:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:139:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:140:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:140:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:141:8: ( 'abstract' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:141:10: 'abstract'
+            {
+            match("abstract"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:142:8: ( 'dirty' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:142:10: 'dirty'
+            {
+            match("dirty"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:143:8: ( 'domainDescription' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:143:10: 'domainDescription'
+            {
+            match("domainDescription"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:144:8: ( 'domainKey' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:144:10: 'domainKey'
+            {
+            match("domainKey"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:145:8: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:145:10: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:146:8: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:146:10: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:147:8: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:147:10: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:148:8: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:148:10: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:149:8: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:149:10: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:150:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:150:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:151:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:151:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:152:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:152:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:153:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:153:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44411: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44413:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44413:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44413: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44415: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44417:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44417:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44417:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44417: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44417: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44419: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44421:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44421:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44421: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44421: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44423: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44425:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44425:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44425: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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44427:16: ( . )
+            // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:44427:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=152;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:924: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:933: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:942: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:955: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:963: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:975: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:991: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:1007: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g:1:1015: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\67\1\71\1\73\1\uffff\13\77\1\141\1\145\1\150\1\154\1\156\1\160\1\162\1\165\1\167\1\172\4\77\1\u008b\1\u008d\2\uffff\1\77\2\uffff\1\u0096\2\uffff\3\77\2\uffff\1\u009f\1\u00a0\1\64\5\uffff\1\u00a4\7\uffff\2\77\1\uffff\1\u00a9\3\77\1\u00b2\26\77\1\u00d2\3\77\20\uffff\1\u00d8\6\uffff\1\u00da\4\uffff\16\77\1\uffff\1\u00a0\5\uffff\1\77\1\u00ed\1\77\6\uffff\3\77\11\uffff\4\77\1\uffff\10\77\1\uffff\2\77\1\u0103\6\77\1\u010a\1\u010c\1\u010e\12\77\1\u0119\1\77\1\u011b\1\77\1\u011f\4\77\1\uffff\4\77\4\uffff\6\77\1\u0133\11\77\1\uffff\1\77\1\uffff\3\77\1\u0144\2\77\1\u0147\3\77\1\u014b\10\77\1\u0154\1\77\1\uffff\1\u0156\1\u0158\4\77\1\uffff\1\77\1\uffff\1\77\1\uffff\10\77\1\u0167\1\77\1\uffff\1\u0169\1\uffff\1\u016b\2\77\1\uffff\16\77\1\u017c\1\u017d\3\77\1\uffff\1\77\1\u0182\10\77\2\uffff\4\77\1\uffff\2\77\1\uffff\1\u0191\2\77\1\uffff\10\77\1\uffff\1\77\1\uffff\1\77\1\uffff\1\u019e\1\77\1\u01a0\1\77\1\u01a2\1\77\1\u01a4\4\77\1\u01a9\2\77\1\uffff\1\77\1\uffff\1\77\1\uffff\4\77\1\u01b2\1\77\1\u01b4\10\77\1\u01be\2\uffff\1\u01bf\3\77\1\uffff\1\u01c3\1\u01c4\14\77\1\uffff\1\77\1\u01d2\4\77\1\u01d7\1\u01d8\1\77\1\u01da\2\77\1\uffff\1\u01dd\1\uffff\1\77\1\uffff\1\u01df\1\uffff\1\u01e0\2\77\1\u01e3\1\uffff\1\u01e4\6\77\1\u01eb\1\uffff\1\77\1\uffff\11\77\2\uffff\3\77\2\uffff\4\77\1\u01fe\6\77\1\u0205\1\77\1\uffff\2\77\1\u0209\1\77\2\uffff\1\77\1\uffff\2\77\1\uffff\1\u020e\2\uffff\2\77\2\uffff\1\77\1\u0212\2\77\1\u0215\1\u0216\1\uffff\4\77\1\u021b\4\77\1\u0220\1\77\1\u0222\1\u0223\1\u0224\1\u0225\1\u0226\2\77\1\uffff\1\u0229\3\77\1\u022d\1\u022e\1\uffff\1\77\1\uffff\1\77\1\uffff\1\u0233\3\77\1\uffff\1\u0237\1\u0238\1\77\1\uffff\1\u023a\1\u023b\2\uffff\4\77\1\uffff\4\77\1\uffff\1\77\5\uffff\2\77\1\uffff\1\77\1\u0248\1\u0249\2\uffff\1\77\2\uffff\1\77\1\uffff\1\u024c\1\u024d\1\u024e\2\uffff\1\77\2\uffff\1\77\1\u0251\1\77\1\u0253\2\77\1\u0256\1\77\1\u0258\1\u0259\1\77\1\u025b\2\uffff\1\u025c\1\u025d\3\uffff\2\77\1\uffff\1\u0260\1\uffff\1\u0261\1\u0262\1\uffff\1\u0263\2\uffff\1\u0264\3\uffff\2\77\5\uffff\1\u0267\1\77\1\uffff\4\77\1\u026d\1\uffff";
+    static final String DFA21_eofS =
+        "\u026e\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\uffff\1\141\1\144\1\165\1\150\1\141\2\145\1\141\1\145\2\141\1\53\1\55\2\52\4\75\2\56\1\154\3\141\2\60\2\uffff\1\142\2\uffff\1\40\2\uffff\1\160\1\166\1\145\2\uffff\1\72\1\60\1\44\5\uffff\1\75\7\uffff\1\143\1\154\1\uffff\1\44\1\160\1\146\1\106\1\44\1\151\1\141\1\155\1\104\1\160\2\162\1\154\1\146\1\164\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\146\1\147\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\157\1\162\1\156\1\162\1\141\1\151\1\143\1\151\1\142\1\uffff\1\60\5\uffff\1\164\1\40\1\163\6\uffff\1\160\1\155\1\171\11\uffff\1\150\2\143\1\154\1\uffff\2\157\1\145\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\156\1\44\2\145\1\124\1\145\1\157\1\163\3\44\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\44\1\154\1\44\1\141\1\44\2\151\1\164\1\141\1\uffff\1\164\1\104\1\103\1\104\4\uffff\1\145\1\157\1\155\1\145\1\163\1\155\1\44\1\141\1\156\1\160\1\154\1\153\1\166\1\160\1\154\1\157\1\142\1\145\1\uffff\1\164\1\157\1\124\1\44\2\141\1\44\1\150\1\145\1\162\1\44\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\163\1\uffff\2\44\1\117\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\44\1\165\1\uffff\1\44\1\uffff\1\44\1\164\1\165\1\uffff\1\166\1\164\1\171\1\151\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\44\1\145\1\104\1\165\1\uffff\1\154\1\44\1\163\1\145\2\141\2\145\1\151\1\104\2\uffff\1\146\1\162\1\163\1\171\1\uffff\1\142\1\144\1\uffff\1\44\1\143\1\164\1\uffff\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\44\1\146\1\44\1\157\1\44\1\163\1\44\2\156\1\151\1\143\1\44\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\154\1\145\1\163\1\44\1\156\1\44\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\44\2\uffff\1\44\1\124\2\154\1\uffff\2\44\1\147\1\164\1\143\1\162\1\143\1\164\2\141\1\151\1\160\1\154\1\145\1\uffff\1\164\1\44\1\164\1\143\1\145\1\162\2\44\1\165\1\44\1\145\1\141\1\uffff\1\44\1\uffff\1\156\1\uffff\1\44\1\uffff\1\44\1\147\1\164\1\44\1\uffff\1\44\1\157\1\154\2\160\1\164\1\144\1\44\1\uffff\1\104\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\117\1\154\1\171\2\uffff\2\145\2\164\1\44\1\157\1\165\1\143\1\164\2\145\1\44\1\151\1\uffff\1\40\1\145\1\44\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\44\2\uffff\1\163\1\171\2\uffff\1\156\1\44\2\145\2\44\1\uffff\2\145\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\5\44\1\145\1\151\1\uffff\1\44\1\154\1\164\1\145\2\44\1\uffff\1\157\1\162\1\157\1\uffff\1\44\1\154\1\164\1\160\1\uffff\2\44\1\151\1\uffff\2\44\2\uffff\1\163\1\171\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\5\uffff\1\144\1\145\1\uffff\1\164\2\44\2\uffff\1\156\2\uffff\1\146\1\uffff\3\44\2\uffff\1\172\2\uffff\1\143\1\44\1\154\1\44\1\171\1\154\1\44\1\145\2\44\1\163\1\44\2\uffff\2\44\3\uffff\1\145\1\162\1\uffff\1\44\1\uffff\2\44\1\uffff\1\44\2\uffff\1\44\3\uffff\1\144\1\151\5\uffff\1\44\1\160\1\uffff\1\164\1\151\1\157\1\156\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\uffff\1\157\1\163\1\165\1\171\2\145\1\171\1\141\1\165\1\164\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\2\162\1\165\1\170\1\154\2\uffff\1\165\2\uffff\1\40\2\uffff\1\160\1\166\1\145\2\uffff\1\72\1\154\1\172\5\uffff\1\75\7\uffff\1\164\1\154\1\uffff\1\172\1\160\1\163\1\124\1\172\1\151\1\171\1\155\1\104\1\160\3\162\1\164\1\166\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\2\162\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\157\1\162\1\156\1\162\1\141\1\151\1\143\1\157\1\142\1\uffff\1\154\5\uffff\1\164\1\172\1\163\6\uffff\1\160\1\155\1\171\11\uffff\1\150\1\145\1\143\1\154\1\uffff\2\157\1\145\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\156\1\172\2\145\1\124\1\145\1\157\1\163\3\172\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\172\1\154\1\172\1\145\1\172\2\151\1\164\1\141\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\145\1\157\1\155\1\145\1\163\1\155\1\172\1\141\1\156\1\160\1\154\1\153\1\166\1\164\1\154\1\157\1\160\1\145\1\uffff\1\164\1\157\1\124\1\172\2\141\1\172\1\150\1\145\1\162\1\172\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\163\1\uffff\2\172\1\117\1\157\1\167\1\151\1\uffff\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\172\1\165\1\uffff\1\172\1\uffff\1\172\1\164\1\165\1\uffff\1\166\1\164\1\171\1\151\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\2\172\1\145\1\104\1\165\1\uffff\1\154\1\172\1\163\1\145\2\141\2\145\1\151\1\104\2\uffff\1\146\1\162\1\163\1\171\1\uffff\1\142\1\144\1\uffff\1\172\1\143\1\164\1\uffff\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\172\1\146\1\172\1\157\1\172\1\163\1\172\2\156\1\151\1\143\1\172\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\154\1\145\1\163\1\172\1\156\1\172\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\172\2\uffff\1\172\1\124\2\154\1\uffff\2\172\1\147\1\164\1\143\1\162\1\143\1\164\2\141\1\151\1\160\1\154\1\145\1\uffff\1\164\1\172\1\164\1\143\1\145\1\162\2\172\1\165\1\172\1\145\1\141\1\uffff\1\172\1\uffff\1\156\1\uffff\1\172\1\uffff\1\172\1\147\1\164\1\172\1\uffff\1\172\1\157\1\154\2\160\1\164\1\144\1\172\1\uffff\1\113\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\2\uffff\1\117\1\154\1\171\2\uffff\2\145\2\164\1\172\1\157\1\165\1\143\1\164\2\145\1\172\1\151\1\uffff\1\40\1\145\1\172\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\172\2\uffff\1\163\1\171\2\uffff\1\156\1\172\2\145\2\172\1\uffff\2\145\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\5\172\1\145\1\151\1\uffff\1\172\1\154\1\164\1\145\2\172\1\uffff\1\157\1\166\1\157\1\uffff\1\172\1\154\1\164\1\160\1\uffff\2\172\1\151\1\uffff\2\172\2\uffff\1\163\1\171\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\5\uffff\1\144\1\145\1\uffff\1\164\2\172\2\uffff\1\156\2\uffff\1\146\1\uffff\3\172\2\uffff\1\172\2\uffff\1\143\1\172\1\154\1\172\1\171\1\154\1\172\1\145\2\172\1\163\1\172\2\uffff\2\172\3\uffff\1\145\1\162\1\uffff\1\172\1\uffff\2\172\1\uffff\1\172\2\uffff\1\172\3\uffff\1\144\1\151\5\uffff\1\172\1\160\1\uffff\1\164\1\151\1\157\1\156\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\4\uffff\1\4\33\uffff\1\104\1\105\1\uffff\1\112\1\113\1\uffff\1\116\1\117\3\uffff\1\153\1\155\3\uffff\1\u0093\2\u0094\1\u0097\1\u0098\1\uffff\1\45\1\1\1\2\1\u008e\1\3\1\u0082\1\4\2\uffff\1\u0093\37\uffff\1\26\1\55\1\24\1\27\1\42\1\56\1\25\1\30\1\51\1\50\1\31\1\u0095\1\u0096\1\52\1\32\1\53\1\uffff\1\54\1\37\1\40\1\46\1\100\1\41\1\uffff\1\57\1\47\1\u008d\1\102\16\uffff\1\u0090\1\uffff\1\101\1\u0092\1\103\1\104\1\105\3\uffff\1\112\1\113\1\114\1\154\1\116\1\117\3\uffff\1\153\1\155\1\u008c\1\163\1\u0091\1\u0094\1\u0097\1\35\1\33\4\uffff\1\6\10\uffff\1\160\37\uffff\1\170\4\uffff\1\36\1\34\1\43\1\44\22\uffff\1\157\25\uffff\1\176\6\uffff\1\23\1\uffff\1\60\1\uffff\1\21\12\uffff\1\171\1\uffff\1\16\3\uffff\1\121\23\uffff\1\166\12\uffff\1\u0087\1\u0089\4\uffff\1\147\2\uffff\1\165\3\uffff\1\67\10\uffff\1\7\1\uffff\1\u008f\1\uffff\1\72\16\uffff\1\14\1\uffff\1\172\1\uffff\1\17\20\uffff\1\146\1\161\4\uffff\1\70\16\uffff\1\u0081\14\uffff\1\122\1\uffff\1\174\1\uffff\1\150\1\uffff\1\144\4\uffff\1\65\10\uffff\1\u0084\1\uffff\1\20\11\uffff\1\71\1\66\3\uffff\1\106\1\167\15\uffff\1\63\4\uffff\1\132\1\137\1\uffff\1\143\2\uffff\1\173\1\uffff\1\12\1\175\2\uffff\1\62\1\162\6\uffff\1\135\22\uffff\1\77\6\uffff\1\22\3\uffff\1\126\4\uffff\1\11\3\uffff\1\15\2\uffff\1\164\1\151\4\uffff\1\127\4\uffff\1\61\1\uffff\1\123\1\u008b\1\177\1\74\1\75\2\uffff\1\107\3\uffff\1\125\1\5\1\uffff\1\110\1\115\1\uffff\1\136\3\uffff\1\13\1\131\1\uffff\1\u0088\1\124\14\uffff\1\u0083\1\120\2\uffff\1\142\1\10\1\73\2\uffff\1\u0086\1\uffff\1\140\2\uffff\1\141\1\uffff\1\64\1\76\1\uffff\1\u008a\1\152\1\156\2\uffff\1\133\1\130\1\134\1\145\1\111\2\uffff\1\u0080\5\uffff\1\u0085";
+    static final String DFA21_specialS =
+        "\1\0\u026d\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\64\2\63\2\64\1\63\22\64\1\63\1\25\1\61\1\54\1\60\1\24\1\3\1\62\1\43\1\44\1\22\1\20\1\45\1\21\1\30\1\23\1\36\1\37\10\56\1\55\1\4\1\27\1\1\1\26\1\31\1\53\32\60\1\46\1\64\1\47\1\57\1\60\1\64\1\42\1\60\1\5\1\16\1\32\1\33\2\60\1\6\1\51\1\52\1\14\1\17\1\15\1\50\1\35\1\60\1\12\1\13\1\10\1\7\1\11\1\34\3\60\1\40\1\2\1\41\uff82\64",
+            "\1\65\1\66",
+            "\1\70",
+            "\1\72",
+            "",
+            "\1\75\15\uffff\1\76",
+            "\1\100\1\uffff\1\104\6\uffff\1\101\1\102\4\uffff\1\103",
+            "\1\105",
+            "\1\112\1\107\5\uffff\1\110\2\uffff\1\106\6\uffff\1\111",
+            "\1\114\3\uffff\1\113",
+            "\1\115",
+            "\1\116\16\uffff\1\117\1\120\1\uffff\1\121\1\uffff\1\122",
+            "\1\123",
+            "\1\125\11\uffff\1\124\5\uffff\1\126",
+            "\1\130\3\uffff\1\131\3\uffff\1\132\5\uffff\1\133\4\uffff\1\127",
+            "\1\134\7\uffff\1\136\11\uffff\1\135",
+            "\1\140\21\uffff\1\137",
+            "\1\144\17\uffff\1\142\1\143",
+            "\1\147\22\uffff\1\146",
+            "\1\152\4\uffff\1\153\15\uffff\1\151",
+            "\1\155",
+            "\1\157",
+            "\1\161",
+            "\1\164\1\163",
+            "\1\166",
+            "\1\171\13\uffff\1\170",
+            "\1\176\1\uffff\1\175\3\uffff\1\174\5\uffff\1\173",
+            "\1\177\7\uffff\1\u0082\5\uffff\1\u0081\2\uffff\1\u0080",
+            "\1\u0083\6\uffff\1\u0085\11\uffff\1\u0084",
+            "\1\u0086\20\uffff\1\u0087\2\uffff\1\u0088",
+            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\13\uffff\1\u0089\6\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\13\uffff\1\u0089",
+            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\22\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c",
+            "",
+            "",
+            "\1\u0092\20\uffff\1\u0091\1\uffff\1\u0090",
+            "",
+            "",
+            "\1\u0095",
+            "",
+            "",
+            "\1\u0099",
+            "\1\u009a",
+            "\1\u009b",
+            "",
+            "",
+            "\1\u009e",
+            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\22\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c",
+            "\1\77\34\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a5\17\uffff\1\u00a6\1\u00a7",
+            "\1\u00a8",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u00aa",
+            "\1\u00ab\1\uffff\1\u00ac\12\uffff\1\u00ad",
+            "\1\u00ae\7\uffff\1\u00b1\1\uffff\1\u00b0\3\uffff\1\u00af",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u00b3",
+            "\1\u00b4\23\uffff\1\u00b6\3\uffff\1\u00b5",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bd\5\uffff\1\u00bc",
+            "\1\u00be\1\u00bf\14\uffff\1\u00c0",
+            "\1\u00c1\1\uffff\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd\13\uffff\1\u00ce",
+            "\1\u00cf\12\uffff\1\u00d0",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\14\77\1\u00d1\15\77",
+            "\1\u00d3\7\uffff\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d7",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d9",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7\5\uffff\1\u00e8",
+            "\1\u00e9",
+            "",
+            "\12\u008a\10\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c\22\uffff\1\u008a\2\uffff\1\u008c\1\uffff\3\u008c\5\uffff\1\u008c",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ea",
+            "\1\u00eb\3\uffff\1\77\13\uffff\12\77\7\uffff\3\77\1\u00ec\26\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u00ee",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f2",
+            "\1\u00f3\1\uffff\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
+            "",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb\23\uffff\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff\5\uffff\1\u0100",
+            "",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\24\77\1\u010b\5\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\4\77\1\u010d\25\77",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u011a",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u011d\3\uffff\1\u011c",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\1\u011e\31\77",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "",
+            "\1\u0124",
+            "\1\u0125\11\uffff\1\u0126",
+            "\1\u0127\5\uffff\1\u0128",
+            "\1\u0129\10\uffff\1\u012b\1\u012a",
+            "",
+            "",
+            "",
+            "",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\77\13\uffff\12\77\7\uffff\15\77\1\u0132\14\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013b\3\uffff\1\u013a",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013f\15\uffff\1\u013e",
+            "\1\u0140",
+            "",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0155",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\22\77\1\u0157\7\77",
+            "\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\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0168",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\23\77\1\u016a\6\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u016c",
+            "\1\u016d",
+            "",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "",
+            "\1\u0181",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "",
+            "",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "",
+            "\1\u018f",
+            "\1\u0190",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\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\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u019f",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01a1",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01a3",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01aa",
+            "\1\u01ab",
+            "",
+            "\1\u01ac",
+            "",
+            "\1\u01ad",
+            "",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01b3",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc\16\uffff\1\u01bd",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "",
+            "\1\u01d1",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01d9",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01db",
+            "\1\u01dc",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u01de",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u01ec\6\uffff\1\u01ed",
+            "",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "",
+            "",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "",
+            "",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0206",
+            "",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u020a",
+            "",
+            "",
+            "\1\u020b",
+            "",
+            "\1\u020c",
+            "\1\u020d",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\u020f",
+            "\1\u0210",
+            "",
+            "",
+            "\1\u0211",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u021c",
+            "\1\u021d",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0221",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0227",
+            "\1\u0228",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u022f",
+            "\1\u0231\3\uffff\1\u0230",
+            "\1\u0232",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\u0236",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0239",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\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\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\u024a",
+            "",
+            "",
+            "\1\u024b",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\u024f",
+            "",
+            "",
+            "\1\u0250",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0252",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0254",
+            "\1\u0255",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0257",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u025a",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "",
+            "\1\u025e",
+            "\1\u025f",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "",
+            "\1\u0265",
+            "\1\u0266",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0268",
+            "",
+            "\1\u0269",
+            "\1\u026a",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            ""
+    };
+
+    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 | 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=='c') ) {s = 5;}
+
+                        else if ( (LA21_0=='i') ) {s = 6;}
+
+                        else if ( (LA21_0=='u') ) {s = 7;}
+
+                        else if ( (LA21_0=='t') ) {s = 8;}
+
+                        else if ( (LA21_0=='v') ) {s = 9;}
+
+                        else if ( (LA21_0=='r') ) {s = 10;}
+
+                        else if ( (LA21_0=='s') ) {s = 11;}
+
+                        else if ( (LA21_0=='l') ) {s = 12;}
+
+                        else if ( (LA21_0=='n') ) {s = 13;}
+
+                        else if ( (LA21_0=='d') ) {s = 14;}
+
+                        else if ( (LA21_0=='m') ) {s = 15;}
+
+                        else if ( (LA21_0=='+') ) {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=='<') ) {s = 23;}
+
+                        else if ( (LA21_0=='.') ) {s = 24;}
+
+                        else if ( (LA21_0=='?') ) {s = 25;}
+
+                        else if ( (LA21_0=='e') ) {s = 26;}
+
+                        else if ( (LA21_0=='f') ) {s = 27;}
+
+                        else if ( (LA21_0=='w') ) {s = 28;}
+
+                        else if ( (LA21_0=='p') ) {s = 29;}
+
+                        else if ( (LA21_0=='0') ) {s = 30;}
+
+                        else if ( (LA21_0=='1') ) {s = 31;}
+
+                        else if ( (LA21_0=='{') ) {s = 32;}
+
+                        else if ( (LA21_0=='}') ) {s = 33;}
+
+                        else if ( (LA21_0=='a') ) {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=='o') ) {s = 40;}
+
+                        else if ( (LA21_0=='j') ) {s = 41;}
+
+                        else if ( (LA21_0=='k') ) {s = 42;}
+
+                        else if ( (LA21_0=='@') ) {s = 43;}
+
+                        else if ( (LA21_0=='#') ) {s = 44;}
+
+                        else if ( (LA21_0==':') ) {s = 45;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 46;}
+
+                        else if ( (LA21_0=='^') ) {s = 47;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 48;}
+
+                        else if ( (LA21_0=='\"') ) {s = 49;}
+
+                        else if ( (LA21_0=='\'') ) {s = 50;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 52;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammarParser.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammarParser.java
new file mode 100644
index 0000000..d3160d2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+
+
+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 InternalDtoGrammarParserSignatures {
+     void entryRuleLDTOModel() throws RecognitionException;
+     void ruleLDTOModel() throws RecognitionException;
+     void entryRuleClass() throws RecognitionException;
+     void ruleClass() throws RecognitionException;
+     void entryRuleDtoFeature() throws RecognitionException;
+     void ruleDtoFeature() throws RecognitionException;
+     void entryRuleDtoMapper() throws RecognitionException;
+     void ruleDtoMapper() throws RecognitionException;
+     void entryRuleLimitedMapperDtoMapper() throws RecognitionException;
+     void ruleLimitedMapperDtoMapper() throws RecognitionException;
+     void entryRuleTypedPackage() throws RecognitionException;
+     void ruleTypedPackage() throws RecognitionException;
+     void entryRuleType() throws RecognitionException;
+     void ruleType() throws RecognitionException;
+     void entryRuleImport() throws RecognitionException;
+     void ruleImport() throws RecognitionException;
+     void entryRuleDataType() throws RecognitionException;
+     void ruleDataType() throws RecognitionException;
+     void entryRuleAllConstraints() throws RecognitionException;
+     void ruleAllConstraints() throws RecognitionException;
+     void entryRuleDataTypeConstraint() throws RecognitionException;
+     void ruleDataTypeConstraint() throws RecognitionException;
+     void entryRuleDateConstraint() throws RecognitionException;
+     void ruleDateConstraint() throws RecognitionException;
+     void entryRuleBlobTypeConstraint() throws RecognitionException;
+     void ruleBlobTypeConstraint() throws RecognitionException;
+     void entryRuleDtCAssertFalse() throws RecognitionException;
+     void ruleDtCAssertFalse() throws RecognitionException;
+     void entryRuleDtCAssertTrue() throws RecognitionException;
+     void ruleDtCAssertTrue() throws RecognitionException;
+     void entryRuleDtCDecimalMax() throws RecognitionException;
+     void ruleDtCDecimalMax() throws RecognitionException;
+     void entryRuleDtCDecimalMin() throws RecognitionException;
+     void ruleDtCDecimalMin() throws RecognitionException;
+     void entryRuleDtCDigits() throws RecognitionException;
+     void ruleDtCDigits() throws RecognitionException;
+     void entryRuleDtCFuture() throws RecognitionException;
+     void ruleDtCFuture() throws RecognitionException;
+     void entryRuleDtCPast() throws RecognitionException;
+     void ruleDtCPast() throws RecognitionException;
+     void entryRuleDtCNumericMax() throws RecognitionException;
+     void ruleDtCNumericMax() throws RecognitionException;
+     void entryRuleDtCNumericMin() throws RecognitionException;
+     void ruleDtCNumericMin() throws RecognitionException;
+     void entryRuleDtCNotNull() throws RecognitionException;
+     void ruleDtCNotNull() throws RecognitionException;
+     void entryRuleDtCNull() throws RecognitionException;
+     void ruleDtCNull() throws RecognitionException;
+     void entryRuleDtCRegEx() throws RecognitionException;
+     void ruleDtCRegEx() throws RecognitionException;
+     void entryRuleDtCSize() throws RecognitionException;
+     void ruleDtCSize() throws RecognitionException;
+     void entryRuleScalarType() throws RecognitionException;
+     void ruleScalarType() throws RecognitionException;
+     void entryRuleEnum() throws RecognitionException;
+     void ruleEnum() throws RecognitionException;
+     void entryRuleEnumLiteral() throws RecognitionException;
+     void ruleEnumLiteral() throws RecognitionException;
+     void entryRuleAnnotationDef() throws RecognitionException;
+     void ruleAnnotationDef() throws RecognitionException;
+     void entryRuleResultFilter() throws RecognitionException;
+     void ruleResultFilter() throws RecognitionException;
+     void entryRuleAttributeMatchingConstraint() throws RecognitionException;
+     void ruleAttributeMatchingConstraint() throws RecognitionException;
+     void entryRuleKeyAndValue() throws RecognitionException;
+     void ruleKeyAndValue() throws RecognitionException;
+     void entryRuleLQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleLQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleLFQN() throws RecognitionException;
+     void ruleLFQN() throws RecognitionException;
+     void entryRuleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     void ruleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     void entryRuleValidIDWithKeywords() throws RecognitionException;
+     void ruleValidIDWithKeywords() throws RecognitionException;
+     void entryRuleValidLFQNWithKeywords() throws RecognitionException;
+     void ruleValidLFQNWithKeywords() throws RecognitionException;
+     void entryRuleMultiplicity() throws RecognitionException;
+     void ruleMultiplicity() throws RecognitionException;
+     void entryRuleLInt() throws RecognitionException;
+     void ruleLInt() throws RecognitionException;
+     void entryRuleLDecimal() throws RecognitionException;
+     void ruleLDecimal() 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 entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() 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 entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleConstraintSeverity() throws RecognitionException;
+     void ruleDateType() throws RecognitionException;
+     void ruleLVisibility() throws RecognitionException;
+     void ruleLComparatorType() throws RecognitionException;
+     void ruleLowerBound() throws RecognitionException;
+     void ruleUpperBound() throws RecognitionException;
+     void rule__Class__Alternatives_2() throws RecognitionException;
+     void rule__DtoFeature__Alternatives_2() throws RecognitionException;
+     void rule__DtoFeature__Alternatives_2_0_3() throws RecognitionException;
+     void rule__DtoFeature__Alternatives_2_1_5() throws RecognitionException;
+     void rule__DtoFeature__Alternatives_2_5_1() throws RecognitionException;
+     void rule__DtoFeature__Alternatives_2_6_2() throws RecognitionException;
+     void rule__DtoFeature__Alternatives_2_7_7() throws RecognitionException;
+     void rule__Type__Alternatives() throws RecognitionException;
+     void rule__DataType__Alternatives_2() throws RecognitionException;
+     void rule__AllConstraints__Alternatives() throws RecognitionException;
+     void rule__DataTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__DateConstraint__Alternatives() throws RecognitionException;
+     void rule__BlobTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__ScalarType__Alternatives() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException;
+     void rule__LInt__Alternatives_0() 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__ConstraintSeverity__Alternatives() throws RecognitionException;
+     void rule__DateType__Alternatives() throws RecognitionException;
+     void rule__LVisibility__Alternatives() throws RecognitionException;
+     void rule__LComparatorType__Alternatives() throws RecognitionException;
+     void rule__LowerBound__Alternatives() throws RecognitionException;
+     void rule__UpperBound__Alternatives() throws RecognitionException;
+     void rule__Class__Group__0() throws RecognitionException;
+     void rule__Class__Group__0__Impl() throws RecognitionException;
+     void rule__Class__Group__1() throws RecognitionException;
+     void rule__Class__Group__1__Impl() throws RecognitionException;
+     void rule__Class__Group__2() throws RecognitionException;
+     void rule__Class__Group__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__0() throws RecognitionException;
+     void rule__Class__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__1() throws RecognitionException;
+     void rule__Class__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__2() throws RecognitionException;
+     void rule__Class__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__3() throws RecognitionException;
+     void rule__Class__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__4() throws RecognitionException;
+     void rule__Class__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__5() throws RecognitionException;
+     void rule__Class__Group_2_0__5__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__6() throws RecognitionException;
+     void rule__Class__Group_2_0__6__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__7() throws RecognitionException;
+     void rule__Class__Group_2_0__7__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__8() throws RecognitionException;
+     void rule__Class__Group_2_0__8__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_4__0() throws RecognitionException;
+     void rule__Class__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_4__1() throws RecognitionException;
+     void rule__Class__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_5__0() throws RecognitionException;
+     void rule__Class__Group_2_0_5__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_5__1() throws RecognitionException;
+     void rule__Class__Group_2_0_5__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__0() throws RecognitionException;
+     void rule__Class__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__1() throws RecognitionException;
+     void rule__Class__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__2() throws RecognitionException;
+     void rule__Class__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__3() throws RecognitionException;
+     void rule__Class__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__4() throws RecognitionException;
+     void rule__Class__Group_2_1__4__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__5() throws RecognitionException;
+     void rule__Class__Group_2_1__5__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__6() throws RecognitionException;
+     void rule__Class__Group_2_1__6__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__7() throws RecognitionException;
+     void rule__Class__Group_2_1__7__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__8() throws RecognitionException;
+     void rule__Class__Group_2_1__8__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__9() throws RecognitionException;
+     void rule__Class__Group_2_1__9__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_4__0() throws RecognitionException;
+     void rule__Class__Group_2_1_4__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_4__1() throws RecognitionException;
+     void rule__Class__Group_2_1_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group__0() throws RecognitionException;
+     void rule__DtoFeature__Group__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group__1() throws RecognitionException;
+     void rule__DtoFeature__Group__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group__2() throws RecognitionException;
+     void rule__DtoFeature__Group__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_0__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_0__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_0__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_0__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_0__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_0__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_0_2_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_1_4_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_2__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_2__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_2__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_2__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_2__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_2__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_2_1_4_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_3_1_3_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_4_1_4_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__6() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__6__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__7() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5__7__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_4__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_4__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_5_6_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__6() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__6__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__7() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1__7__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_4__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_4__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_6__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_6__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_6__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_6__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_6_1_7_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__6() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__6__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__7() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7__7__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_4__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_4__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6_3__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6_3__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6_3__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_7_6_3__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__2() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__2__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__3() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__3__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__4() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__4__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__5() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__5__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__6() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1__6__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4__1__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4_1__0() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4_1__0__Impl() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4_1__1() throws RecognitionException;
+     void rule__DtoFeature__Group_2_8_1_4_1__1__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group__0() throws RecognitionException;
+     void rule__DtoMapper__Group__0__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group__1() throws RecognitionException;
+     void rule__DtoMapper__Group__1__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group__2() throws RecognitionException;
+     void rule__DtoMapper__Group__2__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group__3() throws RecognitionException;
+     void rule__DtoMapper__Group__3__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group__4() throws RecognitionException;
+     void rule__DtoMapper__Group__4__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group_3__0() throws RecognitionException;
+     void rule__DtoMapper__Group_3__0__Impl() throws RecognitionException;
+     void rule__DtoMapper__Group_3__1() throws RecognitionException;
+     void rule__DtoMapper__Group_3__1__Impl() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__0() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__0__Impl() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__1() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__1__Impl() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__2() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__2__Impl() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__3() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__Group__3__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__0() throws RecognitionException;
+     void rule__TypedPackage__Group__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__1() throws RecognitionException;
+     void rule__TypedPackage__Group__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__2() throws RecognitionException;
+     void rule__TypedPackage__Group__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__3() throws RecognitionException;
+     void rule__TypedPackage__Group__3__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__Import__Group__0() throws RecognitionException;
+     void rule__Import__Group__0__Impl() throws RecognitionException;
+     void rule__Import__Group__1() throws RecognitionException;
+     void rule__Import__Group__1__Impl() throws RecognitionException;
+     void rule__Import__Group__2() throws RecognitionException;
+     void rule__Import__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__0() throws RecognitionException;
+     void rule__DataType__Group__0__Impl() throws RecognitionException;
+     void rule__DataType__Group__1() throws RecognitionException;
+     void rule__DataType__Group__1__Impl() throws RecognitionException;
+     void rule__DataType__Group__2() throws RecognitionException;
+     void rule__DataType__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__3() throws RecognitionException;
+     void rule__DataType__Group__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__0() throws RecognitionException;
+     void rule__DataType__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__1() throws RecognitionException;
+     void rule__DataType__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__2() throws RecognitionException;
+     void rule__DataType__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__3() throws RecognitionException;
+     void rule__DataType__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__4() throws RecognitionException;
+     void rule__DataType__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__0() throws RecognitionException;
+     void rule__DataType__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__1() throws RecognitionException;
+     void rule__DataType__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__2() throws RecognitionException;
+     void rule__DataType__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__3() throws RecognitionException;
+     void rule__DataType__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__0() throws RecognitionException;
+     void rule__DtCDigits__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__1() throws RecognitionException;
+     void rule__DtCDigits__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__2() throws RecognitionException;
+     void rule__DtCDigits__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__3() throws RecognitionException;
+     void rule__DtCDigits__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__4() throws RecognitionException;
+     void rule__DtCDigits__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__5() throws RecognitionException;
+     void rule__DtCDigits__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__6() throws RecognitionException;
+     void rule__DtCDigits__Group__6__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__7() throws RecognitionException;
+     void rule__DtCDigits__Group__7__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__0() throws RecognitionException;
+     void rule__DtCFuture__Group__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__1() throws RecognitionException;
+     void rule__DtCFuture__Group__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__2() throws RecognitionException;
+     void rule__DtCFuture__Group__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__0() throws RecognitionException;
+     void rule__DtCPast__Group__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__1() throws RecognitionException;
+     void rule__DtCPast__Group__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__2() throws RecognitionException;
+     void rule__DtCPast__Group__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__0() throws RecognitionException;
+     void rule__DtCNotNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__1() throws RecognitionException;
+     void rule__DtCNotNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__2() throws RecognitionException;
+     void rule__DtCNotNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__0() throws RecognitionException;
+     void rule__DtCNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__1() throws RecognitionException;
+     void rule__DtCNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__2() throws RecognitionException;
+     void rule__DtCNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__0() throws RecognitionException;
+     void rule__DtCRegEx__Group__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__1() throws RecognitionException;
+     void rule__DtCRegEx__Group__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__2() throws RecognitionException;
+     void rule__DtCRegEx__Group__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__3() throws RecognitionException;
+     void rule__DtCRegEx__Group__3__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__4() throws RecognitionException;
+     void rule__DtCRegEx__Group__4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__5() throws RecognitionException;
+     void rule__DtCRegEx__Group__5__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__0() throws RecognitionException;
+     void rule__DtCSize__Group__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__1() throws RecognitionException;
+     void rule__DtCSize__Group__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__2() throws RecognitionException;
+     void rule__DtCSize__Group__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__3() throws RecognitionException;
+     void rule__DtCSize__Group__3__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__4() throws RecognitionException;
+     void rule__DtCSize__Group__4__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__5() throws RecognitionException;
+     void rule__DtCSize__Group__5__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__6() throws RecognitionException;
+     void rule__DtCSize__Group__6__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__7() throws RecognitionException;
+     void rule__DtCSize__Group__7__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__0() throws RecognitionException;
+     void rule__Enum__Group__0__Impl() throws RecognitionException;
+     void rule__Enum__Group__1() throws RecognitionException;
+     void rule__Enum__Group__1__Impl() throws RecognitionException;
+     void rule__Enum__Group__2() throws RecognitionException;
+     void rule__Enum__Group__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__3() throws RecognitionException;
+     void rule__Enum__Group__3__Impl() throws RecognitionException;
+     void rule__Enum__Group__4() throws RecognitionException;
+     void rule__Enum__Group__4__Impl() throws RecognitionException;
+     void rule__Enum__Group__5() throws RecognitionException;
+     void rule__Enum__Group__5__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__0() throws RecognitionException;
+     void rule__Enum__Group_4__0__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__1() throws RecognitionException;
+     void rule__Enum__Group_4__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__0() throws RecognitionException;
+     void rule__EnumLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__1() throws RecognitionException;
+     void rule__EnumLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1__Impl() throws RecognitionException;
+     void rule__AnnotationDef__Group__0() throws RecognitionException;
+     void rule__AnnotationDef__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__0() throws RecognitionException;
+     void rule__KeyAndValue__Group__0__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__1() throws RecognitionException;
+     void rule__KeyAndValue__Group__1__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__2() throws RecognitionException;
+     void rule__KeyAndValue__Group__2__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__3() throws RecognitionException;
+     void rule__KeyAndValue__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__4() throws RecognitionException;
+     void rule__KeyAndValue__Group__4__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__5() throws RecognitionException;
+     void rule__KeyAndValue__Group__5__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__LFQN__Group__0() throws RecognitionException;
+     void rule__LFQN__Group__0__Impl() throws RecognitionException;
+     void rule__LFQN__Group__1() throws RecognitionException;
+     void rule__LFQN__Group__1__Impl() throws RecognitionException;
+     void rule__LFQN__Group_1__0() throws RecognitionException;
+     void rule__LFQN__Group_1__0__Impl() throws RecognitionException;
+     void rule__LFQN__Group_1__1() throws RecognitionException;
+     void rule__LFQN__Group_1__1__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1__Impl() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group__0() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group__0__Impl() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group__1() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group__1__Impl() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group_1__0() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group_1__0__Impl() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group_1__1() throws RecognitionException;
+     void rule__ValidLFQNWithKeywords__Group_1__1__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__0() throws RecognitionException;
+     void rule__Multiplicity__Group__0__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__1() throws RecognitionException;
+     void rule__Multiplicity__Group__1__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__2() throws RecognitionException;
+     void rule__Multiplicity__Group__2__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__3() throws RecognitionException;
+     void rule__Multiplicity__Group__3__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group_2__0() throws RecognitionException;
+     void rule__Multiplicity__Group_2__0__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group_2__1() throws RecognitionException;
+     void rule__Multiplicity__Group_2__1__Impl() throws RecognitionException;
+     void rule__LInt__Group__0() throws RecognitionException;
+     void rule__LInt__Group__0__Impl() throws RecognitionException;
+     void rule__LInt__Group__1() throws RecognitionException;
+     void rule__LInt__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__0() throws RecognitionException;
+     void rule__LDecimal__Group__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__1() throws RecognitionException;
+     void rule__LDecimal__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__0() throws RecognitionException;
+     void rule__LDecimal__Group_1__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__1() throws RecognitionException;
+     void rule__LDecimal__Group_1__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__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__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__DtoFeature__UnorderedGroup_2_6_1_1() throws RecognitionException;
+     void rule__DtoFeature__UnorderedGroup_2_6_1_1__Impl() throws RecognitionException;
+     void rule__DtoFeature__UnorderedGroup_2_6_1_1__0() throws RecognitionException;
+     void rule__DtoFeature__UnorderedGroup_2_6_1_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__0() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__1() throws RecognitionException;
+     void rule__LDTOModel__PackagesAssignment() throws RecognitionException;
+     void rule__Class__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__Class__AbstractAssignment_2_0_1() throws RecognitionException;
+     void rule__Class__NameAssignment_2_0_3() throws RecognitionException;
+     void rule__Class__SuperTypeAssignment_2_0_4_1() throws RecognitionException;
+     void rule__Class__WrappedTypeAssignment_2_0_5_1() throws RecognitionException;
+     void rule__Class__FeaturesAssignment_2_0_7() throws RecognitionException;
+     void rule__Class__AbstractAssignment_2_1_1() throws RecognitionException;
+     void rule__Class__NameAssignment_2_1_3() throws RecognitionException;
+     void rule__Class__SuperTypeAssignment_2_1_4_1() throws RecognitionException;
+     void rule__Class__WrappedTypeAssignment_2_1_6() throws RecognitionException;
+     void rule__Class__FeaturesAssignment_2_1_8() throws RecognitionException;
+     void rule__DtoFeature__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__DtoFeature__InheritedFeatureAssignment_2_0_0_2() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_0_1_1() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_0_2_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_0_2_3_1() throws RecognitionException;
+     void rule__DtoFeature__MapperAssignment_2_0_3_0() throws RecognitionException;
+     void rule__DtoFeature__InheritedFeatureAssignment_2_1_1_1() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_1_3() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_1_4_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_1_4_3_1() throws RecognitionException;
+     void rule__DtoFeature__MapperAssignment_2_1_5_0() throws RecognitionException;
+     void rule__DtoFeature__TransientAssignment_2_2_1_0() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_2_1_1() throws RecognitionException;
+     void rule__DtoFeature__ConstraintsAssignment_2_2_1_2_1() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_2_1_3() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_2_1_4_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_2_1_4_3_1() throws RecognitionException;
+     void rule__DtoFeature__DirtyAssignment_2_3_1_0() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_3_1_1() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_3_1_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_3_1_3_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_3_1_3_3_1() throws RecognitionException;
+     void rule__DtoFeature__DerivedAssignment_2_4_1_0() throws RecognitionException;
+     void rule__DtoFeature__DomainDescriptionAssignment_2_4_1_1() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_4_1_2() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_4_1_3() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_4_1_4_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_4_1_4_3_1() throws RecognitionException;
+     void rule__DtoFeature__DerivedGetterExpressionAssignment_2_4_1_5() throws RecognitionException;
+     void rule__DtoFeature__IdAssignment_2_5_1_0() throws RecognitionException;
+     void rule__DtoFeature__VersionAssignment_2_5_1_1() throws RecognitionException;
+     void rule__DtoFeature__UuidAssignment_2_5_1_2() throws RecognitionException;
+     void rule__DtoFeature__DomainDescriptionAssignment_2_5_1_3() throws RecognitionException;
+     void rule__DtoFeature__DomainKeyAssignment_2_5_1_4() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_5_2() throws RecognitionException;
+     void rule__DtoFeature__MultiplicityAssignment_2_5_3() throws RecognitionException;
+     void rule__DtoFeature__ConstraintsAssignment_2_5_4_1() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_5_5() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_5_6_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_5_6_3_1() throws RecognitionException;
+     void rule__DtoFeature__CascadingAssignment_2_6_1_1_0() throws RecognitionException;
+     void rule__DtoFeature__LazyAssignment_2_6_1_1_1() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_6_1_2() throws RecognitionException;
+     void rule__DtoFeature__MultiplicityAssignment_2_6_1_3() throws RecognitionException;
+     void rule__DtoFeature__ConstraintsAssignment_2_6_1_4_1() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_6_1_5() throws RecognitionException;
+     void rule__DtoFeature__OppositeAssignment_2_6_1_6_1() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_6_1_7_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_6_1_7_3_1() throws RecognitionException;
+     void rule__DtoFeature__MapperAssignment_2_6_2_0() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_7_2() throws RecognitionException;
+     void rule__DtoFeature__MultiplicityAssignment_2_7_3() throws RecognitionException;
+     void rule__DtoFeature__ConstraintsAssignment_2_7_4_1() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_7_5() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_7_6_2() throws RecognitionException;
+     void rule__DtoFeature__PropertiesAssignment_2_7_6_3_1() throws RecognitionException;
+     void rule__DtoFeature__MapperAssignment_2_7_7_0() throws RecognitionException;
+     void rule__DtoFeature__TypeAssignment_2_8_1_1() throws RecognitionException;
+     void rule__DtoFeature__NameAssignment_2_8_1_2() throws RecognitionException;
+     void rule__DtoFeature__ParamsAssignment_2_8_1_4_0() throws RecognitionException;
+     void rule__DtoFeature__ParamsAssignment_2_8_1_4_1_1() throws RecognitionException;
+     void rule__DtoFeature__BodyAssignment_2_8_1_6() throws RecognitionException;
+     void rule__DtoMapper__ToDTOAssignment_2() throws RecognitionException;
+     void rule__DtoMapper__FromDTOAssignment_3_1() throws RecognitionException;
+     void rule__LimitedMapperDtoMapper__ToDTOAssignment_2() throws RecognitionException;
+     void rule__TypedPackage__NameAssignment_2() throws RecognitionException;
+     void rule__TypedPackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__TypedPackage__TypesAssignment_3_2() throws RecognitionException;
+     void rule__Import__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__DataType__NameAssignment_1() throws RecognitionException;
+     void rule__DataType__JvmTypeReferenceAssignment_2_0_1() throws RecognitionException;
+     void rule__DataType__AsPrimitiveAssignment_2_0_2() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_0_3() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_3_1() throws RecognitionException;
+     void rule__DataType__DateAssignment_2_1_0() throws RecognitionException;
+     void rule__DataType__DateTypeAssignment_2_1_1() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_1_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_3_1() throws RecognitionException;
+     void rule__DataType__AsBlobAssignment_2_2_0() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_2_1() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_3_1() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDigits__IntDigitsAssignment_3() throws RecognitionException;
+     void rule__DtCDigits__FractionDigitsAssignment_5() throws RecognitionException;
+     void rule__DtCDigits__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCDigits__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCDigits__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__DtCFuture__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCFuture__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCFuture__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCPast__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCPast__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCPast__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNotNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCRegEx__PatternAssignment_3() throws RecognitionException;
+     void rule__DtCRegEx__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCRegEx__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCSize__MinAssignment_3() throws RecognitionException;
+     void rule__DtCSize__MaxAssignment_5() throws RecognitionException;
+     void rule__DtCSize__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCSize__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCSize__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__Enum__NameAssignment_1() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_3() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_4_1() throws RecognitionException;
+     void rule__EnumLiteral__NameAssignment_0() throws RecognitionException;
+     void rule__EnumLiteral__DefaultAssignment_1_0_1() throws RecognitionException;
+     void rule__EnumLiteral__NullAssignment_1_1_0() throws RecognitionException;
+     void rule__EnumLiteral__ValueAssignment_1_1_2_1() throws RecognitionException;
+     void rule__AnnotationDef__AnnotationAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__AttributeAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1() throws RecognitionException;
+     void rule__KeyAndValue__KeyAssignment_2() throws RecognitionException;
+     void rule__KeyAndValue__ValueAssignment_5() throws RecognitionException;
+     void rule__Multiplicity__LowerAssignment_1() throws RecognitionException;
+     void rule__Multiplicity__UpperAssignment_2_1() 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 synpred72_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred73_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred74_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred99_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred100_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred113_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred121_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred122_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred135_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred139_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred140_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred146_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred235_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred238_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred241_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred244_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred247_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred250_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred253_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred256_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred259_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred262_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred265_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred268_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred271_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred275_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred295_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred297_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred298_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred299_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred300_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred301_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred302_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred303_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred304_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred305_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred306_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred308_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred309_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred317_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred324_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred327_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred340_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred341_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred345_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred346_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred347_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred352_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred353_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred354_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred355_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred357_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred361_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred363_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred364_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred371_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred372_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred373_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred374_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred375_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred376_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred377_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred378_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred379_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred380_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred381_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred382_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred383_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred384_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred385_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred386_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred387_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred388_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred389_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred390_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred391_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred392_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred393_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred394_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred395_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred396_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred397_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred398_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred399_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred400_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred401_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred402_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred403_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred404_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred405_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred406_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred407_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred408_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred409_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred410_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred411_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred412_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred413_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred414_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred415_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred416_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred417_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred418_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred419_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred420_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred421_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred422_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred423_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred424_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred425_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred426_InternalDtoGrammar_fragment() throws RecognitionException;   
+     void synpred427_InternalDtoGrammar_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalDtoGrammarParser1 extends AbstractInternalContentAssistParser implements InternalDtoGrammarParserSignatures {
+
+        InternalDtoGrammarParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalDtoGrammarParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "';'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'{'", "'}'", "'wraps'", "'autoDto'", "'inherit var'", "'properties'", "'('", "')'", "', '", "'inherit ref'", "'['", "']'", "'opposite'", "'def'", "'toDTO'", "'fromDTO'", "'datatype'", "'jvmType'", "'isFalse'", "'msgCode'", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'key'", "'value'", "'derived'", "'collection'", "'@'", "','", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'abstract'", "'dirty'", "'domainDescription'", "'domainKey'", "'as primitive'", "'dateType'", "'as blob'", "'asDefault'", "'forNull'", "'::'", "'?.'", "'|'", "'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 RULE_HEX=5;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+
+    public String[] getTokenNames() { return InternalDtoGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/antlr/internal/InternalDtoGrammar.g"; }
+
+
+     
+     	protected DtoGrammarGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(DtoGrammarGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred384_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred384_InternalDtoGrammar_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 synpred303_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred303_InternalDtoGrammar_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 synpred413_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred413_InternalDtoGrammar_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 synpred99_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred99_InternalDtoGrammar_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 synpred297_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred297_InternalDtoGrammar_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 synpred355_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred355_InternalDtoGrammar_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 synpred417_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred417_InternalDtoGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred139_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred139_InternalDtoGrammar_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 synpred135_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred135_InternalDtoGrammar_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 synpred390_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred390_InternalDtoGrammar_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 synpred378_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred378_InternalDtoGrammar_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 synpred407_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred407_InternalDtoGrammar_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 synpred241_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred241_InternalDtoGrammar_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 synpred268_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred268_InternalDtoGrammar_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 synpred371_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred371_InternalDtoGrammar_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 synpred374_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred374_InternalDtoGrammar_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 synpred235_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred235_InternalDtoGrammar_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 synpred317_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred317_InternalDtoGrammar_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 synpred400_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred400_InternalDtoGrammar_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 synpred403_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred403_InternalDtoGrammar_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 synpred404_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred404_InternalDtoGrammar_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 synpred364_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred364_InternalDtoGrammar_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 synpred271_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred271_InternalDtoGrammar_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 synpred361_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred361_InternalDtoGrammar_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 synpred72_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred72_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred275_InternalDtoGrammar_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 synpred416_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred416_InternalDtoGrammar_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 synpred250_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred250_InternalDtoGrammar_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 synpred414_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred414_InternalDtoGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred140_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred140_InternalDtoGrammar_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 synpred244_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred244_InternalDtoGrammar_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 synpred412_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred412_InternalDtoGrammar_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 synpred418_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred418_InternalDtoGrammar_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 synpred354_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred354_InternalDtoGrammar_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 synpred352_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred352_InternalDtoGrammar_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 synpred408_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred408_InternalDtoGrammar_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 synpred410_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred410_InternalDtoGrammar_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 synpred238_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred238_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred327_InternalDtoGrammar_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 synpred265_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred265_InternalDtoGrammar_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 synpred259_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred259_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred345_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred346_InternalDtoGrammar_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 synpred426_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred426_InternalDtoGrammar_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 synpred427_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred427_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred347_InternalDtoGrammar_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 synpred341_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred341_InternalDtoGrammar_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 synpred340_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred340_InternalDtoGrammar_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 synpred422_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred422_InternalDtoGrammar_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 synpred423_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred423_InternalDtoGrammar_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 synpred256_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred256_InternalDtoGrammar_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 synpred253_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred253_InternalDtoGrammar_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 synpred425_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred425_InternalDtoGrammar_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 synpred424_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred424_InternalDtoGrammar_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 synpred421_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred421_InternalDtoGrammar_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 synpred420_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred420_InternalDtoGrammar_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 synpred247_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred247_InternalDtoGrammar_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 synpred415_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred415_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred299_InternalDtoGrammar_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 synpred305_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred305_InternalDtoGrammar_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 synpred419_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred419_InternalDtoGrammar_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 synpred295_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred295_InternalDtoGrammar_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 synpred309_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred309_InternalDtoGrammar_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 synpred357_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred357_InternalDtoGrammar_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 synpred392_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred392_InternalDtoGrammar_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 synpred353_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred353_InternalDtoGrammar_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 synpred409_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred409_InternalDtoGrammar_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 synpred301_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred301_InternalDtoGrammar_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 synpred411_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred411_InternalDtoGrammar_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 synpred376_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred376_InternalDtoGrammar_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 synpred100_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred100_InternalDtoGrammar_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 synpred262_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred262_InternalDtoGrammar_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 synpred324_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred324_InternalDtoGrammar_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 synpred372_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred372_InternalDtoGrammar_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 synpred402_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred402_InternalDtoGrammar_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 synpred405_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred405_InternalDtoGrammar_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 synpred146_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred146_InternalDtoGrammar_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 synpred401_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred401_InternalDtoGrammar_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 synpred406_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred406_InternalDtoGrammar_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 synpred363_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred363_InternalDtoGrammar_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 synpred74_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred74_InternalDtoGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred73_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred73_InternalDtoGrammar_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 synpred304_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred304_InternalDtoGrammar_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 synpred385_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred385_InternalDtoGrammar_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 synpred383_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred383_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred302_InternalDtoGrammar_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 synpred298_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred298_InternalDtoGrammar_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 synpred306_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred306_InternalDtoGrammar_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 synpred308_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred308_InternalDtoGrammar_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 synpred391_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred391_InternalDtoGrammar_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 synpred377_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred377_InternalDtoGrammar_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 synpred393_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred393_InternalDtoGrammar_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 synpred379_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred379_InternalDtoGrammar_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 synpred300_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred300_InternalDtoGrammar_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 synpred375_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred375_InternalDtoGrammar_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 synpred373_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred373_InternalDtoGrammar_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 synpred396_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred396_InternalDtoGrammar_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 synpred399_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred399_InternalDtoGrammar_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 synpred398_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred398_InternalDtoGrammar_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 synpred397_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred397_InternalDtoGrammar_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_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred121_InternalDtoGrammar_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 synpred395_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred395_InternalDtoGrammar_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 synpred394_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred394_InternalDtoGrammar_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 synpred122_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred122_InternalDtoGrammar_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 synpred381_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred381_InternalDtoGrammar_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 synpred380_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred380_InternalDtoGrammar_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 synpred382_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred382_InternalDtoGrammar_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 synpred387_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred387_InternalDtoGrammar_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 synpred113_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred113_InternalDtoGrammar_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 synpred386_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred386_InternalDtoGrammar_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 synpred389_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred389_InternalDtoGrammar_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 synpred388_InternalDtoGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred388_InternalDtoGrammar_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 DFA24 dfa24 = new DFA24(this);
+    protected DFA25 dfa25 = new DFA25(this);
+    protected DFA26 dfa26 = new DFA26(this);
+    protected DFA33 dfa33 = new DFA33(this);
+    protected DFA41 dfa41 = new DFA41(this);
+    protected DFA44 dfa44 = new DFA44(this);
+    protected DFA45 dfa45 = new DFA45(this);
+    protected DFA48 dfa48 = new DFA48(this);
+    protected DFA53 dfa53 = new DFA53(this);
+    protected DFA56 dfa56 = new DFA56(this);
+    protected DFA65 dfa65 = new DFA65(this);
+    protected DFA133 dfa133 = new DFA133(this);
+    protected DFA136 dfa136 = new DFA136(this);
+    protected DFA148 dfa148 = new DFA148(this);
+    protected DFA151 dfa151 = new DFA151(this);
+    protected DFA160 dfa160 = new DFA160(this);
+    protected DFA163 dfa163 = new DFA163(this);
+    protected DFA193 dfa193 = new DFA193(this);
+    protected DFA199 dfa199 = new DFA199(this);
+    protected DFA206 dfa206 = new DFA206(this);
+    protected DFA207 dfa207 = new DFA207(this);
+    protected DFA215 dfa215 = new DFA215(this);
+    protected DFA225 dfa225 = new DFA225(this);
+    protected DFA238 dfa238 = new DFA238(this);
+    protected DFA239 dfa239 = new DFA239(this);
+    protected DFA243 dfa243 = new DFA243(this);
+    protected DFA244 dfa244 = new DFA244(this);
+    protected DFA245 dfa245 = new DFA245(this);
+    protected DFA250 dfa250 = new DFA250(this);
+    protected DFA259 dfa259 = new DFA259(this);
+    protected DFA262 dfa262 = new DFA262(this);
+    protected DFA273 dfa273 = new DFA273(this);
+    protected DFA274 dfa274 = new DFA274(this);
+    protected DFA276 dfa276 = new DFA276(this);
+    protected DFA277 dfa277 = new DFA277(this);
+    protected DFA288 dfa288 = new DFA288(this);
+    protected DFA289 dfa289 = new DFA289(this);
+    protected DFA291 dfa291 = new DFA291(this);
+    protected DFA292 dfa292 = new DFA292(this);
+    protected DFA300 dfa300 = new DFA300(this);
+    protected DFA301 dfa301 = new DFA301(this);
+    protected DFA303 dfa303 = new DFA303(this);
+    protected DFA304 dfa304 = new DFA304(this);
+    static final String DFA24_eotS =
+        "\43\uffff";
+    static final String DFA24_eofS =
+        "\43\uffff";
+    static final String DFA24_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA24_maxS =
+        "\1\u009b\1\0\41\uffff";
+    static final String DFA24_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA24_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA24_transitionS = {
+            "\1\1\4\2\27\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\5\uffff\1\2\3\uffff\1\2\34\uffff\1\2\1\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA24_eot = DFA.unpackEncodedString(DFA24_eotS);
+    static final short[] DFA24_eof = DFA.unpackEncodedString(DFA24_eofS);
+    static final char[] DFA24_min = DFA.unpackEncodedStringToUnsignedChars(DFA24_minS);
+    static final char[] DFA24_max = DFA.unpackEncodedStringToUnsignedChars(DFA24_maxS);
+    static final short[] DFA24_accept = DFA.unpackEncodedString(DFA24_acceptS);
+    static final short[] DFA24_special = DFA.unpackEncodedString(DFA24_specialS);
+    static final short[][] DFA24_transition;
+
+    static {
+        int numStates = DFA24_transitionS.length;
+        DFA24_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA24_transition[i] = DFA.unpackEncodedString(DFA24_transitionS[i]);
+        }
+    }
+
+    class DFA24 extends DFA {
+
+        public DFA24(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 24;
+            this.eot = DFA24_eot;
+            this.eof = DFA24_eof;
+            this.min = DFA24_min;
+            this.max = DFA24_max;
+            this.accept = DFA24_accept;
+            this.special = DFA24_special;
+            this.transition = DFA24_transition;
+        }
+        public String getDescription() {
+            return "4300: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 LA24_1 = input.LA(1);
+
+                         
+                        int index24_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred72_InternalDtoGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index24_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 24, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA25_eotS =
+        "\43\uffff";
+    static final String DFA25_eofS =
+        "\43\uffff";
+    static final String DFA25_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA25_maxS =
+        "\1\u009b\1\0\41\uffff";
+    static final String DFA25_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA25_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA25_transitionS = {
+            "\5\2\27\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\5\uffff\1\2\3\uffff\1\2\34\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA25_eot = DFA.unpackEncodedString(DFA25_eotS);
+    static final short[] DFA25_eof = DFA.unpackEncodedString(DFA25_eofS);
+    static final char[] DFA25_min = DFA.unpackEncodedStringToUnsignedChars(DFA25_minS);
+    static final char[] DFA25_max = DFA.unpackEncodedStringToUnsignedChars(DFA25_maxS);
+    static final short[] DFA25_accept = DFA.unpackEncodedString(DFA25_acceptS);
+    static final short[] DFA25_special = DFA.unpackEncodedString(DFA25_specialS);
+    static final short[][] DFA25_transition;
+
+    static {
+        int numStates = DFA25_transitionS.length;
+        DFA25_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA25_transition[i] = DFA.unpackEncodedString(DFA25_transitionS[i]);
+        }
+    }
+
+    class DFA25 extends DFA {
+
+        public DFA25(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 25;
+            this.eot = DFA25_eot;
+            this.eof = DFA25_eof;
+            this.min = DFA25_min;
+            this.max = DFA25_max;
+            this.accept = DFA25_accept;
+            this.special = DFA25_special;
+            this.transition = DFA25_transition;
+        }
+        public String getDescription() {
+            return "4322: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 LA25_1 = input.LA(1);
+
+                         
+                        int index25_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred73_InternalDtoGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index25_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 25, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA26_eotS =
+        "\43\uffff";
+    static final String DFA26_eofS =
+        "\43\uffff";
+    static final String DFA26_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA26_maxS =
+        "\1\u009b\1\0\41\uffff";
+    static final String DFA26_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA26_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA26_transitionS = {
+            "\5\2\27\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\15\uffff\1\2\5\uffff\1\2\3\uffff\1\2\34\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA26_eot = DFA.unpackEncodedString(DFA26_eotS);
+    static final short[] DFA26_eof = DFA.unpackEncodedString(DFA26_eofS);
+    static final char[] DFA26_min = DFA.unpackEncodedStringToUnsignedChars(DFA26_minS);
+    static final char[] DFA26_max = DFA.unpackEncodedStringToUnsignedChars(DFA26_maxS);
+    static final short[] DFA26_accept = DFA.unpackEncodedString(DFA26_acceptS);
+    static final short[] DFA26_special = DFA.unpackEncodedString(DFA26_specialS);
+    static final short[][] DFA26_transition;
+
+    static {
+        int numStates = DFA26_transitionS.length;
+        DFA26_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA26_transition[i] = DFA.unpackEncodedString(DFA26_transitionS[i]);
+        }
+    }
+
+    class DFA26 extends DFA {
+
+        public DFA26(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 26;
+            this.eot = DFA26_eot;
+            this.eof = DFA26_eof;
+            this.min = DFA26_min;
+            this.max = DFA26_max;
+            this.accept = DFA26_accept;
+            this.special = DFA26_special;
+            this.transition = DFA26_transition;
+        }
+        public String getDescription() {
+            return "4344: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 LA26_1 = input.LA(1);
+
+                         
+                        int index26_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred74_InternalDtoGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index26_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 26, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA33_eotS =
+        "\13\uffff";
+    static final String DFA33_eofS =
+        "\13\uffff";
+    static final String DFA33_minS =
+        "\1\54\2\uffff\1\54\7\uffff";
+    static final String DFA33_maxS =
+        "\1\63\2\uffff\1\60\7\uffff";
+    static final String DFA33_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 DFA33_specialS =
+        "\13\uffff}>";
+    static final String[] DFA33_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[] DFA33_eot = DFA.unpackEncodedString(DFA33_eotS);
+    static final short[] DFA33_eof = DFA.unpackEncodedString(DFA33_eofS);
+    static final char[] DFA33_min = DFA.unpackEncodedStringToUnsignedChars(DFA33_minS);
+    static final char[] DFA33_max = DFA.unpackEncodedStringToUnsignedChars(DFA33_maxS);
+    static final short[] DFA33_accept = DFA.unpackEncodedString(DFA33_acceptS);
+    static final short[] DFA33_special = DFA.unpackEncodedString(DFA33_specialS);
+    static final short[][] DFA33_transition;
+
+    static {
+        int numStates = DFA33_transitionS.length;
+        DFA33_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA33_transition[i] = DFA.unpackEncodedString(DFA33_transitionS[i]);
+        }
+    }
+
+    class DFA33 extends DFA {
+
+        public DFA33(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 33;
+            this.eot = DFA33_eot;
+            this.eof = DFA33_eof;
+            this.min = DFA33_min;
+            this.max = DFA33_max;
+            this.accept = DFA33_accept;
+            this.special = DFA33_special;
+            this.transition = DFA33_transition;
+        }
+        public String getDescription() {
+            return "4576:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA41_eotS =
+        "\12\uffff";
+    static final String DFA41_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA41_minS =
+        "\1\73\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA41_maxS =
+        "\1\u0099\2\101\1\uffff\5\u009b\1\uffff";
+    static final String DFA41_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA41_specialS =
+        "\12\uffff}>";
+    static final String[] DFA41_transitionS = {
+            "\1\1\134\uffff\1\2\1\3",
+            "\1\4\50\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\50\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\3\3\1\uffff\4\3\7\uffff\1\3\1\uffff\44\3\15\uffff\2\3\2\uffff\1\3\1\uffff\2\3\1\uffff\3\3\1\uffff\1\3\1\uffff\1\3\25\uffff\1\3\1\uffff\27\3\2\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\3\3\1\uffff\4\3\7\uffff\1\3\1\uffff\44\3\15\uffff\2\3\2\uffff\1\3\1\uffff\2\3\1\uffff\3\3\1\uffff\1\3\1\uffff\1\3\25\uffff\1\3\1\uffff\27\3\2\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\3\3\1\uffff\4\3\7\uffff\1\3\1\uffff\44\3\15\uffff\2\3\2\uffff\1\3\1\uffff\2\3\1\uffff\3\3\1\uffff\1\3\1\uffff\1\3\25\uffff\1\3\1\uffff\27\3\2\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\3\3\1\uffff\4\3\7\uffff\1\3\1\uffff\44\3\15\uffff\2\3\2\uffff\1\3\1\uffff\2\3\1\uffff\3\3\1\uffff\1\3\1\uffff\1\3\25\uffff\1\3\1\uffff\27\3\2\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\3\3\1\uffff\4\3\7\uffff\1\3\1\uffff\44\3\15\uffff\2\3\2\uffff\1\3\1\uffff\2\3\1\uffff\3\3\1\uffff\1\3\1\uffff\1\3\25\uffff\1\3\1\uffff\27\3\2\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            ""
+    };
+
+    static final short[] DFA41_eot = DFA.unpackEncodedString(DFA41_eotS);
+    static final short[] DFA41_eof = DFA.unpackEncodedString(DFA41_eofS);
+    static final char[] DFA41_min = DFA.unpackEncodedStringToUnsignedChars(DFA41_minS);
+    static final char[] DFA41_max = DFA.unpackEncodedStringToUnsignedChars(DFA41_maxS);
+    static final short[] DFA41_accept = DFA.unpackEncodedString(DFA41_acceptS);
+    static final short[] DFA41_special = DFA.unpackEncodedString(DFA41_specialS);
+    static final short[][] DFA41_transition;
+
+    static {
+        int numStates = DFA41_transitionS.length;
+        DFA41_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA41_transition[i] = DFA.unpackEncodedString(DFA41_transitionS[i]);
+        }
+    }
+
+    class DFA41 extends DFA {
+
+        public DFA41(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 41;
+            this.eot = DFA41_eot;
+            this.eof = DFA41_eof;
+            this.min = DFA41_min;
+            this.max = DFA41_max;
+            this.accept = DFA41_accept;
+            this.special = DFA41_special;
+            this.transition = DFA41_transition;
+        }
+        public String getDescription() {
+            return "4858:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA44_eotS =
+        "\43\uffff";
+    static final String DFA44_eofS =
+        "\43\uffff";
+    static final String DFA44_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA44_maxS =
+        "\1\u009b\2\0\40\uffff";
+    static final String DFA44_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA44_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA44_transitionS = {
+            "\1\1\4\5\27\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\5\uffff\1\2\3\uffff\1\5\36\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\15\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA44_eot = DFA.unpackEncodedString(DFA44_eotS);
+    static final short[] DFA44_eof = DFA.unpackEncodedString(DFA44_eofS);
+    static final char[] DFA44_min = DFA.unpackEncodedStringToUnsignedChars(DFA44_minS);
+    static final char[] DFA44_max = DFA.unpackEncodedStringToUnsignedChars(DFA44_maxS);
+    static final short[] DFA44_accept = DFA.unpackEncodedString(DFA44_acceptS);
+    static final short[] DFA44_special = DFA.unpackEncodedString(DFA44_specialS);
+    static final short[][] DFA44_transition;
+
+    static {
+        int numStates = DFA44_transitionS.length;
+        DFA44_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA44_transition[i] = DFA.unpackEncodedString(DFA44_transitionS[i]);
+        }
+    }
+
+    class DFA44 extends DFA {
+
+        public DFA44(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 44;
+            this.eot = DFA44_eot;
+            this.eof = DFA44_eof;
+            this.min = DFA44_min;
+            this.max = DFA44_max;
+            this.accept = DFA44_accept;
+            this.special = DFA44_special;
+            this.transition = DFA44_transition;
+        }
+        public String getDescription() {
+            return "4934: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 LA44_1 = input.LA(1);
+
+                         
+                        int index44_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred113_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index44_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA44_2 = input.LA(1);
+
+                         
+                        int index44_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred113_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index44_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 44, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA45_eotS =
+        "\40\uffff";
+    static final String DFA45_eofS =
+        "\40\uffff";
+    static final String DFA45_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA45_maxS =
+        "\1\u009b\26\uffff\1\0\10\uffff";
+    static final String DFA45_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 DFA45_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA45_transitionS = {
+            "\1\5\4\14\44\uffff\1\5\17\uffff\5\5\1\14\15\uffff\1\2\5\uffff\1\35\3\uffff\1\14\36\uffff\1\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\16\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA45_eot = DFA.unpackEncodedString(DFA45_eotS);
+    static final short[] DFA45_eof = DFA.unpackEncodedString(DFA45_eofS);
+    static final char[] DFA45_min = DFA.unpackEncodedStringToUnsignedChars(DFA45_minS);
+    static final char[] DFA45_max = DFA.unpackEncodedStringToUnsignedChars(DFA45_maxS);
+    static final short[] DFA45_accept = DFA.unpackEncodedString(DFA45_acceptS);
+    static final short[] DFA45_special = DFA.unpackEncodedString(DFA45_specialS);
+    static final short[][] DFA45_transition;
+
+    static {
+        int numStates = DFA45_transitionS.length;
+        DFA45_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA45_transition[i] = DFA.unpackEncodedString(DFA45_transitionS[i]);
+        }
+    }
+
+    class DFA45 extends DFA {
+
+        public DFA45(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 45;
+            this.eot = DFA45_eot;
+            this.eof = DFA45_eof;
+            this.min = DFA45_min;
+            this.max = DFA45_max;
+            this.accept = DFA45_accept;
+            this.special = DFA45_special;
+            this.transition = DFA45_transition;
+        }
+        public String getDescription() {
+            return "4956: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 LA45_23 = input.LA(1);
+
+                         
+                        int index45_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred121_InternalDtoGrammar()) ) {s = 30;}
+
+                        else if ( (synpred122_InternalDtoGrammar()) ) {s = 31;}
+
+                         
+                        input.seek(index45_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 45, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA48_eotS =
+        "\43\uffff";
+    static final String DFA48_eofS =
+        "\43\uffff";
+    static final String DFA48_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA48_maxS =
+        "\1\u009b\1\0\41\uffff";
+    static final String DFA48_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA48_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA48_transitionS = {
+            "\5\2\27\uffff\2\2\13\uffff\1\2\3\uffff\1\2\6\uffff\1\2\4\uffff\6\2\15\uffff\1\2\5\uffff\1\1\3\uffff\1\2\36\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\16\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA48_eot = DFA.unpackEncodedString(DFA48_eotS);
+    static final short[] DFA48_eof = DFA.unpackEncodedString(DFA48_eofS);
+    static final char[] DFA48_min = DFA.unpackEncodedStringToUnsignedChars(DFA48_minS);
+    static final char[] DFA48_max = DFA.unpackEncodedStringToUnsignedChars(DFA48_maxS);
+    static final short[] DFA48_accept = DFA.unpackEncodedString(DFA48_acceptS);
+    static final short[] DFA48_special = DFA.unpackEncodedString(DFA48_specialS);
+    static final short[][] DFA48_transition;
+
+    static {
+        int numStates = DFA48_transitionS.length;
+        DFA48_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA48_transition[i] = DFA.unpackEncodedString(DFA48_transitionS[i]);
+        }
+    }
+
+    class DFA48 extends DFA {
+
+        public DFA48(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 48;
+            this.eot = DFA48_eot;
+            this.eof = DFA48_eof;
+            this.min = DFA48_min;
+            this.max = DFA48_max;
+            this.accept = DFA48_accept;
+            this.special = DFA48_special;
+            this.transition = DFA48_transition;
+        }
+        public String getDescription() {
+            return "5130: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 LA48_1 = input.LA(1);
+
+                         
+                        int index48_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred135_InternalDtoGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index48_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 48, _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\2\0\40\uffff";
+    static final String DFA53_maxS =
+        "\1\u009b\2\0\40\uffff";
+    static final String DFA53_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA53_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA53_transitionS = {
+            "\1\1\4\5\27\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\5\uffff\1\2\3\uffff\1\5\36\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\15\uffff\1\3\1\5",
+            "\1\uffff",
+            "\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 "5242: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 LA53_1 = input.LA(1);
+
+                         
+                        int index53_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred140_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index53_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA53_2 = input.LA(1);
+
+                         
+                        int index53_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred140_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index53_2);
+                        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 DFA56_eotS =
+        "\43\uffff";
+    static final String DFA56_eofS =
+        "\43\uffff";
+    static final String DFA56_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA56_maxS =
+        "\1\u009b\2\0\40\uffff";
+    static final String DFA56_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA56_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA56_transitionS = {
+            "\1\1\4\5\27\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\15\uffff\1\5\5\uffff\1\2\3\uffff\1\5\36\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\15\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA56_eot = DFA.unpackEncodedString(DFA56_eotS);
+    static final short[] DFA56_eof = DFA.unpackEncodedString(DFA56_eofS);
+    static final char[] DFA56_min = DFA.unpackEncodedStringToUnsignedChars(DFA56_minS);
+    static final char[] DFA56_max = DFA.unpackEncodedStringToUnsignedChars(DFA56_maxS);
+    static final short[] DFA56_accept = DFA.unpackEncodedString(DFA56_acceptS);
+    static final short[] DFA56_special = DFA.unpackEncodedString(DFA56_specialS);
+    static final short[][] DFA56_transition;
+
+    static {
+        int numStates = DFA56_transitionS.length;
+        DFA56_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA56_transition[i] = DFA.unpackEncodedString(DFA56_transitionS[i]);
+        }
+    }
+
+    class DFA56 extends DFA {
+
+        public DFA56(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 56;
+            this.eot = DFA56_eot;
+            this.eof = DFA56_eof;
+            this.min = DFA56_min;
+            this.max = DFA56_max;
+            this.accept = DFA56_accept;
+            this.special = DFA56_special;
+            this.transition = DFA56_transition;
+        }
+        public String getDescription() {
+            return "5336: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 LA56_1 = input.LA(1);
+
+                         
+                        int index56_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index56_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA56_2 = input.LA(1);
+
+                         
+                        int index56_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index56_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 56, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA65_eotS =
+        "\7\uffff";
+    static final String DFA65_eofS =
+        "\2\uffff\1\4\3\uffff\1\4";
+    static final String DFA65_minS =
+        "\1\4\1\uffff\1\20\1\4\2\uffff\1\20";
+    static final String DFA65_maxS =
+        "\1\76\1\uffff\1\73\1\64\2\uffff\1\73";
+    static final String DFA65_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+    static final String DFA65_specialS =
+        "\7\uffff}>";
+    static final String[] DFA65_transitionS = {
+            "\1\2\71\uffff\1\1",
+            "",
+            "\1\4\52\uffff\1\3",
+            "\1\6\57\uffff\1\5",
+            "",
+            "",
+            "\1\4\52\uffff\1\3"
+    };
+
+    static final short[] DFA65_eot = DFA.unpackEncodedString(DFA65_eotS);
+    static final short[] DFA65_eof = DFA.unpackEncodedString(DFA65_eofS);
+    static final char[] DFA65_min = DFA.unpackEncodedStringToUnsignedChars(DFA65_minS);
+    static final char[] DFA65_max = DFA.unpackEncodedStringToUnsignedChars(DFA65_maxS);
+    static final short[] DFA65_accept = DFA.unpackEncodedString(DFA65_acceptS);
+    static final short[] DFA65_special = DFA.unpackEncodedString(DFA65_specialS);
+    static final short[][] DFA65_transition;
+
+    static {
+        int numStates = DFA65_transitionS.length;
+        DFA65_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA65_transition[i] = DFA.unpackEncodedString(DFA65_transitionS[i]);
+        }
+    }
+
+    class DFA65 extends DFA {
+
+        public DFA65(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 65;
+            this.eot = DFA65_eot;
+            this.eof = DFA65_eof;
+            this.min = DFA65_min;
+            this.max = DFA65_max;
+            this.accept = DFA65_accept;
+            this.special = DFA65_special;
+            this.transition = DFA65_transition;
+        }
+        public String getDescription() {
+            return "5536:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
+        }
+    }
+    static final String DFA133_eotS =
+        "\67\uffff";
+    static final String DFA133_eofS =
+        "\1\5\3\uffff\1\7\1\uffff\1\5\1\62\57\uffff";
+    static final String DFA133_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\4\1\0\31\uffff\7\4\17\uffff";
+    static final String DFA133_maxS =
+        "\1\u008f\3\uffff\1\u008f\1\uffff\1\u0092\1\0\31\uffff\1\122\1\u0091\5\122\17\uffff";
+    static final String DFA133_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\2\uffff\31\1\7\uffff\17\1";
+    static final String DFA133_specialS =
+        "\1\6\3\uffff\1\4\1\uffff\1\5\1\11\31\uffff\1\1\1\0\1\7\1\12\1\10\1\3\1\2\17\uffff}>";
+    static final String[] DFA133_transitionS = {
+            "\1\5\11\uffff\1\5\66\uffff\1\5\1\uffff\1\5\1\uffff\1\5\4\uffff\1\1\1\4\4\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\4\uffff\1\5\27\uffff\1\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\32\11\5\1\6\5\5\61\uffff\1\33\1\uffff\1\40\1\uffff\1\31\4\uffff\1\10\1\13\4\uffff\1\34\1\uffff\1\14\1\uffff\1\11\1\12\1\15\1\16\1\17\1\20\1\27\1\30\1\21\1\22\1\23\1\24\1\25\1\26\1\35\2\uffff\1\5\1\uffff\1\36\27\uffff\1\37",
+            "",
+            "\1\61\13\uffff\1\5\1\50\1\43\1\45\1\41\1\44\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\46\1\60\1\47\60\uffff\2\5\2\uffff\2\5\3\uffff\1\5\2\uffff\2\5\27\uffff\1\42\1\uffff\1\5\30\uffff\3\5",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\161\uffff\1\66\32\uffff\1\5",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\23\uffff\1\5\5\uffff\1\5\36\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA133_eot = DFA.unpackEncodedString(DFA133_eotS);
+    static final short[] DFA133_eof = DFA.unpackEncodedString(DFA133_eofS);
+    static final char[] DFA133_min = DFA.unpackEncodedStringToUnsignedChars(DFA133_minS);
+    static final char[] DFA133_max = DFA.unpackEncodedStringToUnsignedChars(DFA133_maxS);
+    static final short[] DFA133_accept = DFA.unpackEncodedString(DFA133_acceptS);
+    static final short[] DFA133_special = DFA.unpackEncodedString(DFA133_specialS);
+    static final short[][] DFA133_transition;
+
+    static {
+        int numStates = DFA133_transitionS.length;
+        DFA133_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA133_transition[i] = DFA.unpackEncodedString(DFA133_transitionS[i]);
+        }
+    }
+
+    class DFA133 extends DFA {
+
+        public DFA133(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 133;
+            this.eot = DFA133_eot;
+            this.eof = DFA133_eof;
+            this.min = DFA133_min;
+            this.max = DFA133_max;
+            this.accept = DFA133_accept;
+            this.special = DFA133_special;
+            this.transition = DFA133_transition;
+        }
+        public String getDescription() {
+            return "13478:1: ( rule__DtCAssertFalse__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA133_34 = input.LA(1);
+
+                         
+                        int index133_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA133_34==RULE_ID||LA133_34==145) ) {s = 5;}
+
+                        else if ( LA133_34 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 54;}
+
+                         
+                        input.seek(index133_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA133_33 = input.LA(1);
+
+                         
+                        int index133_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA133_33==RULE_ID) ) {s = 5;}
+
+                        else if ( LA133_33 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA133_33 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA133_33 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                         
+                        input.seek(index133_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA133_39 = input.LA(1);
+
+                         
+                        int index133_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_39 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA133_39 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA133_39 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA133_39==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index133_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA133_38 = input.LA(1);
+
+                         
+                        int index133_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_38 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA133_38 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA133_38 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA133_38==RULE_ID||LA133_38==24||LA133_38==30) ) {s = 5;}
+
+                         
+                        input.seek(index133_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA133_4 = input.LA(1);
+
+                         
+                        int index133_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA133_4==RULE_ID||(LA133_4>=17 && LA133_4<=25)||(LA133_4>=27 && LA133_4<=31)||LA133_4==117) ) {s = 5;}
+
+                        else if ( (LA133_4==26) ) {s = 6;}
+
+                        else if ( (LA133_4==EOF) ) {s = 7;}
+
+                        else if ( LA133_4 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA133_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA133_4 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA133_4 ==91 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA133_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA133_4 ==102 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA133_4 ==103 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA133_4 ==104 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA133_4 ==105 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA133_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA133_4 ==109 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA133_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA133_4 ==111 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA133_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA133_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA133_4 ==106 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA133_4 ==107 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA133_4 ==85 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA133_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA133_4 ==81 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA133_4 ==96 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA133_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA133_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA133_4 ==143 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA133_4 ==83 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                         
+                        input.seek(index133_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA133_6 = input.LA(1);
+
+                         
+                        int index133_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA133_6==EOF||LA133_6==16||(LA133_6>=80 && LA133_6<=81)||(LA133_6>=84 && LA133_6<=85)||LA133_6==89||(LA133_6>=92 && LA133_6<=93)||LA133_6==119||(LA133_6>=144 && LA133_6<=146)) ) {s = 5;}
+
+                        else if ( (LA133_6==20) ) {s = 33;}
+
+                        else if ( (LA133_6==117) ) {s = 34;}
+
+                        else if ( (LA133_6==18) ) {s = 35;}
+
+                        else if ( (LA133_6==21) ) {s = 36;}
+
+                        else if ( (LA133_6==19) ) {s = 37;}
+
+                        else if ( (LA133_6==29) ) {s = 38;}
+
+                        else if ( (LA133_6==31) ) {s = 39;}
+
+                        else if ( LA133_6 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 40;}
+
+                        else if ( LA133_6 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 41;}
+
+                        else if ( LA133_6 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 42;}
+
+                        else if ( LA133_6 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 43;}
+
+                        else if ( LA133_6 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 44;}
+
+                        else if ( LA133_6 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 45;}
+
+                        else if ( LA133_6 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 46;}
+
+                        else if ( LA133_6 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 47;}
+
+                        else if ( LA133_6 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 48;}
+
+                        else if ( LA133_6 ==RULE_ID && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 49;}
+
+                         
+                        input.seek(index133_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA133_0 = input.LA(1);
+
+                         
+                        int index133_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_0 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA133_0 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA133_0 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA133_0==91) ) {s = 4;}
+
+                        else if ( (LA133_0==EOF||LA133_0==16||LA133_0==26||LA133_0==81||LA133_0==83||LA133_0==85||LA133_0==96||LA133_0==98||(LA133_0>=102 && LA133_0<=114)||LA133_0==119||LA133_0==143) ) {s = 5;}
+
+                         
+                        input.seek(index133_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA133_35 = input.LA(1);
+
+                         
+                        int index133_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_35 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA133_35 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA133_35 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA133_35==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index133_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA133_37 = input.LA(1);
+
+                         
+                        int index133_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_37 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA133_37 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA133_37 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA133_37==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index133_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA133_7 = input.LA(1);
+
+                         
+                        int index133_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_7 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 50;}
+
+                         
+                        input.seek(index133_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA133_36 = input.LA(1);
+
+                         
+                        int index133_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA133_36 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA133_36 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA133_36 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA133_36==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index133_36);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 133, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA136_eotS =
+        "\67\uffff";
+    static final String DFA136_eofS =
+        "\1\5\3\uffff\1\7\1\uffff\1\5\1\62\57\uffff";
+    static final String DFA136_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\4\1\0\31\uffff\7\4\17\uffff";
+    static final String DFA136_maxS =
+        "\1\u008f\3\uffff\1\u008f\1\uffff\1\u0092\1\0\31\uffff\1\122\1\u0091\5\122\17\uffff";
+    static final String DFA136_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\2\uffff\31\1\7\uffff\17\1";
+    static final String DFA136_specialS =
+        "\1\6\3\uffff\1\2\1\uffff\1\5\1\12\31\uffff\1\1\1\0\1\7\1\11\1\10\1\4\1\3\17\uffff}>";
+    static final String[] DFA136_transitionS = {
+            "\1\5\11\uffff\1\5\66\uffff\1\5\1\uffff\1\5\1\uffff\1\5\4\uffff\1\1\1\4\4\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\4\uffff\1\5\27\uffff\1\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\32\11\5\1\6\5\5\61\uffff\1\33\1\uffff\1\40\1\uffff\1\31\4\uffff\1\10\1\13\4\uffff\1\34\1\uffff\1\14\1\uffff\1\11\1\12\1\15\1\16\1\17\1\20\1\27\1\30\1\21\1\22\1\23\1\24\1\25\1\26\1\35\2\uffff\1\5\1\uffff\1\36\27\uffff\1\37",
+            "",
+            "\1\61\13\uffff\1\5\1\50\1\43\1\45\1\41\1\44\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\46\1\60\1\47\60\uffff\2\5\2\uffff\2\5\3\uffff\1\5\2\uffff\2\5\27\uffff\1\42\1\uffff\1\5\30\uffff\3\5",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\161\uffff\1\66\32\uffff\1\5",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\23\uffff\1\5\5\uffff\1\5\36\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA136_eot = DFA.unpackEncodedString(DFA136_eotS);
+    static final short[] DFA136_eof = DFA.unpackEncodedString(DFA136_eofS);
+    static final char[] DFA136_min = DFA.unpackEncodedStringToUnsignedChars(DFA136_minS);
+    static final char[] DFA136_max = DFA.unpackEncodedStringToUnsignedChars(DFA136_maxS);
+    static final short[] DFA136_accept = DFA.unpackEncodedString(DFA136_acceptS);
+    static final short[] DFA136_special = DFA.unpackEncodedString(DFA136_specialS);
+    static final short[][] DFA136_transition;
+
+    static {
+        int numStates = DFA136_transitionS.length;
+        DFA136_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA136_transition[i] = DFA.unpackEncodedString(DFA136_transitionS[i]);
+        }
+    }
+
+    class DFA136 extends DFA {
+
+        public DFA136(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 136;
+            this.eot = DFA136_eot;
+            this.eof = DFA136_eof;
+            this.min = DFA136_min;
+            this.max = DFA136_max;
+            this.accept = DFA136_accept;
+            this.special = DFA136_special;
+            this.transition = DFA136_transition;
+        }
+        public String getDescription() {
+            return "13988:1: ( rule__DtCAssertTrue__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA136_34 = input.LA(1);
+
+                         
+                        int index136_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA136_34==RULE_ID||LA136_34==145) ) {s = 5;}
+
+                        else if ( LA136_34 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 54;}
+
+                         
+                        input.seek(index136_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA136_33 = input.LA(1);
+
+                         
+                        int index136_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA136_33==RULE_ID) ) {s = 5;}
+
+                        else if ( LA136_33 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA136_33 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA136_33 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                         
+                        input.seek(index136_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA136_4 = input.LA(1);
+
+                         
+                        int index136_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA136_4==RULE_ID||(LA136_4>=17 && LA136_4<=25)||(LA136_4>=27 && LA136_4<=31)||LA136_4==117) ) {s = 5;}
+
+                        else if ( (LA136_4==26) ) {s = 6;}
+
+                        else if ( (LA136_4==EOF) ) {s = 7;}
+
+                        else if ( LA136_4 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA136_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA136_4 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA136_4 ==91 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA136_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA136_4 ==102 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA136_4 ==103 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA136_4 ==104 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA136_4 ==105 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA136_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA136_4 ==109 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA136_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA136_4 ==111 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA136_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA136_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA136_4 ==106 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA136_4 ==107 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA136_4 ==85 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA136_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA136_4 ==81 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA136_4 ==96 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA136_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA136_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA136_4 ==143 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA136_4 ==83 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                         
+                        input.seek(index136_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA136_39 = input.LA(1);
+
+                         
+                        int index136_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_39 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA136_39 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA136_39 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA136_39==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index136_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA136_38 = input.LA(1);
+
+                         
+                        int index136_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_38 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA136_38 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA136_38 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA136_38==RULE_ID||LA136_38==24||LA136_38==30) ) {s = 5;}
+
+                         
+                        input.seek(index136_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA136_6 = input.LA(1);
+
+                         
+                        int index136_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA136_6==EOF||LA136_6==16||(LA136_6>=80 && LA136_6<=81)||(LA136_6>=84 && LA136_6<=85)||LA136_6==89||(LA136_6>=92 && LA136_6<=93)||LA136_6==119||(LA136_6>=144 && LA136_6<=146)) ) {s = 5;}
+
+                        else if ( (LA136_6==20) ) {s = 33;}
+
+                        else if ( (LA136_6==117) ) {s = 34;}
+
+                        else if ( (LA136_6==18) ) {s = 35;}
+
+                        else if ( (LA136_6==21) ) {s = 36;}
+
+                        else if ( (LA136_6==19) ) {s = 37;}
+
+                        else if ( (LA136_6==29) ) {s = 38;}
+
+                        else if ( (LA136_6==31) ) {s = 39;}
+
+                        else if ( LA136_6 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 40;}
+
+                        else if ( LA136_6 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 41;}
+
+                        else if ( LA136_6 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 42;}
+
+                        else if ( LA136_6 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 43;}
+
+                        else if ( LA136_6 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 44;}
+
+                        else if ( LA136_6 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 45;}
+
+                        else if ( LA136_6 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 46;}
+
+                        else if ( LA136_6 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 47;}
+
+                        else if ( LA136_6 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 48;}
+
+                        else if ( LA136_6 ==RULE_ID && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 49;}
+
+                         
+                        input.seek(index136_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA136_0 = input.LA(1);
+
+                         
+                        int index136_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_0 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA136_0 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA136_0 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA136_0==91) ) {s = 4;}
+
+                        else if ( (LA136_0==EOF||LA136_0==16||LA136_0==26||LA136_0==81||LA136_0==83||LA136_0==85||LA136_0==96||LA136_0==98||(LA136_0>=102 && LA136_0<=114)||LA136_0==119||LA136_0==143) ) {s = 5;}
+
+                         
+                        input.seek(index136_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA136_35 = input.LA(1);
+
+                         
+                        int index136_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_35 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA136_35 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA136_35 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA136_35==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index136_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA136_37 = input.LA(1);
+
+                         
+                        int index136_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_37 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA136_37 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA136_37 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA136_37==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index136_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA136_36 = input.LA(1);
+
+                         
+                        int index136_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_36 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA136_36 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA136_36 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA136_36==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index136_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA136_7 = input.LA(1);
+
+                         
+                        int index136_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA136_7 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 50;}
+
+                         
+                        input.seek(index136_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 136, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA148_eotS =
+        "\67\uffff";
+    static final String DFA148_eofS =
+        "\1\5\3\uffff\1\7\1\uffff\1\5\1\62\57\uffff";
+    static final String DFA148_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\4\1\0\31\uffff\7\4\17\uffff";
+    static final String DFA148_maxS =
+        "\1\u008f\3\uffff\1\u008f\1\uffff\1\u0092\1\0\31\uffff\1\122\1\u0091\5\122\17\uffff";
+    static final String DFA148_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\2\uffff\31\1\7\uffff\17\1";
+    static final String DFA148_specialS =
+        "\1\0\3\uffff\1\7\1\uffff\1\5\1\12\31\uffff\1\2\1\1\1\6\1\11\1\10\1\4\1\3\17\uffff}>";
+    static final String[] DFA148_transitionS = {
+            "\1\5\11\uffff\1\5\66\uffff\1\5\1\uffff\1\5\1\uffff\1\5\4\uffff\1\1\1\4\4\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\4\uffff\1\5\27\uffff\1\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\32\11\5\1\6\5\5\61\uffff\1\33\1\uffff\1\40\1\uffff\1\31\4\uffff\1\10\1\13\4\uffff\1\34\1\uffff\1\14\1\uffff\1\11\1\12\1\15\1\16\1\17\1\20\1\27\1\30\1\21\1\22\1\23\1\24\1\25\1\26\1\35\2\uffff\1\5\1\uffff\1\36\27\uffff\1\37",
+            "",
+            "\1\61\13\uffff\1\5\1\50\1\43\1\45\1\41\1\44\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\46\1\60\1\47\60\uffff\2\5\2\uffff\2\5\3\uffff\1\5\2\uffff\2\5\27\uffff\1\42\1\uffff\1\5\30\uffff\3\5",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\161\uffff\1\66\32\uffff\1\5",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\23\uffff\1\5\5\uffff\1\5\36\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA148_eot = DFA.unpackEncodedString(DFA148_eotS);
+    static final short[] DFA148_eof = DFA.unpackEncodedString(DFA148_eofS);
+    static final char[] DFA148_min = DFA.unpackEncodedStringToUnsignedChars(DFA148_minS);
+    static final char[] DFA148_max = DFA.unpackEncodedStringToUnsignedChars(DFA148_maxS);
+    static final short[] DFA148_accept = DFA.unpackEncodedString(DFA148_acceptS);
+    static final short[] DFA148_special = DFA.unpackEncodedString(DFA148_specialS);
+    static final short[][] DFA148_transition;
+
+    static {
+        int numStates = DFA148_transitionS.length;
+        DFA148_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA148_transition[i] = DFA.unpackEncodedString(DFA148_transitionS[i]);
+        }
+    }
+
+    class DFA148 extends DFA {
+
+        public DFA148(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 148;
+            this.eot = DFA148_eot;
+            this.eof = DFA148_eof;
+            this.min = DFA148_min;
+            this.max = DFA148_max;
+            this.accept = DFA148_accept;
+            this.special = DFA148_special;
+            this.transition = DFA148_transition;
+        }
+        public String getDescription() {
+            return "16383:1: ( rule__DtCFuture__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA148_0 = input.LA(1);
+
+                         
+                        int index148_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_0 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA148_0 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA148_0 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA148_0==91) ) {s = 4;}
+
+                        else if ( (LA148_0==EOF||LA148_0==16||LA148_0==26||LA148_0==81||LA148_0==83||LA148_0==85||LA148_0==96||LA148_0==98||(LA148_0>=102 && LA148_0<=114)||LA148_0==119||LA148_0==143) ) {s = 5;}
+
+                         
+                        input.seek(index148_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA148_34 = input.LA(1);
+
+                         
+                        int index148_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA148_34==RULE_ID||LA148_34==145) ) {s = 5;}
+
+                        else if ( LA148_34 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 54;}
+
+                         
+                        input.seek(index148_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA148_33 = input.LA(1);
+
+                         
+                        int index148_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA148_33==RULE_ID) ) {s = 5;}
+
+                        else if ( LA148_33 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA148_33 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA148_33 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                         
+                        input.seek(index148_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA148_39 = input.LA(1);
+
+                         
+                        int index148_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_39 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA148_39 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA148_39 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA148_39==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index148_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA148_38 = input.LA(1);
+
+                         
+                        int index148_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_38 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA148_38 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA148_38 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA148_38==RULE_ID||LA148_38==24||LA148_38==30) ) {s = 5;}
+
+                         
+                        input.seek(index148_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA148_6 = input.LA(1);
+
+                         
+                        int index148_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA148_6==EOF||LA148_6==16||(LA148_6>=80 && LA148_6<=81)||(LA148_6>=84 && LA148_6<=85)||LA148_6==89||(LA148_6>=92 && LA148_6<=93)||LA148_6==119||(LA148_6>=144 && LA148_6<=146)) ) {s = 5;}
+
+                        else if ( (LA148_6==20) ) {s = 33;}
+
+                        else if ( (LA148_6==117) ) {s = 34;}
+
+                        else if ( (LA148_6==18) ) {s = 35;}
+
+                        else if ( (LA148_6==21) ) {s = 36;}
+
+                        else if ( (LA148_6==19) ) {s = 37;}
+
+                        else if ( (LA148_6==29) ) {s = 38;}
+
+                        else if ( (LA148_6==31) ) {s = 39;}
+
+                        else if ( LA148_6 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 40;}
+
+                        else if ( LA148_6 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 41;}
+
+                        else if ( LA148_6 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 42;}
+
+                        else if ( LA148_6 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 43;}
+
+                        else if ( LA148_6 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 44;}
+
+                        else if ( LA148_6 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 45;}
+
+                        else if ( LA148_6 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 46;}
+
+                        else if ( LA148_6 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 47;}
+
+                        else if ( LA148_6 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 48;}
+
+                        else if ( LA148_6 ==RULE_ID && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 49;}
+
+                         
+                        input.seek(index148_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA148_35 = input.LA(1);
+
+                         
+                        int index148_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_35 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA148_35 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA148_35 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA148_35==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index148_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA148_4 = input.LA(1);
+
+                         
+                        int index148_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA148_4==RULE_ID||(LA148_4>=17 && LA148_4<=25)||(LA148_4>=27 && LA148_4<=31)||LA148_4==117) ) {s = 5;}
+
+                        else if ( (LA148_4==26) ) {s = 6;}
+
+                        else if ( (LA148_4==EOF) ) {s = 7;}
+
+                        else if ( LA148_4 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA148_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA148_4 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA148_4 ==91 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA148_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA148_4 ==102 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA148_4 ==103 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA148_4 ==104 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA148_4 ==105 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA148_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA148_4 ==109 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA148_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA148_4 ==111 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA148_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA148_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA148_4 ==106 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA148_4 ==107 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA148_4 ==85 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA148_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA148_4 ==81 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA148_4 ==96 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA148_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA148_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA148_4 ==143 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA148_4 ==83 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                         
+                        input.seek(index148_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA148_37 = input.LA(1);
+
+                         
+                        int index148_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_37 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA148_37 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA148_37 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA148_37==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index148_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA148_36 = input.LA(1);
+
+                         
+                        int index148_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_36 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA148_36 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA148_36 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA148_36==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index148_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA148_7 = input.LA(1);
+
+                         
+                        int index148_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA148_7 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 50;}
+
+                         
+                        input.seek(index148_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 148, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA151_eotS =
+        "\67\uffff";
+    static final String DFA151_eofS =
+        "\1\5\3\uffff\1\7\1\uffff\1\5\1\62\57\uffff";
+    static final String DFA151_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\4\1\0\31\uffff\7\4\17\uffff";
+    static final String DFA151_maxS =
+        "\1\u008f\3\uffff\1\u008f\1\uffff\1\u0092\1\0\31\uffff\1\122\1\u0091\5\122\17\uffff";
+    static final String DFA151_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\2\uffff\31\1\7\uffff\17\1";
+    static final String DFA151_specialS =
+        "\1\11\3\uffff\1\3\1\uffff\1\5\1\12\31\uffff\1\1\1\0\1\6\1\10\1\7\1\4\1\2\17\uffff}>";
+    static final String[] DFA151_transitionS = {
+            "\1\5\11\uffff\1\5\66\uffff\1\5\1\uffff\1\5\1\uffff\1\5\4\uffff\1\1\1\4\4\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\4\uffff\1\5\27\uffff\1\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\32\11\5\1\6\5\5\61\uffff\1\33\1\uffff\1\40\1\uffff\1\31\4\uffff\1\10\1\13\4\uffff\1\34\1\uffff\1\14\1\uffff\1\11\1\12\1\15\1\16\1\17\1\20\1\27\1\30\1\21\1\22\1\23\1\24\1\25\1\26\1\35\2\uffff\1\5\1\uffff\1\36\27\uffff\1\37",
+            "",
+            "\1\61\13\uffff\1\5\1\50\1\43\1\45\1\41\1\44\1\51\1\52\1\53\1\54\1\55\1\56\1\57\1\46\1\60\1\47\60\uffff\2\5\2\uffff\2\5\3\uffff\1\5\2\uffff\2\5\27\uffff\1\42\1\uffff\1\5\30\uffff\3\5",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\161\uffff\1\66\32\uffff\1\5",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\23\uffff\1\5\5\uffff\1\5\36\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA151_eot = DFA.unpackEncodedString(DFA151_eotS);
+    static final short[] DFA151_eof = DFA.unpackEncodedString(DFA151_eofS);
+    static final char[] DFA151_min = DFA.unpackEncodedStringToUnsignedChars(DFA151_minS);
+    static final char[] DFA151_max = DFA.unpackEncodedStringToUnsignedChars(DFA151_maxS);
+    static final short[] DFA151_accept = DFA.unpackEncodedString(DFA151_acceptS);
+    static final short[] DFA151_special = DFA.unpackEncodedString(DFA151_specialS);
+    static final short[][] DFA151_transition;
+
+    static {
+        int numStates = DFA151_transitionS.length;
+        DFA151_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA151_transition[i] = DFA.unpackEncodedString(DFA151_transitionS[i]);
+        }
+    }
+
+    class DFA151 extends DFA {
+
+        public DFA151(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 151;
+            this.eot = DFA151_eot;
+            this.eof = DFA151_eof;
+            this.min = DFA151_min;
+            this.max = DFA151_max;
+            this.accept = DFA151_accept;
+            this.special = DFA151_special;
+            this.transition = DFA151_transition;
+        }
+        public String getDescription() {
+            return "16893:1: ( rule__DtCPast__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA151_34 = input.LA(1);
+
+                         
+                        int index151_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA151_34==RULE_ID||LA151_34==145) ) {s = 5;}
+
+                        else if ( LA151_34 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 54;}
+
+                         
+                        input.seek(index151_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA151_33 = input.LA(1);
+
+                         
+                        int index151_33 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA151_33==RULE_ID) ) {s = 5;}
+
+                        else if ( LA151_33 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA151_33 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA151_33 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                         
+                        input.seek(index151_33);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA151_39 = input.LA(1);
+
+                         
+                        int index151_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_39 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA151_39 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA151_39 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA151_39==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index151_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA151_4 = input.LA(1);
+
+                         
+                        int index151_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA151_4==RULE_ID||(LA151_4>=17 && LA151_4<=25)||(LA151_4>=27 && LA151_4<=31)||LA151_4==117) ) {s = 5;}
+
+                        else if ( (LA151_4==26) ) {s = 6;}
+
+                        else if ( (LA151_4==EOF) ) {s = 7;}
+
+                        else if ( LA151_4 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA151_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA151_4 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA151_4 ==91 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA151_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA151_4 ==102 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA151_4 ==103 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA151_4 ==104 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA151_4 ==105 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA151_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA151_4 ==109 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA151_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA151_4 ==111 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA151_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA151_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA151_4 ==106 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA151_4 ==107 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA151_4 ==85 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA151_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA151_4 ==81 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA151_4 ==96 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA151_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA151_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA151_4 ==143 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA151_4 ==83 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                         
+                        input.seek(index151_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA151_38 = input.LA(1);
+
+                         
+                        int index151_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_38 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA151_38 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA151_38 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA151_38==RULE_ID||LA151_38==24||LA151_38==30) ) {s = 5;}
+
+                         
+                        input.seek(index151_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA151_6 = input.LA(1);
+
+                         
+                        int index151_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA151_6==EOF||LA151_6==16||(LA151_6>=80 && LA151_6<=81)||(LA151_6>=84 && LA151_6<=85)||LA151_6==89||(LA151_6>=92 && LA151_6<=93)||LA151_6==119||(LA151_6>=144 && LA151_6<=146)) ) {s = 5;}
+
+                        else if ( (LA151_6==20) ) {s = 33;}
+
+                        else if ( (LA151_6==117) ) {s = 34;}
+
+                        else if ( (LA151_6==18) ) {s = 35;}
+
+                        else if ( (LA151_6==21) ) {s = 36;}
+
+                        else if ( (LA151_6==19) ) {s = 37;}
+
+                        else if ( (LA151_6==29) ) {s = 38;}
+
+                        else if ( (LA151_6==31) ) {s = 39;}
+
+                        else if ( LA151_6 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 40;}
+
+                        else if ( LA151_6 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 41;}
+
+                        else if ( LA151_6 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 42;}
+
+                        else if ( LA151_6 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 43;}
+
+                        else if ( LA151_6 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 44;}
+
+                        else if ( LA151_6 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 45;}
+
+                        else if ( LA151_6 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 46;}
+
+                        else if ( LA151_6 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 47;}
+
+                        else if ( LA151_6 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 48;}
+
+                        else if ( LA151_6 ==RULE_ID && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 49;}
+
+                         
+                        input.seek(index151_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA151_35 = input.LA(1);
+
+                         
+                        int index151_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_35 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA151_35 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA151_35 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA151_35==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index151_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA151_37 = input.LA(1);
+
+                         
+                        int index151_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_37 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA151_37 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA151_37 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA151_37==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index151_37);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA151_36 = input.LA(1);
+
+                         
+                        int index151_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_36 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA151_36 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA151_36 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA151_36==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index151_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA151_0 = input.LA(1);
+
+                         
+                        int index151_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_0 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA151_0 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA151_0 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA151_0==91) ) {s = 4;}
+
+                        else if ( (LA151_0==EOF||LA151_0==16||LA151_0==26||LA151_0==81||LA151_0==83||LA151_0==85||LA151_0==96||LA151_0==98||(LA151_0>=102 && LA151_0<=114)||LA151_0==119||LA151_0==143) ) {s = 5;}
+
+                         
+                        input.seek(index151_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA151_7 = input.LA(1);
+
+                         
+                        int index151_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA151_7 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 50;}
+
+                         
+                        input.seek(index151_7);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 151, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA160_eotS =
+        "\67\uffff";
+    static final String DFA160_eofS =
+        "\1\5\3\uffff\1\12\5\uffff\1\41\24\uffff\1\5\27\uffff";
+    static final String DFA160_minS =
+        "\1\20\3\uffff\1\4\5\uffff\1\0\24\uffff\1\4\2\uffff\7\4\16\uffff";
+    static final String DFA160_maxS =
+        "\1\u008f\3\uffff\1\u008f\5\uffff\1\0\24\uffff\1\u0092\2\uffff\1\122\1\u0091\5\122\16\uffff";
+    static final String DFA160_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\4\1\1\uffff\24\1\1\uffff\2\1\7\uffff\16\1";
+    static final String DFA160_specialS =
+        "\1\3\3\uffff\1\5\5\uffff\1\7\24\uffff\1\6\2\uffff\1\1\1\0\1\10\1\12\1\11\1\4\1\2\16\uffff}>";
+    static final String[] DFA160_transitionS = {
+            "\1\5\11\uffff\1\5\66\uffff\1\5\1\uffff\1\5\1\uffff\1\5\4\uffff\1\1\1\4\4\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\4\uffff\1\5\27\uffff\1\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\11\5\1\37\5\5\61\uffff\1\32\1\uffff\1\40\1\uffff\1\30\4\uffff\1\6\1\11\4\uffff\1\33\1\uffff\1\13\1\uffff\1\7\1\10\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\2\uffff\1\5\1\uffff\1\35\27\uffff\1\36",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\62\13\uffff\1\5\1\51\1\44\1\46\1\42\1\45\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\47\1\61\1\50\60\uffff\2\5\2\uffff\2\5\3\uffff\1\5\2\uffff\2\5\27\uffff\1\43\1\uffff\1\5\30\uffff\3\5",
+            "",
+            "",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\161\uffff\1\66\32\uffff\1\5",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\23\uffff\1\5\5\uffff\1\5\36\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA160_eot = DFA.unpackEncodedString(DFA160_eotS);
+    static final short[] DFA160_eof = DFA.unpackEncodedString(DFA160_eofS);
+    static final char[] DFA160_min = DFA.unpackEncodedStringToUnsignedChars(DFA160_minS);
+    static final char[] DFA160_max = DFA.unpackEncodedStringToUnsignedChars(DFA160_maxS);
+    static final short[] DFA160_accept = DFA.unpackEncodedString(DFA160_acceptS);
+    static final short[] DFA160_special = DFA.unpackEncodedString(DFA160_specialS);
+    static final short[][] DFA160_transition;
+
+    static {
+        int numStates = DFA160_transitionS.length;
+        DFA160_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA160_transition[i] = DFA.unpackEncodedString(DFA160_transitionS[i]);
+        }
+    }
+
+    class DFA160 extends DFA {
+
+        public DFA160(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 160;
+            this.eot = DFA160_eot;
+            this.eof = DFA160_eof;
+            this.min = DFA160_min;
+            this.max = DFA160_max;
+            this.accept = DFA160_accept;
+            this.special = DFA160_special;
+            this.transition = DFA160_transition;
+        }
+        public String getDescription() {
+            return "18617:1: ( rule__DtCNotNull__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA160_35 = input.LA(1);
+
+                         
+                        int index160_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA160_35==RULE_ID||LA160_35==145) ) {s = 5;}
+
+                        else if ( LA160_35 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 54;}
+
+                         
+                        input.seek(index160_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA160_34 = input.LA(1);
+
+                         
+                        int index160_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA160_34==RULE_ID) ) {s = 5;}
+
+                        else if ( LA160_34 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA160_34 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA160_34 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                         
+                        input.seek(index160_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA160_40 = input.LA(1);
+
+                         
+                        int index160_40 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_40 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA160_40 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA160_40 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA160_40==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index160_40);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA160_0 = input.LA(1);
+
+                         
+                        int index160_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_0 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA160_0 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA160_0 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA160_0==91) ) {s = 4;}
+
+                        else if ( (LA160_0==EOF||LA160_0==16||LA160_0==26||LA160_0==81||LA160_0==83||LA160_0==85||LA160_0==96||LA160_0==98||(LA160_0>=102 && LA160_0<=114)||LA160_0==119||LA160_0==143) ) {s = 5;}
+
+                         
+                        input.seek(index160_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA160_39 = input.LA(1);
+
+                         
+                        int index160_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_39 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA160_39 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA160_39 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA160_39==RULE_ID||LA160_39==24||LA160_39==30) ) {s = 5;}
+
+                         
+                        input.seek(index160_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA160_4 = input.LA(1);
+
+                         
+                        int index160_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_4 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 6;}
+
+                        else if ( LA160_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA160_4 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA160_4 ==91 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( (LA160_4==EOF) ) {s = 10;}
+
+                        else if ( LA160_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA160_4 ==102 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA160_4 ==103 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA160_4 ==104 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA160_4 ==105 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA160_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA160_4 ==109 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA160_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA160_4 ==111 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA160_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA160_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA160_4 ==106 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA160_4 ==107 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA160_4 ==85 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA160_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA160_4 ==81 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA160_4 ==96 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA160_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA160_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA160_4 ==143 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( (LA160_4==26) ) {s = 31;}
+
+                        else if ( LA160_4 ==83 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( (LA160_4==RULE_ID||(LA160_4>=17 && LA160_4<=25)||(LA160_4>=27 && LA160_4<=31)||LA160_4==117) ) {s = 5;}
+
+                         
+                        input.seek(index160_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA160_31 = input.LA(1);
+
+                         
+                        int index160_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA160_31==EOF||LA160_31==16||(LA160_31>=80 && LA160_31<=81)||(LA160_31>=84 && LA160_31<=85)||LA160_31==89||(LA160_31>=92 && LA160_31<=93)||LA160_31==119||(LA160_31>=144 && LA160_31<=146)) ) {s = 5;}
+
+                        else if ( (LA160_31==20) ) {s = 34;}
+
+                        else if ( (LA160_31==117) ) {s = 35;}
+
+                        else if ( (LA160_31==18) ) {s = 36;}
+
+                        else if ( (LA160_31==21) ) {s = 37;}
+
+                        else if ( (LA160_31==19) ) {s = 38;}
+
+                        else if ( (LA160_31==29) ) {s = 39;}
+
+                        else if ( (LA160_31==31) ) {s = 40;}
+
+                        else if ( LA160_31 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 41;}
+
+                        else if ( LA160_31 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 42;}
+
+                        else if ( LA160_31 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 43;}
+
+                        else if ( LA160_31 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 44;}
+
+                        else if ( LA160_31 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 45;}
+
+                        else if ( LA160_31 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 46;}
+
+                        else if ( LA160_31 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 47;}
+
+                        else if ( LA160_31 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 48;}
+
+                        else if ( LA160_31 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 49;}
+
+                        else if ( LA160_31 ==RULE_ID && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 50;}
+
+                         
+                        input.seek(index160_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA160_10 = input.LA(1);
+
+                         
+                        int index160_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_10 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                         
+                        input.seek(index160_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA160_36 = input.LA(1);
+
+                         
+                        int index160_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_36 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA160_36 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA160_36 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA160_36==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index160_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA160_38 = input.LA(1);
+
+                         
+                        int index160_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_38 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA160_38 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA160_38 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA160_38==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index160_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA160_37 = input.LA(1);
+
+                         
+                        int index160_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA160_37 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA160_37 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA160_37 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA160_37==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index160_37);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 160, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA163_eotS =
+        "\67\uffff";
+    static final String DFA163_eofS =
+        "\1\5\3\uffff\1\12\5\uffff\1\41\24\uffff\1\5\27\uffff";
+    static final String DFA163_minS =
+        "\1\20\3\uffff\1\4\5\uffff\1\0\24\uffff\1\4\2\uffff\7\4\16\uffff";
+    static final String DFA163_maxS =
+        "\1\u008f\3\uffff\1\u008f\5\uffff\1\0\24\uffff\1\u0092\2\uffff\1\122\1\u0091\5\122\16\uffff";
+    static final String DFA163_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\4\1\1\uffff\24\1\1\uffff\2\1\7\uffff\16\1";
+    static final String DFA163_specialS =
+        "\1\6\3\uffff\1\7\5\uffff\1\0\24\uffff\1\5\2\uffff\1\2\1\1\1\10\1\12\1\11\1\4\1\3\16\uffff}>";
+    static final String[] DFA163_transitionS = {
+            "\1\5\11\uffff\1\5\66\uffff\1\5\1\uffff\1\5\1\uffff\1\5\4\uffff\1\1\1\4\4\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\4\uffff\1\5\27\uffff\1\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\11\5\1\37\5\5\61\uffff\1\32\1\uffff\1\40\1\uffff\1\30\4\uffff\1\6\1\11\4\uffff\1\33\1\uffff\1\13\1\uffff\1\7\1\10\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\2\uffff\1\5\1\uffff\1\35\27\uffff\1\36",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\62\13\uffff\1\5\1\51\1\44\1\46\1\42\1\45\1\52\1\53\1\54\1\55\1\56\1\57\1\60\1\47\1\61\1\50\60\uffff\2\5\2\uffff\2\5\3\uffff\1\5\2\uffff\2\5\27\uffff\1\43\1\uffff\1\5\30\uffff\3\5",
+            "",
+            "",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\161\uffff\1\66\32\uffff\1\5",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\23\uffff\1\5\5\uffff\1\5\36\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "\1\5\70\uffff\1\63\22\uffff\1\65\1\uffff\1\64",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 "19127:1: ( rule__DtCNull__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA163_10 = input.LA(1);
+
+                         
+                        int index163_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_10 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                         
+                        input.seek(index163_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA163_35 = input.LA(1);
+
+                         
+                        int index163_35 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA163_35==RULE_ID||LA163_35==145) ) {s = 5;}
+
+                        else if ( LA163_35 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 54;}
+
+                         
+                        input.seek(index163_35);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA163_34 = input.LA(1);
+
+                         
+                        int index163_34 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA163_34==RULE_ID) ) {s = 5;}
+
+                        else if ( LA163_34 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA163_34 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA163_34 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                         
+                        input.seek(index163_34);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA163_40 = input.LA(1);
+
+                         
+                        int index163_40 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_40 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA163_40 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA163_40 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA163_40==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index163_40);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA163_39 = input.LA(1);
+
+                         
+                        int index163_39 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_39 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA163_39 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA163_39 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA163_39==RULE_ID||LA163_39==24||LA163_39==30) ) {s = 5;}
+
+                         
+                        input.seek(index163_39);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA163_31 = input.LA(1);
+
+                         
+                        int index163_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA163_31==EOF||LA163_31==16||(LA163_31>=80 && LA163_31<=81)||(LA163_31>=84 && LA163_31<=85)||LA163_31==89||(LA163_31>=92 && LA163_31<=93)||LA163_31==119||(LA163_31>=144 && LA163_31<=146)) ) {s = 5;}
+
+                        else if ( (LA163_31==20) ) {s = 34;}
+
+                        else if ( (LA163_31==117) ) {s = 35;}
+
+                        else if ( (LA163_31==18) ) {s = 36;}
+
+                        else if ( (LA163_31==21) ) {s = 37;}
+
+                        else if ( (LA163_31==19) ) {s = 38;}
+
+                        else if ( (LA163_31==29) ) {s = 39;}
+
+                        else if ( (LA163_31==31) ) {s = 40;}
+
+                        else if ( LA163_31 ==17 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 41;}
+
+                        else if ( LA163_31 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 42;}
+
+                        else if ( LA163_31 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 43;}
+
+                        else if ( LA163_31 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 44;}
+
+                        else if ( LA163_31 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 45;}
+
+                        else if ( LA163_31 ==26 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 46;}
+
+                        else if ( LA163_31 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 47;}
+
+                        else if ( LA163_31 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 48;}
+
+                        else if ( LA163_31 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 49;}
+
+                        else if ( LA163_31 ==RULE_ID && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 50;}
+
+                         
+                        input.seek(index163_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA163_0 = input.LA(1);
+
+                         
+                        int index163_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_0 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA163_0 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA163_0 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA163_0==91) ) {s = 4;}
+
+                        else if ( (LA163_0==EOF||LA163_0==16||LA163_0==26||LA163_0==81||LA163_0==83||LA163_0==85||LA163_0==96||LA163_0==98||(LA163_0>=102 && LA163_0<=114)||LA163_0==119||LA163_0==143) ) {s = 5;}
+
+                         
+                        input.seek(index163_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA163_4 = input.LA(1);
+
+                         
+                        int index163_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_4 ==90 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 6;}
+
+                        else if ( LA163_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA163_4 ==101 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA163_4 ==91 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( (LA163_4==EOF) ) {s = 10;}
+
+                        else if ( LA163_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA163_4 ==102 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA163_4 ==103 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA163_4 ==104 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA163_4 ==105 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA163_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA163_4 ==109 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA163_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA163_4 ==111 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA163_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA163_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA163_4 ==106 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA163_4 ==107 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA163_4 ==85 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA163_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA163_4 ==81 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA163_4 ==96 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA163_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA163_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA163_4 ==143 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( (LA163_4==26) ) {s = 31;}
+
+                        else if ( LA163_4 ==83 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( (LA163_4==RULE_ID||(LA163_4>=17 && LA163_4<=25)||(LA163_4>=27 && LA163_4<=31)||LA163_4==117) ) {s = 5;}
+
+                         
+                        input.seek(index163_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA163_36 = input.LA(1);
+
+                         
+                        int index163_36 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_36 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA163_36 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA163_36 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA163_36==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index163_36);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA163_38 = input.LA(1);
+
+                         
+                        int index163_38 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_38 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA163_38 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA163_38 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA163_38==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index163_38);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA163_37 = input.LA(1);
+
+                         
+                        int index163_37 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_37 ==61 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 51;}
+
+                        else if ( LA163_37 ==82 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 52;}
+
+                        else if ( LA163_37 ==80 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 53;}
+
+                        else if ( (LA163_37==RULE_ID) ) {s = 5;}
+
+                         
+                        input.seek(index163_37);
+                        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 DFA193_eotS =
+        "\12\uffff";
+    static final String DFA193_eofS =
+        "\1\10\11\uffff";
+    static final String DFA193_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA193_maxS =
+        "\1\u009b\7\0\2\uffff";
+    static final String DFA193_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA193_specialS =
+        "\1\uffff\1\5\1\3\1\2\1\0\1\6\1\4\1\1\2\uffff}>";
+    static final String[] DFA193_transitionS = {
+            "\5\10\5\uffff\3\10\1\uffff\4\10\7\uffff\1\10\1\uffff\3\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\25\10\15\uffff\2\10\2\uffff\1\10\1\uffff\2\10\1\uffff\3\10\1\uffff\1\10\1\uffff\1\10\25\uffff\1\10\1\uffff\27\10\2\uffff\3\10\5\uffff\2\10\1\uffff\1\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA193_eot = DFA.unpackEncodedString(DFA193_eotS);
+    static final short[] DFA193_eof = DFA.unpackEncodedString(DFA193_eofS);
+    static final char[] DFA193_min = DFA.unpackEncodedStringToUnsignedChars(DFA193_minS);
+    static final char[] DFA193_max = DFA.unpackEncodedStringToUnsignedChars(DFA193_maxS);
+    static final short[] DFA193_accept = DFA.unpackEncodedString(DFA193_acceptS);
+    static final short[] DFA193_special = DFA.unpackEncodedString(DFA193_specialS);
+    static final short[][] DFA193_transition;
+
+    static {
+        int numStates = DFA193_transitionS.length;
+        DFA193_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA193_transition[i] = DFA.unpackEncodedString(DFA193_transitionS[i]);
+        }
+    }
+
+    class DFA193 extends DFA {
+
+        public DFA193(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 193;
+            this.eot = DFA193_eot;
+            this.eof = DFA193_eof;
+            this.min = DFA193_min;
+            this.max = DFA193_max;
+            this.accept = DFA193_accept;
+            this.special = DFA193_special;
+            this.transition = DFA193_transition;
+        }
+        public String getDescription() {
+            return "24092: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 LA193_4 = input.LA(1);
+
+                         
+                        int index193_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA193_7 = input.LA(1);
+
+                         
+                        int index193_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA193_3 = input.LA(1);
+
+                         
+                        int index193_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA193_2 = input.LA(1);
+
+                         
+                        int index193_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA193_6 = input.LA(1);
+
+                         
+                        int index193_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA193_1 = input.LA(1);
+
+                         
+                        int index193_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA193_5 = input.LA(1);
+
+                         
+                        int index193_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred295_InternalDtoGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index193_5);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 193, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA199_eotS =
+        "\13\uffff";
+    static final String DFA199_eofS =
+        "\1\1\12\uffff";
+    static final String DFA199_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA199_maxS =
+        "\1\u009b\1\uffff\10\0\1\uffff";
+    static final String DFA199_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA199_specialS =
+        "\2\uffff\1\1\1\3\1\2\1\5\1\7\1\4\1\0\1\6\1\uffff}>";
+    static final String[] DFA199_transitionS = {
+            "\5\1\5\uffff\3\1\1\uffff\4\1\7\uffff\1\1\1\uffff\15\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\17\1\15\uffff\2\1\2\uffff\1\1\1\uffff\2\1\1\uffff\3\1\1\uffff\1\1\1\uffff\1\1\25\uffff\1\1\1\uffff\27\1\2\uffff\3\1\5\uffff\2\1\1\uffff\1\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA199_eot = DFA.unpackEncodedString(DFA199_eotS);
+    static final short[] DFA199_eof = DFA.unpackEncodedString(DFA199_eofS);
+    static final char[] DFA199_min = DFA.unpackEncodedStringToUnsignedChars(DFA199_minS);
+    static final char[] DFA199_max = DFA.unpackEncodedStringToUnsignedChars(DFA199_maxS);
+    static final short[] DFA199_accept = DFA.unpackEncodedString(DFA199_acceptS);
+    static final short[] DFA199_special = DFA.unpackEncodedString(DFA199_specialS);
+    static final short[][] DFA199_transition;
+
+    static {
+        int numStates = DFA199_transitionS.length;
+        DFA199_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA199_transition[i] = DFA.unpackEncodedString(DFA199_transitionS[i]);
+        }
+    }
+
+    class DFA199 extends DFA {
+
+        public DFA199(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 199;
+            this.eot = DFA199_eot;
+            this.eof = DFA199_eof;
+            this.min = DFA199_min;
+            this.max = DFA199_max;
+            this.accept = DFA199_accept;
+            this.special = DFA199_special;
+            this.transition = DFA199_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 25584: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 LA199_8 = input.LA(1);
+
+                         
+                        int index199_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA199_2 = input.LA(1);
+
+                         
+                        int index199_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA199_4 = input.LA(1);
+
+                         
+                        int index199_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA199_3 = input.LA(1);
+
+                         
+                        int index199_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA199_7 = input.LA(1);
+
+                         
+                        int index199_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA199_5 = input.LA(1);
+
+                         
+                        int index199_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA199_9 = input.LA(1);
+
+                         
+                        int index199_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA199_6 = input.LA(1);
+
+                         
+                        int index199_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred301_InternalDtoGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index199_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 199, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA206_eotS =
+        "\134\uffff";
+    static final String DFA206_eofS =
+        "\1\2\133\uffff";
+    static final String DFA206_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA206_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA206_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA206_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA206_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\44\2\15\uffff\2\2\2\uffff\1\2\1\uffff\1\1\1\2\1\uffff\3\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA206_eot = DFA.unpackEncodedString(DFA206_eotS);
+    static final short[] DFA206_eof = DFA.unpackEncodedString(DFA206_eofS);
+    static final char[] DFA206_min = DFA.unpackEncodedStringToUnsignedChars(DFA206_minS);
+    static final char[] DFA206_max = DFA.unpackEncodedStringToUnsignedChars(DFA206_maxS);
+    static final short[] DFA206_accept = DFA.unpackEncodedString(DFA206_acceptS);
+    static final short[] DFA206_special = DFA.unpackEncodedString(DFA206_specialS);
+    static final short[][] DFA206_transition;
+
+    static {
+        int numStates = DFA206_transitionS.length;
+        DFA206_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA206_transition[i] = DFA.unpackEncodedString(DFA206_transitionS[i]);
+        }
+    }
+
+    class DFA206 extends DFA {
+
+        public DFA206(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 206;
+            this.eot = DFA206_eot;
+            this.eof = DFA206_eof;
+            this.min = DFA206_min;
+            this.max = DFA206_max;
+            this.accept = DFA206_accept;
+            this.special = DFA206_special;
+            this.transition = DFA206_transition;
+        }
+        public String getDescription() {
+            return "27411: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 LA206_1 = input.LA(1);
+
+                         
+                        int index206_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred308_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index206_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 206, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA207_eotS =
+        "\134\uffff";
+    static final String DFA207_eofS =
+        "\1\2\133\uffff";
+    static final String DFA207_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA207_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA207_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA207_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA207_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\44\2\15\uffff\2\2\2\uffff\1\2\1\uffff\2\2\1\uffff\1\2\1\1\1\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA207_eot = DFA.unpackEncodedString(DFA207_eotS);
+    static final short[] DFA207_eof = DFA.unpackEncodedString(DFA207_eofS);
+    static final char[] DFA207_min = DFA.unpackEncodedStringToUnsignedChars(DFA207_minS);
+    static final char[] DFA207_max = DFA.unpackEncodedStringToUnsignedChars(DFA207_maxS);
+    static final short[] DFA207_accept = DFA.unpackEncodedString(DFA207_acceptS);
+    static final short[] DFA207_special = DFA.unpackEncodedString(DFA207_specialS);
+    static final short[][] DFA207_transition;
+
+    static {
+        int numStates = DFA207_transitionS.length;
+        DFA207_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA207_transition[i] = DFA.unpackEncodedString(DFA207_transitionS[i]);
+        }
+    }
+
+    class DFA207 extends DFA {
+
+        public DFA207(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 207;
+            this.eot = DFA207_eot;
+            this.eof = DFA207_eof;
+            this.min = DFA207_min;
+            this.max = DFA207_max;
+            this.accept = DFA207_accept;
+            this.special = DFA207_special;
+            this.transition = DFA207_transition;
+        }
+        public String getDescription() {
+            return "27439: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 LA207_1 = input.LA(1);
+
+                         
+                        int index207_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred309_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index207_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 207, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA215_eotS =
+        "\46\uffff";
+    static final String DFA215_eofS =
+        "\46\uffff";
+    static final String DFA215_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA215_maxS =
+        "\1\u009b\2\0\43\uffff";
+    static final String DFA215_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA215_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA215_transitionS = {
+            "\1\1\4\5\26\uffff\3\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\3\uffff\7\5\15\uffff\1\5\5\uffff\1\2\3\uffff\2\5\35\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\15\uffff\1\3\1\5",
+            "\1\uffff",
+            "\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 "28580: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 LA215_1 = input.LA(1);
+
+                         
+                        int index215_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred317_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index215_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA215_2 = input.LA(1);
+
+                         
+                        int index215_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred317_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index215_2);
+                        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 DFA225_eotS =
+        "\42\uffff";
+    static final String DFA225_eofS =
+        "\42\uffff";
+    static final String DFA225_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA225_maxS =
+        "\1\u009b\2\0\37\uffff";
+    static final String DFA225_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA225_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA225_transitionS = {
+            "\1\1\4\4\27\uffff\2\4\13\uffff\1\4\3\uffff\1\3\6\uffff\1\4\4\uffff\6\4\15\uffff\1\4\5\uffff\1\2\3\uffff\1\4\36\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\16\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA225_eot = DFA.unpackEncodedString(DFA225_eotS);
+    static final short[] DFA225_eof = DFA.unpackEncodedString(DFA225_eofS);
+    static final char[] DFA225_min = DFA.unpackEncodedStringToUnsignedChars(DFA225_minS);
+    static final char[] DFA225_max = DFA.unpackEncodedStringToUnsignedChars(DFA225_maxS);
+    static final short[] DFA225_accept = DFA.unpackEncodedString(DFA225_acceptS);
+    static final short[] DFA225_special = DFA.unpackEncodedString(DFA225_specialS);
+    static final short[][] DFA225_transition;
+
+    static {
+        int numStates = DFA225_transitionS.length;
+        DFA225_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA225_transition[i] = DFA.unpackEncodedString(DFA225_transitionS[i]);
+        }
+    }
+
+    class DFA225 extends DFA {
+
+        public DFA225(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 225;
+            this.eot = DFA225_eot;
+            this.eof = DFA225_eof;
+            this.min = DFA225_min;
+            this.max = DFA225_max;
+            this.accept = DFA225_accept;
+            this.special = DFA225_special;
+            this.transition = DFA225_transition;
+        }
+        public String getDescription() {
+            return "30248: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 LA225_1 = input.LA(1);
+
+                         
+                        int index225_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index225_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA225_2 = input.LA(1);
+
+                         
+                        int index225_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred327_InternalDtoGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index225_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 225, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA238_eotS =
+        "\134\uffff";
+    static final String DFA238_eofS =
+        "\1\2\133\uffff";
+    static final String DFA238_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA238_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA238_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA238_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA238_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\44\2\15\uffff\2\2\2\uffff\1\2\1\uffff\1\1\1\2\1\uffff\3\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA238_eot = DFA.unpackEncodedString(DFA238_eotS);
+    static final short[] DFA238_eof = DFA.unpackEncodedString(DFA238_eofS);
+    static final char[] DFA238_min = DFA.unpackEncodedStringToUnsignedChars(DFA238_minS);
+    static final char[] DFA238_max = DFA.unpackEncodedStringToUnsignedChars(DFA238_maxS);
+    static final short[] DFA238_accept = DFA.unpackEncodedString(DFA238_acceptS);
+    static final short[] DFA238_special = DFA.unpackEncodedString(DFA238_specialS);
+    static final short[][] DFA238_transition;
+
+    static {
+        int numStates = DFA238_transitionS.length;
+        DFA238_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA238_transition[i] = DFA.unpackEncodedString(DFA238_transitionS[i]);
+        }
+    }
+
+    class DFA238 extends DFA {
+
+        public DFA238(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 238;
+            this.eot = DFA238_eot;
+            this.eof = DFA238_eof;
+            this.min = DFA238_min;
+            this.max = DFA238_max;
+            this.accept = DFA238_accept;
+            this.special = DFA238_special;
+            this.transition = DFA238_transition;
+        }
+        public String getDescription() {
+            return "32736: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 LA238_1 = input.LA(1);
+
+                         
+                        int index238_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred340_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index238_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 238, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA239_eotS =
+        "\134\uffff";
+    static final String DFA239_eofS =
+        "\1\2\133\uffff";
+    static final String DFA239_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA239_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA239_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA239_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA239_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\44\2\15\uffff\2\2\2\uffff\1\2\1\uffff\2\2\1\uffff\1\2\1\1\1\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA239_eot = DFA.unpackEncodedString(DFA239_eotS);
+    static final short[] DFA239_eof = DFA.unpackEncodedString(DFA239_eofS);
+    static final char[] DFA239_min = DFA.unpackEncodedStringToUnsignedChars(DFA239_minS);
+    static final char[] DFA239_max = DFA.unpackEncodedStringToUnsignedChars(DFA239_maxS);
+    static final short[] DFA239_accept = DFA.unpackEncodedString(DFA239_acceptS);
+    static final short[] DFA239_special = DFA.unpackEncodedString(DFA239_specialS);
+    static final short[][] DFA239_transition;
+
+    static {
+        int numStates = DFA239_transitionS.length;
+        DFA239_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA239_transition[i] = DFA.unpackEncodedString(DFA239_transitionS[i]);
+        }
+    }
+
+    class DFA239 extends DFA {
+
+        public DFA239(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 239;
+            this.eot = DFA239_eot;
+            this.eof = DFA239_eof;
+            this.min = DFA239_min;
+            this.max = DFA239_max;
+            this.accept = DFA239_accept;
+            this.special = DFA239_special;
+            this.transition = DFA239_transition;
+        }
+        public String getDescription() {
+            return "32764: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 LA239_1 = input.LA(1);
+
+                         
+                        int index239_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred341_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index239_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 239, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA243_eotS =
+        "\134\uffff";
+    static final String DFA243_eofS =
+        "\1\2\133\uffff";
+    static final String DFA243_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA243_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA243_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA243_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA243_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\16\2\1\1\25\2\15\uffff\2\2\2\uffff\1\2\1\uffff\2\2\1\uffff\3\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA243_eot = DFA.unpackEncodedString(DFA243_eotS);
+    static final short[] DFA243_eof = DFA.unpackEncodedString(DFA243_eofS);
+    static final char[] DFA243_min = DFA.unpackEncodedStringToUnsignedChars(DFA243_minS);
+    static final char[] DFA243_max = DFA.unpackEncodedStringToUnsignedChars(DFA243_maxS);
+    static final short[] DFA243_accept = DFA.unpackEncodedString(DFA243_acceptS);
+    static final short[] DFA243_special = DFA.unpackEncodedString(DFA243_specialS);
+    static final short[][] DFA243_transition;
+
+    static {
+        int numStates = DFA243_transitionS.length;
+        DFA243_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA243_transition[i] = DFA.unpackEncodedString(DFA243_transitionS[i]);
+        }
+    }
+
+    class DFA243 extends DFA {
+
+        public DFA243(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 243;
+            this.eot = DFA243_eot;
+            this.eof = DFA243_eof;
+            this.min = DFA243_min;
+            this.max = DFA243_max;
+            this.accept = DFA243_accept;
+            this.special = DFA243_special;
+            this.transition = DFA243_transition;
+        }
+        public String getDescription() {
+            return "33302: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 LA243_1 = input.LA(1);
+
+                         
+                        int index243_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred345_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index243_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 243, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA244_eotS =
+        "\134\uffff";
+    static final String DFA244_eofS =
+        "\1\2\133\uffff";
+    static final String DFA244_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA244_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA244_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA244_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA244_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\44\2\15\uffff\2\2\2\uffff\1\2\1\uffff\1\1\1\2\1\uffff\3\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA244_eot = DFA.unpackEncodedString(DFA244_eotS);
+    static final short[] DFA244_eof = DFA.unpackEncodedString(DFA244_eofS);
+    static final char[] DFA244_min = DFA.unpackEncodedStringToUnsignedChars(DFA244_minS);
+    static final char[] DFA244_max = DFA.unpackEncodedStringToUnsignedChars(DFA244_maxS);
+    static final short[] DFA244_accept = DFA.unpackEncodedString(DFA244_acceptS);
+    static final short[] DFA244_special = DFA.unpackEncodedString(DFA244_specialS);
+    static final short[][] DFA244_transition;
+
+    static {
+        int numStates = DFA244_transitionS.length;
+        DFA244_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA244_transition[i] = DFA.unpackEncodedString(DFA244_transitionS[i]);
+        }
+    }
+
+    class DFA244 extends DFA {
+
+        public DFA244(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 244;
+            this.eot = DFA244_eot;
+            this.eof = DFA244_eof;
+            this.min = DFA244_min;
+            this.max = DFA244_max;
+            this.accept = DFA244_accept;
+            this.special = DFA244_special;
+            this.transition = DFA244_transition;
+        }
+        public String getDescription() {
+            return "33331: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 LA244_1 = input.LA(1);
+
+                         
+                        int index244_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred346_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index244_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 244, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA245_eotS =
+        "\134\uffff";
+    static final String DFA245_eofS =
+        "\1\2\133\uffff";
+    static final String DFA245_minS =
+        "\1\4\1\0\132\uffff";
+    static final String DFA245_maxS =
+        "\1\u009b\1\0\132\uffff";
+    static final String DFA245_acceptS =
+        "\2\uffff\1\2\130\uffff\1\1";
+    static final String DFA245_specialS =
+        "\1\uffff\1\0\132\uffff}>";
+    static final String[] DFA245_transitionS = {
+            "\5\2\5\uffff\3\2\1\uffff\4\2\7\uffff\1\2\1\uffff\44\2\15\uffff\2\2\2\uffff\1\2\1\uffff\2\2\1\uffff\1\2\1\1\1\2\1\uffff\1\2\1\uffff\1\2\25\uffff\1\2\1\uffff\27\2\2\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA245_eot = DFA.unpackEncodedString(DFA245_eotS);
+    static final short[] DFA245_eof = DFA.unpackEncodedString(DFA245_eofS);
+    static final char[] DFA245_min = DFA.unpackEncodedStringToUnsignedChars(DFA245_minS);
+    static final char[] DFA245_max = DFA.unpackEncodedStringToUnsignedChars(DFA245_maxS);
+    static final short[] DFA245_accept = DFA.unpackEncodedString(DFA245_acceptS);
+    static final short[] DFA245_special = DFA.unpackEncodedString(DFA245_specialS);
+    static final short[][] DFA245_transition;
+
+    static {
+        int numStates = DFA245_transitionS.length;
+        DFA245_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA245_transition[i] = DFA.unpackEncodedString(DFA245_transitionS[i]);
+        }
+    }
+
+    class DFA245 extends DFA {
+
+        public DFA245(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 245;
+            this.eot = DFA245_eot;
+            this.eof = DFA245_eof;
+            this.min = DFA245_min;
+            this.max = DFA245_max;
+            this.accept = DFA245_accept;
+            this.special = DFA245_special;
+            this.transition = DFA245_transition;
+        }
+        public String getDescription() {
+            return "33359: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 LA245_1 = input.LA(1);
+
+                         
+                        int index245_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred347_InternalDtoGrammar()) ) {s = 91;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index245_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 245, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA250_eotS =
+        "\134\uffff";
+    static final String DFA250_eofS =
+        "\1\41\133\uffff";
+    static final String DFA250_minS =
+        "\1\4\40\0\73\uffff";
+    static final String DFA250_maxS =
+        "\1\u009b\40\0\73\uffff";
+    static final String DFA250_acceptS =
+        "\41\uffff\1\2\71\uffff\1\1";
+    static final String DFA250_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\73\uffff}>";
+    static final String[] DFA250_transitionS = {
+            "\1\1\1\23\1\24\1\25\1\27\5\uffff\3\41\1\uffff\4\41\7\uffff\1\41\1\uffff\1\41\1\10\1\7\13\41\1\15\12\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\15\uffff\1\12\1\41\2\uffff\1\41\1\uffff\1\40\1\41\1\uffff\1\41\1\20\1\41\1\uffff\1\41\1\uffff\1\41\25\uffff\1\41\1\uffff\2\41\1\17\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\2\uffff\3\41\5\uffff\2\41\1\uffff\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[] DFA250_eot = DFA.unpackEncodedString(DFA250_eotS);
+    static final short[] DFA250_eof = DFA.unpackEncodedString(DFA250_eofS);
+    static final char[] DFA250_min = DFA.unpackEncodedStringToUnsignedChars(DFA250_minS);
+    static final char[] DFA250_max = DFA.unpackEncodedStringToUnsignedChars(DFA250_maxS);
+    static final short[] DFA250_accept = DFA.unpackEncodedString(DFA250_acceptS);
+    static final short[] DFA250_special = DFA.unpackEncodedString(DFA250_specialS);
+    static final short[][] DFA250_transition;
+
+    static {
+        int numStates = DFA250_transitionS.length;
+        DFA250_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA250_transition[i] = DFA.unpackEncodedString(DFA250_transitionS[i]);
+        }
+    }
+
+    class DFA250 extends DFA {
+
+        public DFA250(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 250;
+            this.eot = DFA250_eot;
+            this.eof = DFA250_eof;
+            this.min = DFA250_min;
+            this.max = DFA250_max;
+            this.accept = DFA250_accept;
+            this.special = DFA250_special;
+            this.transition = DFA250_transition;
+        }
+        public String getDescription() {
+            return "34412: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 : 
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/DtoGrammarActivator.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/DtoGrammarActivator.java
new file mode 100644
index 0000000..09583e8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src-gen/org/eclipse/osbp/dsl/dto/xtext/ui/internal/DtoGrammarActivator.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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 DtoGrammarActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_DSL_DTO_XTEXT_DTOGRAMMAR = "org.eclipse.osbp.dsl.dto.xtext.DtoGrammar";
+	
+	private static final Logger logger = Logger.getLogger(DtoGrammarActivator.class);
+	
+	private static DtoGrammarActivator 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 DtoGrammarActivator 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_DSL_DTO_XTEXT_DTOGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.dto.xtext.DtoGrammarRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_DSL_DTO_XTEXT_DTOGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarHighlightingCalculator.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarHighlightingCalculator.java
new file mode 100644
index 0000000..75a79da
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarHighlightingCalculator.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.xtext.ui;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.nodemodel.BidiTreeIterator;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightedPositionAcceptor;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
+import org.eclipse.osbp.dsl.dto.xtext.ui.DtoHighlightingConfiguration;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+
+public class DtoGrammarHighlightingCalculator implements
+		ISemanticHighlightingCalculator {
+
+	@Override
+	public void provideHighlightingFor(XtextResource resource,
+			IHighlightedPositionAcceptor acceptor) {
+
+		if (resource == null || resource.getParseResult() == null)
+			return;
+
+		INode root = resource.getParseResult().getRootNode();
+		BidiTreeIterator<INode> it = root.getAsTreeIterable().iterator();
+		while (it.hasNext()) {
+			INode node = it.next();
+			String text = node.getText();
+			EObject semanticElement = node.getSemanticElement();
+
+			if (semanticElement instanceof LDtoFeature) {
+				if ("id".equals(text) || "transient".equals(text)
+						|| "version".equals(text)) {
+					if (node.getNextSibling() == null) {
+						if (!"transient".equals(text)) {
+							acceptor.addPosition(node.getOffset(),
+									node.getLength(),
+									DtoHighlightingConfiguration.DEFAULT_ID);
+						}
+					} else {
+						acceptor.addPosition(node.getOffset(),
+								node.getLength(),
+								DtoHighlightingConfiguration.MODIFIER_ID);
+					}
+				}
+			} else if (semanticElement instanceof LDtoMapper) {
+				if ("toDTO".equals(text) || "fromDTO".equals(text)) {
+					acceptor.addPosition(node.getOffset(), node.getLength(),
+							DtoHighlightingConfiguration.MODIFIER_ID);
+				}
+
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarUiModule.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarUiModule.java
new file mode 100644
index 0000000..f978087
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoGrammarUiModule.java
@@ -0,0 +1,43 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
+import org.eclipse.osbp.dsl.dto.xtext.ui.labeling.DtoGrammarLabelProvider;
+import org.eclipse.osbp.dsl.dto.xtext.ui.DtoGrammarHighlightingCalculator;
+import org.eclipse.osbp.dsl.dto.xtext.ui.DtoHighlightingConfiguration;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class DtoGrammarUiModule extends
+		org.eclipse.osbp.dsl.dto.xtext.ui.AbstractDtoGrammarUiModule {
+	public DtoGrammarUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+
+	public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() {
+		return DtoHighlightingConfiguration.class;
+	}
+
+	public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
+		return DtoGrammarHighlightingCalculator.class;
+	}
+
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return DtoGrammarLabelProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoHighlightingConfiguration.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoHighlightingConfiguration.java
new file mode 100644
index 0000000..c80cd91
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/DtoHighlightingConfiguration.java
@@ -0,0 +1,92 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.xtext.ui;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfigurationAcceptor;
+import org.eclipse.xtext.ui.editor.utils.TextStyle;
+
+public class DtoHighlightingConfiguration implements IHighlightingConfiguration {
+
+	public static final String COMMENT_ID = "comment";
+	public static final String KEYWORD_ID = "keyword";
+	public static final String MODIFIER_ID = "modifier";
+	public static final String STRING_ID = "string";
+	public static final String NUMBER_ID = "number";
+	public static final String DEFAULT_ID = "default";
+	public static final String INVALID_TOKEN_ID = "error";
+
+	public void configure(IHighlightingConfigurationAcceptor acceptor) {
+		acceptor.acceptDefaultHighlighting(DEFAULT_ID, "Default",
+				defaultTextStyle());
+		acceptor.acceptDefaultHighlighting(COMMENT_ID, "Comment",
+				commentTextStyle());
+		acceptor.acceptDefaultHighlighting(KEYWORD_ID, "Keyword",
+				keywordTextStyle());
+		acceptor.acceptDefaultHighlighting(MODIFIER_ID, "Modifier",
+				modifierTextStyle());
+		acceptor.acceptDefaultHighlighting(STRING_ID, "String",
+				stringTextStyle());
+		acceptor.acceptDefaultHighlighting(NUMBER_ID, "Number",
+				numberTextStyle());
+		acceptor.acceptDefaultHighlighting(INVALID_TOKEN_ID, "Invalid Symbol",
+				errorTextStyle());
+	}
+
+	public TextStyle defaultTextStyle() {
+		TextStyle textStyle = new TextStyle();
+		textStyle.setBackgroundColor(new RGB(255, 255, 255));
+		textStyle.setColor(new RGB(0, 0, 0));
+		return textStyle;
+	}
+
+	public TextStyle commentTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(63, 127, 95));
+		return textStyle;
+	}
+
+	public TextStyle keywordTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(127, 0, 85));
+		textStyle.setStyle(SWT.BOLD);
+		return textStyle;
+	}
+
+	public TextStyle modifierTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(127, 0, 85));
+		textStyle.setStyle(SWT.BOLD);
+		return textStyle;
+	}
+
+	public TextStyle stringTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(42, 0, 255));
+		return textStyle;
+	}
+
+	public TextStyle errorTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		
+		return textStyle;
+	}
+
+	public TextStyle numberTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(125, 125, 125));
+		return textStyle;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/DtoGrammarProposalProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/DtoGrammarProposalProvider.java
new file mode 100644
index 0000000..d7ff7f4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/contentassist/DtoGrammarProposalProvider.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.dsl.dto.xtext.ui.contentassist;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+public class DtoGrammarProposalProvider extends org.eclipse.osbp.dsl.dto.xtext.ui.contentassist.AbstractDtoGrammarProposalProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarDescriptionLabelProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarDescriptionLabelProvider.java
new file mode 100644
index 0000000..f74212a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarDescriptionLabelProvider.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class DtoGrammarDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+
+
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarImages.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarImages.java
new file mode 100644
index 0000000..90c6fb6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarImages.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui.labeling;
+
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.xbase.ui.labeling.XbaseImages2;
+
+@SuppressWarnings("restriction")
+public class DtoGrammarImages extends XbaseImages2 {
+
+	public ImageDescriptor forFilter() {
+		return JavaPluginImages.DESC_ELCL_FILTER;
+	}
+
+	public ImageDescriptor forImplementsAnnotation() {
+		return JavaPluginImages.DESC_OBJ_IMPLEMENTS;
+	}
+
+	public ImageDescriptor forOverridesAnnotation() {
+		return JavaPluginImages.DESC_OBJ_OVERRIDES;
+	}
+
+	public ImageDescriptor forPackage() {
+		return JavaPluginImages.DESC_OBJS_PACKDECL;
+	}
+
+	public ImageDescriptor forImport() {
+		return null;
+	}
+
+	public ImageDescriptor forField(JvmVisibility visibility, int attachment) {
+		ImageDescriptor descriptor = JavaElementImageProvider
+				.getFieldImageDescriptor(false, toFlags(JvmVisibility.PUBLIC));
+		return attachment >= 0 ? getDecorated(descriptor, attachment)
+				: descriptor;
+	}
+
+	public ImageDescriptor forEnum(JvmVisibility visibility) {
+		int flags = toFlags(visibility);
+		flags |= Flags.AccEnum;
+		return super.forEnum(visibility, flags);
+	}
+
+	public ImageDescriptor forEnumLiteral() {
+		ImageDescriptor descriptor = JavaElementImageProvider
+				.getFieldImageDescriptor(false, toFlags(JvmVisibility.PUBLIC));
+		return descriptor;
+	}
+
+	public ImageDescriptor forProperty() {
+		return super.forField(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor forRefers() {
+		return forField(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor forCascading(JvmVisibility visibility) {
+		return forField(JvmVisibility.PUBLIC, 0);
+	}
+	
+	public ImageDescriptor forDatatype() {
+		return super.forField(JvmVisibility.PRIVATE, 0);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarLabelProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarLabelProvider.java
new file mode 100644
index 0000000..55b54ee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/labeling/DtoGrammarLabelProvider.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui.labeling;
+
+import static com.google.common.collect.Iterables.filter;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+
+//git@github.com/osbp/osbp-dsl.git
+import com.google.inject.Inject;
+
+/**
+ * Provides labels for a EObjects.
+ */
+@SuppressWarnings("restriction")
+public class DtoGrammarLabelProvider extends XbaseLabelProvider {
+
+	@Inject
+	private DtoGrammarImages images;
+
+	@Inject
+	public DtoGrammarLabelProvider(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	public ImageDescriptor image(LDto element) {
+		return images.forClass(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor image(LEnum element) {
+		return images.forEnum(JvmVisibility.PUBLIC);
+	}
+
+	public ImageDescriptor image(LEnumLiteral element) {
+		return images.forEnumLiteral();
+	}
+
+	public String image(LDtoMapper element) {
+		return "converter.gif";
+	}
+
+	public String image(LDtoInheritedReference element) {
+		return "inheritedfeature.gif";
+	}
+
+	public ImageDescriptor image(LDtoReference element) {
+		if (!element.isCascading()) {
+			return images.forField(JvmVisibility.PUBLIC, 0);
+		} else {
+			return images.forCascading(JvmVisibility.PUBLIC);
+		}
+	}
+
+	public String image(LDtoInheritedAttribute element) {
+		return "inheritedfeature.gif";
+	}
+
+	public ImageDescriptor image(LDtoOperation element) {
+		return images.forOperation(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor image(LDtoAttribute element) {
+		if (!element.isCascading()) {
+			return images.forField(JvmVisibility.PUBLIC, 0);
+		} else {
+			return images.forCascading(JvmVisibility.PUBLIC);
+		}
+	}
+
+	public ImageDescriptor image(LDataType element) {
+		return images.forDatatype();
+	}
+
+	public ImageDescriptor image(LPackage element) {
+		return images.forPackage();
+	}
+
+	public ImageDescriptor image(JvmParameterizedTypeReference typeRef) {
+		return images.forTypeParameter(0);
+	}
+
+	public String text(LClass element) {
+		return element.getName();
+	}
+
+	public String text(LFeature element) {
+//		JvmField inferredField = getFirstOrNull(
+//				associations.getJvmElements(element), JvmField.class);
+//		if (inferredField != null) {
+//			JvmTypeReference type = inferredField.getType();
+//			if (type != null) {
+//				return element.getName() + " : " + type.getSimpleName();
+//			}
+//		}
+		return element.getName();
+	}
+
+	public String text(LDtoMapper element) {
+		return "Mapper";
+	}
+
+	public String text(LDtoInheritedAttribute element) {
+//		JvmField inferredField = getFirstOrNull(
+//				associations.getJvmElements(element), JvmField.class);
+//		if (inferredField != null) {
+//			JvmTypeReference type = inferredField.getType();
+//			if (type != null) {
+//				return extension.inheritedFeature(element).getName() + " : "
+//						+ type.getSimpleName();
+//			}
+//		}
+		return element.getInheritedFeature().getName();
+	}
+
+	public String text(LDtoInheritedReference element) {
+//		JvmField inferredField = getFirstOrNull(
+//				associations.getJvmElements(element), JvmField.class);
+//		if (inferredField != null) {
+//			JvmTypeReference type = inferredField.getType();
+//			if (type != null) {
+//				return extension.inheritedFeature(element).getName() + " : "
+//						+ type.getSimpleName();
+//			}
+//		}
+		return element.getInheritedFeature().getName();
+	}
+
+	public String text(JvmParameterizedTypeReference typeRef) {
+		return typeRef.getType().getSimpleName();
+	}
+
+	protected <T> T getFirstOrNull(Iterable<EObject> elements, Class<T> type) {
+		Iterator<T> iterator = filter(elements, type).iterator();
+		return iterator.hasNext() ? iterator.next() : null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/outline/DtoGrammarOutlineTreeProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/outline/DtoGrammarOutlineTreeProvider.java
new file mode 100644
index 0000000..b686e39
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/outline/DtoGrammarOutlineTreeProvider.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.dsl.dto.xtext.ui.outline;
+
+import org.eclipse.xtext.ui.editor.model.IXtextDocument;
+import org.eclipse.xtext.ui.editor.outline.IOutlineNode;
+import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode;
+import org.eclipse.xtext.util.TextRegion;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.ui.FastDocumentRootNode;
+
+/**
+ * Customization of the default outline structure.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+public class DtoGrammarOutlineTreeProvider extends
+		org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+
+	/**
+	 * Default for isLeafDispatcher
+	 */
+	protected boolean _isLeaf(LDtoMapper mapper) {
+		return true;
+	}
+
+	/**
+	 * Default for isLeafDispatcher
+	 */
+	protected boolean _isLeaf(LDtoAbstractReference element) {
+		return element.getMapper() == null;
+	}
+
+	/**
+	 * Default for isLeafDispatcher
+	 */
+	protected boolean _isLeaf(LDtoAbstractAttributeImpl element) {
+		return element.getMapper() == null;
+	}
+
+	public IOutlineNode createRoot(IXtextDocument document) {
+		DocumentRootNode documentNode = new FastDocumentRootNode(
+				labelProvider.getImage(document),
+				labelProvider.getText(document), document, this);
+		documentNode.setTextRegion(new TextRegion(0, document.getLength()));
+		return documentNode;
+	}
+
+	protected void _createChildren(IOutlineNode parentNode,
+			LTypedPackage modelElement) {
+		for (LType childElement : modelElement.getTypes()) {
+			createNode(parentNode, childElement);
+		}
+	}
+
+	protected void _createChildren(IOutlineNode parentNode, LDto modelElement) {
+		for (LAnnotationDef childElement : modelElement.getAnnotations()) {
+			createNode(parentNode, childElement);
+		}
+ 
+		for (LDtoFeature childElement : modelElement.getFeatures()) {
+			createNode(parentNode, childElement);
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java
new file mode 100644
index 0000000..b432120
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext.ui/src/org/eclipse/osbp/dsl/dto/xtext/ui/quickfix/DtoGrammarQuickfixProvider.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+* generated by Xtext
+*/
+package org.eclipse.osbp.dsl.dto.xtext.ui.quickfix;
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+public class DtoGrammarQuickfixProvider extends org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider {
+
+
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/.project b/org.eclipse.osbp.dsl.dto.xtext/.project
new file mode 100644
index 0000000..781c4ab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.dto.xtext</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.dto.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.dto.xtext/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/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.dsl.dto.xtext/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.dto.xtext/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a45b741
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/META-INF/MANIFEST.MF
@@ -0,0 +1,64 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.dsl.dto.xtext;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xcore;bundle-version="1.1.1";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore.lib,
+ org.apache.commons.lang;bundle-version="2.6.0",
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.7.0,2.8.0)";resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.eclipse.osbp.runtime.common;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.datatype.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.apache.log4j,
+ org.eclipse.osbp.dsl.semantic.dto.impl,
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Export-Package: org.eclipse.osbp.dsl.dto.xtext;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.extensions;version="0.9.0";
+  uses:="org.eclipse.xtext.xbase,
+   org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.osbp.dsl.semantic.entity,
+   org.eclipse.osbp.dsl.common.xtext.extensions,
+   org.eclipse.osbp.dsl.semantic.dto,
+   org.eclipse.osbp.dsl.common.xtext.jvmmodel,
+   org.eclipse.osbp.dsl.semantic.common.helper,
+   org.eclipse.xtext.common.types,
+   org.eclipse.xtext.xbase.lib",
+ org.eclipse.osbp.dsl.dto.xtext.formatting;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.jvmmodel;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.parser.antlr;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.scope;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.serializer;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.services;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.validation;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.dto.xtext.valueconverter;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.semantic.dto,
+ org.eclipse.osbp.dsl.semantic.dto.impl,
+ org.eclipse.osbp.dsl.semantic.dto.util
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.osbp.dsl.dto.xtext/about.html b/org.eclipse.osbp.dsl.dto.xtext/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/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.dsl.dto.xtext/about.ini b/org.eclipse.osbp.dsl.dto.xtext/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/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.dsl.dto.xtext/about.mappings b/org.eclipse.osbp.dsl.dto.xtext/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/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.dsl.dto.xtext/about.properties b/org.eclipse.osbp.dsl.dto.xtext/about.properties
new file mode 100644
index 0000000..117f15d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.dto.xtext
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.dto.xtext/build.properties b/org.eclipse.osbp.dsl.dto.xtext/build.properties
new file mode 100644
index 0000000..d7eb864
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/build.properties
@@ -0,0 +1,11 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               plugin.xml,\
+               plugin.properties,\
+               model/
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.dto.xtext/epl-v10.html b/org.eclipse.osbp.dsl.dto.xtext/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/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.dsl.dto.xtext/license.html b/org.eclipse.osbp.dsl.dto.xtext/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/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.dsl.dto.xtext/model/dto.xcore b/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
new file mode 100644
index 0000000..98a8017
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore
@@ -0,0 +1,229 @@
+@GenModel(fileExtensions="dto", modelDirectory="/org.eclipse.osbp.dsl.dto.xtext/src-gen", editDirectory="/org.eclipse.osbp.dsl.dto.xtext.edit/src", childCreationExtenders="true")
+@GenModel(modelName="DTO")
+@GenModel(prefix="OSBPDto")
+@GenModel(suppressEMFModelTags="true")
+@GenModel(runtimeVersion="2.9")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ 		Florian Pirchner - Initial implementation 
+ ")
+@GenModel(operationReflection="false")
+@Ecore(nsURI="http://osbp.eclipse.org/dsl/dto/v1")
+@Ecore(nsPrefix="dto")
+@Ecore(rootPackage="dto")
+package org.eclipse.osbp.dsl.semantic.dto
+
+import java.util.List
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.xbase.XExpression
+import org.eclipse.osbp.dsl.semantic.common.types.FeaturesList
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import java.util.ArrayList
+import java.util.Collections
+
+class LDtoModel {
+	contains LTypedPackage[] packages
+	op EObject eResolveProxy(InternalEObject proxy) {
+		return EcoreUtil3.resolve(proxy, this.eResource().resourceSet);
+	}
+}
+
+/**
+ * A bean is an embeddable element that may become added to a entity using the @embedd annotation. 
+ */
+class LDto extends LClass, LFeaturesHolder, LScalarType {
+	contains LDtoFeature[] features
+	refers LDto superType opposite subTypes
+	contains transient JvmTypeReference superTypeJvm
+	// helper proxy for lazy loading the mapper from super type
+	contains transient JvmTypeReference superTypeMapperJvm
+	refers LDto[] subTypes opposite superType
+	refers LType wrappedType
+	contains transient JvmTypeReference wrappedTypeJvm
+	/** 
+ 	 * Returns all features of type LOperation
+ 	 */
+	op OperationsList getOperations() {
+		features.filter(typeof(LDtoOperation)).toList
+	}
+	/**
+ 	 * Returns all features of type LDtoReference
+ 	 */
+	op DtoReferenceList getReferences() {
+		features.filter(typeof(LDtoAbstractReference)).toList
+	}
+	/**
+ 	 * Returns all features of type LDtoAttribute
+ 	 */
+	op DtoAttributeList getAttributes() {
+		features.filter(typeof(LDtoAbstractAttribute)).toList
+	}
+	/**
+	 * Returns all features of the holder and from super types
+	 */
+	op FeaturesList getAllFeatures() {
+		val List<LDtoFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result
+	}
+	op void collectAllOSBPFeatures(LDto current, DtoFeatureList result) {
+		if (current == null) {
+			return
+		}
+
+		// collect from current feature
+		result.addAll(current.features)
+
+		// call for super class
+		current.superType.collectAllOSBPFeatures(result)
+	}
+	op LDtoAbstractAttribute getPrimaryKeyAttribute() {
+		return allFeatures.filter(typeof(LDtoAbstractAttribute)).findFirst [
+			switch (it) {
+				LDtoInheritedAttribute:
+					return it.inheritedFeature?.id || it.inheritedFeature?.uuid
+				LDtoAttribute:
+					return it.id || it.uuid
+			}
+			return false
+		]
+	}
+	op String getIdAttributeName() {
+		var attribute = getPrimaryKeyAttribute()
+		switch (attribute) {
+			LDtoInheritedAttribute:
+				return attribute.inheritedFeature.name
+			LDtoAttribute:
+				return attribute.name
+		}
+		return null
+	}
+	op LScalarType getIdAttributeType() {
+		var attribute = getPrimaryKeyAttribute()
+		switch (attribute) {
+			LDtoInheritedAttribute:
+				return attribute.inheritedFeature.^type
+			case LDtoAttribute:
+				return attribute.^type
+		}
+		return null
+	}
+}
+
+class LAutoInheritDto extends LDto {
+}
+
+class LDtoMapper extends LLazyResolver {
+	contains XExpression toDTO
+	contains XExpression fromDTO
+}
+
+class LDtoFeature extends LFeature {
+	contains LDtoMapper mapper
+	op LDto getDTO() {
+
+		//		if (eContainer instanceof LFeature) {
+		//			return null // this happens since the feature may be the annotation info 
+		//		}
+		return eContainer as LDto
+	}
+}
+
+abstract class LDtoAbstractAttribute extends LDtoFeature, LAttribute {
+	op PropertiesList getResolvedProperties() {
+		if (this instanceof LDtoInheritedAttribute) {
+			val temp = this as LDtoInheritedAttribute
+			if (temp.inheritedFeature == null) {
+				return Collections.emptyList()
+			}
+			val result = new ArrayList<LKeyAndValue>(temp.inheritedFeature.properties)
+			result.addAll(properties)
+			return result
+		} else {
+			return properties
+		}
+	}
+}
+
+class LDtoInheritedAttribute extends LDtoAbstractAttribute{
+	refers LAttribute inheritedFeature
+	contains transient JvmTypeReference inheritedFeatureTypeJvm
+	op LScalarType getInheritedType() {
+		return inheritedFeature.^type
+	}
+	op LMultiplicity getInheritedMultiplicity() {
+		return inheritedFeature.multiplicity
+	}
+}
+
+class LDtoAttribute  extends LDtoAbstractAttribute {
+}
+
+abstract class LDtoAbstractReference extends LDtoFeature, LReference {
+	refers LDto ^type
+	contains transient JvmTypeReference typeJvm
+	op PropertiesList getResolvedProperties() {
+		if (this instanceof org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference) {
+			val temp = this as LDtoInheritedReference
+			if (temp.inheritedFeature == null) {
+				return Collections.emptyList()
+			}
+			val result = new ArrayList<LKeyAndValue>(temp.inheritedFeature.properties)
+			result.addAll(properties)
+			return result
+		} else {
+			return properties
+		}
+	}
+}
+
+class LDtoInheritedReference extends LDtoAbstractReference{
+	refers LReference inheritedFeature
+	contains transient JvmTypeReference inheritedFeatureTypeJvm
+	op LMultiplicity getInheritedMultiplicity() {
+		return inheritedFeature.multiplicity
+	}
+}
+
+class LDtoReference  extends LDtoAbstractReference {
+	refers LDtoReference ^opposite
+}
+
+class LDtoOperation extends org.eclipse.osbp.dsl.semantic.common.types.LOperation, LDtoFeature {
+}
+
+type DtoFeatureList wraps java.util.List<LDtoFeature>
+
+type OperationsList wraps java.util.List<LDtoOperation>
+
+type DtoReferenceList wraps java.util.List<LDtoAbstractReference>
+
+type DtoAttributeList wraps java.util.List<LDtoAbstractAttribute>
+
+type DtoAbstractAttributeList wraps java.util.List<LDtoAbstractAttribute>
+
+type InternalEObject wraps InternalEObject
+
+type PropertiesList wraps java.util.List<LKeyAndValue>
+	
+	
+	
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/plugin.properties b/org.eclipse.osbp.dsl.dto.xtext/plugin.properties
new file mode 100644
index 0000000..801bae7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#    
+#  Contributors:  
+#  		Florian Pirchner - Initial implementation 
+#  
+
+pluginName = DTO Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.dto.xtext/plugin.xml b/org.eclipse.osbp.dsl.dto.xtext/plugin.xml
new file mode 100644
index 0000000..2a7ea3c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 - 2012, Lunifera GmbH (Gross Enzersdorf, Austria), Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ 
+ Sources generated by Xtext  
+ 
+ Contributors:
+  		Hans Georg Glöckler - Initial implementation
+  		Florian Pirchner - Initial implementation
+-->
+
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            class="org.eclipse.osbp.dsl.semantic.dto.impl.DtoFactoryImplCustom"
+            uri="http://osbp.eclipse.org/dsl/dto/v1">
+      </factory>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated dto -->
+      <package
+            uri="http://osbp.eclipse.org/dsl/dto/v1"
+            class="org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage"
+            genModel="model/dto.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.dto.xtext/pom.xml b/org.eclipse.osbp.dsl.dto.xtext/pom.xml
new file mode 100644
index 0000000..17947f2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/pom.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.dto.xtext</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<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>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/AbstractDtoGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/AbstractDtoGrammarRuntimeModule.java
new file mode 100644
index 0000000..0b1736f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/AbstractDtoGrammarRuntimeModule.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext;
+
+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.dsl.dto.xtext.DtoGrammarRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractDtoGrammarRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/dsl/dto/xtext/DtoGrammar.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.dsl.dto.xtext.DtoGrammar");
+	}
+	
+	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("dto");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.dsl.dto.xtext.services.DtoGrammarGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.dsl.dto.xtext.serializer.DtoGrammarSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.dsl.dto.xtext.serializer.DtoGrammarSyntacticSequencer.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.dsl.dto.xtext.parser.antlr.DtoGrammarParser.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.dsl.dto.xtext.parser.antlr.DtoGrammarAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarLexer> provideInternalDtoGrammarLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarLexer.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.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarLexer.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.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.dsl.dto.xtext.validation.DtoGrammarJavaValidator> bindDtoGrammarJavaValidator() {
+		return org.eclipse.osbp.dsl.dto.xtext.validation.DtoGrammarJavaValidator.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.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// 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.dsl.dto.xtext.jvmmodel.DtoGrammarJvmModelInferrer.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarStandaloneSetupGenerated.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarStandaloneSetupGenerated.java
new file mode 100644
index 0000000..c836922
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarStandaloneSetupGenerated.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext;
+
+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 DtoGrammarStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.osbp.dsl.dto.xtext.DtoGrammarRuntimeModule());
+	}
+	
+	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("dto", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("dto", serviceProvider);
+		
+
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/DtoGrammarAntlrTokenFileProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/DtoGrammarAntlrTokenFileProvider.java
new file mode 100644
index 0000000..3d7366e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/DtoGrammarAntlrTokenFileProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class DtoGrammarAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/DtoGrammarParser.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/DtoGrammarParser.java
new file mode 100644
index 0000000..fe3a859
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/DtoGrammarParser.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+public class DtoGrammarParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private DtoGrammarGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.dsl.dto.xtext.parser.antlr.internal.InternalDtoGrammarParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "LDTOModel";
+	}
+	
+	public DtoGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(DtoGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/DebugInternalDtoGrammar.g b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/DebugInternalDtoGrammar.g
new file mode 100644
index 0000000..af800c4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/DebugInternalDtoGrammar.g
@@ -0,0 +1,1558 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar DebugInternalDtoGrammar ;
+
+// Rule LDTOModel
+ruleLDTOModel :
+	ruleTypedPackage*
+;
+
+// Rule Class
+ruleClass :
+	ruleAnnotationDef* (
+		'abstract'? 'dto' ruleValidIDWithKeywords (
+			'extends' ruleTYPE_CROSS_REFERENCE
+		)? (
+			'wraps' ruleTYPE_CROSS_REFERENCE
+		)? '{' ruleDtoFeature* '}' |
+		'abstract'? 'autoDto' ruleValidIDWithKeywords (
+			'extends' ruleTYPE_CROSS_REFERENCE
+		)? 'wraps' ruleTYPE_CROSS_REFERENCE '{' ruleDtoFeature* '}'
+	)
+;
+
+// Rule DtoFeature
+ruleDtoFeature :
+	ruleAnnotationDef* (
+		(
+			'inherit var' ruleValidLFQNWithKeywords
+		) (
+			'mapto' ruleTYPE_CROSS_REFERENCE
+		)? (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? (
+			ruleDtoMapper |
+			';'?
+		) |
+		(
+			'inherit ref' ruleValidLFQNWithKeywords
+		) 'mapto' ruleTYPE_CROSS_REFERENCE (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? (
+			ruleDtoMapper |
+			';'?
+		) |
+		'transient' ruleTYPE_CROSS_REFERENCE (
+			'[' ruleAllConstraints* ']'
+		)? ruleValidIDWithKeywords (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? ';'? |
+		'dirty' ruleTYPE_CROSS_REFERENCE ruleValidIDWithKeywords (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? ';'? |
+		'derived' 'domainDescription'? ruleTYPE_CROSS_REFERENCE
+		ruleValidIDWithKeywords (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? ruleXBlockExpression |
+		(
+			'id' |
+			'version' |
+			'uuid' |
+			'domainDescription' |
+			'domainKey'
+		) ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+			'[' ruleAllConstraints* ']'
+		)? ruleValidIDWithKeywords (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? ';'? |
+		(
+			'ref' (
+				'cascade'? |
+				'lazy'?
+			)* ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+				'[' ruleAllConstraints* ']'
+			)? ruleValidIDWithKeywords (
+				'opposite' ruleLFQN
+			)? (
+				'properties' '(' ruleKeyAndValue (
+					', ' ruleKeyAndValue
+				)* ')'
+			)?
+		) (
+			ruleLimitedMapperDtoMapper |
+			';'?
+		) |
+		'var' ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+			'[' ruleAllConstraints* ']'
+		)? ruleValidIDWithKeywords (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? (
+			ruleLimitedMapperDtoMapper |
+			';'?
+		) |
+		'def' ruleJvmTypeReference ruleValidIDWithKeywords '(' (
+			ruleFullJvmFormalParameter (
+				', ' ruleFullJvmFormalParameter
+			)*
+		)? ')' ruleXExpression
+	)
+;
+
+// Rule DtoMapper
+ruleDtoMapper :
+	'{' 'toDTO' ruleXExpression (
+		'fromDTO' ruleXExpression
+	)? '}'
+;
+
+// Rule LimitedMapperDtoMapper
+ruleLimitedMapperDtoMapper :
+	'{' 'toDTO' ruleXExpression '}'
+;
+
+// Rule TypedPackage
+ruleTypedPackage :
+	'package' ruleQualifiedName (
+		'{' ruleImport* ruleType* '}'
+	)?
+;
+
+// Rule Type
+ruleType :
+	ruleScalarType |
+	ruleClass
+;
+
+// Rule Import
+ruleImport :
+	'import' ruleLQualifiedNameWithWildCard ';'?
+;
+
+// Rule DataType
+ruleDataType :
+	'datatype' ruleValidIDWithKeywords (
+		'jvmType' ruleJvmTypeReference 'as primitive'? ruleDataTypeConstraint* (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? |
+		'dateType' ruleDateType ruleDateConstraint* (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? |
+		'as blob' ruleBlobTypeConstraint* (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)?
+	) ';'?
+;
+
+// Rule AllConstraints
+ruleAllConstraints :
+	ruleDtCAssertFalse |
+	ruleDtCAssertTrue |
+	ruleDtCDecimalMax |
+	ruleDtCDecimalMin |
+	ruleDtCDigits |
+	ruleDtCNumericMax |
+	ruleDtCNumericMin |
+	ruleDtCNotNull |
+	ruleDtCNull |
+	ruleDtCRegEx |
+	ruleDtCSize |
+	ruleDtCFuture |
+	ruleDtCPast
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint :
+	ruleDtCAssertFalse |
+	ruleDtCAssertTrue |
+	ruleDtCDecimalMax |
+	ruleDtCDecimalMin |
+	ruleDtCDigits |
+	ruleDtCNumericMax |
+	ruleDtCNumericMin |
+	ruleDtCNotNull |
+	ruleDtCNull |
+	ruleDtCRegEx |
+	ruleDtCSize
+;
+
+// Rule DateConstraint
+ruleDateConstraint :
+	ruleDtCFuture |
+	ruleDtCPast |
+	ruleDtCNotNull |
+	ruleDtCNull
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint :
+	ruleDtCNotNull |
+	ruleDtCNull
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse :
+	'isFalse' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue :
+	'isTrue' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax :
+	'maxDecimal' '(' ruleLDecimal (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin :
+	'minDecimal' '(' ruleLDecimal (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCDigits
+ruleDtCDigits :
+	'digits' '(' RULE_INT ', ' RULE_INT (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCFuture
+ruleDtCFuture :
+	'isFuture' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCPast
+ruleDtCPast :
+	'isPast' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax :
+	'maxNumber' '(' ruleLInt (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin :
+	'minNumber' '(' ruleLInt (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull :
+	'isNotNull' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCNull
+ruleDtCNull :
+	'isNull' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx :
+	'regex' '(' RULE_STRING (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCSize
+ruleDtCSize :
+	'minMaxSize' '(' RULE_INT ', ' RULE_INT (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule ScalarType
+ruleScalarType :
+	ruleDataType |
+	ruleEnum
+;
+
+// Rule Enum
+ruleEnum :
+	'enum' RULE_ID '{' ruleEnumLiteral (
+		', ' ruleEnumLiteral
+	)* '}'
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral :
+	RULE_ID (
+		(
+			'(' 'asDefault'? |
+			'forNull'? ')' (
+				'=' RULE_INT
+			)?
+		)*
+	)?
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef :
+	( (
+	ruleXAnnotation
+	) => ruleXAnnotation )
+;
+
+// Rule ResultFilter
+ruleResultFilter :
+	ruleAttributeMatchingConstraint
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint :
+	RULE_ID ruleLComparatorType (
+		RULE_STRING |
+		( (
+		RULE_ID
+		) => RULE_ID )
+	) ';'?
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue :
+	'key' '=' RULE_STRING 'value' '=' RULE_STRING
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard :
+	ruleQualifiedName (
+		'.' '*'
+	)?
+;
+
+// Rule LFQN
+ruleLFQN :
+	RULE_ID (
+		'.' RULE_ID
+	)*
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE :
+	RULE_ID
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords :
+	'cachable' |
+	'id' |
+	'uuid' |
+	'transient' |
+	'version' |
+	'derived' 'collection' |
+	'refers' |
+	'settings' |
+	'lazy' |
+	'notnull' |
+	'dto' |
+	'date' |
+	'mapto' |
+	'ref' |
+	'cascade' |
+	'var' |
+	RULE_ID
+;
+
+// Rule ValidLFQNWithKeywords
+ruleValidLFQNWithKeywords :
+	ruleValidIDWithKeywords (
+		'.' ruleValidIDWithKeywords
+	)*
+;
+
+// Rule Multiplicity
+ruleMultiplicity :
+	'[' ruleLowerBound (
+		'..' ruleUpperBound
+	)? ']'
+;
+
+// Rule LInt
+ruleLInt :
+	(
+		'+' |
+		'-'
+	)? RULE_INT
+;
+
+// Rule LDecimal
+ruleLDecimal :
+	ruleLInt (
+		'.' RULE_INT
+	)?
+;
+
+// Rule XAnnotation
+ruleXAnnotation :
+	'@' ruleQualifiedName (
+		( (
+		'('
+		) => '(' ) (
+			( (
+			ruleValidID '='
+			) => ruleXAnnotationElementValuePair ) (
+				',' ( (
+				ruleValidID '='
+				) => ruleXAnnotationElementValuePair )
+			)* |
+			ruleXAnnotationElementValueOrCommaList
+		)? ')'
+	)?
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair :
+	( (
+	ruleValidID '='
+	) => (
+		ruleValidID '='
+	) ) ruleXAnnotationElementValue
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList :
+	( (
+	'#' '['
+	) => (
+		'#' '['
+	) ) (
+		ruleXAnnotationOrExpression (
+			',' ruleXAnnotationOrExpression
+		)*
+	)? ']' |
+	ruleXAnnotationOrExpression (
+		(
+			',' ruleXAnnotationOrExpression
+		)+
+	)?
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue :
+	( (
+	'#' '['
+	) => (
+		'#' '['
+	) ) (
+		ruleXAnnotationOrExpression (
+			',' ruleXAnnotationOrExpression
+		)*
+	)? ']' |
+	ruleXAnnotationOrExpression
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression :
+	ruleXAnnotation |
+	ruleXExpression
+;
+
+// Rule XExpression
+ruleXExpression :
+	ruleXAssignment
+;
+
+// Rule XAssignment
+ruleXAssignment :
+	ruleFeatureCallID ruleOpSingleAssign ruleXAssignment |
+	ruleXOrExpression (
+		( (
+		ruleOpMultiAssign
+		) => ruleOpMultiAssign ) ruleXAssignment
+	)?
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign :
+	'='
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign :
+	'+=' |
+	'-=' |
+	'*=' |
+	'/=' |
+	'%=' |
+	'<' '<' '=' |
+	'>' '>'? '>='
+;
+
+// Rule XOrExpression
+ruleXOrExpression :
+	ruleXAndExpression (
+		( (
+		ruleOpOr
+		) => ruleOpOr ) ruleXAndExpression
+	)*
+;
+
+// Rule OpOr
+ruleOpOr :
+	'||'
+;
+
+// Rule XAndExpression
+ruleXAndExpression :
+	ruleXEqualityExpression (
+		( (
+		ruleOpAnd
+		) => ruleOpAnd ) ruleXEqualityExpression
+	)*
+;
+
+// Rule OpAnd
+ruleOpAnd :
+	'&&'
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression :
+	ruleXRelationalExpression (
+		( (
+		ruleOpEquality
+		) => ruleOpEquality ) ruleXRelationalExpression
+	)*
+;
+
+// Rule OpEquality
+ruleOpEquality :
+	'==' |
+	'!=' |
+	'===' |
+	'!=='
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression :
+	ruleXOtherOperatorExpression (
+		( (
+		'instanceof'
+		) => 'instanceof' ) ruleJvmTypeReference |
+		( (
+		ruleOpCompare
+		) => ruleOpCompare ) ruleXOtherOperatorExpression
+	)*
+;
+
+// Rule OpCompare
+ruleOpCompare :
+	'>=' |
+	'<' '=' |
+	'>' |
+	'<'
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression :
+	ruleXAdditiveExpression (
+		( (
+		ruleOpOther
+		) => ruleOpOther ) ruleXAdditiveExpression
+	)*
+;
+
+// Rule OpOther
+ruleOpOther :
+	'->' |
+	'..<' |
+	'>' '..' |
+	'..' |
+	'=>' |
+	'>' (
+		( (
+		'>' '>'
+		) => (
+			'>' '>'
+		) ) |
+		'>'
+	) |
+	'<' (
+		( (
+		'<' '<'
+		) => (
+			'<' '<'
+		) ) |
+		'<' |
+		'=>'
+	) |
+	'<>' |
+	'?:'
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression :
+	ruleXMultiplicativeExpression (
+		( (
+		ruleOpAdd
+		) => ruleOpAdd ) ruleXMultiplicativeExpression
+	)*
+;
+
+// Rule OpAdd
+ruleOpAdd :
+	'+' |
+	'-'
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression :
+	ruleXUnaryOperation (
+		( (
+		ruleOpMulti
+		) => ruleOpMulti ) ruleXUnaryOperation
+	)*
+;
+
+// Rule OpMulti
+ruleOpMulti :
+	'*' |
+	'**' |
+	'/' |
+	'%'
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation :
+	ruleOpUnary ruleXUnaryOperation |
+	ruleXCastedExpression
+;
+
+// Rule OpUnary
+ruleOpUnary :
+	'!' |
+	'-' |
+	'+'
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression :
+	ruleXPostfixOperation (
+		( (
+		'as'
+		) => 'as' ) ruleJvmTypeReference
+	)*
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation :
+	ruleXMemberFeatureCall ( (
+	ruleOpPostfix
+	) => ruleOpPostfix )?
+;
+
+// Rule OpPostfix
+ruleOpPostfix :
+	'++' |
+	'--'
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall :
+	ruleXPrimaryExpression (
+		( (
+		(
+			'.' |
+			'::'
+		) ruleFeatureCallID ruleOpSingleAssign
+		) => (
+			(
+				'.' |
+				'::'
+			) ruleFeatureCallID ruleOpSingleAssign
+		) ) ruleXAssignment |
+		( (
+		'.' |
+		'?.' |
+		'::'
+		) => (
+			'.' |
+			'?.' |
+			'::'
+		) ) (
+			'<' ruleJvmArgumentTypeReference (
+				',' ruleJvmArgumentTypeReference
+			)* '>'
+		)? ruleIdOrSuper (
+			( (
+			'('
+			) => '(' ) (
+				( (
+				(
+					ruleJvmFormalParameter (
+						',' ruleJvmFormalParameter
+					)*
+				)? '|'
+				) => ruleXShortClosure ) |
+				ruleXExpression (
+					',' ruleXExpression
+				)*
+			)? ')'
+		)? ( (
+		'['
+		) => ruleXClosure )?
+	)*
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression :
+	ruleXConstructorCall |
+	ruleXBlockExpression |
+	ruleXSwitchExpression |
+	( (
+	'synchronized' '('
+	) => ruleXSynchronizedExpression ) |
+	ruleXFeatureCall |
+	ruleXLiteral |
+	ruleXIfExpression |
+	( (
+	'for' '(' ruleJvmFormalParameter ':'
+	) => ruleXForLoopExpression ) |
+	ruleXBasicForLoopExpression |
+	ruleXWhileExpression |
+	ruleXDoWhileExpression |
+	ruleXThrowExpression |
+	ruleXReturnExpression |
+	ruleXTryCatchFinallyExpression |
+	ruleXParenthesizedExpression
+;
+
+// Rule XLiteral
+ruleXLiteral :
+	ruleXCollectionLiteral |
+	( (
+	'['
+	) => ruleXClosure ) |
+	ruleXBooleanLiteral |
+	ruleXNumberLiteral |
+	ruleXNullLiteral |
+	ruleXStringLiteral |
+	ruleXTypeLiteral
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral :
+	ruleXSetLiteral |
+	ruleXListLiteral
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral :
+	'#' '{' (
+		ruleXExpression (
+			',' ruleXExpression
+		)*
+	)? '}'
+;
+
+// Rule XListLiteral
+ruleXListLiteral :
+	'#' '[' (
+		ruleXExpression (
+			',' ruleXExpression
+		)*
+	)? ']'
+;
+
+// Rule XClosure
+ruleXClosure :
+	( (
+	'['
+	) => '[' ) ( (
+	(
+		ruleJvmFormalParameter (
+			',' ruleJvmFormalParameter
+		)*
+	)? '|'
+	) => (
+		(
+			ruleJvmFormalParameter (
+				',' ruleJvmFormalParameter
+			)*
+		)? '|'
+	) )? ruleXExpressionInClosure ']'
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure :
+	(
+		ruleXExpressionOrVarDeclaration ';'?
+	)*
+;
+
+// Rule XShortClosure
+ruleXShortClosure :
+	( (
+	(
+		ruleJvmFormalParameter (
+			',' ruleJvmFormalParameter
+		)*
+	)? '|'
+	) => (
+		(
+			ruleJvmFormalParameter (
+				',' ruleJvmFormalParameter
+			)*
+		)? '|'
+	) ) ruleXExpression
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression :
+	'(' ruleXExpression ')'
+;
+
+// Rule XIfExpression
+ruleXIfExpression :
+	'if' '(' ruleXExpression ')' ruleXExpression (
+		( (
+		'else'
+		) => 'else' ) ruleXExpression
+	)?
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression :
+	'switch' (
+		( (
+		'(' ruleJvmFormalParameter ':'
+		) => (
+			'(' ruleJvmFormalParameter ':'
+		) ) ruleXExpression ')' |
+		( (
+		ruleJvmFormalParameter ':'
+		) => (
+			ruleJvmFormalParameter ':'
+		) )? ruleXExpression
+	) '{' ruleXCasePart* (
+		'default' ':' ruleXExpression
+	)? '}'
+;
+
+// Rule XCasePart
+ruleXCasePart :
+	ruleJvmTypeReference? (
+		'case' ruleXExpression
+	)? (
+		':' ruleXExpression |
+		','
+	)
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression :
+	( (
+	'for' '(' ruleJvmFormalParameter ':'
+	) => (
+		'for' '(' ruleJvmFormalParameter ':'
+	) ) ruleXExpression ')' ruleXExpression
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression :
+	'for' '(' (
+		ruleXExpressionOrVarDeclaration (
+			',' ruleXExpressionOrVarDeclaration
+		)*
+	)? ';' ruleXExpression? ';' (
+		ruleXExpression (
+			',' ruleXExpression
+		)*
+	)? ')' ruleXExpression
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression :
+	'while' '(' ruleXExpression ')' ruleXExpression
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression :
+	'do' ruleXExpression 'while' '(' ruleXExpression ')'
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression :
+	'{' (
+		ruleXExpressionOrVarDeclaration ';'?
+	)* '}'
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration :
+	ruleXVariableDeclaration |
+	ruleXExpression
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration :
+	(
+		'var' |
+		'val'
+	) (
+		( (
+		ruleJvmTypeReference ruleValidID
+		) => (
+			ruleJvmTypeReference ruleValidID
+		) ) |
+		ruleValidID
+	) (
+		'=' ruleXExpression
+	)?
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter :
+	ruleJvmTypeReference? ruleValidID
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter :
+	ruleJvmTypeReference ruleValidID
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall :
+	(
+		'<' ruleJvmArgumentTypeReference (
+			',' ruleJvmArgumentTypeReference
+		)* '>'
+	)? ruleIdOrSuper (
+		( (
+		'('
+		) => '(' ) (
+			( (
+			(
+				ruleJvmFormalParameter (
+					',' ruleJvmFormalParameter
+				)*
+			)? '|'
+			) => ruleXShortClosure ) |
+			ruleXExpression (
+				',' ruleXExpression
+			)*
+		)? ')'
+	)? ( (
+	'['
+	) => ruleXClosure )?
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID :
+	ruleValidID |
+	'extends' |
+	'static' |
+	'import' |
+	'extension'
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper :
+	ruleFeatureCallID |
+	'super'
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall :
+	'new' ruleQualifiedName (
+		( (
+		'<'
+		) => '<' ) ruleJvmArgumentTypeReference (
+			',' ruleJvmArgumentTypeReference
+		)* '>'
+	)? (
+		( (
+		'('
+		) => '(' ) (
+			( (
+			(
+				ruleJvmFormalParameter (
+					',' ruleJvmFormalParameter
+				)*
+			)? '|'
+			) => ruleXShortClosure ) |
+			ruleXExpression (
+				',' ruleXExpression
+			)*
+		)? ')'
+	)? ( (
+	'['
+	) => ruleXClosure )?
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral :
+	'false' |
+	'true'
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral :
+	'null'
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral :
+	ruleNumber
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral :
+	RULE_STRING
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral :
+	'typeof' '(' ruleQualifiedName ruleArrayBrackets* ')'
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression :
+	'throw' ruleXExpression
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression :
+	'return' ( (
+	'extends' |
+	'static' |
+	'import' |
+	'extension' |
+	'!' |
+	'-' |
+	'+' |
+	'new' |
+	'{' |
+	'switch' |
+	'synchronized' |
+	'<' |
+	'super' |
+	'#' |
+	'[' |
+	'false' |
+	'true' |
+	'null' |
+	'typeof' |
+	'if' |
+	'for' |
+	'while' |
+	'do' |
+	'throw' |
+	'return' |
+	'try' |
+	'(' |
+	RULE_ID |
+	RULE_HEX |
+	RULE_INT |
+	RULE_DECIMAL |
+	RULE_STRING
+	) => ruleXExpression )?
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression :
+	'try' ruleXExpression (
+		( (
+		'catch'
+		) => ruleXCatchClause )+ (
+			( (
+			'finally'
+			) => 'finally' ) ruleXExpression
+		)? |
+		'finally' ruleXExpression
+	)
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression :
+	( (
+	'synchronized' '('
+	) => (
+		'synchronized' '('
+	) ) ruleXExpression ')' ruleXExpression
+;
+
+// Rule XCatchClause
+ruleXCatchClause :
+	( (
+	'catch'
+	) => 'catch' ) '(' ruleFullJvmFormalParameter ')' ruleXExpression
+;
+
+// Rule QualifiedName
+ruleQualifiedName :
+	ruleValidID (
+		( (
+		'.'
+		) => '.' ) ruleValidID
+	)*
+;
+
+// Rule Number
+ruleNumber :
+	RULE_HEX |
+	(
+		RULE_INT |
+		RULE_DECIMAL
+	) (
+		'.' (
+			RULE_INT |
+			RULE_DECIMAL
+		)
+	)?
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference :
+	ruleJvmParameterizedTypeReference ( (
+	ruleArrayBrackets
+	) => ruleArrayBrackets )* |
+	ruleXFunctionTypeRef
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets :
+	'[' ']'
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef :
+	(
+		'(' (
+			ruleJvmTypeReference (
+				',' ruleJvmTypeReference
+			)*
+		)? ')'
+	)? '=>' ruleJvmTypeReference
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference :
+	ruleQualifiedName (
+		( (
+		'<'
+		) => '<' ) ruleJvmArgumentTypeReference (
+			',' ruleJvmArgumentTypeReference
+		)* '>' (
+			( (
+			'.'
+			) => '.' ) ruleValidID (
+				( (
+				'<'
+				) => '<' ) ruleJvmArgumentTypeReference (
+					',' ruleJvmArgumentTypeReference
+				)* '>'
+			)?
+		)*
+	)?
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference :
+	ruleJvmTypeReference |
+	ruleJvmWildcardTypeReference
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference :
+	'?' (
+		ruleJvmUpperBound ruleJvmUpperBoundAnded* |
+		ruleJvmLowerBound ruleJvmLowerBoundAnded*
+	)?
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound :
+	'extends' ruleJvmTypeReference
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded :
+	'&' ruleJvmTypeReference
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound :
+	'super' ruleJvmTypeReference
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded :
+	'&' ruleJvmTypeReference
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard :
+	ruleQualifiedName '.' '*'
+;
+
+// Rule ValidID
+ruleValidID :
+	RULE_ID
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration :
+	'import' (
+		'static' 'extension'? ruleQualifiedNameInStaticImport (
+			'*' |
+			ruleValidID
+		) |
+		ruleQualifiedName |
+		ruleQualifiedNameWithWildcard
+	) ';'?
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport :
+	(
+		ruleValidID '.'
+	)+
+;
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity :
+	'info' |
+	'warn' |
+	'error'
+;
+
+// Rule DateType
+ruleDateType :
+	'date' |
+	'time' |
+	'timestamp'
+;
+
+// Rule LVisibility
+ruleLVisibility :
+	'package' |
+	'private' |
+	'protected' |
+	'public'
+;
+
+// Rule LComparatorType
+ruleLComparatorType :
+	'==' |
+	'>' |
+	'<' |
+	'>=' |
+	'<=' |
+	'<>'
+;
+
+// Rule LowerBound
+ruleLowerBound :
+	'*' |
+	'0' |
+	'?' |
+	'+' |
+	'1'
+;
+
+// Rule UpperBound
+ruleUpperBound :
+	'*' |
+	'1'
+;
+
+RULE_HEX :
+	(
+		'0x' |
+		'0X'
+	) (
+		'0' .. '9' |
+		'a' .. 'f' |
+		'A' .. 'F' |
+		'_'
+	)+ (
+		'#' (
+			(
+				'b' |
+				'B'
+			) (
+				'i' |
+				'I'
+			) |
+			(
+				'l' |
+				'L'
+			)
+		)
+	)?
+;
+
+RULE_INT :
+	'0' .. '9' (
+		'0' .. '9' |
+		'_'
+	)*
+;
+
+RULE_DECIMAL :
+	RULE_INT (
+		(
+			'e' |
+			'E'
+		) (
+			'+' |
+			'-'
+		)? RULE_INT
+	)? (
+		(
+			'b' |
+			'B'
+		) (
+			'i' |
+			'I' |
+			'd' |
+			'D'
+		) |
+		(
+			'l' |
+			'L' |
+			'd' |
+			'D' |
+			'f' |
+			'F'
+		)
+	)?
+;
+
+RULE_ID :
+	'^'? (
+		'a' .. 'z' |
+		'A' .. 'Z' |
+		'$' |
+		'_'
+	) (
+		'a' .. 'z' |
+		'A' .. 'Z' |
+		'$' |
+		'_' |
+		'0' .. '9'
+	)*
+;
+
+RULE_STRING :
+	'"' (
+		'\\' . |
+		~ (
+			'\\' |
+			'"'
+		)
+	)* '"'? |
+	'\'' (
+		'\\' . |
+		~ (
+			'\\' |
+			'\''
+		)
+	)* '\''?
+;
+
+RULE_ML_COMMENT :
+	'/*' (
+		options { greedy = false ; } : .
+	)* '*/' {skip();}
+;
+
+RULE_SL_COMMENT :
+	'//' ~ (
+		'\n' |
+		'\r'
+	)* (
+		'\r'? '\n'
+	)? {skip();}
+;
+
+RULE_WS :
+	(
+		' ' |
+		'\t' |
+		'\r' |
+		'\n'
+	)+ {skip();}
+;
+
+RULE_ANY_OTHER :
+	.
+;
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g
new file mode 100644
index 0000000..5ea6856
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalDtoGrammar;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.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.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private DtoGrammarGrammarAccess grammarAccess;
+ 	
+    public InternalDtoGrammarParser(TokenStream input, DtoGrammarGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "LDTOModel";	
+   	}
+   	
+   	@Override
+   	protected DtoGrammarGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleLDTOModel
+entryRuleLDTOModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLDTOModelRule()); }
+	 iv_ruleLDTOModel=ruleLDTOModel 
+	 { $current=$iv_ruleLDTOModel.current; } 
+	 EOF 
+;
+
+// Rule LDTOModel
+ruleLDTOModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLDTOModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleTypedPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLDTOModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"TypedPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassRule()); }
+	 iv_ruleClass=ruleClass 
+	 { $current=$iv_ruleClass.current; } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getClassAccess().getLDtoAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLDtoAnnotationInfoAction_2_0_0(),
+            $current);
+    }
+)(
+(
+		lv_abstract_3_0=	'abstract' 
+    {
+        newLeafNode(lv_abstract_3_0, grammarAccess.getClassAccess().getAbstractAbstractKeyword_2_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "abstract", true, "abstract");
+	    }
+
+)
+)?	otherlv_4='dto' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getClassAccess().getDtoKeyword_2_0_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_2_0_3_0()); 
+	    }
+		lv_name_5_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_5_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6='extends' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLDtoCrossReference_2_0_4_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_8='wraps' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getClassAccess().getWrapsKeyword_2_0_5_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getWrappedTypeLEntityCrossReference_2_0_5_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_10='{' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_6());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesDtoFeatureParserRuleCall_2_0_7_0()); 
+	    }
+		lv_features_11_0=ruleDtoFeature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"features",
+        		lv_features_11_0, 
+        		"DtoFeature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_12='}' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_8());
+    }
+)
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLAutoInheritDtoAnnotationInfoAction_2_1_0(),
+            $current);
+    }
+)(
+(
+		lv_abstract_14_0=	'abstract' 
+    {
+        newLeafNode(lv_abstract_14_0, grammarAccess.getClassAccess().getAbstractAbstractKeyword_2_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "abstract", true, "abstract");
+	    }
+
+)
+)?	otherlv_15='autoDto' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getClassAccess().getAutoDtoKeyword_2_1_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_2_1_3_0()); 
+	    }
+		lv_name_16_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_16_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_17='extends' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getClassAccess().getExtendsKeyword_2_1_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLDtoCrossReference_2_1_4_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_19='wraps' 
+    {
+    	newLeafNode(otherlv_19, grammarAccess.getClassAccess().getWrapsKeyword_2_1_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getWrappedTypeLEntityCrossReference_2_1_6_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_21='{' 
+    {
+    	newLeafNode(otherlv_21, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_7());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesDtoFeatureParserRuleCall_2_1_8_0()); 
+	    }
+		lv_features_22_0=ruleDtoFeature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"features",
+        		lv_features_22_0, 
+        		"DtoFeature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_9());
+    }
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleDtoFeature
+entryRuleDtoFeature returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtoFeatureRule()); }
+	 iv_ruleDtoFeature=ruleDtoFeature 
+	 { $current=$iv_ruleDtoFeature.current; } 
+	 EOF 
+;
+
+// Rule DtoFeature
+ruleDtoFeature returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtoFeatureAccess().getLDtoFeatureAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*((((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0(),
+            $current);
+    }
+)	otherlv_3='inherit var' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtoFeatureAccess().getInheritVarKeyword_2_0_0_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getInheritedFeatureLEntityAttributeCrossReference_2_0_0_2_0()); 
+	    }
+		ruleValidLFQNWithKeywords		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))(	otherlv_5='mapto' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_0_1_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLDtoCrossReference_2_0_1_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_7='properties' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_0_2_0());
+    }
+	otherlv_8='(' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_0_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_2_2_0()); 
+	    }
+		lv_properties_9_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_9_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_10=', ' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_0_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_2_3_1_0()); 
+	    }
+		lv_properties_11_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_11_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_12=')' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_0_2_4());
+    }
+)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperDtoMapperParserRuleCall_2_0_3_0_0()); 
+	    }
+		lv_mapper_13_0=ruleDtoMapper		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"mapper",
+        		lv_mapper_13_0, 
+        		"DtoMapper");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_14=';' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_0_3_1());
+    }
+)?))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoInheritedReferenceAnnotationInfoAction_2_1_0(),
+            $current);
+    }
+)(	otherlv_16='inherit ref' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtoFeatureAccess().getInheritRefKeyword_2_1_1_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getInheritedFeatureLEntityReferenceCrossReference_2_1_1_1_0()); 
+	    }
+		ruleValidLFQNWithKeywords		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))	otherlv_18='mapto' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_1_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLDtoCrossReference_2_1_3_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_20='properties' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_1_4_0());
+    }
+	otherlv_21='(' 
+    {
+    	newLeafNode(otherlv_21, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_1_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_4_2_0()); 
+	    }
+		lv_properties_22_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_22_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_23=', ' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_1_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_4_3_1_0()); 
+	    }
+		lv_properties_24_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_24_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_25=')' 
+    {
+    	newLeafNode(otherlv_25, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_1_4_4());
+    }
+)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperDtoMapperParserRuleCall_2_1_5_0_0()); 
+	    }
+		lv_mapper_26_0=ruleDtoMapper		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"mapper",
+        		lv_mapper_26_0, 
+        		"DtoMapper");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_27=';' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_1_5_1());
+    }
+)?))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_2_0(),
+            $current);
+    }
+)((
+(
+		lv_transient_29_0=	'transient' 
+    {
+        newLeafNode(lv_transient_29_0, grammarAccess.getDtoFeatureAccess().getTransientTransientKeyword_2_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "transient", true, "transient");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_2_1_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_31='[' 
+    {
+    	newLeafNode(otherlv_31, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_2_1_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_2_1_2_1_0()); 
+	    }
+		lv_constraints_32_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_32_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_33=']' 
+    {
+    	newLeafNode(otherlv_33, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_2_1_2_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_2_1_3_0()); 
+	    }
+		lv_name_34_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_34_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_35='properties' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_2_1_4_0());
+    }
+	otherlv_36='(' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_2_1_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_2_1_4_2_0()); 
+	    }
+		lv_properties_37_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_37_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_38=', ' 
+    {
+    	newLeafNode(otherlv_38, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_2_1_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_2_1_4_3_1_0()); 
+	    }
+		lv_properties_39_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_39_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_40=')' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_2_1_4_4());
+    }
+)?(	otherlv_41=';' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_2_1_5());
+    }
+)?))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_3_0(),
+            $current);
+    }
+)((
+(
+		lv_dirty_43_0=	'dirty' 
+    {
+        newLeafNode(lv_dirty_43_0, grammarAccess.getDtoFeatureAccess().getDirtyDirtyKeyword_2_3_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "dirty", true, "dirty");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_3_1_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_3_1_2_0()); 
+	    }
+		lv_name_45_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_45_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_46='properties' 
+    {
+    	newLeafNode(otherlv_46, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_3_1_3_0());
+    }
+	otherlv_47='(' 
+    {
+    	newLeafNode(otherlv_47, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_3_1_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_3_1_3_2_0()); 
+	    }
+		lv_properties_48_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_48_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_49=', ' 
+    {
+    	newLeafNode(otherlv_49, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_3_1_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_3_1_3_3_1_0()); 
+	    }
+		lv_properties_50_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_50_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_51=')' 
+    {
+    	newLeafNode(otherlv_51, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_3_1_3_4());
+    }
+)?(	otherlv_52=';' 
+    {
+    	newLeafNode(otherlv_52, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_3_1_4());
+    }
+)?))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_4_0(),
+            $current);
+    }
+)((
+(
+		lv_derived_54_0=	'derived' 
+    {
+        newLeafNode(lv_derived_54_0, grammarAccess.getDtoFeatureAccess().getDerivedDerivedKeyword_2_4_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "derived", true, "derived");
+	    }
+
+)
+)(
+(
+		lv_domainDescription_55_0=	'domainDescription' 
+    {
+        newLeafNode(lv_domainDescription_55_0, grammarAccess.getDtoFeatureAccess().getDomainDescriptionDomainDescriptionKeyword_2_4_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "domainDescription", true, "domainDescription");
+	    }
+
+)
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_4_1_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_4_1_3_0()); 
+	    }
+		lv_name_57_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_57_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_58='properties' 
+    {
+    	newLeafNode(otherlv_58, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_4_1_4_0());
+    }
+	otherlv_59='(' 
+    {
+    	newLeafNode(otherlv_59, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_4_1_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_4_1_4_2_0()); 
+	    }
+		lv_properties_60_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_60_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_61=', ' 
+    {
+    	newLeafNode(otherlv_61, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_4_1_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_4_1_4_3_1_0()); 
+	    }
+		lv_properties_62_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_62_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_63=')' 
+    {
+    	newLeafNode(otherlv_63, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_4_1_4_4());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_4_1_5_0()); 
+	    }
+		lv_derivedGetterExpression_64_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"derivedGetterExpression",
+        		lv_derivedGetterExpression_64_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_5_0(),
+            $current);
+    }
+)((
+(
+		lv_id_66_0=	'id' 
+    {
+        newLeafNode(lv_id_66_0, grammarAccess.getDtoFeatureAccess().getIdIdKeyword_2_5_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "id", true, "id");
+	    }
+
+)
+)
+    |(
+(
+		lv_version_67_0=	'version' 
+    {
+        newLeafNode(lv_version_67_0, grammarAccess.getDtoFeatureAccess().getVersionVersionKeyword_2_5_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "version", true, "version");
+	    }
+
+)
+)
+    |(
+(
+		lv_uuid_68_0=	'uuid' 
+    {
+        newLeafNode(lv_uuid_68_0, grammarAccess.getDtoFeatureAccess().getUuidUuidKeyword_2_5_1_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "uuid", true, "uuid");
+	    }
+
+)
+)
+    |(
+(
+		lv_domainDescription_69_0=	'domainDescription' 
+    {
+        newLeafNode(lv_domainDescription_69_0, grammarAccess.getDtoFeatureAccess().getDomainDescriptionDomainDescriptionKeyword_2_5_1_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "domainDescription", true, "domainDescription");
+	    }
+
+)
+)
+    |(
+(
+		lv_domainKey_70_0=	'domainKey' 
+    {
+        newLeafNode(lv_domainKey_70_0, grammarAccess.getDtoFeatureAccess().getDomainKeyDomainKeyKeyword_2_5_1_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "domainKey", true, "domainKey");
+	    }
+
+)
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_5_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_5_3_0()); 
+	    }
+		lv_multiplicity_72_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_72_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_73='[' 
+    {
+    	newLeafNode(otherlv_73, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_5_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_5_4_1_0()); 
+	    }
+		lv_constraints_74_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_74_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_75=']' 
+    {
+    	newLeafNode(otherlv_75, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_5_4_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_5_5_0()); 
+	    }
+		lv_name_76_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_76_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_77='properties' 
+    {
+    	newLeafNode(otherlv_77, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_5_6_0());
+    }
+	otherlv_78='(' 
+    {
+    	newLeafNode(otherlv_78, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_5_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_5_6_2_0()); 
+	    }
+		lv_properties_79_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_79_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_80=', ' 
+    {
+    	newLeafNode(otherlv_80, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_5_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_5_6_3_1_0()); 
+	    }
+		lv_properties_81_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_81_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_82=')' 
+    {
+    	newLeafNode(otherlv_82, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_5_6_4());
+    }
+)?(	otherlv_83=';' 
+    {
+    	newLeafNode(otherlv_83, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_5_7());
+    }
+)?)
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoReferenceAnnotationInfoAction_2_6_0(),
+            $current);
+    }
+)(	otherlv_85='ref' 
+    {
+    	newLeafNode(otherlv_85, grammarAccess.getDtoFeatureAccess().getRefKeyword_2_6_1_0());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 0);
+	 				}
+					({true}?=>(
+(
+		lv_cascading_87_0=	'cascade' 
+    {
+        newLeafNode(lv_cascading_87_0, grammarAccess.getDtoFeatureAccess().getCascadingCascadeKeyword_2_6_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "cascading", true, "cascade");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 1);
+	 				}
+					({true}?=>(
+(
+		lv_lazy_88_0=	'lazy' 
+    {
+        newLeafNode(lv_lazy_88_0, grammarAccess.getDtoFeatureAccess().getLazyLazyKeyword_2_6_1_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+       		setWithLastConsumed($current, "lazy", true, "lazy");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+	}
+
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLDtoCrossReference_2_6_1_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_6_1_3_0()); 
+	    }
+		lv_multiplicity_90_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_90_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_91='[' 
+    {
+    	newLeafNode(otherlv_91, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_6_1_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_6_1_4_1_0()); 
+	    }
+		lv_constraints_92_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_92_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_93=']' 
+    {
+    	newLeafNode(otherlv_93, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_6_1_4_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_6_1_5_0()); 
+	    }
+		lv_name_94_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_94_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_95='opposite' 
+    {
+    	newLeafNode(otherlv_95, grammarAccess.getDtoFeatureAccess().getOppositeKeyword_2_6_1_6_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getOppositeLDtoReferenceCrossReference_2_6_1_6_1_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_97='properties' 
+    {
+    	newLeafNode(otherlv_97, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_6_1_7_0());
+    }
+	otherlv_98='(' 
+    {
+    	newLeafNode(otherlv_98, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_6_1_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_6_1_7_2_0()); 
+	    }
+		lv_properties_99_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_99_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_100=', ' 
+    {
+    	newLeafNode(otherlv_100, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_6_1_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_6_1_7_3_1_0()); 
+	    }
+		lv_properties_101_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_101_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_102=')' 
+    {
+    	newLeafNode(otherlv_102, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_6_1_7_4());
+    }
+)?)((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperLimitedMapperDtoMapperParserRuleCall_2_6_2_0_0()); 
+	    }
+		lv_mapper_103_0=ruleLimitedMapperDtoMapper		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"mapper",
+        		lv_mapper_103_0, 
+        		"LimitedMapperDtoMapper");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_104=';' 
+    {
+    	newLeafNode(otherlv_104, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_6_2_1());
+    }
+)?))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_7_0(),
+            $current);
+    }
+)	otherlv_106='var' 
+    {
+    	newLeafNode(otherlv_106, grammarAccess.getDtoFeatureAccess().getVarKeyword_2_7_1());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtoFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_7_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_7_3_0()); 
+	    }
+		lv_multiplicity_108_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_108_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_109='[' 
+    {
+    	newLeafNode(otherlv_109, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_7_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_7_4_1_0()); 
+	    }
+		lv_constraints_110_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_110_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_111=']' 
+    {
+    	newLeafNode(otherlv_111, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_7_4_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_7_5_0()); 
+	    }
+		lv_name_112_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_112_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_113='properties' 
+    {
+    	newLeafNode(otherlv_113, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_7_6_0());
+    }
+	otherlv_114='(' 
+    {
+    	newLeafNode(otherlv_114, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_7_6_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_7_6_2_0()); 
+	    }
+		lv_properties_115_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_115_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_116=', ' 
+    {
+    	newLeafNode(otherlv_116, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_7_6_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_7_6_3_1_0()); 
+	    }
+		lv_properties_117_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_117_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_118=')' 
+    {
+    	newLeafNode(otherlv_118, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_7_6_4());
+    }
+)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperLimitedMapperDtoMapperParserRuleCall_2_7_7_0_0()); 
+	    }
+		lv_mapper_119_0=ruleLimitedMapperDtoMapper		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"mapper",
+        		lv_mapper_119_0, 
+        		"LimitedMapperDtoMapper");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_120=';' 
+    {
+    	newLeafNode(otherlv_120, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_7_7_1());
+    }
+)?))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getDtoFeatureAccess().getLDtoOperationAnnotationInfoAction_2_8_0(),
+            $current);
+    }
+)(	otherlv_122='def' 
+    {
+    	newLeafNode(otherlv_122, grammarAccess.getDtoFeatureAccess().getDefKeyword_2_8_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeJvmTypeReferenceParserRuleCall_2_8_1_1_0()); 
+	    }
+		lv_type_123_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_123_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_8_1_2_0()); 
+	    }
+		lv_name_124_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_124_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_125='(' 
+    {
+    	newLeafNode(otherlv_125, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_8_1_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_0_0()); 
+	    }
+		lv_params_126_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_126_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_127=', ' 
+    {
+    	newLeafNode(otherlv_127, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_8_1_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_1_1_0()); 
+	    }
+		lv_params_128_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_128_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_129=')' 
+    {
+    	newLeafNode(otherlv_129, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_8_1_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getBodyXExpressionParserRuleCall_2_8_1_6_0()); 
+	    }
+		lv_body_130_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_130_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))))
+;
+
+
+
+
+
+// Entry rule entryRuleDtoMapper
+entryRuleDtoMapper returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtoMapperRule()); }
+	 iv_ruleDtoMapper=ruleDtoMapper 
+	 { $current=$iv_ruleDtoMapper.current; } 
+	 EOF 
+;
+
+// Rule DtoMapper
+ruleDtoMapper returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='{' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDtoMapperAccess().getLeftCurlyBracketKeyword_0());
+    }
+	otherlv_1='toDTO' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtoMapperAccess().getToDTOKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoMapperAccess().getToDTOXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_toDTO_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoMapperRule());
+	        }
+       		set(
+       			$current, 
+       			"toDTO",
+        		lv_toDTO_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='fromDTO' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtoMapperAccess().getFromDTOKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtoMapperAccess().getFromDTOXExpressionParserRuleCall_3_1_0()); 
+	    }
+		lv_fromDTO_4_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtoMapperRule());
+	        }
+       		set(
+       			$current, 
+       			"fromDTO",
+        		lv_fromDTO_4_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_5='}' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtoMapperAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLimitedMapperDtoMapper
+entryRuleLimitedMapperDtoMapper returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLimitedMapperDtoMapperRule()); }
+	 iv_ruleLimitedMapperDtoMapper=ruleLimitedMapperDtoMapper 
+	 { $current=$iv_ruleLimitedMapperDtoMapper.current; } 
+	 EOF 
+;
+
+// Rule LimitedMapperDtoMapper
+ruleLimitedMapperDtoMapper returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='{' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getLimitedMapperDtoMapperAccess().getLeftCurlyBracketKeyword_0());
+    }
+	otherlv_1='toDTO' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getLimitedMapperDtoMapperAccess().getToDTOKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLimitedMapperDtoMapperAccess().getToDTOXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_toDTO_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLimitedMapperDtoMapperRule());
+	        }
+       		set(
+       			$current, 
+       			"toDTO",
+        		lv_toDTO_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3='}' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getLimitedMapperDtoMapperAccess().getRightCurlyBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedPackageRule()); }
+	 iv_ruleTypedPackage=ruleTypedPackage 
+	 { $current=$iv_ruleTypedPackage.current; } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"Import");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+	    }
+		lv_types_5_0=ruleType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"types",
+        		lv_types_5_0, 
+        		"Type");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleType
+entryRuleType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRule()); }
+	 iv_ruleType=ruleType 
+	 { $current=$iv_ruleType.current; } 
+	 EOF 
+;
+
+// Rule Type
+ruleType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+    }
+    this_ScalarType_0=ruleScalarType
+    { 
+        $current = $this_ScalarType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+    }
+    this_Class_1=ruleClass
+    { 
+        $current = $this_Class_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportRule()); }
+	 iv_ruleImport=ruleImport 
+	 { $current=$iv_ruleImport.current; } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"LQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeRule()); }
+	 iv_ruleDataType=ruleDataType 
+	 { $current=$iv_ruleDataType.current; } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datatype' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2='jvmType' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+	    }
+		lv_jvmTypeReference_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"jvmTypeReference",
+        		lv_jvmTypeReference_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_asPrimitive_4_0=	'as primitive' 
+    {
+        newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asPrimitive", true, "as primitive");
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+	    }
+		lv_constraints_5_0=ruleDataTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"DataTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_6='properties' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+    }
+	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+	    }
+		lv_properties_8_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_8_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=', ' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+	    }
+		lv_properties_10_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_10_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11=')' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+    }
+)?)
+    |((
+(
+		lv_date_12_0=	'dateType' 
+    {
+        newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "date", true, "dateType");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+	    }
+		lv_dateType_13_0=ruleDateType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateType",
+        		lv_dateType_13_0, 
+        		"DateType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+	    }
+		lv_constraints_14_0=ruleDateConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_14_0, 
+        		"DateConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_15='properties' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+    }
+	otherlv_16='(' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+	    }
+		lv_properties_17_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_17_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_18=', ' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+	    }
+		lv_properties_19_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_19_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_20=')' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+    }
+)?)
+    |((
+(
+		lv_asBlob_21_0=	'as blob' 
+    {
+        newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asBlob", true, "as blob");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+	    }
+		lv_constraints_22_0=ruleBlobTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_22_0, 
+        		"BlobTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_23='properties' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+    }
+	otherlv_24='(' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+	    }
+		lv_properties_25_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_25_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=', ' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+	    }
+		lv_properties_27_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_27_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28=')' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+    }
+)?))(	otherlv_29=';' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAllConstraints
+entryRuleAllConstraints returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAllConstraintsRule()); }
+	 iv_ruleAllConstraints=ruleAllConstraints 
+	 { $current=$iv_ruleAllConstraints.current; } 
+	 EOF 
+;
+
+// Rule AllConstraints
+ruleAllConstraints returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); 
+    }
+    this_DtCFuture_11=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); 
+    }
+    this_DtCPast_12=ruleDtCPast
+    { 
+        $current = $this_DtCPast_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeConstraintRule()); }
+	 iv_ruleDataTypeConstraint=ruleDataTypeConstraint 
+	 { $current=$iv_ruleDataTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDateConstraintRule()); }
+	 iv_ruleDateConstraint=ruleDateConstraint 
+	 { $current=$iv_ruleDateConstraint.current; } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+    }
+    this_DtCFuture_0=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+    }
+    this_DtCPast_1=ruleDtCPast
+    { 
+        $current = $this_DtCPast_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+    }
+    this_DtCNotNull_2=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+    }
+    this_DtCNull_3=ruleDtCNull
+    { 
+        $current = $this_DtCNull_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); }
+	 iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint 
+	 { $current=$iv_ruleBlobTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+    }
+    this_DtCNotNull_0=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+    }
+    this_DtCNull_1=ruleDtCNull
+    { 
+        $current = $this_DtCNull_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertFalseRule()); }
+	 iv_ruleDtCAssertFalse=ruleDtCAssertFalse 
+	 { $current=$iv_ruleDtCAssertFalse.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+            $current);
+    }
+)	otherlv_1='isFalse' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertTrueRule()); }
+	 iv_ruleDtCAssertTrue=ruleDtCAssertTrue 
+	 { $current=$iv_ruleDtCAssertTrue.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+            $current);
+    }
+)	otherlv_1='isTrue' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); }
+	 iv_ruleDtCDecimalMax=ruleDtCDecimalMax 
+	 { $current=$iv_ruleDtCDecimalMax.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMinRule()); }
+	 iv_ruleDtCDecimalMin=ruleDtCDecimalMin 
+	 { $current=$iv_ruleDtCDecimalMin.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDigitsRule()); }
+	 iv_ruleDtCDigits=ruleDtCDigits 
+	 { $current=$iv_ruleDtCDigits.current; } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+            $current);
+    }
+)	otherlv_1='digits' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_intDigits_3_0=RULE_INT
+		{
+			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"intDigits",
+        		lv_intDigits_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_fractionDigits_5_0=RULE_INT
+		{
+			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fractionDigits",
+        		lv_fractionDigits_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCFutureRule()); }
+	 iv_ruleDtCFuture=ruleDtCFuture 
+	 { $current=$iv_ruleDtCFuture.current; } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+            $current);
+    }
+)	otherlv_1='isFuture' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCPastRule()); }
+	 iv_ruleDtCPast=ruleDtCPast 
+	 { $current=$iv_ruleDtCPast.current; } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+            $current);
+    }
+)	otherlv_1='isPast' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMaxRule()); }
+	 iv_ruleDtCNumericMax=ruleDtCNumericMax 
+	 { $current=$iv_ruleDtCNumericMax.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMinRule()); }
+	 iv_ruleDtCNumericMin=ruleDtCNumericMin 
+	 { $current=$iv_ruleDtCNumericMin.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNotNullRule()); }
+	 iv_ruleDtCNotNull=ruleDtCNotNull 
+	 { $current=$iv_ruleDtCNotNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNotNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNullRule()); }
+	 iv_ruleDtCNull=ruleDtCNull 
+	 { $current=$iv_ruleDtCNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCRegExRule()); }
+	 iv_ruleDtCRegEx=ruleDtCRegEx 
+	 { $current=$iv_ruleDtCRegEx.current; } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+            $current);
+    }
+)	otherlv_1='regex' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_pattern_3_0=RULE_STRING
+		{
+			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCRegExRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"pattern",
+        		lv_pattern_3_0, 
+        		"STRING");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCSizeRule()); }
+	 iv_ruleDtCSize=ruleDtCSize 
+	 { $current=$iv_ruleDtCSize.current; } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+            $current);
+    }
+)	otherlv_1='minMaxSize' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_min_3_0=RULE_INT
+		{
+			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_max_5_0=RULE_INT
+		{
+			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"max",
+        		lv_max_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getScalarTypeRule()); }
+	 iv_ruleScalarType=ruleScalarType 
+	 { $current=$iv_ruleScalarType.current; } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+    }
+    this_DataType_0=ruleDataType
+    { 
+        $current = $this_DataType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+    }
+    this_Enum_1=ruleEnum
+    { 
+        $current = $this_Enum_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumRule()); }
+	 iv_ruleEnum=ruleEnum 
+	 { $current=$iv_ruleEnum.current; } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='enum' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+	    }
+		lv_literals_3_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_3_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+	    }
+		lv_literals_5_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_5_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumLiteralRule()); }
+	 iv_ruleEnumLiteral=ruleEnumLiteral 
+	 { $current=$iv_ruleEnumLiteral.current; } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=RULE_ID
+		{
+			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"ID");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+	 				}
+					({true}?=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+    }
+(
+(
+		lv_default_3_0=	'asDefault' 
+    {
+        newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "default", true, "asDefault");
+	    }
+
+)
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_null_4_0=	'forNull' 
+    {
+        newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "null", true, "forNull");
+	    }
+
+)
+)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+    }
+(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumLiteralAccess().getEqualsSignKeyword_1_1_2_0());
+    }
+(
+(
+		lv_value_7_0=RULE_INT
+		{
+			newLeafNode(lv_value_7_0, grammarAccess.getEnumLiteralAccess().getValueINTTerminalRuleCall_1_1_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"INT");
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationDefRule()); }
+	 iv_ruleAnnotationDef=ruleAnnotationDef 
+	 { $current=$iv_ruleAnnotationDef.current; } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationDefAccess().getAnnotationXAnnotationParserRuleCall_0_0()); 
+	    }
+		lv_annotation_0_0=ruleXAnnotation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationDefRule());
+	        }
+       		set(
+       			$current, 
+       			"annotation",
+        		lv_annotation_0_0, 
+        		"XAnnotation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResultFilterRule()); }
+	 iv_ruleResultFilter=ruleResultFilter 
+	 { $current=$iv_ruleResultFilter.current; } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); 
+    }
+    this_AttributeMatchingConstraint_0=ruleAttributeMatchingConstraint
+    { 
+        $current = $this_AttributeMatchingConstraint_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 iv_ruleAttributeMatchingConstraint=ruleAttributeMatchingConstraint 
+	 { $current=$iv_ruleAttributeMatchingConstraint.current; } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_0=RULE_ID
+	{
+		newLeafNode(otherlv_0, grammarAccess.getAttributeMatchingConstraintAccess().getAttributeLAttributeCrossReference_0_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeLComparatorTypeEnumRuleCall_1_0()); 
+	    }
+		lv_comparatorType_1_0=ruleLComparatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		set(
+       			$current, 
+       			"comparatorType",
+        		lv_comparatorType_1_0, 
+        		"LComparatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_matchingValue_2_0=RULE_STRING
+		{
+			newLeafNode(lv_matchingValue_2_0, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueSTRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"matchingValue",
+        		lv_matchingValue_2_0, 
+        		"STRING");
+	    }
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralLEnumLiteralCrossReference_2_1_0()); 
+	}
+
+)
+))(	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getKeyAndValueRule()); }
+	 iv_ruleKeyAndValue=ruleKeyAndValue 
+	 { $current=$iv_ruleKeyAndValue.current; } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='key' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getKeyAndValueAccess().getKeyKeyword_0());
+    }
+	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+		lv_key_2_0=RULE_STRING
+		{
+			newLeafNode(lv_key_2_0, grammarAccess.getKeyAndValueAccess().getKeySTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_2_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_3='value' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getKeyAndValueAccess().getValueKeyword_3());
+    }
+	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_4());
+    }
+(
+(
+		lv_value_5_0=RULE_STRING
+		{
+			newLeafNode(lv_value_5_0, grammarAccess.getKeyAndValueAccess().getValueSTRINGTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 iv_ruleLQualifiedNameWithWildCard=ruleLQualifiedNameWithWildCard 
+	 { $current=$iv_ruleLQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLFQNRule()); } 
+	 iv_ruleLFQN=ruleLFQN 
+	 { $current=$iv_ruleLFQN.current.getText(); }  
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+    }
+    this_ID_2=RULE_ID    {
+		$current.merge(this_ID_2);
+    }
+
+    { 
+    newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 iv_ruleTYPE_CROSS_REFERENCE=ruleTYPE_CROSS_REFERENCE 
+	 { $current=$iv_ruleTYPE_CROSS_REFERENCE.current.getText(); }  
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 iv_ruleValidIDWithKeywords=ruleValidIDWithKeywords 
+	 { $current=$iv_ruleValidIDWithKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='cachable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
+    }
+
+    |
+	kw='id' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
+    }
+
+    |
+	kw='uuid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
+    }
+
+    |
+	kw='transient' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
+    }
+
+    |
+	kw='version' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
+    }
+
+    |(
+	kw='derived' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5_0()); 
+    }
+
+	kw='collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_5_1()); 
+    }
+)
+    |
+	kw='refers' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); 
+    }
+
+    |
+	kw='settings' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); 
+    }
+
+    |
+	kw='lazy' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); 
+    }
+
+    |
+	kw='notnull' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); 
+    }
+
+    |
+	kw='dto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); 
+    }
+
+    |
+	kw='date' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); 
+    }
+
+    |
+	kw='mapto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); 
+    }
+
+    |
+	kw='ref' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); 
+    }
+
+    |
+	kw='cascade' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); 
+    }
+
+    |
+	kw='var' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); 
+    }
+
+    |    this_ID_17=RULE_ID    {
+		$current.merge(this_ID_17);
+    }
+
+    { 
+    newLeafNode(this_ID_17, grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleValidLFQNWithKeywords
+entryRuleValidLFQNWithKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidLFQNWithKeywordsRule()); } 
+	 iv_ruleValidLFQNWithKeywords=ruleValidLFQNWithKeywords 
+	 { $current=$iv_ruleValidLFQNWithKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidLFQNWithKeywords
+ruleValidLFQNWithKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getValidLFQNWithKeywordsAccess().getValidIDWithKeywordsParserRuleCall_0()); 
+    }
+    this_ValidIDWithKeywords_0=ruleValidIDWithKeywords    {
+		$current.merge(this_ValidIDWithKeywords_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidLFQNWithKeywordsAccess().getFullStopKeyword_1_0()); 
+    }
+
+    { 
+        newCompositeNode(grammarAccess.getValidLFQNWithKeywordsAccess().getValidIDWithKeywordsParserRuleCall_1_1()); 
+    }
+    this_ValidIDWithKeywords_2=ruleValidIDWithKeywords    {
+		$current.merge(this_ValidIDWithKeywords_2);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleMultiplicity
+entryRuleMultiplicity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityRule()); }
+	 iv_ruleMultiplicity=ruleMultiplicity 
+	 { $current=$iv_ruleMultiplicity.current; } 
+	 EOF 
+;
+
+// Rule Multiplicity
+ruleMultiplicity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityAccess().getLowerLowerBoundEnumRuleCall_1_0()); 
+	    }
+		lv_lower_1_0=ruleLowerBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityRule());
+	        }
+       		set(
+       			$current, 
+       			"lower",
+        		lv_lower_1_0, 
+        		"LowerBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='..' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getMultiplicityAccess().getFullStopFullStopKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityAccess().getUpperUpperBoundEnumRuleCall_2_1_0()); 
+	    }
+		lv_upper_3_0=ruleUpperBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityRule());
+	        }
+       		set(
+       			$current, 
+       			"upper",
+        		lv_upper_3_0, 
+        		"UpperBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getMultiplicityAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLIntRule()); } 
+	 iv_ruleLInt=ruleLInt 
+	 { $current=$iv_ruleLInt.current.getText(); }  
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
+    }
+)?    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLIntAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLDecimalRule()); } 
+	 iv_ruleLDecimal=ruleLDecimal 
+	 { $current=$iv_ruleLDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLDecimalAccess().getLIntParserRuleCall_0()); 
+    }
+    this_LInt_0=ruleLInt    {
+		$current.merge(this_LInt_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLDecimalAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLDecimalAccess().getINTTerminalRuleCall_1_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();
+	    }
+
+)
+))
+;
+
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.tokens b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.tokens
new file mode 100644
index 0000000..7216c11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.tokens
@@ -0,0 +1,295 @@
+'!'=112
+'!='=100
+'!=='=102
+'#'=88
+'%'=111
+'%='=93
+'&&'=98
+'&'=144
+'('=23
+')'=25
+'*'=76
+'**'=109
+'*='=91
+'+'=84
+'++'=114
+'+='=89
+', '=24
+','=87
+'-'=85
+'--'=115
+'-='=90
+'->'=104
+'.'=75
+'..'=83
+'..<'=105
+'/'=110
+'/='=92
+'0'=154
+'1'=155
+':'=122
+'::'=116
+';'=26
+'<'=94
+'<='=153
+'<>'=107
+'='=55
+'=='=99
+'==='=101
+'=>'=106
+'>'=95
+'>='=96
+'?'=143
+'?.'=117
+'?:'=108
+'@'=86
+'['=29
+']'=30
+'abstract'=13
+'as blob'=52
+'as primitive'=50
+'as'=113
+'asDefault'=71
+'autoDto'=19
+'cachable'=77
+'cascade'=39
+'case'=124
+'catch'=142
+'collection'=78
+'datatype'=48
+'date'=82
+'dateType'=51
+'def'=43
+'default'=123
+'derived'=32
+'digits'=61
+'dirty'=31
+'do'=127
+'domainDescription'=33
+'domainKey'=37
+'dto'=14
+'else'=120
+'enum'=70
+'error'=147
+'extends'=15
+'extension'=130
+'false'=133
+'finally'=140
+'for'=125
+'forNull'=72
+'fromDTO'=45
+'id'=34
+'if'=119
+'import'=47
+'info'=145
+'inherit ref'=27
+'inherit var'=20
+'instanceof'=103
+'isFalse'=53
+'isFuture'=62
+'isNotNull'=66
+'isNull'=67
+'isPast'=63
+'isTrue'=58
+'jvmType'=49
+'key'=73
+'lazy'=40
+'mapto'=21
+'maxDecimal'=59
+'maxNumber'=64
+'minDecimal'=60
+'minMaxSize'=69
+'minNumber'=65
+'msgCode'=54
+'msgI18nKey'=56
+'new'=132
+'notnull'=81
+'null'=135
+'opposite'=41
+'package'=46
+'private'=150
+'properties'=22
+'protected'=151
+'public'=152
+'ref'=38
+'refers'=79
+'regex'=68
+'return'=138
+'settings'=80
+'severity'=57
+'static'=129
+'super'=131
+'switch'=121
+'synchronized'=141
+'throw'=137
+'time'=148
+'timestamp'=149
+'toDTO'=44
+'transient'=28
+'true'=134
+'try'=139
+'typeof'=136
+'uuid'=36
+'val'=128
+'value'=74
+'var'=42
+'version'=35
+'warn'=146
+'while'=126
+'wraps'=16
+'{'=17
+'|'=118
+'||'=97
+'}'=18
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=6
+RULE_INT=4
+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__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java
new file mode 100644
index 0000000..a35580b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarLexer.java
@@ -0,0 +1,5879 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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 InternalDtoGrammarLexer 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 RULE_HEX=7;
+    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=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalDtoGrammarLexer() {;} 
+    public InternalDtoGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalDtoGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:11:7: ( 'abstract' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:11:9: 'abstract'
+            {
+            match("abstract"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:13:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:13:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:14:7: ( 'wraps' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:14:9: 'wraps'
+            {
+            match("wraps"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:15:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:16:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:17:7: ( 'autoDto' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:17:9: 'autoDto'
+            {
+            match("autoDto"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:18:7: ( 'inherit var' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:18:9: 'inherit var'
+            {
+            match("inherit var"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:19:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:19:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:20:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:20:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:21:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:22:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:23:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:24:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:25:7: ( 'inherit ref' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:25:9: 'inherit ref'
+            {
+            match("inherit ref"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:26:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:26:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:27:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:28:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:29:7: ( 'dirty' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:29:9: 'dirty'
+            {
+            match("dirty"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:30:7: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:30:9: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:31:7: ( 'domainDescription' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:31:9: 'domainDescription'
+            {
+            match("domainDescription"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:32:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:32:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:33:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:33:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:34:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:34:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:35:7: ( 'domainKey' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:35:9: 'domainKey'
+            {
+            match("domainKey"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:36:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:36:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:37:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:37:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:38:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:38:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:39:7: ( 'opposite' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:39:9: 'opposite'
+            {
+            match("opposite"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:40:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:40:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:41:7: ( 'def' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:41:9: 'def'
+            {
+            match("def"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:42:7: ( 'toDTO' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:42:9: 'toDTO'
+            {
+            match("toDTO"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:43:7: ( 'fromDTO' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:43:9: 'fromDTO'
+            {
+            match("fromDTO"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:44:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:44:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:45:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:46:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:46:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:47:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:47:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:48:7: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:48:9: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:49:7: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:49:9: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:50:7: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:50:9: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:51:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:51:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:52:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:52:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:53:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:54:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:54:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:55:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:55:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:56:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:56:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:57:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:57:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:58:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:58:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:59:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:59:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:60:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:60:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:61:7: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:61:9: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:62:7: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:62:9: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:63:7: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:63:9: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:64:7: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:64:9: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:65:7: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:65:9: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:66:7: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:66:9: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:67:7: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:67:9: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:68:7: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:68:9: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:69:7: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:69:9: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:70:7: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:70:9: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:71:7: ( 'key' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:71:9: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:72:7: ( 'value' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:72:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:73:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:73:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__75"
+
+    // $ANTLR start "T__76"
+    public final void mT__76() throws RecognitionException {
+        try {
+            int _type = T__76;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:74:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:74:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__76"
+
+    // $ANTLR start "T__77"
+    public final void mT__77() throws RecognitionException {
+        try {
+            int _type = T__77;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:75:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:75:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:76:7: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:76:9: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:77:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:77:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:78:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:78:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:79:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:79:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:80:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:80:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:81:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:81:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:82:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:82:9: '+'
+            {
+            match('+'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:83:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:83:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:84:7: ( '@' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:84:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:85:7: ( ',' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:85:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:86:7: ( '#' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:86:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:87:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:87:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:88:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:88:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:89:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:89:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:90:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:90:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:91:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:91:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:92:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:92:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:93:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:94:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:95:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:96:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:97:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:98:8: ( '!=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:99:8: ( '===' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:100:8: ( '!==' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:101:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:101:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:102:8: ( '->' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:103:8: ( '..<' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:104:8: ( '=>' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:105:8: ( '<>' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:106:8: ( '?:' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:107:8: ( '**' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:108:8: ( '/' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:109:8: ( '%' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:110:8: ( '!' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:111:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:111:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:112:8: ( '++' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:113:8: ( '--' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:114:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:115:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:116:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:117:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:117:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:118:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:118:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:119:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:119:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:120:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:121:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:121:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:122:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:122:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:123:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:123:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:124:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:124:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:125:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:125:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:126:8: ( 'val' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:126:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:127:8: ( 'static' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:127:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:128:8: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:128:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:129:8: ( 'super' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:129:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:130:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:130:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:131:8: ( 'false' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:131:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:132:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:132:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:133:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:133:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:134:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:134:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:135:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:135:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:136:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:136:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:137:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:137:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:138:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:138:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:139:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:139:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:140:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:140:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:141:8: ( '?' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:141:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:142:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:142:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:143:8: ( 'info' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:143:10: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:8: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:10: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:145:8: ( 'error' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:145:10: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:146:8: ( 'time' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:146:10: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:147:8: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:147:10: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:148:8: ( 'private' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:148:10: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:149:8: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:149:10: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:150:8: ( 'public' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:150:10: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:151:8: ( '<=' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:151:10: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:152:8: ( '0' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:152:10: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:153:8: ( '1' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:153:10: '1'
+            {
+            match('1'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__155"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12803: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12805:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12805:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12805: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12807: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12809:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12809:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12809:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12809: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12809: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12811: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12813:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12813:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12813: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12813: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12815: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12817:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12817:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12817: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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12819:16: ( . )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:12819:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=152;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:924: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:933: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:942: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:955: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:963: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:975: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:991: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:1007: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1:1015: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\4\70\2\uffff\3\70\1\uffff\1\124\2\uffff\1\70\2\uffff\10\70\1\155\2\70\1\165\1\170\1\70\1\176\1\u0082\2\uffff\1\u0088\1\u008a\1\u008d\1\u008f\1\u0091\1\u0093\1\u0095\1\u0098\1\u009a\1\u009d\1\u009f\1\u00a0\1\64\5\uffff\2\70\1\u00a7\1\uffff\3\70\1\u00ae\10\70\2\uffff\1\70\1\u00ba\2\70\1\u00c0\6\70\5\uffff\5\70\2\uffff\15\70\1\u00e3\2\uffff\6\70\1\u00ec\4\uffff\3\70\30\uffff\1\u00f1\7\uffff\1\u00a0\6\uffff\2\70\1\uffff\1\70\1\uffff\1\u00f7\3\70\1\u00fc\1\70\1\uffff\13\70\1\uffff\5\70\1\uffff\12\70\1\u0120\5\70\1\u0126\1\u0128\1\70\1\u012b\11\70\1\u0137\3\70\2\uffff\6\70\1\u0141\2\uffff\1\70\1\u0143\1\70\2\uffff\2\70\2\uffff\1\70\1\uffff\4\70\1\uffff\2\70\1\u014f\1\70\1\u0151\1\u0152\3\70\1\u0156\2\70\1\u0159\25\70\1\u016f\1\uffff\3\70\1\u0174\1\70\1\uffff\1\70\1\uffff\1\u0177\1\70\1\uffff\3\70\1\u017c\3\70\1\u0180\3\70\1\uffff\11\70\1\uffff\1\70\1\uffff\1\u018e\3\70\1\u0192\6\70\1\uffff\1\70\2\uffff\1\u019b\1\u019c\1\u019d\1\uffff\2\70\1\uffff\7\70\1\u01a7\15\70\1\uffff\1\u01b5\1\70\1\u01b7\1\70\1\uffff\1\70\1\u01ba\1\uffff\1\70\1\u01bc\2\70\1\uffff\1\70\1\u01c0\1\70\1\uffff\3\70\1\u01c5\6\70\1\u01cc\2\70\1\uffff\3\70\1\uffff\1\u01d2\7\70\3\uffff\2\70\1\u01dd\2\70\1\u01e0\1\u01e1\1\70\1\u01e3\1\uffff\13\70\1\u01ef\1\70\1\uffff\1\u01f1\1\uffff\2\70\1\uffff\1\u01f4\1\uffff\1\u01f5\2\70\1\uffff\4\70\1\uffff\4\70\1\u0200\1\u0201\1\uffff\3\70\1\u0205\1\70\1\uffff\1\u0207\1\u0208\4\70\1\u020d\3\70\1\uffff\1\u0211\1\70\2\uffff\1\70\1\uffff\2\70\1\u0216\6\70\1\u021d\1\u021e\1\uffff\1\70\1\uffff\1\70\1\u0221\2\uffff\1\u0222\3\70\1\u0226\1\u0227\1\u0228\1\u0229\2\70\2\uffff\1\70\1\u022d\1\u022e\1\uffff\1\70\2\uffff\2\70\1\u0232\1\u0233\1\uffff\1\70\1\uffff\1\70\1\uffff\1\u0238\3\70\1\uffff\6\70\2\uffff\2\70\2\uffff\1\u0244\1\70\1\u0246\4\uffff\1\u0247\1\u0248\1\70\2\uffff\1\u024a\1\70\1\u024c\2\uffff\1\u024d\2\uffff\1\70\1\uffff\1\u024f\1\70\1\u0251\2\70\1\u0254\2\70\1\u0257\1\u0258\1\u0259\1\uffff\1\70\3\uffff\1\70\1\uffff\1\70\2\uffff\1\u025d\1\uffff\1\u025e\1\uffff\1\u025f\1\u0260\1\uffff\1\u0261\1\u0262\3\uffff\1\u0263\2\70\7\uffff\2\70\1\u0268\1\70\1\uffff\3\70\1\u026d\1\uffff";
+    static final String DFA21_eofS =
+        "\u026e\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\142\1\141\1\154\1\141\2\uffff\1\144\2\141\1\uffff\1\40\2\uffff\1\150\2\uffff\1\141\1\165\1\145\2\141\1\160\1\141\1\166\1\75\2\145\1\56\1\52\1\145\1\53\1\55\2\uffff\1\52\3\75\1\174\1\46\1\75\1\56\1\72\3\60\1\44\5\uffff\1\163\1\164\1\40\1\uffff\1\157\1\147\1\146\1\44\2\164\1\165\1\163\1\162\1\141\1\151\1\162\2\uffff\1\146\1\44\1\160\1\106\1\44\1\160\1\147\1\156\1\151\1\143\1\142\5\uffff\1\141\1\104\1\160\1\162\1\155\2\uffff\1\162\1\154\1\151\1\146\1\143\1\154\1\172\1\160\1\157\1\162\1\154\1\156\1\155\1\75\2\uffff\1\164\1\151\1\141\1\160\1\156\1\171\1\74\4\uffff\1\164\1\167\1\154\30\uffff\1\75\7\uffff\1\60\6\uffff\1\164\1\157\1\142\1\145\1\uffff\1\44\1\164\2\151\1\44\1\141\1\uffff\1\141\1\145\1\155\1\145\1\157\1\160\1\154\1\156\1\145\1\164\1\157\1\uffff\1\157\1\141\1\162\1\141\1\157\1\uffff\1\164\1\104\1\103\1\104\1\160\1\166\1\153\1\154\1\156\1\145\1\44\1\124\1\145\1\157\1\145\1\163\2\44\1\144\1\44\1\145\1\165\1\143\1\150\1\143\1\154\1\171\1\157\1\155\1\44\1\163\1\141\1\124\2\uffff\1\145\3\164\1\145\1\143\1\44\2\uffff\1\156\1\44\1\154\2\uffff\1\162\1\104\2\uffff\1\146\1\uffff\1\171\1\164\1\166\1\165\1\uffff\1\151\1\164\1\44\1\156\2\44\1\162\1\163\1\145\1\44\1\162\1\141\1\44\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\2\145\2\141\1\151\1\163\1\44\1\uffff\1\117\1\157\1\167\1\44\1\151\1\uffff\1\145\1\uffff\1\44\1\162\1\uffff\1\170\1\162\1\141\1\44\1\141\1\150\1\145\1\44\1\163\1\104\1\165\1\uffff\1\145\1\154\1\171\1\162\1\151\1\143\1\151\1\162\1\150\1\uffff\1\165\1\uffff\1\44\1\141\1\164\1\141\1\44\1\163\1\145\1\154\1\156\2\171\1\uffff\1\144\2\uffff\3\44\1\uffff\1\151\1\156\1\uffff\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\44\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\162\1\143\1\164\1\147\1\143\1\151\1\uffff\1\44\1\146\1\44\1\164\1\uffff\1\157\1\44\1\uffff\1\163\1\44\1\156\1\144\1\uffff\1\142\1\44\1\143\1\uffff\1\151\1\124\1\154\1\44\1\154\1\160\1\151\1\156\1\150\1\143\1\44\1\162\1\154\1\uffff\1\143\1\157\1\165\1\uffff\1\44\1\144\1\164\1\104\2\160\1\163\1\151\3\uffff\1\164\1\143\1\44\1\145\1\162\2\44\1\165\1\44\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\2\164\2\145\1\44\1\145\1\uffff\1\44\1\uffff\1\141\1\156\1\uffff\1\44\1\uffff\1\44\1\145\1\154\1\uffff\2\164\1\117\1\154\1\uffff\1\171\1\145\1\164\1\147\2\44\1\uffff\1\157\1\154\1\164\1\44\1\154\1\uffff\2\44\4\145\1\44\1\157\1\40\1\145\1\uffff\1\44\1\145\2\uffff\1\154\1\uffff\1\155\1\145\1\44\1\113\1\155\1\145\2\151\1\145\2\44\1\uffff\1\156\1\uffff\1\155\1\44\2\uffff\1\44\1\145\1\151\1\145\4\44\1\171\1\163\2\uffff\1\156\2\44\1\uffff\1\164\2\uffff\1\163\1\171\2\44\1\uffff\1\156\1\162\1\157\1\uffff\1\44\1\154\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\145\1\144\2\uffff\1\164\1\160\2\uffff\1\44\1\157\1\44\4\uffff\2\44\1\151\2\uffff\1\44\1\143\1\44\2\uffff\1\44\2\uffff\1\146\1\uffff\1\44\1\154\1\44\1\171\1\154\1\44\1\145\1\163\3\44\1\uffff\1\156\3\uffff\1\172\1\uffff\1\162\2\uffff\1\44\1\uffff\1\44\1\uffff\2\44\1\uffff\2\44\3\uffff\1\44\1\145\1\151\7\uffff\1\144\1\160\1\44\1\164\1\uffff\1\151\1\157\1\156\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\165\1\164\1\170\1\162\2\uffff\2\163\1\165\1\uffff\1\40\2\uffff\1\171\2\uffff\1\145\1\165\1\145\1\157\1\141\1\160\1\162\1\166\1\76\1\171\1\145\1\56\1\75\1\165\1\75\1\76\2\uffff\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\170\2\154\1\172\5\uffff\1\163\1\164\1\172\1\uffff\1\157\2\162\1\172\2\164\1\165\1\163\1\162\1\141\1\151\1\162\2\uffff\1\163\1\172\1\160\1\124\1\172\1\170\1\147\1\156\1\157\1\143\1\142\5\uffff\1\171\1\104\1\160\1\162\1\155\2\uffff\2\162\1\151\2\164\1\154\1\172\1\160\1\157\1\162\1\154\1\156\1\155\1\75\2\uffff\1\166\1\151\1\141\1\160\1\156\1\171\1\74\4\uffff\1\164\1\167\1\154\30\uffff\1\75\7\uffff\1\154\6\uffff\1\164\1\157\1\160\1\145\1\uffff\1\172\1\164\2\151\1\172\1\141\1\uffff\2\145\1\155\1\145\1\157\1\160\1\154\1\156\1\145\1\164\1\157\1\uffff\1\157\1\165\1\162\1\141\1\165\1\uffff\1\164\1\116\1\111\1\116\1\164\1\166\1\153\1\154\1\156\1\145\1\172\1\124\1\145\1\157\1\145\1\163\2\172\1\144\1\172\1\145\1\165\1\145\1\150\1\143\1\154\1\171\1\157\1\155\1\172\1\163\1\141\1\124\2\uffff\1\145\3\164\1\145\1\143\1\172\2\uffff\1\156\1\172\1\154\2\uffff\1\162\1\104\2\uffff\1\146\1\uffff\1\171\1\164\1\166\1\165\1\uffff\1\151\1\164\1\172\1\156\2\172\1\162\1\163\1\145\1\172\1\162\1\141\1\172\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\2\145\2\141\1\151\1\163\1\172\1\uffff\1\117\1\157\1\167\1\172\1\151\1\uffff\1\145\1\uffff\1\172\1\162\1\uffff\1\170\1\162\1\141\1\172\1\141\1\150\1\145\1\172\1\163\1\104\1\165\1\uffff\1\145\1\154\1\171\1\162\1\151\1\143\1\151\1\162\1\150\1\uffff\1\165\1\uffff\1\172\1\141\1\164\1\141\1\172\1\163\1\145\1\154\1\156\2\171\1\uffff\1\163\2\uffff\3\172\1\uffff\1\151\1\156\1\uffff\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\172\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\162\1\143\1\164\1\147\1\143\1\151\1\uffff\1\172\1\146\1\172\1\164\1\uffff\1\157\1\172\1\uffff\1\163\1\172\1\156\1\144\1\uffff\1\142\1\172\1\143\1\uffff\1\151\1\124\1\154\1\172\1\154\1\160\1\151\1\156\1\150\1\143\1\172\1\162\1\154\1\uffff\1\143\1\157\1\165\1\uffff\1\172\1\144\1\164\1\113\2\160\1\163\1\151\3\uffff\1\164\1\143\1\172\1\145\1\162\2\172\1\165\1\172\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\2\164\2\145\1\172\1\145\1\uffff\1\172\1\uffff\1\141\1\156\1\uffff\1\172\1\uffff\1\172\1\145\1\154\1\uffff\2\164\1\117\1\154\1\uffff\1\171\1\145\1\164\1\147\2\172\1\uffff\1\157\1\154\1\164\1\172\1\154\1\uffff\2\172\4\145\1\172\1\157\1\40\1\145\1\uffff\1\172\1\145\2\uffff\1\154\1\uffff\1\155\1\145\1\172\1\113\1\155\1\145\2\151\1\145\2\172\1\uffff\1\156\1\uffff\1\155\1\172\2\uffff\1\172\1\145\1\151\1\145\4\172\1\171\1\163\2\uffff\1\156\2\172\1\uffff\1\164\2\uffff\1\163\1\171\2\172\1\uffff\1\156\1\166\1\157\1\uffff\1\172\1\154\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\145\1\144\2\uffff\1\164\1\160\2\uffff\1\172\1\157\1\172\4\uffff\2\172\1\151\2\uffff\1\172\1\143\1\172\2\uffff\1\172\2\uffff\1\146\1\uffff\1\172\1\154\1\172\1\171\1\154\1\172\1\145\1\163\3\172\1\uffff\1\156\3\uffff\1\172\1\uffff\1\162\2\uffff\1\172\1\uffff\1\172\1\uffff\2\172\1\uffff\2\172\3\uffff\1\172\1\145\1\151\7\uffff\1\144\1\160\1\172\1\164\1\uffff\1\151\1\157\1\156\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\5\uffff\1\5\1\6\3\uffff\1\13\1\uffff\1\15\1\16\1\uffff\1\21\1\22\20\uffff\1\112\1\114\15\uffff\1\u0093\2\u0094\1\u0097\1\u0098\3\uffff\1\u0093\14\uffff\1\5\1\6\13\uffff\1\13\1\14\1\113\1\15\1\16\5\uffff\1\21\1\22\16\uffff\1\136\1\53\7\uffff\1\77\1\117\1\141\1\100\3\uffff\1\115\1\146\1\110\1\116\1\134\1\147\1\111\1\112\1\114\1\120\1\u0095\1\u0096\1\142\1\121\1\143\1\137\1\u008d\1\122\1\124\1\123\1\125\1\152\1\126\1\u0084\1\uffff\1\144\1\140\1\151\1\u0083\1\150\1\156\1\u0090\1\uffff\1\u008e\1\u0092\1\u008f\1\u0091\1\u0094\1\u0097\4\uffff\1\145\6\uffff\1\163\13\uffff\1\26\5\uffff\1\153\41\uffff\1\131\1\127\7\uffff\1\135\1\107\3\uffff\1\132\1\130\2\uffff\1\46\1\50\1\uffff\1\2\4\uffff\1\37\43\uffff\1\177\5\uffff\1\36\1\uffff\1\164\2\uffff\1\32\13\uffff\1\161\11\uffff\1\75\1\uffff\1\170\13\uffff\1\106\1\uffff\1\72\1\154\3\uffff\1\u0086\2\uffff\1\u0085\25\uffff\1\172\4\uffff\1\u0088\2\uffff\1\30\4\uffff\1\160\3\uffff\1\34\15\uffff\1\173\3\uffff\1\23\10\uffff\1\u0087\1\4\1\162\11\uffff\1\11\15\uffff\1\40\1\uffff\1\175\2\uffff\1\76\1\uffff\1\70\3\uffff\1\u0082\4\uffff\1\171\6\uffff\1\167\5\uffff\1\61\12\uffff\1\43\2\uffff\1\56\1\63\1\uffff\1\67\13\uffff\1\u008c\1\uffff\1\174\2\uffff\1\103\1\176\12\uffff\1\155\1\165\3\uffff\1\7\1\uffff\1\24\1\157\4\uffff\1\3\3\uffff\1\51\4\uffff\1\52\6\uffff\1\u008a\1\42\2\uffff\1\27\1\33\3\uffff\1\41\1\74\1\u0080\1\45\3\uffff\1\105\1\1\3\uffff\1\44\1\47\1\uffff\1\10\1\17\1\uffff\1\62\13\uffff\1\101\1\uffff\1\35\1\55\1\104\1\uffff\1\73\1\uffff\1\31\1\166\1\uffff\1\66\1\uffff\1\64\2\uffff\1\65\2\uffff\1\u008b\1\20\1\u0089\3\uffff\1\133\1\57\1\54\1\60\1\71\1\12\1\102\4\uffff\1\u0081\4\uffff\1\25";
+    static final String DFA21_specialS =
+        "\1\0\u026d\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\64\2\63\2\64\1\63\22\64\1\63\1\51\1\61\1\42\1\60\1\44\1\50\1\62\1\12\1\14\1\35\1\37\1\13\1\40\1\34\1\43\1\54\1\55\10\56\1\53\1\15\1\45\1\31\1\46\1\52\1\41\32\60\1\17\1\64\1\20\1\57\1\60\1\64\1\1\1\60\1\24\1\2\1\3\1\27\2\60\1\7\1\30\1\33\1\25\1\10\1\36\1\26\1\11\1\60\1\23\1\32\1\16\1\22\1\21\1\4\3\60\1\5\1\47\1\6\uff82\64",
+            "\1\65\20\uffff\1\67\1\uffff\1\66",
+            "\1\75\3\uffff\1\73\3\uffff\1\72\5\uffff\1\74\4\uffff\1\71",
+            "\1\100\1\uffff\1\77\3\uffff\1\101\5\uffff\1\76",
+            "\1\104\6\uffff\1\103\11\uffff\1\102",
+            "",
+            "",
+            "\1\110\1\uffff\1\113\6\uffff\1\111\1\107\4\uffff\1\112",
+            "\1\114\7\uffff\1\116\11\uffff\1\115",
+            "\1\120\20\uffff\1\117\2\uffff\1\121",
+            "",
+            "\1\123",
+            "",
+            "",
+            "\1\132\1\133\5\uffff\1\130\2\uffff\1\127\6\uffff\1\131",
+            "",
+            "",
+            "\1\137\3\uffff\1\136",
+            "\1\140",
+            "\1\141",
+            "\1\142\15\uffff\1\143",
+            "\1\144",
+            "\1\145",
+            "\1\150\7\uffff\1\151\5\uffff\1\147\2\uffff\1\146",
+            "\1\152",
+            "\1\153\1\154",
+            "\1\156\16\uffff\1\160\1\161\1\uffff\1\157\1\uffff\1\162",
+            "\1\163",
+            "\1\164",
+            "\1\167\22\uffff\1\166",
+            "\1\172\11\uffff\1\171\5\uffff\1\173",
+            "\1\175\21\uffff\1\174",
+            "\1\u0081\17\uffff\1\177\1\u0080",
+            "",
+            "",
+            "\1\u0086\4\uffff\1\u0087\15\uffff\1\u0085",
+            "\1\u0089",
+            "\1\u008c\1\u008b",
+            "\1\u008e",
+            "\1\u0090",
+            "\1\u0092",
+            "\1\u0094",
+            "\1\u0097\13\uffff\1\u0096",
+            "\1\u0099",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\13\uffff\1\u009b\6\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\13\uffff\1\u009b",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\22\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\22\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e",
+            "\1\70\34\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a3",
+            "\1\u00a4",
+            "\1\u00a5\3\uffff\1\70\13\uffff\12\70\7\uffff\3\70\1\u00a6\26\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u00a8",
+            "\1\u00aa\12\uffff\1\u00a9",
+            "\1\u00ac\13\uffff\1\u00ab",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\14\70\1\u00ad\15\70",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "",
+            "",
+            "\1\u00b9\1\uffff\1\u00b7\12\uffff\1\u00b8",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00bb",
+            "\1\u00bc\7\uffff\1\u00bf\1\uffff\1\u00be\3\uffff\1\u00bd",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00c1\7\uffff\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c6\5\uffff\1\u00c5",
+            "\1\u00c7",
+            "\1\u00c8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00c9\23\uffff\1\u00ca\3\uffff\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "",
+            "",
+            "\1\u00d0",
+            "\1\u00d2\5\uffff\1\u00d1",
+            "\1\u00d3",
+            "\1\u00d4\1\u00d5\14\uffff\1\u00d6",
+            "\1\u00d8\17\uffff\1\u00d7\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "",
+            "",
+            "\1\u00e5\1\uffff\1\u00e4",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\22\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f5\15\uffff\1\u00f4",
+            "\1\u00f6",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\1\u00fb\31\70",
+            "\1\u00fd",
+            "",
+            "\1\u00fe\3\uffff\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "",
+            "\1\u010a",
+            "\1\u010b\23\uffff\1\u010c",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f\5\uffff\1\u0110",
+            "",
+            "\1\u0111",
+            "\1\u0112\11\uffff\1\u0113",
+            "\1\u0114\5\uffff\1\u0115",
+            "\1\u0116\10\uffff\1\u0118\1\u0117",
+            "\1\u0119\3\uffff\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\24\70\1\u0127\5\70",
+            "\1\u0129",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\4\70\1\u012a\25\70",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e\1\uffff\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\70\13\uffff\12\70\7\uffff\15\70\1\u0136\14\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "",
+            "",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "\1\u0142",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0144",
+            "",
+            "",
+            "\1\u0145",
+            "\1\u0146",
+            "",
+            "",
+            "\1\u0147",
+            "",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\70\13\uffff\12\70\7\uffff\23\70\1\u014e\6\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0150",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\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\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "\1\u016e",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\22\70\1\u0173\7\70",
+            "\1\u0175",
+            "",
+            "\1\u0176",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0178",
+            "",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "",
+            "\1\u018d",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\u0191",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "",
+            "\1\u0199\16\uffff\1\u019a",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u019e",
+            "\1\u019f",
+            "",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\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\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01b6",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01b8",
+            "",
+            "\1\u01b9",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u01bb",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01bd",
+            "\1\u01be",
+            "",
+            "\1\u01bf",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01c1",
+            "",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01c6",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01cd",
+            "\1\u01ce",
+            "",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\u01d5\6\uffff\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\1\u01da",
+            "",
+            "",
+            "",
+            "\1\u01db",
+            "\1\u01dc",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01e2",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u01e4",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01f0",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u01f2",
+            "\1\u01f3",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u01f6",
+            "\1\u01f7",
+            "",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0206",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0209",
+            "\1\u020a",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\u0210",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0212",
+            "",
+            "",
+            "\1\u0213",
+            "",
+            "\1\u0214",
+            "\1\u0215",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u021f",
+            "",
+            "\1\u0220",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u022a",
+            "\1\u022b",
+            "",
+            "",
+            "\1\u022c",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u022f",
+            "",
+            "",
+            "\1\u0230",
+            "\1\u0231",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u0234",
+            "\1\u0236\3\uffff\1\u0235",
+            "\1\u0237",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\u0240",
+            "\1\u0241",
+            "",
+            "",
+            "\1\u0242",
+            "\1\u0243",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0245",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0249",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u024b",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "\1\u024e",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0250",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0255",
+            "\1\u0256",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\u025a",
+            "",
+            "",
+            "",
+            "\1\u025b",
+            "",
+            "\1\u025c",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "",
+            "",
+            "",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0264",
+            "\1\u0265",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0266",
+            "\1\u0267",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            "\1\u0269",
+            "",
+            "\1\u026a",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\70\13\uffff\12\70\7\uffff\32\70\4\uffff\1\70\1\uffff\32\70",
+            ""
+    };
+
+    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 | 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=='a') ) {s = 1;}
+
+                        else if ( (LA21_0=='d') ) {s = 2;}
+
+                        else if ( (LA21_0=='e') ) {s = 3;}
+
+                        else if ( (LA21_0=='w') ) {s = 4;}
+
+                        else if ( (LA21_0=='{') ) {s = 5;}
+
+                        else if ( (LA21_0=='}') ) {s = 6;}
+
+                        else if ( (LA21_0=='i') ) {s = 7;}
+
+                        else if ( (LA21_0=='m') ) {s = 8;}
+
+                        else if ( (LA21_0=='p') ) {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=='t') ) {s = 14;}
+
+                        else if ( (LA21_0=='[') ) {s = 15;}
+
+                        else if ( (LA21_0==']') ) {s = 16;}
+
+                        else if ( (LA21_0=='v') ) {s = 17;}
+
+                        else if ( (LA21_0=='u') ) {s = 18;}
+
+                        else if ( (LA21_0=='r') ) {s = 19;}
+
+                        else if ( (LA21_0=='c') ) {s = 20;}
+
+                        else if ( (LA21_0=='l') ) {s = 21;}
+
+                        else if ( (LA21_0=='o') ) {s = 22;}
+
+                        else if ( (LA21_0=='f') ) {s = 23;}
+
+                        else if ( (LA21_0=='j') ) {s = 24;}
+
+                        else if ( (LA21_0=='=') ) {s = 25;}
+
+                        else if ( (LA21_0=='s') ) {s = 26;}
+
+                        else if ( (LA21_0=='k') ) {s = 27;}
+
+                        else if ( (LA21_0=='.') ) {s = 28;}
+
+                        else if ( (LA21_0=='*') ) {s = 29;}
+
+                        else if ( (LA21_0=='n') ) {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=='0') ) {s = 44;}
+
+                        else if ( (LA21_0=='1') ) {s = 45;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 46;}
+
+                        else if ( (LA21_0=='^') ) {s = 47;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 48;}
+
+                        else if ( (LA21_0=='\"') ) {s = 49;}
+
+                        else if ( (LA21_0=='\'') ) {s = 50;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\u0000' && LA21_0<='\b')||(LA21_0>='\u000B' && LA21_0<='\f')||(LA21_0>='\u000E' && LA21_0<='\u001F')||LA21_0=='\\'||LA21_0=='`'||(LA21_0>='~' && LA21_0<='\uFFFF')) ) {s = 52;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarParser.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarParser.java
new file mode 100644
index 0000000..d4c18cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+
+
+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 InternalDtoGrammarParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'abstract'", "'dto'", "'extends'", "'wraps'", "'{'", "'}'", "'autoDto'", "'inherit var'", "'mapto'", "'properties'", "'('", "', '", "')'", "';'", "'inherit ref'", "'transient'", "'['", "']'", "'dirty'", "'derived'", "'domainDescription'", "'id'", "'version'", "'uuid'", "'domainKey'", "'ref'", "'cascade'", "'lazy'", "'opposite'", "'var'", "'def'", "'toDTO'", "'fromDTO'", "'package'", "'import'", "'datatype'", "'jvmType'", "'as primitive'", "'dateType'", "'as blob'", "'isFalse'", "'msgCode'", "'='", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'asDefault'", "'forNull'", "'key'", "'value'", "'.'", "'*'", "'cachable'", "'collection'", "'refers'", "'settings'", "'notnull'", "'date'", "'..'", "'+'", "'-'", "'@'", "','", "'#'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'=>'", "'<>'", "'?:'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'val'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'1'"
+    };
+    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 RULE_HEX=7;
+    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=6;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=4;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__155=155;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=5;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalDtoGrammarParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalDtoGrammarParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalDtoGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g"; }
+
+
+
+     	private DtoGrammarGrammarAccess grammarAccess;
+     	
+        public InternalDtoGrammarParser(TokenStream input, DtoGrammarGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "LDTOModel";	
+       	}
+       	
+       	@Override
+       	protected DtoGrammarGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleLDTOModel"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:68:1: entryRuleLDTOModel returns [EObject current=null] : iv_ruleLDTOModel= ruleLDTOModel EOF ;
+    public final EObject entryRuleLDTOModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLDTOModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:69:2: (iv_ruleLDTOModel= ruleLDTOModel EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:70:2: iv_ruleLDTOModel= ruleLDTOModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getLDTOModelRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLDTOModel_in_entryRuleLDTOModel75);
+            iv_ruleLDTOModel=ruleLDTOModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleLDTOModel; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLDTOModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLDTOModel"
+
+
+    // $ANTLR start "ruleLDTOModel"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:77:1: ruleLDTOModel returns [EObject current=null] : ( (lv_packages_0_0= ruleTypedPackage ) )* ;
+    public final EObject ruleLDTOModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:80:28: ( ( (lv_packages_0_0= ruleTypedPackage ) )* )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==46) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:83:3: lv_packages_0_0= ruleTypedPackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getLDTOModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_ruleLDTOModel130);
+            	    lv_packages_0_0=ruleTypedPackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getLDTOModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"TypedPackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLDTOModel"
+
+
+    // $ANTLR start "entryRuleClass"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:107:1: entryRuleClass returns [EObject current=null] : iv_ruleClass= ruleClass EOF ;
+    public final EObject entryRuleClass() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleClass = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:108:2: (iv_ruleClass= ruleClass EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:109:2: iv_ruleClass= ruleClass EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getClassRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleClass_in_entryRuleClass166);
+            iv_ruleClass=ruleClass();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleClass; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleClass176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleClass"
+
+
+    // $ANTLR start "ruleClass"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:116:1: ruleClass returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' ) | ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' ) ) ) ;
+    public final EObject ruleClass() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_abstract_3_0=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token lv_abstract_14_0=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_19=null;
+        Token otherlv_21=null;
+        Token otherlv_23=null;
+        EObject lv_annotations_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_5_0 = null;
+
+        EObject lv_features_11_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_16_0 = null;
+
+        EObject lv_features_22_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:119:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' ) | ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' ) ) ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:120:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' ) | ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:120:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' ) | ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' ) ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:120:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' ) | ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' ) )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:120:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getClassAccess().getLDtoAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:126:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==86) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:127:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:127:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:128:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleClass231);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:3: ( ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' ) | ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' ) )
+            int alt10=2;
+            switch ( input.LA(1) ) {
+            case 13:
+                {
+                int LA10_1 = input.LA(2);
+
+                if ( (LA10_1==14) ) {
+                    alt10=1;
+                }
+                else if ( (LA10_1==19) ) {
+                    alt10=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 10, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 14:
+                {
+                alt10=1;
+                }
+                break;
+            case 19:
+                {
+                alt10=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt10) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:4: ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:4: ( () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:5: () ( (lv_abstract_3_0= 'abstract' ) )? otherlv_4= 'dto' ( (lv_name_5_0= ruleValidIDWithKeywords ) ) (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_10= '{' ( (lv_features_11_0= ruleDtoFeature ) )* otherlv_12= '}'
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:144:5: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:145:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getClassAccess().getLDtoAnnotationInfoAction_2_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:150:2: ( (lv_abstract_3_0= 'abstract' ) )?
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0==13) ) {
+                        alt3=1;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:151:1: (lv_abstract_3_0= 'abstract' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:151:1: (lv_abstract_3_0= 'abstract' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:152:3: lv_abstract_3_0= 'abstract'
+                            {
+                            lv_abstract_3_0=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleClass261); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_abstract_3_0, grammarAccess.getClassAccess().getAbstractAbstractKeyword_2_0_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                     		setWithLastConsumed(current, "abstract", true, "abstract");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_4=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleClass287); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_4, grammarAccess.getClassAccess().getDtoKeyword_2_0_2());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:169:1: ( (lv_name_5_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:170:1: (lv_name_5_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:170:1: (lv_name_5_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:171:3: lv_name_5_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_2_0_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleClass308);
+                    lv_name_5_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_5_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:187:2: (otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt4=2;
+                    int LA4_0 = input.LA(1);
+
+                    if ( (LA4_0==15) ) {
+                        alt4=1;
+                    }
+                    switch (alt4) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:187:4: otherlv_6= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_6=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleClass321); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_6, grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:191:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:192:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:192:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:193:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLDtoCrossReference_2_0_4_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass344);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:206:4: (otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt5=2;
+                    int LA5_0 = input.LA(1);
+
+                    if ( (LA5_0==16) ) {
+                        alt5=1;
+                    }
+                    switch (alt5) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:206:6: otherlv_8= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_8=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleClass359); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_8, grammarAccess.getClassAccess().getWrapsKeyword_2_0_5_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:210:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:211:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:211:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:212:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getWrappedTypeLEntityCrossReference_2_0_5_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass382);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_10=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleClass396); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_10, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_6());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:229:1: ( (lv_features_11_0= ruleDtoFeature ) )*
+                    loop6:
+                    do {
+                        int alt6=2;
+                        int LA6_0 = input.LA(1);
+
+                        if ( (LA6_0==20||(LA6_0>=27 && LA6_0<=28)||(LA6_0>=31 && LA6_0<=38)||(LA6_0>=42 && LA6_0<=43)||LA6_0==86) ) {
+                            alt6=1;
+                        }
+
+
+                        switch (alt6) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:230:1: (lv_features_11_0= ruleDtoFeature )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:230:1: (lv_features_11_0= ruleDtoFeature )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:231:3: lv_features_11_0= ruleDtoFeature
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesDtoFeatureParserRuleCall_2_0_7_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDtoFeature_in_ruleClass417);
+                    	    lv_features_11_0=ruleDtoFeature();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"features",
+                    	              		lv_features_11_0, 
+                    	              		"DtoFeature");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop6;
+                        }
+                    } while (true);
+
+                    otherlv_12=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleClass430); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_12, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_8());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:252:6: ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:252:6: ( () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:252:7: () ( (lv_abstract_14_0= 'abstract' ) )? otherlv_15= 'autoDto' ( (lv_name_16_0= ruleValidIDWithKeywords ) ) (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_19= 'wraps' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_21= '{' ( (lv_features_22_0= ruleDtoFeature ) )* otherlv_23= '}'
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:252:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:253:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getClassAccess().getLAutoInheritDtoAnnotationInfoAction_2_1_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:258:2: ( (lv_abstract_14_0= 'abstract' ) )?
+                    int alt7=2;
+                    int LA7_0 = input.LA(1);
+
+                    if ( (LA7_0==13) ) {
+                        alt7=1;
+                    }
+                    switch (alt7) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:259:1: (lv_abstract_14_0= 'abstract' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:259:1: (lv_abstract_14_0= 'abstract' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:260:3: lv_abstract_14_0= 'abstract'
+                            {
+                            lv_abstract_14_0=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleClass465); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_abstract_14_0, grammarAccess.getClassAccess().getAbstractAbstractKeyword_2_1_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                     		setWithLastConsumed(current, "abstract", true, "abstract");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_15=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleClass491); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_15, grammarAccess.getClassAccess().getAutoDtoKeyword_2_1_2());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:277:1: ( (lv_name_16_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:278:1: (lv_name_16_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:278:1: (lv_name_16_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:279:3: lv_name_16_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_2_1_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleClass512);
+                    lv_name_16_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_16_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:295:2: (otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt8=2;
+                    int LA8_0 = input.LA(1);
+
+                    if ( (LA8_0==15) ) {
+                        alt8=1;
+                    }
+                    switch (alt8) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:295:4: otherlv_17= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_17=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleClass525); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_17, grammarAccess.getClassAccess().getExtendsKeyword_2_1_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:299:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:300:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:300:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:301:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLDtoCrossReference_2_1_4_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass548);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_19=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleClass562); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_19, grammarAccess.getClassAccess().getWrapsKeyword_2_1_5());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:318:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:319:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:319:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:320:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getClassRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getWrappedTypeLEntityCrossReference_2_1_6_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass585);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_21=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleClass597); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_21, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_7());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:337:1: ( (lv_features_22_0= ruleDtoFeature ) )*
+                    loop9:
+                    do {
+                        int alt9=2;
+                        int LA9_0 = input.LA(1);
+
+                        if ( (LA9_0==20||(LA9_0>=27 && LA9_0<=28)||(LA9_0>=31 && LA9_0<=38)||(LA9_0>=42 && LA9_0<=43)||LA9_0==86) ) {
+                            alt9=1;
+                        }
+
+
+                        switch (alt9) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:338:1: (lv_features_22_0= ruleDtoFeature )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:338:1: (lv_features_22_0= ruleDtoFeature )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:339:3: lv_features_22_0= ruleDtoFeature
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesDtoFeatureParserRuleCall_2_1_8_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDtoFeature_in_ruleClass618);
+                    	    lv_features_22_0=ruleDtoFeature();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"features",
+                    	              		lv_features_22_0, 
+                    	              		"DtoFeature");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop9;
+                        }
+                    } while (true);
+
+                    otherlv_23=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleClass631); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_23, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_9());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleClass"
+
+
+    // $ANTLR start "entryRuleDtoFeature"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:367:1: entryRuleDtoFeature returns [EObject current=null] : iv_ruleDtoFeature= ruleDtoFeature EOF ;
+    public final EObject entryRuleDtoFeature() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtoFeature = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:368:2: (iv_ruleDtoFeature= ruleDtoFeature EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:369:2: iv_ruleDtoFeature= ruleDtoFeature EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtoFeatureRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtoFeature_in_entryRuleDtoFeature669);
+            iv_ruleDtoFeature=ruleDtoFeature();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtoFeature; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtoFeature679); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtoFeature"
+
+
+    // $ANTLR start "ruleDtoFeature"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:376:1: ruleDtoFeature returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) ) | ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) ) | ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) ) | ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) ) | ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) ) | ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? ) | ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) ) | ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) ) | ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) ) ) ) ;
+    public final EObject ruleDtoFeature() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_16=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token otherlv_21=null;
+        Token otherlv_23=null;
+        Token otherlv_25=null;
+        Token otherlv_27=null;
+        Token lv_transient_29_0=null;
+        Token otherlv_31=null;
+        Token otherlv_33=null;
+        Token otherlv_35=null;
+        Token otherlv_36=null;
+        Token otherlv_38=null;
+        Token otherlv_40=null;
+        Token otherlv_41=null;
+        Token lv_dirty_43_0=null;
+        Token otherlv_46=null;
+        Token otherlv_47=null;
+        Token otherlv_49=null;
+        Token otherlv_51=null;
+        Token otherlv_52=null;
+        Token lv_derived_54_0=null;
+        Token lv_domainDescription_55_0=null;
+        Token otherlv_58=null;
+        Token otherlv_59=null;
+        Token otherlv_61=null;
+        Token otherlv_63=null;
+        Token lv_id_66_0=null;
+        Token lv_version_67_0=null;
+        Token lv_uuid_68_0=null;
+        Token lv_domainDescription_69_0=null;
+        Token lv_domainKey_70_0=null;
+        Token otherlv_73=null;
+        Token otherlv_75=null;
+        Token otherlv_77=null;
+        Token otherlv_78=null;
+        Token otherlv_80=null;
+        Token otherlv_82=null;
+        Token otherlv_83=null;
+        Token otherlv_85=null;
+        Token lv_cascading_87_0=null;
+        Token lv_lazy_88_0=null;
+        Token otherlv_91=null;
+        Token otherlv_93=null;
+        Token otherlv_95=null;
+        Token otherlv_97=null;
+        Token otherlv_98=null;
+        Token otherlv_100=null;
+        Token otherlv_102=null;
+        Token otherlv_104=null;
+        Token otherlv_106=null;
+        Token otherlv_109=null;
+        Token otherlv_111=null;
+        Token otherlv_113=null;
+        Token otherlv_114=null;
+        Token otherlv_116=null;
+        Token otherlv_118=null;
+        Token otherlv_120=null;
+        Token otherlv_122=null;
+        Token otherlv_125=null;
+        Token otherlv_127=null;
+        Token otherlv_129=null;
+        EObject lv_annotations_1_0 = null;
+
+        EObject lv_properties_9_0 = null;
+
+        EObject lv_properties_11_0 = null;
+
+        EObject lv_mapper_13_0 = null;
+
+        EObject lv_properties_22_0 = null;
+
+        EObject lv_properties_24_0 = null;
+
+        EObject lv_mapper_26_0 = null;
+
+        EObject lv_constraints_32_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_34_0 = null;
+
+        EObject lv_properties_37_0 = null;
+
+        EObject lv_properties_39_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_45_0 = null;
+
+        EObject lv_properties_48_0 = null;
+
+        EObject lv_properties_50_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_57_0 = null;
+
+        EObject lv_properties_60_0 = null;
+
+        EObject lv_properties_62_0 = null;
+
+        EObject lv_derivedGetterExpression_64_0 = null;
+
+        EObject lv_multiplicity_72_0 = null;
+
+        EObject lv_constraints_74_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_76_0 = null;
+
+        EObject lv_properties_79_0 = null;
+
+        EObject lv_properties_81_0 = null;
+
+        EObject lv_multiplicity_90_0 = null;
+
+        EObject lv_constraints_92_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_94_0 = null;
+
+        EObject lv_properties_99_0 = null;
+
+        EObject lv_properties_101_0 = null;
+
+        EObject lv_mapper_103_0 = null;
+
+        EObject lv_multiplicity_108_0 = null;
+
+        EObject lv_constraints_110_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_112_0 = null;
+
+        EObject lv_properties_115_0 = null;
+
+        EObject lv_properties_117_0 = null;
+
+        EObject lv_mapper_119_0 = null;
+
+        EObject lv_type_123_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_124_0 = null;
+
+        EObject lv_params_126_0 = null;
+
+        EObject lv_params_128_0 = null;
+
+        EObject lv_body_130_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:379:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) ) | ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) ) | ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) ) | ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) ) | ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) ) | ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? ) | ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) ) | ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) ) | ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) ) ) ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:380:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) ) | ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) ) | ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) ) | ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) ) | ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) ) | ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? ) | ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) ) | ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) ) | ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:380:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) ) | ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) ) | ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) ) | ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) ) | ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) ) | ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? ) | ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) ) | ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) ) | ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) ) ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:380:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) ) | ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) ) | ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) ) | ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) ) | ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) ) | ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? ) | ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) ) | ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) ) | ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:380:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:381:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtoFeatureAccess().getLDtoFeatureAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:386:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( (LA11_0==86) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:387:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:387:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:388:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleDtoFeature734);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:3: ( ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) ) | ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) ) | ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) ) | ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) ) | ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) ) | ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? ) | ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) ) | ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) ) | ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) ) )
+            int alt57=9;
+            switch ( input.LA(1) ) {
+            case 20:
+                {
+                alt57=1;
+                }
+                break;
+            case 27:
+                {
+                alt57=2;
+                }
+                break;
+            case 28:
+                {
+                alt57=3;
+                }
+                break;
+            case 31:
+                {
+                alt57=4;
+                }
+                break;
+            case 32:
+                {
+                alt57=5;
+                }
+                break;
+            case 33:
+            case 34:
+            case 35:
+            case 36:
+            case 37:
+                {
+                alt57=6;
+                }
+                break;
+            case 38:
+                {
+                alt57=7;
+                }
+                break;
+            case 42:
+                {
+                alt57=8;
+                }
+                break;
+            case 43:
+                {
+                alt57=9;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 57, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt57) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:4: ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:4: ( ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:5: ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) ) (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )? ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:5: ( () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:6: () otherlv_3= 'inherit var' ( ( ruleValidLFQNWithKeywords ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:404:6: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:405:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_3=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleDtoFeature759); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getDtoFeatureAccess().getInheritVarKeyword_2_0_0_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:414:1: ( ( ruleValidLFQNWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:415:1: ( ruleValidLFQNWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:415:1: ( ruleValidLFQNWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:416:3: ruleValidLFQNWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getInheritedFeatureLEntityAttributeCrossReference_2_0_0_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidLFQNWithKeywords_in_ruleDtoFeature782);
+                    ruleValidLFQNWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:429:3: (otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0==21) ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:429:5: otherlv_5= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_5=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleDtoFeature796); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_5, grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_0_1_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:433:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:434:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:434:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:435:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLDtoCrossReference_2_0_1_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature819);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:448:4: (otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0==22) ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:448:6: otherlv_7= 'properties' otherlv_8= '(' ( (lv_properties_9_0= ruleKeyAndValue ) ) (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )* otherlv_12= ')'
+                            {
+                            otherlv_7=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature834); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_7, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_0_2_0());
+                                  
+                            }
+                            otherlv_8=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature846); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_8, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_0_2_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:456:1: ( (lv_properties_9_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:457:1: (lv_properties_9_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:457:1: (lv_properties_9_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:458:3: lv_properties_9_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_2_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature867);
+                            lv_properties_9_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_9_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:474:2: (otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) ) )*
+                            loop13:
+                            do {
+                                int alt13=2;
+                                int LA13_0 = input.LA(1);
+
+                                if ( (LA13_0==24) ) {
+                                    alt13=1;
+                                }
+
+
+                                switch (alt13) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:474:4: otherlv_10= ', ' ( (lv_properties_11_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_10=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature880); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_10, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_0_2_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:478:1: ( (lv_properties_11_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:479:1: (lv_properties_11_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:479:1: (lv_properties_11_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:480:3: lv_properties_11_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_2_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature901);
+                            	    lv_properties_11_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_11_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop13;
+                                }
+                            } while (true);
+
+                            otherlv_12=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature915); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_12, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_0_2_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:500:3: ( ( (lv_mapper_13_0= ruleDtoMapper ) ) | (otherlv_14= ';' )? )
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
+
+                    if ( (LA16_0==17) ) {
+                        alt16=1;
+                    }
+                    else if ( (LA16_0==EOF||LA16_0==18||LA16_0==20||(LA16_0>=26 && LA16_0<=28)||(LA16_0>=31 && LA16_0<=38)||(LA16_0>=42 && LA16_0<=43)||LA16_0==86) ) {
+                        alt16=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 16, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt16) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:500:4: ( (lv_mapper_13_0= ruleDtoMapper ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:500:4: ( (lv_mapper_13_0= ruleDtoMapper ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:501:1: (lv_mapper_13_0= ruleDtoMapper )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:501:1: (lv_mapper_13_0= ruleDtoMapper )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:502:3: lv_mapper_13_0= ruleDtoMapper
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperDtoMapperParserRuleCall_2_0_3_0_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleDtoMapper_in_ruleDtoFeature939);
+                            lv_mapper_13_0=ruleDtoMapper();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"mapper",
+                                      		lv_mapper_13_0, 
+                                      		"DtoMapper");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:519:6: (otherlv_14= ';' )?
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:519:6: (otherlv_14= ';' )?
+                            int alt15=2;
+                            int LA15_0 = input.LA(1);
+
+                            if ( (LA15_0==26) ) {
+                                alt15=1;
+                            }
+                            switch (alt15) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:519:8: otherlv_14= ';'
+                                    {
+                                    otherlv_14=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature958); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_14, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_0_3_1());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:524:6: ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:524:6: ( () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:524:7: () (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) ) otherlv_18= 'mapto' ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )? ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:524:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:525:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoInheritedReferenceAnnotationInfoAction_2_1_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:530:2: (otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:530:4: otherlv_16= 'inherit ref' ( ( ruleValidLFQNWithKeywords ) )
+                    {
+                    otherlv_16=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleDtoFeature991); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_16, grammarAccess.getDtoFeatureAccess().getInheritRefKeyword_2_1_1_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:534:1: ( ( ruleValidLFQNWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:535:1: ( ruleValidLFQNWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:535:1: ( ruleValidLFQNWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:536:3: ruleValidLFQNWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getInheritedFeatureLEntityReferenceCrossReference_2_1_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidLFQNWithKeywords_in_ruleDtoFeature1014);
+                    ruleValidLFQNWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+                    otherlv_18=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleDtoFeature1027); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_18, grammarAccess.getDtoFeatureAccess().getMaptoKeyword_2_1_2());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:553:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:554:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:554:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:555:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLDtoCrossReference_2_1_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature1050);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:568:2: (otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0==22) ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:568:4: otherlv_20= 'properties' otherlv_21= '(' ( (lv_properties_22_0= ruleKeyAndValue ) ) (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )* otherlv_25= ')'
+                            {
+                            otherlv_20=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature1063); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_20, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_1_4_0());
+                                  
+                            }
+                            otherlv_21=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature1075); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_21, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_1_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:576:1: ( (lv_properties_22_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:577:1: (lv_properties_22_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:577:1: (lv_properties_22_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:578:3: lv_properties_22_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1096);
+                            lv_properties_22_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_22_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:594:2: (otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) ) )*
+                            loop17:
+                            do {
+                                int alt17=2;
+                                int LA17_0 = input.LA(1);
+
+                                if ( (LA17_0==24) ) {
+                                    alt17=1;
+                                }
+
+
+                                switch (alt17) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:594:4: otherlv_23= ', ' ( (lv_properties_24_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_23=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature1109); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_23, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_1_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:598:1: ( (lv_properties_24_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:599:1: (lv_properties_24_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:599:1: (lv_properties_24_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:600:3: lv_properties_24_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1130);
+                            	    lv_properties_24_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_24_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop17;
+                                }
+                            } while (true);
+
+                            otherlv_25=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature1144); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_25, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_1_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:620:3: ( ( (lv_mapper_26_0= ruleDtoMapper ) ) | (otherlv_27= ';' )? )
+                    int alt20=2;
+                    int LA20_0 = input.LA(1);
+
+                    if ( (LA20_0==17) ) {
+                        alt20=1;
+                    }
+                    else if ( (LA20_0==EOF||LA20_0==18||LA20_0==20||(LA20_0>=26 && LA20_0<=28)||(LA20_0>=31 && LA20_0<=38)||(LA20_0>=42 && LA20_0<=43)||LA20_0==86) ) {
+                        alt20=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 20, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt20) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:620:4: ( (lv_mapper_26_0= ruleDtoMapper ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:620:4: ( (lv_mapper_26_0= ruleDtoMapper ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:621:1: (lv_mapper_26_0= ruleDtoMapper )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:621:1: (lv_mapper_26_0= ruleDtoMapper )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:622:3: lv_mapper_26_0= ruleDtoMapper
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperDtoMapperParserRuleCall_2_1_5_0_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleDtoMapper_in_ruleDtoFeature1168);
+                            lv_mapper_26_0=ruleDtoMapper();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"mapper",
+                                      		lv_mapper_26_0, 
+                                      		"DtoMapper");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:639:6: (otherlv_27= ';' )?
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:639:6: (otherlv_27= ';' )?
+                            int alt19=2;
+                            int LA19_0 = input.LA(1);
+
+                            if ( (LA19_0==26) ) {
+                                alt19=1;
+                            }
+                            switch (alt19) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:639:8: otherlv_27= ';'
+                                    {
+                                    otherlv_27=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature1187); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_27, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_1_5_1());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:644:6: ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:644:6: ( () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:644:7: () ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:644:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:645:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_2_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:650:2: ( ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:650:3: ( (lv_transient_29_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )? ( (lv_name_34_0= ruleValidIDWithKeywords ) ) (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )? (otherlv_41= ';' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:650:3: ( (lv_transient_29_0= 'transient' ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:651:1: (lv_transient_29_0= 'transient' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:651:1: (lv_transient_29_0= 'transient' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:652:3: lv_transient_29_0= 'transient'
+                    {
+                    lv_transient_29_0=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleDtoFeature1226); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_transient_29_0, grammarAccess.getDtoFeatureAccess().getTransientTransientKeyword_2_2_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		setWithLastConsumed(current, "transient", true, "transient");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:665:2: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:666:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:666:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:667:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_2_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature1262);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:680:2: (otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']' )?
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
+
+                    if ( (LA22_0==29) ) {
+                        alt22=1;
+                    }
+                    switch (alt22) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:680:4: otherlv_31= '[' ( (lv_constraints_32_0= ruleAllConstraints ) )* otherlv_33= ']'
+                            {
+                            otherlv_31=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtoFeature1275); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_31, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_2_1_2_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:684:1: ( (lv_constraints_32_0= ruleAllConstraints ) )*
+                            loop21:
+                            do {
+                                int alt21=2;
+                                int LA21_0 = input.LA(1);
+
+                                if ( (LA21_0==53||(LA21_0>=58 && LA21_0<=69)) ) {
+                                    alt21=1;
+                                }
+
+
+                                switch (alt21) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:685:1: (lv_constraints_32_0= ruleAllConstraints )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:685:1: (lv_constraints_32_0= ruleAllConstraints )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:686:3: lv_constraints_32_0= ruleAllConstraints
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_2_1_2_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleAllConstraints_in_ruleDtoFeature1296);
+                            	    lv_constraints_32_0=ruleAllConstraints();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"constraints",
+                            	              		lv_constraints_32_0, 
+                            	              		"AllConstraints");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop21;
+                                }
+                            } while (true);
+
+                            otherlv_33=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtoFeature1309); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_33, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_2_1_2_2());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:706:3: ( (lv_name_34_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:707:1: (lv_name_34_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:707:1: (lv_name_34_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:708:3: lv_name_34_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_2_1_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature1332);
+                    lv_name_34_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_34_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:724:2: (otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')' )?
+                    int alt24=2;
+                    int LA24_0 = input.LA(1);
+
+                    if ( (LA24_0==22) ) {
+                        alt24=1;
+                    }
+                    switch (alt24) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:724:4: otherlv_35= 'properties' otherlv_36= '(' ( (lv_properties_37_0= ruleKeyAndValue ) ) (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )* otherlv_40= ')'
+                            {
+                            otherlv_35=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature1345); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_35, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_2_1_4_0());
+                                  
+                            }
+                            otherlv_36=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature1357); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_36, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_2_1_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:732:1: ( (lv_properties_37_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:733:1: (lv_properties_37_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:733:1: (lv_properties_37_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:734:3: lv_properties_37_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_2_1_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1378);
+                            lv_properties_37_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_37_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:750:2: (otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) ) )*
+                            loop23:
+                            do {
+                                int alt23=2;
+                                int LA23_0 = input.LA(1);
+
+                                if ( (LA23_0==24) ) {
+                                    alt23=1;
+                                }
+
+
+                                switch (alt23) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:750:4: otherlv_38= ', ' ( (lv_properties_39_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_38=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature1391); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_38, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_2_1_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:754:1: ( (lv_properties_39_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:755:1: (lv_properties_39_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:755:1: (lv_properties_39_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:756:3: lv_properties_39_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_2_1_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1412);
+                            	    lv_properties_39_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_39_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop23;
+                                }
+                            } while (true);
+
+                            otherlv_40=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature1426); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_40, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_2_1_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:776:3: (otherlv_41= ';' )?
+                    int alt25=2;
+                    int LA25_0 = input.LA(1);
+
+                    if ( (LA25_0==26) ) {
+                        alt25=1;
+                    }
+                    switch (alt25) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:776:5: otherlv_41= ';'
+                            {
+                            otherlv_41=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature1441); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_41, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_2_1_5());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:781:6: ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:781:6: ( () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:781:7: () ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:781:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:782:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_3_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:787:2: ( ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:787:3: ( (lv_dirty_43_0= 'dirty' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_45_0= ruleValidIDWithKeywords ) ) (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )? (otherlv_52= ';' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:787:3: ( (lv_dirty_43_0= 'dirty' ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:788:1: (lv_dirty_43_0= 'dirty' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:788:1: (lv_dirty_43_0= 'dirty' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:789:3: lv_dirty_43_0= 'dirty'
+                    {
+                    lv_dirty_43_0=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDtoFeature1480); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_dirty_43_0, grammarAccess.getDtoFeatureAccess().getDirtyDirtyKeyword_2_3_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		setWithLastConsumed(current, "dirty", true, "dirty");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:802:2: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:803:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:803:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:804:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_3_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature1516);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:817:2: ( (lv_name_45_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:818:1: (lv_name_45_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:818:1: (lv_name_45_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:819:3: lv_name_45_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_3_1_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature1537);
+                    lv_name_45_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_45_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:835:2: (otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')' )?
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
+
+                    if ( (LA27_0==22) ) {
+                        alt27=1;
+                    }
+                    switch (alt27) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:835:4: otherlv_46= 'properties' otherlv_47= '(' ( (lv_properties_48_0= ruleKeyAndValue ) ) (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )* otherlv_51= ')'
+                            {
+                            otherlv_46=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature1550); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_46, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_3_1_3_0());
+                                  
+                            }
+                            otherlv_47=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature1562); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_47, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_3_1_3_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:843:1: ( (lv_properties_48_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:844:1: (lv_properties_48_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:844:1: (lv_properties_48_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:845:3: lv_properties_48_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_3_1_3_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1583);
+                            lv_properties_48_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_48_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:861:2: (otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) ) )*
+                            loop26:
+                            do {
+                                int alt26=2;
+                                int LA26_0 = input.LA(1);
+
+                                if ( (LA26_0==24) ) {
+                                    alt26=1;
+                                }
+
+
+                                switch (alt26) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:861:4: otherlv_49= ', ' ( (lv_properties_50_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_49=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature1596); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_49, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_3_1_3_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:865:1: ( (lv_properties_50_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:866:1: (lv_properties_50_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:866:1: (lv_properties_50_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:867:3: lv_properties_50_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_3_1_3_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1617);
+                            	    lv_properties_50_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_50_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop26;
+                                }
+                            } while (true);
+
+                            otherlv_51=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature1631); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_51, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_3_1_3_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:887:3: (otherlv_52= ';' )?
+                    int alt28=2;
+                    int LA28_0 = input.LA(1);
+
+                    if ( (LA28_0==26) ) {
+                        alt28=1;
+                    }
+                    switch (alt28) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:887:5: otherlv_52= ';'
+                            {
+                            otherlv_52=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature1646); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_52, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_3_1_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:892:6: ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:892:6: ( () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:892:7: () ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:892:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:893:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_4_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:898:2: ( ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:898:3: ( (lv_derived_54_0= 'derived' ) ) ( (lv_domainDescription_55_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_57_0= ruleValidIDWithKeywords ) ) (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )? ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:898:3: ( (lv_derived_54_0= 'derived' ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:899:1: (lv_derived_54_0= 'derived' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:899:1: (lv_derived_54_0= 'derived' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:900:3: lv_derived_54_0= 'derived'
+                    {
+                    lv_derived_54_0=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDtoFeature1685); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_derived_54_0, grammarAccess.getDtoFeatureAccess().getDerivedDerivedKeyword_2_4_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		setWithLastConsumed(current, "derived", true, "derived");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:913:2: ( (lv_domainDescription_55_0= 'domainDescription' ) )?
+                    int alt29=2;
+                    int LA29_0 = input.LA(1);
+
+                    if ( (LA29_0==33) ) {
+                        alt29=1;
+                    }
+                    switch (alt29) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:914:1: (lv_domainDescription_55_0= 'domainDescription' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:914:1: (lv_domainDescription_55_0= 'domainDescription' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:915:3: lv_domainDescription_55_0= 'domainDescription'
+                            {
+                            lv_domainDescription_55_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtoFeature1716); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_domainDescription_55_0, grammarAccess.getDtoFeatureAccess().getDomainDescriptionDomainDescriptionKeyword_2_4_1_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "domainDescription", true, "domainDescription");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:928:3: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:929:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:929:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:930:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_4_1_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature1753);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:943:2: ( (lv_name_57_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:944:1: (lv_name_57_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:944:1: (lv_name_57_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:945:3: lv_name_57_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_4_1_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature1774);
+                    lv_name_57_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_57_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:961:2: (otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')' )?
+                    int alt31=2;
+                    int LA31_0 = input.LA(1);
+
+                    if ( (LA31_0==22) ) {
+                        alt31=1;
+                    }
+                    switch (alt31) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:961:4: otherlv_58= 'properties' otherlv_59= '(' ( (lv_properties_60_0= ruleKeyAndValue ) ) (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )* otherlv_63= ')'
+                            {
+                            otherlv_58=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature1787); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_58, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_4_1_4_0());
+                                  
+                            }
+                            otherlv_59=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature1799); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_59, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_4_1_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:969:1: ( (lv_properties_60_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:970:1: (lv_properties_60_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:970:1: (lv_properties_60_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:971:3: lv_properties_60_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_4_1_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1820);
+                            lv_properties_60_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_60_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:987:2: (otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) ) )*
+                            loop30:
+                            do {
+                                int alt30=2;
+                                int LA30_0 = input.LA(1);
+
+                                if ( (LA30_0==24) ) {
+                                    alt30=1;
+                                }
+
+
+                                switch (alt30) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:987:4: otherlv_61= ', ' ( (lv_properties_62_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_61=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature1833); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_61, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_4_1_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:991:1: ( (lv_properties_62_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:992:1: (lv_properties_62_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:992:1: (lv_properties_62_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:993:3: lv_properties_62_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_4_1_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature1854);
+                            	    lv_properties_62_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_62_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop30;
+                                }
+                            } while (true);
+
+                            otherlv_63=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature1868); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_63, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_4_1_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1013:3: ( (lv_derivedGetterExpression_64_0= ruleXBlockExpression ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1014:1: (lv_derivedGetterExpression_64_0= ruleXBlockExpression )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1014:1: (lv_derivedGetterExpression_64_0= ruleXBlockExpression )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1015:3: lv_derivedGetterExpression_64_0= ruleXBlockExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_4_1_5_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleXBlockExpression_in_ruleDtoFeature1891);
+                    lv_derivedGetterExpression_64_0=ruleXBlockExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"derivedGetterExpression",
+                              		lv_derivedGetterExpression_64_0, 
+                              		"XBlockExpression");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1032:6: ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1032:6: ( () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1032:7: () ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_72_0= ruleMultiplicity ) )? (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )? ( (lv_name_76_0= ruleValidIDWithKeywords ) ) (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )? (otherlv_83= ';' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1032:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1033:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_5_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1038:2: ( ( (lv_id_66_0= 'id' ) ) | ( (lv_version_67_0= 'version' ) ) | ( (lv_uuid_68_0= 'uuid' ) ) | ( (lv_domainDescription_69_0= 'domainDescription' ) ) | ( (lv_domainKey_70_0= 'domainKey' ) ) )
+                    int alt32=5;
+                    switch ( input.LA(1) ) {
+                    case 34:
+                        {
+                        alt32=1;
+                        }
+                        break;
+                    case 35:
+                        {
+                        alt32=2;
+                        }
+                        break;
+                    case 36:
+                        {
+                        alt32=3;
+                        }
+                        break;
+                    case 33:
+                        {
+                        alt32=4;
+                        }
+                        break;
+                    case 37:
+                        {
+                        alt32=5;
+                        }
+                        break;
+                    default:
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 32, 0, input);
+
+                        throw nvae;
+                    }
+
+                    switch (alt32) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1038:3: ( (lv_id_66_0= 'id' ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1038:3: ( (lv_id_66_0= 'id' ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1039:1: (lv_id_66_0= 'id' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1039:1: (lv_id_66_0= 'id' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1040:3: lv_id_66_0= 'id'
+                            {
+                            lv_id_66_0=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtoFeature1928); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_id_66_0, grammarAccess.getDtoFeatureAccess().getIdIdKeyword_2_5_1_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "id", true, "id");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1054:6: ( (lv_version_67_0= 'version' ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1054:6: ( (lv_version_67_0= 'version' ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1055:1: (lv_version_67_0= 'version' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1055:1: (lv_version_67_0= 'version' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1056:3: lv_version_67_0= 'version'
+                            {
+                            lv_version_67_0=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleDtoFeature1965); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_version_67_0, grammarAccess.getDtoFeatureAccess().getVersionVersionKeyword_2_5_1_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "version", true, "version");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 3 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1070:6: ( (lv_uuid_68_0= 'uuid' ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1070:6: ( (lv_uuid_68_0= 'uuid' ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1071:1: (lv_uuid_68_0= 'uuid' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1071:1: (lv_uuid_68_0= 'uuid' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1072:3: lv_uuid_68_0= 'uuid'
+                            {
+                            lv_uuid_68_0=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleDtoFeature2002); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_uuid_68_0, grammarAccess.getDtoFeatureAccess().getUuidUuidKeyword_2_5_1_2_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "uuid", true, "uuid");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 4 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1086:6: ( (lv_domainDescription_69_0= 'domainDescription' ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1086:6: ( (lv_domainDescription_69_0= 'domainDescription' ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1087:1: (lv_domainDescription_69_0= 'domainDescription' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1087:1: (lv_domainDescription_69_0= 'domainDescription' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1088:3: lv_domainDescription_69_0= 'domainDescription'
+                            {
+                            lv_domainDescription_69_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDtoFeature2039); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_domainDescription_69_0, grammarAccess.getDtoFeatureAccess().getDomainDescriptionDomainDescriptionKeyword_2_5_1_3_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "domainDescription", true, "domainDescription");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 5 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1102:6: ( (lv_domainKey_70_0= 'domainKey' ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1102:6: ( (lv_domainKey_70_0= 'domainKey' ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1103:1: (lv_domainKey_70_0= 'domainKey' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1103:1: (lv_domainKey_70_0= 'domainKey' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1104:3: lv_domainKey_70_0= 'domainKey'
+                            {
+                            lv_domainKey_70_0=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtoFeature2076); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_domainKey_70_0, grammarAccess.getDtoFeatureAccess().getDomainKeyDomainKeyKeyword_2_5_1_4_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "domainKey", true, "domainKey");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1117:3: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1118:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1118:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1119:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_5_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature2113);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1132:2: ( (lv_multiplicity_72_0= ruleMultiplicity ) )?
+                    int alt33=2;
+                    int LA33_0 = input.LA(1);
+
+                    if ( (LA33_0==29) ) {
+                        int LA33_1 = input.LA(2);
+
+                        if ( (LA33_1==76||LA33_1==84||LA33_1==143||(LA33_1>=154 && LA33_1<=155)) ) {
+                            alt33=1;
+                        }
+                    }
+                    switch (alt33) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1133:1: (lv_multiplicity_72_0= ruleMultiplicity )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1133:1: (lv_multiplicity_72_0= ruleMultiplicity )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1134:3: lv_multiplicity_72_0= ruleMultiplicity
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_5_3_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleMultiplicity_in_ruleDtoFeature2134);
+                            lv_multiplicity_72_0=ruleMultiplicity();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"multiplicity",
+                                      		lv_multiplicity_72_0, 
+                                      		"Multiplicity");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1150:3: (otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']' )?
+                    int alt35=2;
+                    int LA35_0 = input.LA(1);
+
+                    if ( (LA35_0==29) ) {
+                        alt35=1;
+                    }
+                    switch (alt35) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1150:5: otherlv_73= '[' ( (lv_constraints_74_0= ruleAllConstraints ) )* otherlv_75= ']'
+                            {
+                            otherlv_73=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtoFeature2148); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_73, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_5_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1154:1: ( (lv_constraints_74_0= ruleAllConstraints ) )*
+                            loop34:
+                            do {
+                                int alt34=2;
+                                int LA34_0 = input.LA(1);
+
+                                if ( (LA34_0==53||(LA34_0>=58 && LA34_0<=69)) ) {
+                                    alt34=1;
+                                }
+
+
+                                switch (alt34) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1155:1: (lv_constraints_74_0= ruleAllConstraints )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1155:1: (lv_constraints_74_0= ruleAllConstraints )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1156:3: lv_constraints_74_0= ruleAllConstraints
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_5_4_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleAllConstraints_in_ruleDtoFeature2169);
+                            	    lv_constraints_74_0=ruleAllConstraints();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"constraints",
+                            	              		lv_constraints_74_0, 
+                            	              		"AllConstraints");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop34;
+                                }
+                            } while (true);
+
+                            otherlv_75=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtoFeature2182); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_75, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_5_4_2());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1176:3: ( (lv_name_76_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1177:1: (lv_name_76_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1177:1: (lv_name_76_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1178:3: lv_name_76_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_5_5_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature2205);
+                    lv_name_76_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_76_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1194:2: (otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')' )?
+                    int alt37=2;
+                    int LA37_0 = input.LA(1);
+
+                    if ( (LA37_0==22) ) {
+                        alt37=1;
+                    }
+                    switch (alt37) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1194:4: otherlv_77= 'properties' otherlv_78= '(' ( (lv_properties_79_0= ruleKeyAndValue ) ) (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )* otherlv_82= ')'
+                            {
+                            otherlv_77=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature2218); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_77, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_5_6_0());
+                                  
+                            }
+                            otherlv_78=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature2230); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_78, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_5_6_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1202:1: ( (lv_properties_79_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1203:1: (lv_properties_79_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1203:1: (lv_properties_79_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1204:3: lv_properties_79_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_5_6_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature2251);
+                            lv_properties_79_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_79_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1220:2: (otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) ) )*
+                            loop36:
+                            do {
+                                int alt36=2;
+                                int LA36_0 = input.LA(1);
+
+                                if ( (LA36_0==24) ) {
+                                    alt36=1;
+                                }
+
+
+                                switch (alt36) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1220:4: otherlv_80= ', ' ( (lv_properties_81_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_80=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature2264); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_80, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_5_6_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1224:1: ( (lv_properties_81_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1225:1: (lv_properties_81_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1225:1: (lv_properties_81_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1226:3: lv_properties_81_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_5_6_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature2285);
+                            	    lv_properties_81_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_81_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop36;
+                                }
+                            } while (true);
+
+                            otherlv_82=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature2299); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_82, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_5_6_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1246:3: (otherlv_83= ';' )?
+                    int alt38=2;
+                    int LA38_0 = input.LA(1);
+
+                    if ( (LA38_0==26) ) {
+                        alt38=1;
+                    }
+                    switch (alt38) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1246:5: otherlv_83= ';'
+                            {
+                            otherlv_83=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature2314); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_83, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_5_7());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1251:6: ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1251:6: ( () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1251:7: () (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? ) ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1251:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1252:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoReferenceAnnotationInfoAction_2_6_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1257:2: (otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1257:4: otherlv_85= 'ref' ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_90_0= ruleMultiplicity ) )? (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )? ( (lv_name_94_0= ruleValidIDWithKeywords ) ) (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )?
+                    {
+                    otherlv_85=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleDtoFeature2346); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_85, grammarAccess.getDtoFeatureAccess().getRefKeyword_2_6_1_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1261:1: ( ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1263:1: ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1263:1: ( ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1264:2: ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* )
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1267:2: ( ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )* )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1268:3: ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )*
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1268:3: ( ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) ) )*
+                    loop39:
+                    do {
+                        int alt39=3;
+                        int LA39_0 = input.LA(1);
+
+                        if ( LA39_0 ==39 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 0) ) {
+                            alt39=1;
+                        }
+                        else if ( LA39_0 ==40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 1) ) {
+                            alt39=2;
+                        }
+
+
+                        switch (alt39) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1270:4: ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1270:4: ({...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1271:5: {...}? => ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtoFeature", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1271:113: ( ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1272:6: ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 0);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1275:6: ({...}? => ( (lv_cascading_87_0= 'cascade' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1275:7: {...}? => ( (lv_cascading_87_0= 'cascade' ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtoFeature", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1275:16: ( (lv_cascading_87_0= 'cascade' ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1276:1: (lv_cascading_87_0= 'cascade' )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1276:1: (lv_cascading_87_0= 'cascade' )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1277:3: lv_cascading_87_0= 'cascade'
+                    	    {
+                    	    lv_cascading_87_0=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleDtoFeature2409); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	              newLeafNode(lv_cascading_87_0, grammarAccess.getDtoFeatureAccess().getCascadingCascadeKeyword_2_6_1_1_0_0());
+                    	          
+                    	    }
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                    	      	        }
+                    	             		setWithLastConsumed(current, "cascading", true, "cascade");
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1297:4: ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1297:4: ({...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1298:5: {...}? => ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtoFeature", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1298:113: ( ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1299:6: ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1(), 1);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1302:6: ({...}? => ( (lv_lazy_88_0= 'lazy' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1302:7: {...}? => ( (lv_lazy_88_0= 'lazy' ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtoFeature", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1302:16: ( (lv_lazy_88_0= 'lazy' ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1303:1: (lv_lazy_88_0= 'lazy' )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1303:1: (lv_lazy_88_0= 'lazy' )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1304:3: lv_lazy_88_0= 'lazy'
+                    	    {
+                    	    lv_lazy_88_0=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleDtoFeature2494); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	              newLeafNode(lv_lazy_88_0, grammarAccess.getDtoFeatureAccess().getLazyLazyKeyword_2_6_1_1_1_0());
+                    	          
+                    	    }
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                    	      	        }
+                    	             		setWithLastConsumed(current, "lazy", true, "lazy");
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop39;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtoFeatureAccess().getUnorderedGroup_2_6_1_1());
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1331:2: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1332:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1332:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1333:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLDtoCrossReference_2_6_1_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature2570);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1346:2: ( (lv_multiplicity_90_0= ruleMultiplicity ) )?
+                    int alt40=2;
+                    int LA40_0 = input.LA(1);
+
+                    if ( (LA40_0==29) ) {
+                        int LA40_1 = input.LA(2);
+
+                        if ( (LA40_1==76||LA40_1==84||LA40_1==143||(LA40_1>=154 && LA40_1<=155)) ) {
+                            alt40=1;
+                        }
+                    }
+                    switch (alt40) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1347:1: (lv_multiplicity_90_0= ruleMultiplicity )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1347:1: (lv_multiplicity_90_0= ruleMultiplicity )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1348:3: lv_multiplicity_90_0= ruleMultiplicity
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_6_1_3_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleMultiplicity_in_ruleDtoFeature2591);
+                            lv_multiplicity_90_0=ruleMultiplicity();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"multiplicity",
+                                      		lv_multiplicity_90_0, 
+                                      		"Multiplicity");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1364:3: (otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']' )?
+                    int alt42=2;
+                    int LA42_0 = input.LA(1);
+
+                    if ( (LA42_0==29) ) {
+                        alt42=1;
+                    }
+                    switch (alt42) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1364:5: otherlv_91= '[' ( (lv_constraints_92_0= ruleAllConstraints ) )* otherlv_93= ']'
+                            {
+                            otherlv_91=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtoFeature2605); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_91, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_6_1_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1368:1: ( (lv_constraints_92_0= ruleAllConstraints ) )*
+                            loop41:
+                            do {
+                                int alt41=2;
+                                int LA41_0 = input.LA(1);
+
+                                if ( (LA41_0==53||(LA41_0>=58 && LA41_0<=69)) ) {
+                                    alt41=1;
+                                }
+
+
+                                switch (alt41) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1369:1: (lv_constraints_92_0= ruleAllConstraints )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1369:1: (lv_constraints_92_0= ruleAllConstraints )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1370:3: lv_constraints_92_0= ruleAllConstraints
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_6_1_4_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleAllConstraints_in_ruleDtoFeature2626);
+                            	    lv_constraints_92_0=ruleAllConstraints();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"constraints",
+                            	              		lv_constraints_92_0, 
+                            	              		"AllConstraints");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop41;
+                                }
+                            } while (true);
+
+                            otherlv_93=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtoFeature2639); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_93, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_6_1_4_2());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1390:3: ( (lv_name_94_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1391:1: (lv_name_94_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1391:1: (lv_name_94_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1392:3: lv_name_94_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_6_1_5_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature2662);
+                    lv_name_94_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_94_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1408:2: (otherlv_95= 'opposite' ( ( ruleLFQN ) ) )?
+                    int alt43=2;
+                    int LA43_0 = input.LA(1);
+
+                    if ( (LA43_0==41) ) {
+                        alt43=1;
+                    }
+                    switch (alt43) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1408:4: otherlv_95= 'opposite' ( ( ruleLFQN ) )
+                            {
+                            otherlv_95=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleDtoFeature2675); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_95, grammarAccess.getDtoFeatureAccess().getOppositeKeyword_2_6_1_6_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1412:1: ( ( ruleLFQN ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1413:1: ( ruleLFQN )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1413:1: ( ruleLFQN )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1414:3: ruleLFQN
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getOppositeLDtoReferenceCrossReference_2_6_1_6_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleLFQN_in_ruleDtoFeature2698);
+                            ruleLFQN();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1427:4: (otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')' )?
+                    int alt45=2;
+                    int LA45_0 = input.LA(1);
+
+                    if ( (LA45_0==22) ) {
+                        alt45=1;
+                    }
+                    switch (alt45) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1427:6: otherlv_97= 'properties' otherlv_98= '(' ( (lv_properties_99_0= ruleKeyAndValue ) ) (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )* otherlv_102= ')'
+                            {
+                            otherlv_97=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature2713); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_97, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_6_1_7_0());
+                                  
+                            }
+                            otherlv_98=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature2725); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_98, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_6_1_7_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1435:1: ( (lv_properties_99_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1436:1: (lv_properties_99_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1436:1: (lv_properties_99_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1437:3: lv_properties_99_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_6_1_7_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature2746);
+                            lv_properties_99_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_99_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1453:2: (otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) ) )*
+                            loop44:
+                            do {
+                                int alt44=2;
+                                int LA44_0 = input.LA(1);
+
+                                if ( (LA44_0==24) ) {
+                                    alt44=1;
+                                }
+
+
+                                switch (alt44) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1453:4: otherlv_100= ', ' ( (lv_properties_101_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_100=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature2759); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_100, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_6_1_7_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1457:1: ( (lv_properties_101_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1458:1: (lv_properties_101_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1458:1: (lv_properties_101_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1459:3: lv_properties_101_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_6_1_7_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature2780);
+                            	    lv_properties_101_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_101_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop44;
+                                }
+                            } while (true);
+
+                            otherlv_102=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature2794); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_102, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_6_1_7_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1479:4: ( ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_104= ';' )? )
+                    int alt47=2;
+                    int LA47_0 = input.LA(1);
+
+                    if ( (LA47_0==17) ) {
+                        alt47=1;
+                    }
+                    else if ( (LA47_0==EOF||LA47_0==18||LA47_0==20||(LA47_0>=26 && LA47_0<=28)||(LA47_0>=31 && LA47_0<=38)||(LA47_0>=42 && LA47_0<=43)||LA47_0==86) ) {
+                        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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1479:5: ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1479:5: ( (lv_mapper_103_0= ruleLimitedMapperDtoMapper ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1480:1: (lv_mapper_103_0= ruleLimitedMapperDtoMapper )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1480:1: (lv_mapper_103_0= ruleLimitedMapperDtoMapper )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1481:3: lv_mapper_103_0= ruleLimitedMapperDtoMapper
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperLimitedMapperDtoMapperParserRuleCall_2_6_2_0_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleLimitedMapperDtoMapper_in_ruleDtoFeature2819);
+                            lv_mapper_103_0=ruleLimitedMapperDtoMapper();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"mapper",
+                                      		lv_mapper_103_0, 
+                                      		"LimitedMapperDtoMapper");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1498:6: (otherlv_104= ';' )?
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1498:6: (otherlv_104= ';' )?
+                            int alt46=2;
+                            int LA46_0 = input.LA(1);
+
+                            if ( (LA46_0==26) ) {
+                                alt46=1;
+                            }
+                            switch (alt46) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1498:8: otherlv_104= ';'
+                                    {
+                                    otherlv_104=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature2838); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_104, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_6_2_1());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1503:6: ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1503:6: ( () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1503:7: () otherlv_106= 'var' ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_108_0= ruleMultiplicity ) )? (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )? ( (lv_name_112_0= ruleValidIDWithKeywords ) ) (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )? ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1503:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1504:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_7_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_106=(Token)match(input,42,FollowSets000.FOLLOW_42_in_ruleDtoFeature2870); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_106, grammarAccess.getDtoFeatureAccess().getVarKeyword_2_7_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1513:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1514:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1514:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1515:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDtoFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeLScalarTypeCrossReference_2_7_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleDtoFeature2893);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1528:2: ( (lv_multiplicity_108_0= ruleMultiplicity ) )?
+                    int alt48=2;
+                    int LA48_0 = input.LA(1);
+
+                    if ( (LA48_0==29) ) {
+                        int LA48_1 = input.LA(2);
+
+                        if ( (LA48_1==76||LA48_1==84||LA48_1==143||(LA48_1>=154 && LA48_1<=155)) ) {
+                            alt48=1;
+                        }
+                    }
+                    switch (alt48) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1529:1: (lv_multiplicity_108_0= ruleMultiplicity )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1529:1: (lv_multiplicity_108_0= ruleMultiplicity )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1530:3: lv_multiplicity_108_0= ruleMultiplicity
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_7_3_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleMultiplicity_in_ruleDtoFeature2914);
+                            lv_multiplicity_108_0=ruleMultiplicity();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"multiplicity",
+                                      		lv_multiplicity_108_0, 
+                                      		"Multiplicity");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1546:3: (otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']' )?
+                    int alt50=2;
+                    int LA50_0 = input.LA(1);
+
+                    if ( (LA50_0==29) ) {
+                        alt50=1;
+                    }
+                    switch (alt50) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1546:5: otherlv_109= '[' ( (lv_constraints_110_0= ruleAllConstraints ) )* otherlv_111= ']'
+                            {
+                            otherlv_109=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDtoFeature2928); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_109, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_7_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1550:1: ( (lv_constraints_110_0= ruleAllConstraints ) )*
+                            loop49:
+                            do {
+                                int alt49=2;
+                                int LA49_0 = input.LA(1);
+
+                                if ( (LA49_0==53||(LA49_0>=58 && LA49_0<=69)) ) {
+                                    alt49=1;
+                                }
+
+
+                                switch (alt49) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1551:1: (lv_constraints_110_0= ruleAllConstraints )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1551:1: (lv_constraints_110_0= ruleAllConstraints )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1552:3: lv_constraints_110_0= ruleAllConstraints
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_7_4_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleAllConstraints_in_ruleDtoFeature2949);
+                            	    lv_constraints_110_0=ruleAllConstraints();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"constraints",
+                            	              		lv_constraints_110_0, 
+                            	              		"AllConstraints");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop49;
+                                }
+                            } while (true);
+
+                            otherlv_111=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDtoFeature2962); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_111, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_7_4_2());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1572:3: ( (lv_name_112_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1573:1: (lv_name_112_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1573:1: (lv_name_112_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1574:3: lv_name_112_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_7_5_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature2985);
+                    lv_name_112_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_112_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1590:2: (otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')' )?
+                    int alt52=2;
+                    int LA52_0 = input.LA(1);
+
+                    if ( (LA52_0==22) ) {
+                        alt52=1;
+                    }
+                    switch (alt52) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1590:4: otherlv_113= 'properties' otherlv_114= '(' ( (lv_properties_115_0= ruleKeyAndValue ) ) (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )* otherlv_118= ')'
+                            {
+                            otherlv_113=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDtoFeature2998); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_113, grammarAccess.getDtoFeatureAccess().getPropertiesKeyword_2_7_6_0());
+                                  
+                            }
+                            otherlv_114=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature3010); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_114, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_7_6_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1598:1: ( (lv_properties_115_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1599:1: (lv_properties_115_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1599:1: (lv_properties_115_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1600:3: lv_properties_115_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_7_6_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature3031);
+                            lv_properties_115_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_115_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1616:2: (otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) ) )*
+                            loop51:
+                            do {
+                                int alt51=2;
+                                int LA51_0 = input.LA(1);
+
+                                if ( (LA51_0==24) ) {
+                                    alt51=1;
+                                }
+
+
+                                switch (alt51) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1616:4: otherlv_116= ', ' ( (lv_properties_117_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_116=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature3044); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_116, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_7_6_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1620:1: ( (lv_properties_117_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1621:1: (lv_properties_117_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1621:1: (lv_properties_117_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1622:3: lv_properties_117_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_7_6_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDtoFeature3065);
+                            	    lv_properties_117_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_117_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop51;
+                                }
+                            } while (true);
+
+                            otherlv_118=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature3079); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_118, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_7_6_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1642:3: ( ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) ) | (otherlv_120= ';' )? )
+                    int alt54=2;
+                    int LA54_0 = input.LA(1);
+
+                    if ( (LA54_0==17) ) {
+                        alt54=1;
+                    }
+                    else if ( (LA54_0==EOF||LA54_0==18||LA54_0==20||(LA54_0>=26 && LA54_0<=28)||(LA54_0>=31 && LA54_0<=38)||(LA54_0>=42 && LA54_0<=43)||LA54_0==86) ) {
+                        alt54=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 54, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt54) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1642:4: ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1642:4: ( (lv_mapper_119_0= ruleLimitedMapperDtoMapper ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1643:1: (lv_mapper_119_0= ruleLimitedMapperDtoMapper )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1643:1: (lv_mapper_119_0= ruleLimitedMapperDtoMapper )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1644:3: lv_mapper_119_0= ruleLimitedMapperDtoMapper
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getMapperLimitedMapperDtoMapperParserRuleCall_2_7_7_0_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleLimitedMapperDtoMapper_in_ruleDtoFeature3103);
+                            lv_mapper_119_0=ruleLimitedMapperDtoMapper();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"mapper",
+                                      		lv_mapper_119_0, 
+                                      		"LimitedMapperDtoMapper");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1661:6: (otherlv_120= ';' )?
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1661:6: (otherlv_120= ';' )?
+                            int alt53=2;
+                            int LA53_0 = input.LA(1);
+
+                            if ( (LA53_0==26) ) {
+                                alt53=1;
+                            }
+                            switch (alt53) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1661:8: otherlv_120= ';'
+                                    {
+                                    otherlv_120=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleDtoFeature3122); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_120, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_7_7_1());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1666:6: ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1666:6: ( () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1666:7: () (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1666:7: ()
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1667:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getDtoFeatureAccess().getLDtoOperationAnnotationInfoAction_2_8_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1672:2: (otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1672:4: otherlv_122= 'def' ( (lv_type_123_0= ruleJvmTypeReference ) ) ( (lv_name_124_0= ruleValidIDWithKeywords ) ) otherlv_125= '(' ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_129= ')' ( (lv_body_130_0= ruleXExpression ) )
+                    {
+                    otherlv_122=(Token)match(input,43,FollowSets000.FOLLOW_43_in_ruleDtoFeature3155); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_122, grammarAccess.getDtoFeatureAccess().getDefKeyword_2_8_1_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1676:1: ( (lv_type_123_0= ruleJvmTypeReference ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1677:1: (lv_type_123_0= ruleJvmTypeReference )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1677:1: (lv_type_123_0= ruleJvmTypeReference )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1678:3: lv_type_123_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getTypeJvmTypeReferenceParserRuleCall_2_8_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleDtoFeature3176);
+                    lv_type_123_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"type",
+                              		lv_type_123_0, 
+                              		"JvmTypeReference");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1694:2: ( (lv_name_124_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1695:1: (lv_name_124_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1695:1: (lv_name_124_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1696:3: lv_name_124_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getNameValidIDWithKeywordsParserRuleCall_2_8_1_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDtoFeature3197);
+                    lv_name_124_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_124_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_125=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDtoFeature3209); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_125, grammarAccess.getDtoFeatureAccess().getLeftParenthesisKeyword_2_8_1_3());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1716:1: ( ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )* )?
+                    int alt56=2;
+                    int LA56_0 = input.LA(1);
+
+                    if ( (LA56_0==RULE_ID||LA56_0==23||LA56_0==106) ) {
+                        alt56=1;
+                    }
+                    switch (alt56) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1716:2: ( (lv_params_126_0= ruleFullJvmFormalParameter ) ) (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )*
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1716:2: ( (lv_params_126_0= ruleFullJvmFormalParameter ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1717:1: (lv_params_126_0= ruleFullJvmFormalParameter )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1717:1: (lv_params_126_0= ruleFullJvmFormalParameter )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1718:3: lv_params_126_0= ruleFullJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_0_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleFullJvmFormalParameter_in_ruleDtoFeature3231);
+                            lv_params_126_0=ruleFullJvmFormalParameter();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"params",
+                                      		lv_params_126_0, 
+                                      		"FullJvmFormalParameter");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1734:2: (otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) ) )*
+                            loop55:
+                            do {
+                                int alt55=2;
+                                int LA55_0 = input.LA(1);
+
+                                if ( (LA55_0==24) ) {
+                                    alt55=1;
+                                }
+
+
+                                switch (alt55) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1734:4: otherlv_127= ', ' ( (lv_params_128_0= ruleFullJvmFormalParameter ) )
+                            	    {
+                            	    otherlv_127=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDtoFeature3244); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_127, grammarAccess.getDtoFeatureAccess().getCommaSpaceKeyword_2_8_1_4_1_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1738:1: ( (lv_params_128_0= ruleFullJvmFormalParameter ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1739:1: (lv_params_128_0= ruleFullJvmFormalParameter )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1739:1: (lv_params_128_0= ruleFullJvmFormalParameter )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1740:3: lv_params_128_0= ruleFullJvmFormalParameter
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_1_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleFullJvmFormalParameter_in_ruleDtoFeature3265);
+                            	    lv_params_128_0=ruleFullJvmFormalParameter();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"params",
+                            	              		lv_params_128_0, 
+                            	              		"FullJvmFormalParameter");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop55;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_129=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDtoFeature3281); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_129, grammarAccess.getDtoFeatureAccess().getRightParenthesisKeyword_2_8_1_5());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1760:1: ( (lv_body_130_0= ruleXExpression ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1761:1: (lv_body_130_0= ruleXExpression )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1761:1: (lv_body_130_0= ruleXExpression )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1762:3: lv_body_130_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoFeatureAccess().getBodyXExpressionParserRuleCall_2_8_1_6_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleXExpression_in_ruleDtoFeature3302);
+                    lv_body_130_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"body",
+                              		lv_body_130_0, 
+                              		"XExpression");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtoFeature"
+
+
+    // $ANTLR start "entryRuleDtoMapper"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1786:1: entryRuleDtoMapper returns [EObject current=null] : iv_ruleDtoMapper= ruleDtoMapper EOF ;
+    public final EObject entryRuleDtoMapper() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtoMapper = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1787:2: (iv_ruleDtoMapper= ruleDtoMapper EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1788:2: iv_ruleDtoMapper= ruleDtoMapper EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtoMapperRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtoMapper_in_entryRuleDtoMapper3341);
+            iv_ruleDtoMapper=ruleDtoMapper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtoMapper; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtoMapper3351); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtoMapper"
+
+
+    // $ANTLR start "ruleDtoMapper"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1795:1: ruleDtoMapper returns [EObject current=null] : (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) (otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) ) )? otherlv_5= '}' ) ;
+    public final EObject ruleDtoMapper() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        EObject lv_toDTO_2_0 = null;
+
+        EObject lv_fromDTO_4_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1798:28: ( (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) (otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) ) )? otherlv_5= '}' ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1799:1: (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) (otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) ) )? otherlv_5= '}' )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1799:1: (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) (otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) ) )? otherlv_5= '}' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1799:3: otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) (otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) ) )? otherlv_5= '}'
+            {
+            otherlv_0=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleDtoMapper3388); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDtoMapperAccess().getLeftCurlyBracketKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,44,FollowSets000.FOLLOW_44_in_ruleDtoMapper3400); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtoMapperAccess().getToDTOKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1807:1: ( (lv_toDTO_2_0= ruleXExpression ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1808:1: (lv_toDTO_2_0= ruleXExpression )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1808:1: (lv_toDTO_2_0= ruleXExpression )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1809:3: lv_toDTO_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtoMapperAccess().getToDTOXExpressionParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleXExpression_in_ruleDtoMapper3421);
+            lv_toDTO_2_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtoMapperRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"toDTO",
+                      		lv_toDTO_2_0, 
+                      		"XExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1825:2: (otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) ) )?
+            int alt58=2;
+            int LA58_0 = input.LA(1);
+
+            if ( (LA58_0==45) ) {
+                alt58=1;
+            }
+            switch (alt58) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1825:4: otherlv_3= 'fromDTO' ( (lv_fromDTO_4_0= ruleXExpression ) )
+                    {
+                    otherlv_3=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleDtoMapper3434); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getDtoMapperAccess().getFromDTOKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1829:1: ( (lv_fromDTO_4_0= ruleXExpression ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1830:1: (lv_fromDTO_4_0= ruleXExpression )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1830:1: (lv_fromDTO_4_0= ruleXExpression )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1831:3: lv_fromDTO_4_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDtoMapperAccess().getFromDTOXExpressionParserRuleCall_3_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleXExpression_in_ruleDtoMapper3455);
+                    lv_fromDTO_4_0=ruleXExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDtoMapperRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"fromDTO",
+                              		lv_fromDTO_4_0, 
+                              		"XExpression");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleDtoMapper3469); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getDtoMapperAccess().getRightCurlyBracketKeyword_4());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtoMapper"
+
+
+    // $ANTLR start "entryRuleLimitedMapperDtoMapper"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1859:1: entryRuleLimitedMapperDtoMapper returns [EObject current=null] : iv_ruleLimitedMapperDtoMapper= ruleLimitedMapperDtoMapper EOF ;
+    public final EObject entryRuleLimitedMapperDtoMapper() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLimitedMapperDtoMapper = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1860:2: (iv_ruleLimitedMapperDtoMapper= ruleLimitedMapperDtoMapper EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1861:2: iv_ruleLimitedMapperDtoMapper= ruleLimitedMapperDtoMapper EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getLimitedMapperDtoMapperRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLimitedMapperDtoMapper_in_entryRuleLimitedMapperDtoMapper3505);
+            iv_ruleLimitedMapperDtoMapper=ruleLimitedMapperDtoMapper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleLimitedMapperDtoMapper; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLimitedMapperDtoMapper3515); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLimitedMapperDtoMapper"
+
+
+    // $ANTLR start "ruleLimitedMapperDtoMapper"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1868:1: ruleLimitedMapperDtoMapper returns [EObject current=null] : (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) otherlv_3= '}' ) ;
+    public final EObject ruleLimitedMapperDtoMapper() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        EObject lv_toDTO_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1871:28: ( (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) otherlv_3= '}' ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1872:1: (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) otherlv_3= '}' )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1872:1: (otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) otherlv_3= '}' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1872:3: otherlv_0= '{' otherlv_1= 'toDTO' ( (lv_toDTO_2_0= ruleXExpression ) ) otherlv_3= '}'
+            {
+            otherlv_0=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleLimitedMapperDtoMapper3552); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getLimitedMapperDtoMapperAccess().getLeftCurlyBracketKeyword_0());
+                  
+            }
+            otherlv_1=(Token)match(input,44,FollowSets000.FOLLOW_44_in_ruleLimitedMapperDtoMapper3564); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getLimitedMapperDtoMapperAccess().getToDTOKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1880:1: ( (lv_toDTO_2_0= ruleXExpression ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1881:1: (lv_toDTO_2_0= ruleXExpression )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1881:1: (lv_toDTO_2_0= ruleXExpression )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1882:3: lv_toDTO_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getLimitedMapperDtoMapperAccess().getToDTOXExpressionParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleXExpression_in_ruleLimitedMapperDtoMapper3585);
+            lv_toDTO_2_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getLimitedMapperDtoMapperRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"toDTO",
+                      		lv_toDTO_2_0, 
+                      		"XExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleLimitedMapperDtoMapper3597); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getLimitedMapperDtoMapperAccess().getRightCurlyBracketKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLimitedMapperDtoMapper"
+
+
+    // $ANTLR start "entryRuleTypedPackage"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1912:1: entryRuleTypedPackage returns [EObject current=null] : iv_ruleTypedPackage= ruleTypedPackage EOF ;
+    public final EObject entryRuleTypedPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTypedPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1913:2: (iv_ruleTypedPackage= ruleTypedPackage EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1914:2: iv_ruleTypedPackage= ruleTypedPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypedPackageRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage3635);
+            iv_ruleTypedPackage=ruleTypedPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTypedPackage; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedPackage3645); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTypedPackage"
+
+
+    // $ANTLR start "ruleTypedPackage"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1921:1: ruleTypedPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleTypedPackage() 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_types_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1924:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1925:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1925:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1925:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1925:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1926:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,46,FollowSets000.FOLLOW_46_in_ruleTypedPackage3691); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1935:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1936:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1936:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1937:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleTypedPackage3712);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1953:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==17) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1953:4: otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleTypedPackage3725); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1957:1: ( (lv_imports_4_0= ruleImport ) )*
+                    loop59:
+                    do {
+                        int alt59=2;
+                        int LA59_0 = input.LA(1);
+
+                        if ( (LA59_0==47) ) {
+                            alt59=1;
+                        }
+
+
+                        switch (alt59) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1958:1: (lv_imports_4_0= ruleImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1958:1: (lv_imports_4_0= ruleImport )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1959:3: lv_imports_4_0= ruleImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleImport_in_ruleTypedPackage3746);
+                    	    lv_imports_4_0=ruleImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"Import");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop59;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1975:3: ( (lv_types_5_0= ruleType ) )*
+                    loop60:
+                    do {
+                        int alt60=2;
+                        int LA60_0 = input.LA(1);
+
+                        if ( ((LA60_0>=13 && LA60_0<=14)||LA60_0==19||LA60_0==48||LA60_0==70||LA60_0==86) ) {
+                            alt60=1;
+                        }
+
+
+                        switch (alt60) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1976:1: (lv_types_5_0= ruleType )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1976:1: (lv_types_5_0= ruleType )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:1977:3: lv_types_5_0= ruleType
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleTypedPackage3768);
+                    	    lv_types_5_0=ruleType();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"types",
+                    	              		lv_types_5_0, 
+                    	              		"Type");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop60;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleTypedPackage3781); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTypedPackage"
+
+
+    // $ANTLR start "entryRuleType"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2005:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
+    public final EObject entryRuleType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2006:2: (iv_ruleType= ruleType EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2007:2: iv_ruleType= ruleType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleType_in_entryRuleType3819);
+            iv_ruleType=ruleType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleType3829); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleType"
+
+
+    // $ANTLR start "ruleType"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2014:1: ruleType returns [EObject current=null] : (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass ) ;
+    public final EObject ruleType() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ScalarType_0 = null;
+
+        EObject this_Class_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2017:28: ( (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2018:1: (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2018:1: (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass )
+            int alt62=2;
+            int LA62_0 = input.LA(1);
+
+            if ( (LA62_0==48||LA62_0==70) ) {
+                alt62=1;
+            }
+            else if ( ((LA62_0>=13 && LA62_0<=14)||LA62_0==19||LA62_0==86) ) {
+                alt62=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 62, 0, input);
+
+                throw nvae;
+            }
+            switch (alt62) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2019:5: this_ScalarType_0= ruleScalarType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleScalarType_in_ruleType3876);
+                    this_ScalarType_0=ruleScalarType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ScalarType_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2029:5: this_Class_1= ruleClass
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleClass_in_ruleType3903);
+                    this_Class_1=ruleClass();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_Class_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleType"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2045:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
+    public final EObject entryRuleImport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleImport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2046:2: (iv_ruleImport= ruleImport EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2047:2: iv_ruleImport= ruleImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getImportRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleImport_in_entryRuleImport3938);
+            iv_ruleImport=ruleImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleImport; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImport3948); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2054:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? ) ;
+    public final EObject ruleImport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2057:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2058:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2058:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2058:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )?
+            {
+            otherlv_0=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleImport3985); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2062:1: ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2063:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2063:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2064:3: lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLQualifiedNameWithWildCard_in_ruleImport4006);
+            lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getImportRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"importedNamespace",
+                      		lv_importedNamespace_1_0, 
+                      		"LQualifiedNameWithWildCard");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2080:2: (otherlv_2= ';' )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==26) ) {
+                alt63=1;
+            }
+            switch (alt63) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2080:4: otherlv_2= ';'
+                    {
+                    otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleImport4019); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleDataType"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2092:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
+    public final EObject entryRuleDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2093:2: (iv_ruleDataType= ruleDataType EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2094:2: iv_ruleDataType= ruleDataType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataType_in_entryRuleDataType4057);
+            iv_ruleDataType=ruleDataType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataType4067); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataType"
+
+
+    // $ANTLR start "ruleDataType"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2101:1: ruleDataType returns [EObject current=null] : (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) ;
+    public final EObject ruleDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_asPrimitive_4_0=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token lv_date_12_0=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token lv_asBlob_21_0=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_jvmTypeReference_3_0 = null;
+
+        EObject lv_constraints_5_0 = null;
+
+        EObject lv_properties_8_0 = null;
+
+        EObject lv_properties_10_0 = null;
+
+        Enumerator lv_dateType_13_0 = null;
+
+        EObject lv_constraints_14_0 = null;
+
+        EObject lv_properties_17_0 = null;
+
+        EObject lv_properties_19_0 = null;
+
+        EObject lv_constraints_22_0 = null;
+
+        EObject lv_properties_25_0 = null;
+
+        EObject lv_properties_27_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2104:28: ( (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2105:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2105:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2105:3: otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )?
+            {
+            otherlv_0=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleDataType4104); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2109:1: ( (lv_name_1_0= ruleValidIDWithKeywords ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2110:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2110:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2111:3: lv_name_1_0= ruleValidIDWithKeywords
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDataType4125);
+            lv_name_1_0=ruleValidIDWithKeywords();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidIDWithKeywords");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2127:2: ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) )
+            int alt74=3;
+            switch ( input.LA(1) ) {
+            case 49:
+                {
+                alt74=1;
+                }
+                break;
+            case 51:
+                {
+                alt74=2;
+                }
+                break;
+            case 52:
+                {
+                alt74=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 74, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt74) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2127:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2127:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2127:5: otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    {
+                    otherlv_2=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleDataType4139); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2131:1: ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2132:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2132:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2133:3: lv_jvmTypeReference_3_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleDataType4160);
+                    lv_jvmTypeReference_3_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"jvmTypeReference",
+                              		lv_jvmTypeReference_3_0, 
+                              		"JvmTypeReference");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2149:2: ( (lv_asPrimitive_4_0= 'as primitive' ) )?
+                    int alt64=2;
+                    int LA64_0 = input.LA(1);
+
+                    if ( (LA64_0==50) ) {
+                        alt64=1;
+                    }
+                    switch (alt64) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2150:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2150:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2151:3: lv_asPrimitive_4_0= 'as primitive'
+                            {
+                            lv_asPrimitive_4_0=(Token)match(input,50,FollowSets000.FOLLOW_50_in_ruleDataType4178); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		setWithLastConsumed(current, "asPrimitive", true, "as primitive");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2164:3: ( (lv_constraints_5_0= ruleDataTypeConstraint ) )*
+                    loop65:
+                    do {
+                        int alt65=2;
+                        int LA65_0 = input.LA(1);
+
+                        if ( (LA65_0==53||(LA65_0>=58 && LA65_0<=61)||(LA65_0>=64 && LA65_0<=69)) ) {
+                            alt65=1;
+                        }
+
+
+                        switch (alt65) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2165:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2165:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2166:3: lv_constraints_5_0= ruleDataTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_ruleDataType4213);
+                    	    lv_constraints_5_0=ruleDataTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_5_0, 
+                    	              		"DataTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop65;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2182:3: (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    int alt67=2;
+                    int LA67_0 = input.LA(1);
+
+                    if ( (LA67_0==22) ) {
+                        alt67=1;
+                    }
+                    switch (alt67) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2182:5: otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')'
+                            {
+                            otherlv_6=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType4227); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+                                  
+                            }
+                            otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType4239); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2190:1: ( (lv_properties_8_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2191:1: (lv_properties_8_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2191:1: (lv_properties_8_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2192:3: lv_properties_8_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType4260);
+                            lv_properties_8_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_8_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2208:2: (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )*
+                            loop66:
+                            do {
+                                int alt66=2;
+                                int LA66_0 = input.LA(1);
+
+                                if ( (LA66_0==24) ) {
+                                    alt66=1;
+                                }
+
+
+                                switch (alt66) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2208:4: otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType4273); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2212:1: ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2213:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2213:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2214:3: lv_properties_10_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType4294);
+                            	    lv_properties_10_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_10_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop66;
+                                }
+                            } while (true);
+
+                            otherlv_11=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType4308); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2235:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2235:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2235:7: ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2235:7: ( (lv_date_12_0= 'dateType' ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2236:1: (lv_date_12_0= 'dateType' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2236:1: (lv_date_12_0= 'dateType' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2237:3: lv_date_12_0= 'dateType'
+                    {
+                    lv_date_12_0=(Token)match(input,51,FollowSets000.FOLLOW_51_in_ruleDataType4336); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "date", true, "dateType");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2250:2: ( (lv_dateType_13_0= ruleDateType ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2251:1: (lv_dateType_13_0= ruleDateType )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2251:1: (lv_dateType_13_0= ruleDateType )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2252:3: lv_dateType_13_0= ruleDateType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDateType_in_ruleDataType4370);
+                    lv_dateType_13_0=ruleDateType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"dateType",
+                              		lv_dateType_13_0, 
+                              		"DateType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2268:2: ( (lv_constraints_14_0= ruleDateConstraint ) )*
+                    loop68:
+                    do {
+                        int alt68=2;
+                        int LA68_0 = input.LA(1);
+
+                        if ( ((LA68_0>=62 && LA68_0<=63)||(LA68_0>=66 && LA68_0<=67)) ) {
+                            alt68=1;
+                        }
+
+
+                        switch (alt68) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2269:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2269:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2270:3: lv_constraints_14_0= ruleDateConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_ruleDataType4391);
+                    	    lv_constraints_14_0=ruleDateConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_14_0, 
+                    	              		"DateConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop68;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2286:3: (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    int alt70=2;
+                    int LA70_0 = input.LA(1);
+
+                    if ( (LA70_0==22) ) {
+                        alt70=1;
+                    }
+                    switch (alt70) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2286:5: otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')'
+                            {
+                            otherlv_15=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType4405); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+                                  
+                            }
+                            otherlv_16=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleDataType4417); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2294:1: ( (lv_properties_17_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2295:1: (lv_properties_17_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2295:1: (lv_properties_17_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2296:3: lv_properties_17_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType4438);
+                            lv_properties_17_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_17_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2312:2: (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )*
+                            loop69:
+                            do {
+                                int alt69=2;
+                                int LA69_0 = input.LA(1);
+
+                                if ( (LA69_0==24) ) {
+                                    alt69=1;
+                                }
+
+
+                                switch (alt69) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2312:4: otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_18=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType4451); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2316:1: ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2317:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2317:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2318:3: lv_properties_19_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType4472);
+                            	    lv_properties_19_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_19_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop69;
+                                }
+                            } while (true);
+
+                            otherlv_20=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType4486); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2339:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2339:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2339:7: ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2339:7: ( (lv_asBlob_21_0= 'as blob' ) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2340:1: (lv_asBlob_21_0= 'as blob' )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2340:1: (lv_asBlob_21_0= 'as blob' )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2341:3: lv_asBlob_21_0= 'as blob'
+                    {
+                    lv_asBlob_21_0=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleDataType4514); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "asBlob", true, "as blob");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2354:2: ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )*
+                    loop71:
+                    do {
+                        int alt71=2;
+                        int LA71_0 = input.LA(1);
+
+                        if ( ((LA71_0>=66 && LA71_0<=67)) ) {
+                            alt71=1;
+                        }
+
+
+                        switch (alt71) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2355:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2355:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2356:3: lv_constraints_22_0= ruleBlobTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_ruleDataType4548);
+                    	    lv_constraints_22_0=ruleBlobTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_22_0, 
+                    	              		"BlobTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop71;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2372:3: (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    int alt73=2;
+                    int LA73_0 = input.LA(1);
+
+                    if ( (LA73_0==22) ) {
+                        alt73=1;
+                    }
+                    switch (alt73) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2372:5: otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')'
+                            {
+                            otherlv_23=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleDataType4562); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+                                  
+                            }
+                            otherlv_24=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDataType4574); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2380:1: ( (lv_properties_25_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2381:1: (lv_properties_25_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2381:1: (lv_properties_25_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2382:3: lv_properties_25_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets001.FOLLOW_ruleKeyAndValue_in_ruleDataType4595);
+                            lv_properties_25_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_25_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2398:2: (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )*
+                            loop72:
+                            do {
+                                int alt72=2;
+                                int LA72_0 = input.LA(1);
+
+                                if ( (LA72_0==24) ) {
+                                    alt72=1;
+                                }
+
+
+                                switch (alt72) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2398:4: otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_26=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDataType4608); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2402:1: ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2403:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2403:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2404:3: lv_properties_27_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets001.FOLLOW_ruleKeyAndValue_in_ruleDataType4629);
+                            	    lv_properties_27_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_27_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop72;
+                                }
+                            } while (true);
+
+                            otherlv_28=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDataType4643); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2424:5: (otherlv_29= ';' )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
+
+            if ( (LA75_0==26) ) {
+                alt75=1;
+            }
+            switch (alt75) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2424:7: otherlv_29= ';'
+                    {
+                    otherlv_29=(Token)match(input,26,FollowSets001.FOLLOW_26_in_ruleDataType4660); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataType"
+
+
+    // $ANTLR start "entryRuleAllConstraints"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2436:1: entryRuleAllConstraints returns [EObject current=null] : iv_ruleAllConstraints= ruleAllConstraints EOF ;
+    public final EObject entryRuleAllConstraints() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleAllConstraints = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2437:2: (iv_ruleAllConstraints= ruleAllConstraints EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2438:2: iv_ruleAllConstraints= ruleAllConstraints EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getAllConstraintsRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleAllConstraints_in_entryRuleAllConstraints4698);
+            iv_ruleAllConstraints=ruleAllConstraints();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleAllConstraints; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleAllConstraints4708); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleAllConstraints"
+
+
+    // $ANTLR start "ruleAllConstraints"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2445:1: ruleAllConstraints returns [EObject current=null] : (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize | this_DtCFuture_11= ruleDtCFuture | this_DtCPast_12= ruleDtCPast ) ;
+    public final EObject ruleAllConstraints() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCAssertFalse_0 = null;
+
+        EObject this_DtCAssertTrue_1 = null;
+
+        EObject this_DtCDecimalMax_2 = null;
+
+        EObject this_DtCDecimalMin_3 = null;
+
+        EObject this_DtCDigits_4 = null;
+
+        EObject this_DtCNumericMax_5 = null;
+
+        EObject this_DtCNumericMin_6 = null;
+
+        EObject this_DtCNotNull_7 = null;
+
+        EObject this_DtCNull_8 = null;
+
+        EObject this_DtCRegEx_9 = null;
+
+        EObject this_DtCSize_10 = null;
+
+        EObject this_DtCFuture_11 = null;
+
+        EObject this_DtCPast_12 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2448:28: ( (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize | this_DtCFuture_11= ruleDtCFuture | this_DtCPast_12= ruleDtCPast ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2449:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize | this_DtCFuture_11= ruleDtCFuture | this_DtCPast_12= ruleDtCPast )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2449:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize | this_DtCFuture_11= ruleDtCFuture | this_DtCPast_12= ruleDtCPast )
+            int alt76=13;
+            switch ( input.LA(1) ) {
+            case 53:
+                {
+                alt76=1;
+                }
+                break;
+            case 58:
+                {
+                alt76=2;
+                }
+                break;
+            case 59:
+                {
+                alt76=3;
+                }
+                break;
+            case 60:
+                {
+                alt76=4;
+                }
+                break;
+            case 61:
+                {
+                alt76=5;
+                }
+                break;
+            case 64:
+                {
+                alt76=6;
+                }
+                break;
+            case 65:
+                {
+                alt76=7;
+                }
+                break;
+            case 66:
+                {
+                alt76=8;
+                }
+                break;
+            case 67:
+                {
+                alt76=9;
+                }
+                break;
+            case 68:
+                {
+                alt76=10;
+                }
+                break;
+            case 69:
+                {
+                alt76=11;
+                }
+                break;
+            case 62:
+                {
+                alt76=12;
+                }
+                break;
+            case 63:
+                {
+                alt76=13;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 76, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt76) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2450:5: this_DtCAssertFalse_0= ruleDtCAssertFalse
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCAssertFalse_in_ruleAllConstraints4755);
+                    this_DtCAssertFalse_0=ruleDtCAssertFalse();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertFalse_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2460:5: this_DtCAssertTrue_1= ruleDtCAssertTrue
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCAssertTrue_in_ruleAllConstraints4782);
+                    this_DtCAssertTrue_1=ruleDtCAssertTrue();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertTrue_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2470:5: this_DtCDecimalMax_2= ruleDtCDecimalMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMax_in_ruleAllConstraints4809);
+                    this_DtCDecimalMax_2=ruleDtCDecimalMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMax_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2480:5: this_DtCDecimalMin_3= ruleDtCDecimalMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMin_in_ruleAllConstraints4836);
+                    this_DtCDecimalMin_3=ruleDtCDecimalMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMin_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2490:5: this_DtCDigits_4= ruleDtCDigits
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCDigits_in_ruleAllConstraints4863);
+                    this_DtCDigits_4=ruleDtCDigits();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDigits_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2500:5: this_DtCNumericMax_5= ruleDtCNumericMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMax_in_ruleAllConstraints4890);
+                    this_DtCNumericMax_5=ruleDtCNumericMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMax_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2510:5: this_DtCNumericMin_6= ruleDtCNumericMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMin_in_ruleAllConstraints4917);
+                    this_DtCNumericMin_6=ruleDtCNumericMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMin_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2520:5: this_DtCNotNull_7= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_ruleAllConstraints4944);
+                    this_DtCNotNull_7=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2530:5: this_DtCNull_8= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_ruleAllConstraints4971);
+                    this_DtCNull_8=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2540:5: this_DtCRegEx_9= ruleDtCRegEx
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCRegEx_in_ruleAllConstraints4998);
+                    this_DtCRegEx_9=ruleDtCRegEx();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCRegEx_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2550:5: this_DtCSize_10= ruleDtCSize
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCSize_in_ruleAllConstraints5025);
+                    this_DtCSize_10=ruleDtCSize();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCSize_10; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 12 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2560:5: this_DtCFuture_11= ruleDtCFuture
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCFuture_in_ruleAllConstraints5052);
+                    this_DtCFuture_11=ruleDtCFuture();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCFuture_11; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 13 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2570:5: this_DtCPast_12= ruleDtCPast
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCPast_in_ruleAllConstraints5079);
+                    this_DtCPast_12=ruleDtCPast();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCPast_12; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleAllConstraints"
+
+
+    // $ANTLR start "entryRuleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2586:1: entryRuleDataTypeConstraint returns [EObject current=null] : iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF ;
+    public final EObject entryRuleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2587:2: (iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2588:2: iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint5114);
+            iv_ruleDataTypeConstraint=ruleDataTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataTypeConstraint; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDataTypeConstraint5124); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataTypeConstraint"
+
+
+    // $ANTLR start "ruleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2595:1: ruleDataTypeConstraint returns [EObject current=null] : (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) ;
+    public final EObject ruleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCAssertFalse_0 = null;
+
+        EObject this_DtCAssertTrue_1 = null;
+
+        EObject this_DtCDecimalMax_2 = null;
+
+        EObject this_DtCDecimalMin_3 = null;
+
+        EObject this_DtCDigits_4 = null;
+
+        EObject this_DtCNumericMax_5 = null;
+
+        EObject this_DtCNumericMin_6 = null;
+
+        EObject this_DtCNotNull_7 = null;
+
+        EObject this_DtCNull_8 = null;
+
+        EObject this_DtCRegEx_9 = null;
+
+        EObject this_DtCSize_10 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2598:28: ( (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2599:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2599:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            int alt77=11;
+            switch ( input.LA(1) ) {
+            case 53:
+                {
+                alt77=1;
+                }
+                break;
+            case 58:
+                {
+                alt77=2;
+                }
+                break;
+            case 59:
+                {
+                alt77=3;
+                }
+                break;
+            case 60:
+                {
+                alt77=4;
+                }
+                break;
+            case 61:
+                {
+                alt77=5;
+                }
+                break;
+            case 64:
+                {
+                alt77=6;
+                }
+                break;
+            case 65:
+                {
+                alt77=7;
+                }
+                break;
+            case 66:
+                {
+                alt77=8;
+                }
+                break;
+            case 67:
+                {
+                alt77=9;
+                }
+                break;
+            case 68:
+                {
+                alt77=10;
+                }
+                break;
+            case 69:
+                {
+                alt77=11;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 77, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt77) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2600:5: this_DtCAssertFalse_0= ruleDtCAssertFalse
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCAssertFalse_in_ruleDataTypeConstraint5171);
+                    this_DtCAssertFalse_0=ruleDtCAssertFalse();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertFalse_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2610:5: this_DtCAssertTrue_1= ruleDtCAssertTrue
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCAssertTrue_in_ruleDataTypeConstraint5198);
+                    this_DtCAssertTrue_1=ruleDtCAssertTrue();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertTrue_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2620:5: this_DtCDecimalMax_2= ruleDtCDecimalMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMax_in_ruleDataTypeConstraint5225);
+                    this_DtCDecimalMax_2=ruleDtCDecimalMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMax_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2630:5: this_DtCDecimalMin_3= ruleDtCDecimalMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMin_in_ruleDataTypeConstraint5252);
+                    this_DtCDecimalMin_3=ruleDtCDecimalMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMin_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2640:5: this_DtCDigits_4= ruleDtCDigits
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCDigits_in_ruleDataTypeConstraint5279);
+                    this_DtCDigits_4=ruleDtCDigits();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDigits_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2650:5: this_DtCNumericMax_5= ruleDtCNumericMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMax_in_ruleDataTypeConstraint5306);
+                    this_DtCNumericMax_5=ruleDtCNumericMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMax_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2660:5: this_DtCNumericMin_6= ruleDtCNumericMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMin_in_ruleDataTypeConstraint5333);
+                    this_DtCNumericMin_6=ruleDtCNumericMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMin_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2670:5: this_DtCNotNull_7= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_ruleDataTypeConstraint5360);
+                    this_DtCNotNull_7=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2680:5: this_DtCNull_8= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_ruleDataTypeConstraint5387);
+                    this_DtCNull_8=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2690:5: this_DtCRegEx_9= ruleDtCRegEx
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCRegEx_in_ruleDataTypeConstraint5414);
+                    this_DtCRegEx_9=ruleDtCRegEx();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCRegEx_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2700:5: this_DtCSize_10= ruleDtCSize
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCSize_in_ruleDataTypeConstraint5441);
+                    this_DtCSize_10=ruleDtCSize();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCSize_10; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDateConstraint"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2716:1: entryRuleDateConstraint returns [EObject current=null] : iv_ruleDateConstraint= ruleDateConstraint EOF ;
+    public final EObject entryRuleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDateConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2717:2: (iv_ruleDateConstraint= ruleDateConstraint EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2718:2: iv_ruleDateConstraint= ruleDateConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDateConstraintRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint5476);
+            iv_ruleDateConstraint=ruleDateConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDateConstraint; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDateConstraint5486); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDateConstraint"
+
+
+    // $ANTLR start "ruleDateConstraint"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2725:1: ruleDateConstraint returns [EObject current=null] : (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) ;
+    public final EObject ruleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCFuture_0 = null;
+
+        EObject this_DtCPast_1 = null;
+
+        EObject this_DtCNotNull_2 = null;
+
+        EObject this_DtCNull_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2728:28: ( (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2729:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2729:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            int alt78=4;
+            switch ( input.LA(1) ) {
+            case 62:
+                {
+                alt78=1;
+                }
+                break;
+            case 63:
+                {
+                alt78=2;
+                }
+                break;
+            case 66:
+                {
+                alt78=3;
+                }
+                break;
+            case 67:
+                {
+                alt78=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 78, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt78) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2730:5: this_DtCFuture_0= ruleDtCFuture
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCFuture_in_ruleDateConstraint5533);
+                    this_DtCFuture_0=ruleDtCFuture();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCFuture_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2740:5: this_DtCPast_1= ruleDtCPast
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCPast_in_ruleDateConstraint5560);
+                    this_DtCPast_1=ruleDtCPast();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCPast_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2750:5: this_DtCNotNull_2= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_ruleDateConstraint5587);
+                    this_DtCNotNull_2=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2760:5: this_DtCNull_3= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_ruleDateConstraint5614);
+                    this_DtCNull_3=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDateConstraint"
+
+
+    // $ANTLR start "entryRuleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2776:1: entryRuleBlobTypeConstraint returns [EObject current=null] : iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF ;
+    public final EObject entryRuleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBlobTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2777:2: (iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2778:2: iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint5649);
+            iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleBlobTypeConstraint; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleBlobTypeConstraint5659); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBlobTypeConstraint"
+
+
+    // $ANTLR start "ruleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2785:1: ruleBlobTypeConstraint returns [EObject current=null] : (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) ;
+    public final EObject ruleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCNotNull_0 = null;
+
+        EObject this_DtCNull_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2788:28: ( (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2789:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2789:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==66) ) {
+                alt79=1;
+            }
+            else if ( (LA79_0==67) ) {
+                alt79=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 79, 0, input);
+
+                throw nvae;
+            }
+            switch (alt79) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2790:5: this_DtCNotNull_0= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_ruleBlobTypeConstraint5706);
+                    this_DtCNotNull_0=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2800:5: this_DtCNull_1= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_ruleBlobTypeConstraint5733);
+                    this_DtCNull_1=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBlobTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2816:1: entryRuleDtCAssertFalse returns [EObject current=null] : iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF ;
+    public final EObject entryRuleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertFalse = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2817:2: (iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2818:2: iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertFalseRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse5768);
+            iv_ruleDtCAssertFalse=ruleDtCAssertFalse();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertFalse; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCAssertFalse5778); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertFalse"
+
+
+    // $ANTLR start "ruleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2825:1: ruleDtCAssertFalse returns [EObject current=null] : ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2828:28: ( ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2829:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2829:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2829:2: () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2829:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2830:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,53,FollowSets001.FOLLOW_53_in_ruleDtCAssertFalse5824); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2839:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt83=2;
+            alt83 = dfa83.predict(input);
+            switch (alt83) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2841:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2841:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2842:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2845:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2846:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2846:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt82=0;
+                    loop82:
+                    do {
+                        int alt82=4;
+                        alt82 = dfa82.predict(input);
+                        switch (alt82) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2848:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2848:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2849:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2849:111: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2850:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2853:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2853:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2853:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2853:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCAssertFalse5882); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2857:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt80=2;
+                    	    int LA80_0 = input.LA(1);
+
+                    	    if ( (LA80_0==54) ) {
+                    	        alt80=1;
+                    	    }
+                    	    switch (alt80) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2857:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,54,FollowSets001.FOLLOW_54_in_ruleDtCAssertFalse5895); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCAssertFalse5907); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2865:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2866:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2866:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2867:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse5928);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2890:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2890:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2891:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2891:111: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2892:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2895:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2895:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2895:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2895:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleDtCAssertFalse5998); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCAssertFalse6010); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2903:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2904:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2904:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2905:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse6031);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2928:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2928:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2929:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2929:111: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2930:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2933:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2933:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2933:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2933:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2933:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt81=2;
+                    	    int LA81_0 = input.LA(1);
+
+                    	    if ( (LA81_0==57) ) {
+                    	        alt81=1;
+                    	    }
+                    	    switch (alt81) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2933:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleDtCAssertFalse6100); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCAssertFalse6112); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2941:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2942:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2942:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2943:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertFalse6133);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCAssertFalse6147); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt82 >= 1 ) break loop82;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(82, input);
+                                throw eee;
+                        }
+                        cnt82++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertFalse"
+
+
+    // $ANTLR start "entryRuleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2986:1: entryRuleDtCAssertTrue returns [EObject current=null] : iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF ;
+    public final EObject entryRuleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertTrue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2987:2: (iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2988:2: iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertTrueRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue6231);
+            iv_ruleDtCAssertTrue=ruleDtCAssertTrue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertTrue; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCAssertTrue6241); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertTrue"
+
+
+    // $ANTLR start "ruleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2995:1: ruleDtCAssertTrue returns [EObject current=null] : ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2998:28: ( ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2999:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2999:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2999:2: () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:2999:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3000:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,58,FollowSets001.FOLLOW_58_in_ruleDtCAssertTrue6287); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3009:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt87=2;
+            alt87 = dfa87.predict(input);
+            switch (alt87) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3011:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3011:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3012:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3015:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3016:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3016:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt86=0;
+                    loop86:
+                    do {
+                        int alt86=4;
+                        alt86 = dfa86.predict(input);
+                        switch (alt86) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3018:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3018:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3019:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3019:110: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3020:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3023:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3023:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3023:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3023:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCAssertTrue6345); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3027:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt84=2;
+                    	    int LA84_0 = input.LA(1);
+
+                    	    if ( (LA84_0==54) ) {
+                    	        alt84=1;
+                    	    }
+                    	    switch (alt84) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3027:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,54,FollowSets001.FOLLOW_54_in_ruleDtCAssertTrue6358); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCAssertTrue6370); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3035:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3036:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3036:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3037:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue6391);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3060:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3060:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3061:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3061:110: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3062:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3065:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3065:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3065:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3065:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleDtCAssertTrue6461); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCAssertTrue6473); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3073:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3074:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3074:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3075:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue6494);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3098:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3098:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3099:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3099:110: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3100:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3103:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3103:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3103:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3103:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3103:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt85=2;
+                    	    int LA85_0 = input.LA(1);
+
+                    	    if ( (LA85_0==57) ) {
+                    	        alt85=1;
+                    	    }
+                    	    switch (alt85) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3103:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleDtCAssertTrue6563); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCAssertTrue6575); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3111:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3112:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3112:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3113:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertTrue6596);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCAssertTrue6610); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt86 >= 1 ) break loop86;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(86, input);
+                                throw eee;
+                        }
+                        cnt86++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertTrue"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3156:1: entryRuleDtCDecimalMax returns [EObject current=null] : iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF ;
+    public final EObject entryRuleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3157:2: (iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3158:2: iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax6694);
+            iv_ruleDtCDecimalMax=ruleDtCDecimalMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMax; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCDecimalMax6704); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMax"
+
+
+    // $ANTLR start "ruleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3165:1: ruleDtCDecimalMax returns [EObject current=null] : ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3168:28: ( ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3169:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3169:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3169:2: () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3169:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3170:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,59,FollowSets001.FOLLOW_59_in_ruleDtCDecimalMax6750); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCDecimalMax6762); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3183:1: ( (lv_max_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3184:1: (lv_max_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3184:1: (lv_max_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3185:3: lv_max_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMax6783);
+            lv_max_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3201:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
+
+            if ( ((LA91_0>=29 && LA91_0<=30)||(LA91_0>=56 && LA91_0<=57)) ) {
+                alt91=1;
+            }
+            switch (alt91) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3203:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3203:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3204:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3207:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3208:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3208:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt90=0;
+                    loop90:
+                    do {
+                        int alt90=4;
+                        int LA90_0 = input.LA(1);
+
+                        if ( LA90_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt90=1;
+                        }
+                        else if ( LA90_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt90=2;
+                        }
+                        else if ( (LA90_0==30||LA90_0==57) && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt90=3;
+                        }
+
+
+                        switch (alt90) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3210:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3210:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3211:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3211:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3212:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3215:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3215:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3215:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3215:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCDecimalMax6841); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3219:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt88=2;
+                    	    int LA88_0 = input.LA(1);
+
+                    	    if ( (LA88_0==54) ) {
+                    	        alt88=1;
+                    	    }
+                    	    switch (alt88) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3219:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,54,FollowSets001.FOLLOW_54_in_ruleDtCDecimalMax6854); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCDecimalMax6866); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3227:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3228:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3228:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3229:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax6887);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3252:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3252:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3253:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3253:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3254:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3257:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3257:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3257:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3257:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleDtCDecimalMax6957); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCDecimalMax6969); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3265:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3266:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3266:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3267:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax6990);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3290:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3290:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3291:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3291:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3292:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3295:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3295:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3295:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3295:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3295:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt89=2;
+                    	    int LA89_0 = input.LA(1);
+
+                    	    if ( (LA89_0==57) ) {
+                    	        alt89=1;
+                    	    }
+                    	    switch (alt89) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3295:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleDtCDecimalMax7059); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCDecimalMax7071); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3303:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3304:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3304:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3305:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMax7092);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,30,FollowSets001.FOLLOW_30_in_ruleDtCDecimalMax7106); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt90 >= 1 ) break loop90;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(90, input);
+                                throw eee;
+                        }
+                        cnt90++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCDecimalMax7166); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMax"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3352:1: entryRuleDtCDecimalMin returns [EObject current=null] : iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF ;
+    public final EObject entryRuleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3353:2: (iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3354:2: iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMinRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin7202);
+            iv_ruleDtCDecimalMin=ruleDtCDecimalMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMin; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCDecimalMin7212); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMin"
+
+
+    // $ANTLR start "ruleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3361:1: ruleDtCDecimalMin returns [EObject current=null] : ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3364:28: ( ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3365:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3365:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3365:2: () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3365:2: ()
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3366:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,60,FollowSets001.FOLLOW_60_in_ruleDtCDecimalMin7258); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,23,FollowSets001.FOLLOW_23_in_ruleDtCDecimalMin7270); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3379:1: ( (lv_min_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3380:1: (lv_min_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3380:1: (lv_min_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3381:3: lv_min_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMin7291);
+            lv_min_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3397:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( ((LA95_0>=29 && LA95_0<=30)||(LA95_0>=56 && LA95_0<=57)) ) {
+                alt95=1;
+            }
+            switch (alt95) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3399:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3399:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3400:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3403:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3404:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3404:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt94=0;
+                    loop94:
+                    do {
+                        int alt94=4;
+                        int LA94_0 = input.LA(1);
+
+                        if ( LA94_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt94=1;
+                        }
+                        else if ( LA94_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt94=2;
+                        }
+                        else if ( (LA94_0==30||LA94_0==57) && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt94=3;
+                        }
+
+
+                        switch (alt94) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3406:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3406:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3407:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3407:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3408:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3411:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3411:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3411:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3411:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,29,FollowSets001.FOLLOW_29_in_ruleDtCDecimalMin7349); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3415:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt92=2;
+                    	    int LA92_0 = input.LA(1);
+
+                    	    if ( (LA92_0==54) ) {
+                    	        alt92=1;
+                    	    }
+                    	    switch (alt92) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3415:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,54,FollowSets001.FOLLOW_54_in_ruleDtCDecimalMin7362); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCDecimalMin7374); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3423:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3424:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3424:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3425:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin7395);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3448:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3448:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3449:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3449:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3450:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3453:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3453:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3453:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3453:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleDtCDecimalMin7465); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleDtCDecimalMin7477); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3461:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3462:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3462:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/parser/antlr/internal/InternalDtoGrammar.g:3463:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/AbstractDtoGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/AbstractDtoGrammarSemanticSequencer.java
new file mode 100644
index 0000000..c26df50
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/AbstractDtoGrammarSemanticSequencer.java
@@ -0,0 +1,1815 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.common.xtext.serializer.CommonGrammarSemanticSequencer;
+import org.eclipse.osbp.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoModel;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+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.diagnostic.ISemanticSequencerDiagnosticProvider;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+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.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 abstract class AbstractDtoGrammarSemanticSequencer extends CommonGrammarSemanticSequencer {
+
+	@Inject
+	private DtoGrammarGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == OSBPDtoPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPDtoPackage.LAUTO_INHERIT_DTO:
+				if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LAutoInheritDto) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO:
+				if(context == grammarAccess.getClassAccess().getLAutoInheritDtoAnnotationInfoAction_2_1_0() ||
+				   context == grammarAccess.getClassAccess().getLDtoAnnotationInfoAction_2_0_0()) {
+					sequence_Class_LAutoInheritDto_2_1_0_LDto_2_0_0(context, (LDto) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LDto) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_ATTRIBUTE:
+				if(context == grammarAccess.getDtoFeatureRule()) {
+					sequence_DtoFeature(context, (LDtoAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_FEATURE:
+				if(context == grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_2_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_3_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_4_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_5_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoAttributeAnnotationInfoAction_2_7_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoInheritedReferenceAnnotationInfoAction_2_1_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoOperationAnnotationInfoAction_2_8_0() ||
+				   context == grammarAccess.getDtoFeatureAccess().getLDtoReferenceAnnotationInfoAction_2_6_0()) {
+					sequence_DtoFeature_LDtoAttribute_2_2_0_LDtoAttribute_2_3_0_LDtoAttribute_2_4_0_LDtoAttribute_2_5_0_LDtoAttribute_2_7_0_LDtoInheritedAttribute_2_0_0_0_LDtoInheritedReference_2_1_0_LDtoOperation_2_8_0_LDtoReference_2_6_0(context, (LDtoFeature) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE:
+				if(context == grammarAccess.getDtoFeatureRule()) {
+					sequence_DtoFeature(context, (LDtoInheritedAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE:
+				if(context == grammarAccess.getDtoFeatureRule()) {
+					sequence_DtoFeature(context, (LDtoInheritedReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_MAPPER:
+				if(context == grammarAccess.getDtoMapperRule()) {
+					sequence_DtoMapper(context, (LDtoMapper) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getLimitedMapperDtoMapperRule()) {
+					sequence_LimitedMapperDtoMapper(context, (LDtoMapper) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_MODEL:
+				if(context == grammarAccess.getLDTOModelRule()) {
+					sequence_LDTOModel(context, (LDtoModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_OPERATION:
+				if(context == grammarAccess.getDtoFeatureRule()) {
+					sequence_DtoFeature(context, (LDtoOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPDtoPackage.LDTO_REFERENCE:
+				if(context == grammarAccess.getDtoFeatureRule()) {
+					sequence_DtoFeature(context, (LDtoReference) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LANNOTATION_DEF:
+				if(context == grammarAccess.getAnnotationDefRule()) {
+					sequence_AnnotationDef(context, (LAnnotationDef) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT:
+				if(context == grammarAccess.getAttributeMatchingConstraintRule() ||
+				   context == grammarAccess.getResultFilterRule()) {
+					sequence_AttributeMatchingConstraint(context, (LAttributeMatchingConstraint) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDATA_TYPE:
+				if(context == grammarAccess.getDataTypeRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_DataType(context, (LDataType) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertFalseRule()) {
+					sequence_DtCAssertFalse(context, (LDtCAssertFalse) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertTrueRule()) {
+					sequence_DtCAssertTrue(context, (LDtCAssertTrue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMaxRule()) {
+					sequence_DtCDecimalMax(context, (LDtCDecimalMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMinRule()) {
+					sequence_DtCDecimalMin(context, (LDtCDecimalMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDIGITS:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDigitsRule()) {
+					sequence_DtCDigits(context, (LDtCDigits) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CFUTURE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCFutureRule()) {
+					sequence_DtCFuture(context, (LDtCFuture) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNOT_NULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNotNullRule()) {
+					sequence_DtCNotNull(context, (LDtCNotNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNullRule()) {
+					sequence_DtCNull(context, (LDtCNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMaxRule()) {
+					sequence_DtCNumericMax(context, (LDtCNumericMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMinRule()) {
+					sequence_DtCNumericMin(context, (LDtCNumericMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CPAST:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCPastRule()) {
+					sequence_DtCPast(context, (LDtCPast) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CREG_EX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCRegExRule()) {
+					sequence_DtCRegEx(context, (LDtCRegEx) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CSIZE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCSizeRule()) {
+					sequence_DtCSize(context, (LDtCSize) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM:
+				if(context == grammarAccess.getEnumRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Enum(context, (LEnum) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM_LITERAL:
+				if(context == grammarAccess.getEnumLiteralRule()) {
+					sequence_EnumLiteral(context, (LEnumLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getImportRule()) {
+					sequence_Import(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LKEY_AND_VALUE:
+				if(context == grammarAccess.getKeyAndValueRule()) {
+					sequence_KeyAndValue(context, (LKeyAndValue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMODIFIER:
+				if(context == grammarAccess.getModifierRule()) {
+					sequence_Modifier(context, (LModifier) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMULTIPLICITY:
+				if(context == grammarAccess.getMultiplicityRule()) {
+					sequence_Multiplicity(context, (LMultiplicity) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LRESULT_FILTERS:
+				if(context == grammarAccess.getResultFiltersRule()) {
+					sequence_ResultFilters(context, (LResultFilters) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LTYPED_PACKAGE:
+				if(context == grammarAccess.getTypedPackageRule()) {
+					sequence_TypedPackage(context, (LTypedPackage) 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:
+	 *     (
+	 *         (
+	 *             (annotationInfo=Class_LAutoInheritDto_2_1_0 abstract?='abstract'? name=ValidIDWithKeywords) | 
+	 *             (annotationInfo=Class_LAutoInheritDto_2_1_0 name=ValidIDWithKeywords)
+	 *         ) 
+	 *         superType=[LDto|TYPE_CROSS_REFERENCE]? 
+	 *         wrappedType=[LEntity|TYPE_CROSS_REFERENCE] 
+	 *         features+=DtoFeature*
+	 *     )
+	 */
+	protected void sequence_Class(EObject context, LAutoInheritDto semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_Class_LAutoInheritDto_2_1_0_LDto_2_0_0(EObject context, LDto semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         ((annotationInfo=Class_LDto_2_0_0 abstract?='abstract'? name=ValidIDWithKeywords) | (annotationInfo=Class_LDto_2_0_0 name=ValidIDWithKeywords)) 
+	 *         superType=[LDto|TYPE_CROSS_REFERENCE]? 
+	 *         wrappedType=[LEntity|TYPE_CROSS_REFERENCE]? 
+	 *         features+=DtoFeature*
+	 *     )
+	 */
+	protected void sequence_Class(EObject context, LDto semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         (
+	 *             annotationInfo=DtoFeature_LDtoAttribute_2_2_0 
+	 *             (
+	 *                 transient?='transient' 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 constraints+=AllConstraints* 
+	 *                 name=ValidIDWithKeywords 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *             )
+	 *         ) | 
+	 *         (
+	 *             annotationInfo=DtoFeature_LDtoAttribute_2_3_0 
+	 *             (dirty?='dirty' type=[LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords (properties+=KeyAndValue properties+=KeyAndValue*)?)
+	 *         ) | 
+	 *         (
+	 *             annotationInfo=DtoFeature_LDtoAttribute_2_4_0 
+	 *             (
+	 *                 derived?='derived' 
+	 *                 domainDescription?='domainDescription'? 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 name=ValidIDWithKeywords 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *                 derivedGetterExpression=XBlockExpression
+	 *             )
+	 *         ) | 
+	 *         (
+	 *             annotationInfo=DtoFeature_LDtoAttribute_2_5_0 
+	 *             (id?='id' | version?='version' | uuid?='uuid' | domainDescription?='domainDescription' | domainKey?='domainKey') 
+	 *             type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *             multiplicity=Multiplicity? 
+	 *             constraints+=AllConstraints* 
+	 *             name=ValidIDWithKeywords 
+	 *             (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *         ) | 
+	 *         (
+	 *             annotationInfo=DtoFeature_LDtoAttribute_2_7_0 
+	 *             type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *             multiplicity=Multiplicity? 
+	 *             constraints+=AllConstraints* 
+	 *             name=ValidIDWithKeywords 
+	 *             (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *             mapper=LimitedMapperDtoMapper?
+	 *         )
+	 *     )
+	 */
+	protected void sequence_DtoFeature(EObject context, LDtoAttribute semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_DtoFeature_LDtoAttribute_2_2_0_LDtoAttribute_2_3_0_LDtoAttribute_2_4_0_LDtoAttribute_2_5_0_LDtoAttribute_2_7_0_LDtoInheritedAttribute_2_0_0_0_LDtoInheritedReference_2_1_0_LDtoOperation_2_8_0_LDtoReference_2_6_0(EObject context, LDtoFeature semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=DtoFeature_LDtoInheritedAttribute_2_0_0_0 
+	 *         inheritedFeature=[LEntityAttribute|ValidLFQNWithKeywords] 
+	 *         type=[LDto|TYPE_CROSS_REFERENCE]? 
+	 *         (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *         mapper=DtoMapper?
+	 *     )
+	 */
+	protected void sequence_DtoFeature(EObject context, LDtoInheritedAttribute semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=DtoFeature_LDtoInheritedReference_2_1_0 
+	 *         inheritedFeature=[LEntityReference|ValidLFQNWithKeywords] 
+	 *         type=[LDto|TYPE_CROSS_REFERENCE] 
+	 *         (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *         mapper=DtoMapper?
+	 *     )
+	 */
+	protected void sequence_DtoFeature(EObject context, LDtoInheritedReference semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=DtoFeature_LDtoOperation_2_8_0 
+	 *         (type=JvmTypeReference name=ValidIDWithKeywords (params+=FullJvmFormalParameter params+=FullJvmFormalParameter*)? body=XExpression)
+	 *     )
+	 */
+	protected void sequence_DtoFeature(EObject context, LDtoOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=DtoFeature_LDtoReference_2_6_0 
+	 *         (
+	 *             cascading?='cascade'? 
+	 *             lazy?='lazy'? 
+	 *             type=[LDto|TYPE_CROSS_REFERENCE] 
+	 *             multiplicity=Multiplicity? 
+	 *             constraints+=AllConstraints* 
+	 *             name=ValidIDWithKeywords 
+	 *             opposite=[LDtoReference|LFQN]? 
+	 *             (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *         ) 
+	 *         mapper=LimitedMapperDtoMapper?
+	 *     )
+	 */
+	protected void sequence_DtoFeature(EObject context, LDtoReference semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (toDTO=XExpression fromDTO=XExpression?)
+	 */
+	protected void sequence_DtoMapper(EObject context, LDtoMapper semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     packages+=TypedPackage*
+	 */
+	protected void sequence_LDTOModel(EObject context, LDtoModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     toDTO=XExpression
+	 */
+	protected void sequence_LimitedMapperDtoMapper(EObject context, LDtoMapper semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/AbstractDtoGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/AbstractDtoGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..cec638a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/serializer/AbstractDtoGrammarSyntacticSequencer.java
@@ -0,0 +1,1039 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public abstract class AbstractDtoGrammarSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected DtoGrammarGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_AttributeMatchingConstraint_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DataType_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_0_3_1_q;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_1_5_1_q;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_2_1_5_q;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_3_1_4_q;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_5_7_q;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_6_2_1_q;
+	protected AbstractElementAlias match_DtoFeature_SemicolonKeyword_2_7_7_1_q;
+	protected AbstractElementAlias match_DtoFeature___LeftSquareBracketKeyword_2_2_1_2_0_RightSquareBracketKeyword_2_2_1_2_2__q;
+	protected AbstractElementAlias match_DtoFeature___LeftSquareBracketKeyword_2_5_4_0_RightSquareBracketKeyword_2_5_4_2__q;
+	protected AbstractElementAlias match_DtoFeature___LeftSquareBracketKeyword_2_6_1_4_0_RightSquareBracketKeyword_2_6_1_4_2__q;
+	protected AbstractElementAlias match_DtoFeature___LeftSquareBracketKeyword_2_7_4_0_RightSquareBracketKeyword_2_7_4_2__q;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p;
+	protected AbstractElementAlias match_Import_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_TypedPackage___LeftCurlyBracketKeyword_3_0_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 = (DtoGrammarGrammarAccess) access;
+		match_AttributeMatchingConstraint_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+		match_DataType_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+		match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtoFeature_SemicolonKeyword_2_0_3_1_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_0_3_1());
+		match_DtoFeature_SemicolonKeyword_2_1_5_1_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_1_5_1());
+		match_DtoFeature_SemicolonKeyword_2_2_1_5_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_2_1_5());
+		match_DtoFeature_SemicolonKeyword_2_3_1_4_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_3_1_4());
+		match_DtoFeature_SemicolonKeyword_2_5_7_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_5_7());
+		match_DtoFeature_SemicolonKeyword_2_6_2_1_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_6_2_1());
+		match_DtoFeature_SemicolonKeyword_2_7_7_1_q = new TokenAlias(false, true, grammarAccess.getDtoFeatureAccess().getSemicolonKeyword_2_7_7_1());
+		match_DtoFeature___LeftSquareBracketKeyword_2_2_1_2_0_RightSquareBracketKeyword_2_2_1_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_2_1_2_0()), new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_2_1_2_2()));
+		match_DtoFeature___LeftSquareBracketKeyword_2_5_4_0_RightSquareBracketKeyword_2_5_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_5_4_0()), new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_5_4_2()));
+		match_DtoFeature___LeftSquareBracketKeyword_2_6_1_4_0_RightSquareBracketKeyword_2_6_1_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_6_1_4_0()), new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_6_1_4_2()));
+		match_DtoFeature___LeftSquareBracketKeyword_2_7_4_0_RightSquareBracketKeyword_2_7_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getLeftSquareBracketKeyword_2_7_4_0()), new TokenAlias(false, false, grammarAccess.getDtoFeatureAccess().getRightSquareBracketKeyword_2_7_4_2()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a = new GroupAlias(true, true, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_Import_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+		match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().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_AttributeMatchingConstraint_SemicolonKeyword_3_q.equals(syntax))
+				emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DataType_SemicolonKeyword_3_q.equals(syntax))
+				emit_DataType_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_0_3_1_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_0_3_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_1_5_1_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_1_5_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_2_1_5_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_2_1_5_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_3_1_4_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_3_1_4_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_5_7_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_5_7_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_6_2_1_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_6_2_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature_SemicolonKeyword_2_7_7_1_q.equals(syntax))
+				emit_DtoFeature_SemicolonKeyword_2_7_7_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature___LeftSquareBracketKeyword_2_2_1_2_0_RightSquareBracketKeyword_2_2_1_2_2__q.equals(syntax))
+				emit_DtoFeature___LeftSquareBracketKeyword_2_2_1_2_0_RightSquareBracketKeyword_2_2_1_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature___LeftSquareBracketKeyword_2_5_4_0_RightSquareBracketKeyword_2_5_4_2__q.equals(syntax))
+				emit_DtoFeature___LeftSquareBracketKeyword_2_5_4_0_RightSquareBracketKeyword_2_5_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature___LeftSquareBracketKeyword_2_6_1_4_0_RightSquareBracketKeyword_2_6_1_4_2__q.equals(syntax))
+				emit_DtoFeature___LeftSquareBracketKeyword_2_6_1_4_0_RightSquareBracketKeyword_2_6_1_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtoFeature___LeftSquareBracketKeyword_2_7_4_0_RightSquareBracketKeyword_2_7_4_2__q.equals(syntax))
+				emit_DtoFeature___LeftSquareBracketKeyword_2_7_4_0_RightSquareBracketKeyword_2_7_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Import_SemicolonKeyword_2_q.equals(syntax))
+				emit_Import_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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:
+	 *     ';'?
+	 */
+	protected void emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DataType_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_0_3_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_1_5_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_2_1_5_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_3_1_4_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_5_7_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_6_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DtoFeature_SemicolonKeyword_2_7_7_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_DtoFeature___LeftSquareBracketKeyword_2_2_1_2_0_RightSquareBracketKeyword_2_2_1_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_DtoFeature___LeftSquareBracketKeyword_2_5_4_0_RightSquareBracketKeyword_2_5_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_DtoFeature___LeftSquareBracketKeyword_2_6_1_4_0_RightSquareBracketKeyword_2_6_1_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_DtoFeature___LeftSquareBracketKeyword_2_7_4_0_RightSquareBracketKeyword_2_7_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')+
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' | ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')' '('*)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'* '(')+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'+ '('+)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Import_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/services/DtoGrammarGrammarAccess.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/services/DtoGrammarGrammarAccess.java
new file mode 100644
index 0000000..7bb5ea9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/services/DtoGrammarGrammarAccess.java
@@ -0,0 +1,3011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.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.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+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 DtoGrammarGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class LDTOModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LDTOModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesTypedPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//LDTOModel returns dto::LDtoModel:
+		//	packages+=TypedPackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=TypedPackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//TypedPackage
+		public RuleCall getPackagesTypedPackageParserRuleCall_0() { return cPackagesTypedPackageParserRuleCall_0; }
+	}
+
+	public class ClassElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Class");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtoAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Action cLDtoAnnotationInfoAction_2_0_0 = (Action)cGroup_2_0.eContents().get(0);
+		private final Assignment cAbstractAssignment_2_0_1 = (Assignment)cGroup_2_0.eContents().get(1);
+		private final Keyword cAbstractAbstractKeyword_2_0_1_0 = (Keyword)cAbstractAssignment_2_0_1.eContents().get(0);
+		private final Keyword cDtoKeyword_2_0_2 = (Keyword)cGroup_2_0.eContents().get(2);
+		private final Assignment cNameAssignment_2_0_3 = (Assignment)cGroup_2_0.eContents().get(3);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_0_3_0 = (RuleCall)cNameAssignment_2_0_3.eContents().get(0);
+		private final Group cGroup_2_0_4 = (Group)cGroup_2_0.eContents().get(4);
+		private final Keyword cExtendsKeyword_2_0_4_0 = (Keyword)cGroup_2_0_4.eContents().get(0);
+		private final Assignment cSuperTypeAssignment_2_0_4_1 = (Assignment)cGroup_2_0_4.eContents().get(1);
+		private final CrossReference cSuperTypeLDtoCrossReference_2_0_4_1_0 = (CrossReference)cSuperTypeAssignment_2_0_4_1.eContents().get(0);
+		private final RuleCall cSuperTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_0_4_1_0_1 = (RuleCall)cSuperTypeLDtoCrossReference_2_0_4_1_0.eContents().get(1);
+		private final Group cGroup_2_0_5 = (Group)cGroup_2_0.eContents().get(5);
+		private final Keyword cWrapsKeyword_2_0_5_0 = (Keyword)cGroup_2_0_5.eContents().get(0);
+		private final Assignment cWrappedTypeAssignment_2_0_5_1 = (Assignment)cGroup_2_0_5.eContents().get(1);
+		private final CrossReference cWrappedTypeLEntityCrossReference_2_0_5_1_0 = (CrossReference)cWrappedTypeAssignment_2_0_5_1.eContents().get(0);
+		private final RuleCall cWrappedTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_5_1_0_1 = (RuleCall)cWrappedTypeLEntityCrossReference_2_0_5_1_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2_0_6 = (Keyword)cGroup_2_0.eContents().get(6);
+		private final Assignment cFeaturesAssignment_2_0_7 = (Assignment)cGroup_2_0.eContents().get(7);
+		private final RuleCall cFeaturesDtoFeatureParserRuleCall_2_0_7_0 = (RuleCall)cFeaturesAssignment_2_0_7.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_0_8 = (Keyword)cGroup_2_0.eContents().get(8);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Action cLAutoInheritDtoAnnotationInfoAction_2_1_0 = (Action)cGroup_2_1.eContents().get(0);
+		private final Assignment cAbstractAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
+		private final Keyword cAbstractAbstractKeyword_2_1_1_0 = (Keyword)cAbstractAssignment_2_1_1.eContents().get(0);
+		private final Keyword cAutoDtoKeyword_2_1_2 = (Keyword)cGroup_2_1.eContents().get(2);
+		private final Assignment cNameAssignment_2_1_3 = (Assignment)cGroup_2_1.eContents().get(3);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_1_3_0 = (RuleCall)cNameAssignment_2_1_3.eContents().get(0);
+		private final Group cGroup_2_1_4 = (Group)cGroup_2_1.eContents().get(4);
+		private final Keyword cExtendsKeyword_2_1_4_0 = (Keyword)cGroup_2_1_4.eContents().get(0);
+		private final Assignment cSuperTypeAssignment_2_1_4_1 = (Assignment)cGroup_2_1_4.eContents().get(1);
+		private final CrossReference cSuperTypeLDtoCrossReference_2_1_4_1_0 = (CrossReference)cSuperTypeAssignment_2_1_4_1.eContents().get(0);
+		private final RuleCall cSuperTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_1_4_1_0_1 = (RuleCall)cSuperTypeLDtoCrossReference_2_1_4_1_0.eContents().get(1);
+		private final Keyword cWrapsKeyword_2_1_5 = (Keyword)cGroup_2_1.eContents().get(5);
+		private final Assignment cWrappedTypeAssignment_2_1_6 = (Assignment)cGroup_2_1.eContents().get(6);
+		private final CrossReference cWrappedTypeLEntityCrossReference_2_1_6_0 = (CrossReference)cWrappedTypeAssignment_2_1_6.eContents().get(0);
+		private final RuleCall cWrappedTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_1_6_0_1 = (RuleCall)cWrappedTypeLEntityCrossReference_2_1_6_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2_1_7 = (Keyword)cGroup_2_1.eContents().get(7);
+		private final Assignment cFeaturesAssignment_2_1_8 = (Assignment)cGroup_2_1.eContents().get(8);
+		private final RuleCall cFeaturesDtoFeatureParserRuleCall_2_1_8_0 = (RuleCall)cFeaturesAssignment_2_1_8.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_1_9 = (Keyword)cGroup_2_1.eContents().get(9);
+		
+		//Class returns dto::LDto:
+		//	{dto::LDto} annotations+=AnnotationDef* ({dto::LDto.annotationInfo=current} abstract?="abstract"? "dto"
+		//	name=ValidIDWithKeywords ("extends" superType=[dto::LDto|TYPE_CROSS_REFERENCE])? ("wraps"
+		//	wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{" features+=DtoFeature* "}" |
+		//	{dto::LAutoInheritDto.annotationInfo=current} abstract?="abstract"? "autoDto" name=ValidIDWithKeywords ("extends"
+		//	superType=[dto::LDto|TYPE_CROSS_REFERENCE])? "wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE] "{"
+		//	features+=DtoFeature* "}");
+		public ParserRule getRule() { return rule; }
+
+		//{dto::LDto} annotations+=AnnotationDef* ({dto::LDto.annotationInfo=current} abstract?="abstract"? "dto"
+		//name=ValidIDWithKeywords ("extends" superType=[dto::LDto|TYPE_CROSS_REFERENCE])? ("wraps"
+		//wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{" features+=DtoFeature* "}" |
+		//{dto::LAutoInheritDto.annotationInfo=current} abstract?="abstract"? "autoDto" name=ValidIDWithKeywords ("extends"
+		//superType=[dto::LDto|TYPE_CROSS_REFERENCE])? "wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE] "{"
+		//features+=DtoFeature* "}")
+		public Group getGroup() { return cGroup; }
+
+		//{dto::LDto}
+		public Action getLDtoAction_0() { return cLDtoAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//{dto::LDto.annotationInfo=current} abstract?="abstract"? "dto" name=ValidIDWithKeywords ("extends"
+		//superType=[dto::LDto|TYPE_CROSS_REFERENCE])? ("wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{"
+		//features+=DtoFeature* "}" | {dto::LAutoInheritDto.annotationInfo=current} abstract?="abstract"? "autoDto"
+		//name=ValidIDWithKeywords ("extends" superType=[dto::LDto|TYPE_CROSS_REFERENCE])? "wraps"
+		//wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE] "{" features+=DtoFeature* "}"
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//{dto::LDto.annotationInfo=current} abstract?="abstract"? "dto" name=ValidIDWithKeywords ("extends"
+		//superType=[dto::LDto|TYPE_CROSS_REFERENCE])? ("wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{"
+		//features+=DtoFeature* "}"
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//{dto::LDto.annotationInfo=current}
+		public Action getLDtoAnnotationInfoAction_2_0_0() { return cLDtoAnnotationInfoAction_2_0_0; }
+
+		//abstract?="abstract"?
+		public Assignment getAbstractAssignment_2_0_1() { return cAbstractAssignment_2_0_1; }
+
+		//"abstract"
+		public Keyword getAbstractAbstractKeyword_2_0_1_0() { return cAbstractAbstractKeyword_2_0_1_0; }
+
+		//"dto"
+		public Keyword getDtoKeyword_2_0_2() { return cDtoKeyword_2_0_2; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_0_3() { return cNameAssignment_2_0_3; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_0_3_0() { return cNameValidIDWithKeywordsParserRuleCall_2_0_3_0; }
+
+		//("extends" superType=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_0_4() { return cGroup_2_0_4; }
+
+		//"extends"
+		public Keyword getExtendsKeyword_2_0_4_0() { return cExtendsKeyword_2_0_4_0; }
+
+		//superType=[dto::LDto|TYPE_CROSS_REFERENCE]
+		public Assignment getSuperTypeAssignment_2_0_4_1() { return cSuperTypeAssignment_2_0_4_1; }
+
+		//[dto::LDto|TYPE_CROSS_REFERENCE]
+		public CrossReference getSuperTypeLDtoCrossReference_2_0_4_1_0() { return cSuperTypeLDtoCrossReference_2_0_4_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getSuperTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_0_4_1_0_1() { return cSuperTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_0_4_1_0_1; }
+
+		//("wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_0_5() { return cGroup_2_0_5; }
+
+		//"wraps"
+		public Keyword getWrapsKeyword_2_0_5_0() { return cWrapsKeyword_2_0_5_0; }
+
+		//wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public Assignment getWrappedTypeAssignment_2_0_5_1() { return cWrappedTypeAssignment_2_0_5_1; }
+
+		//[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public CrossReference getWrappedTypeLEntityCrossReference_2_0_5_1_0() { return cWrappedTypeLEntityCrossReference_2_0_5_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getWrappedTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_5_1_0_1() { return cWrappedTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_5_1_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_0_6() { return cLeftCurlyBracketKeyword_2_0_6; }
+
+		//features+=DtoFeature*
+		public Assignment getFeaturesAssignment_2_0_7() { return cFeaturesAssignment_2_0_7; }
+
+		//DtoFeature
+		public RuleCall getFeaturesDtoFeatureParserRuleCall_2_0_7_0() { return cFeaturesDtoFeatureParserRuleCall_2_0_7_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_0_8() { return cRightCurlyBracketKeyword_2_0_8; }
+
+		//{dto::LAutoInheritDto.annotationInfo=current} abstract?="abstract"? "autoDto" name=ValidIDWithKeywords ("extends"
+		//superType=[dto::LDto|TYPE_CROSS_REFERENCE])? "wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE] "{"
+		//features+=DtoFeature* "}"
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//{dto::LAutoInheritDto.annotationInfo=current}
+		public Action getLAutoInheritDtoAnnotationInfoAction_2_1_0() { return cLAutoInheritDtoAnnotationInfoAction_2_1_0; }
+
+		//abstract?="abstract"?
+		public Assignment getAbstractAssignment_2_1_1() { return cAbstractAssignment_2_1_1; }
+
+		//"abstract"
+		public Keyword getAbstractAbstractKeyword_2_1_1_0() { return cAbstractAbstractKeyword_2_1_1_0; }
+
+		//"autoDto"
+		public Keyword getAutoDtoKeyword_2_1_2() { return cAutoDtoKeyword_2_1_2; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_1_3() { return cNameAssignment_2_1_3; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_1_3_0() { return cNameValidIDWithKeywordsParserRuleCall_2_1_3_0; }
+
+		//("extends" superType=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_1_4() { return cGroup_2_1_4; }
+
+		//"extends"
+		public Keyword getExtendsKeyword_2_1_4_0() { return cExtendsKeyword_2_1_4_0; }
+
+		//superType=[dto::LDto|TYPE_CROSS_REFERENCE]
+		public Assignment getSuperTypeAssignment_2_1_4_1() { return cSuperTypeAssignment_2_1_4_1; }
+
+		//[dto::LDto|TYPE_CROSS_REFERENCE]
+		public CrossReference getSuperTypeLDtoCrossReference_2_1_4_1_0() { return cSuperTypeLDtoCrossReference_2_1_4_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getSuperTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_1_4_1_0_1() { return cSuperTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_1_4_1_0_1; }
+
+		//"wraps"
+		public Keyword getWrapsKeyword_2_1_5() { return cWrapsKeyword_2_1_5; }
+
+		//wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public Assignment getWrappedTypeAssignment_2_1_6() { return cWrappedTypeAssignment_2_1_6; }
+
+		//[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public CrossReference getWrappedTypeLEntityCrossReference_2_1_6_0() { return cWrappedTypeLEntityCrossReference_2_1_6_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getWrappedTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_1_6_0_1() { return cWrappedTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_1_6_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_1_7() { return cLeftCurlyBracketKeyword_2_1_7; }
+
+		//features+=DtoFeature*
+		public Assignment getFeaturesAssignment_2_1_8() { return cFeaturesAssignment_2_1_8; }
+
+		//DtoFeature
+		public RuleCall getFeaturesDtoFeatureParserRuleCall_2_1_8_0() { return cFeaturesDtoFeatureParserRuleCall_2_1_8_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_1_9() { return cRightCurlyBracketKeyword_2_1_9; }
+	}
+
+	public class DtoFeatureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtoFeature");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDtoFeatureAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Group cGroup_2_0_0 = (Group)cGroup_2_0.eContents().get(0);
+		private final Action cLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0 = (Action)cGroup_2_0_0.eContents().get(0);
+		private final Keyword cInheritVarKeyword_2_0_0_1 = (Keyword)cGroup_2_0_0.eContents().get(1);
+		private final Assignment cInheritedFeatureAssignment_2_0_0_2 = (Assignment)cGroup_2_0_0.eContents().get(2);
+		private final CrossReference cInheritedFeatureLEntityAttributeCrossReference_2_0_0_2_0 = (CrossReference)cInheritedFeatureAssignment_2_0_0_2.eContents().get(0);
+		private final RuleCall cInheritedFeatureLEntityAttributeValidLFQNWithKeywordsParserRuleCall_2_0_0_2_0_1 = (RuleCall)cInheritedFeatureLEntityAttributeCrossReference_2_0_0_2_0.eContents().get(1);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cMaptoKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_0_1_1 = (Assignment)cGroup_2_0_1.eContents().get(1);
+		private final CrossReference cTypeLDtoCrossReference_2_0_1_1_0 = (CrossReference)cTypeAssignment_2_0_1_1.eContents().get(0);
+		private final RuleCall cTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_1_0_1 = (RuleCall)cTypeLDtoCrossReference_2_0_1_1_0.eContents().get(1);
+		private final Group cGroup_2_0_2 = (Group)cGroup_2_0.eContents().get(2);
+		private final Keyword cPropertiesKeyword_2_0_2_0 = (Keyword)cGroup_2_0_2.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_0_2_1 = (Keyword)cGroup_2_0_2.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_0_2_2 = (Assignment)cGroup_2_0_2.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_2_2_0 = (RuleCall)cPropertiesAssignment_2_0_2_2.eContents().get(0);
+		private final Group cGroup_2_0_2_3 = (Group)cGroup_2_0_2.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_0_2_3_0 = (Keyword)cGroup_2_0_2_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_0_2_3_1 = (Assignment)cGroup_2_0_2_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_2_3_1_0 = (RuleCall)cPropertiesAssignment_2_0_2_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_0_2_4 = (Keyword)cGroup_2_0_2.eContents().get(4);
+		private final Alternatives cAlternatives_2_0_3 = (Alternatives)cGroup_2_0.eContents().get(3);
+		private final Assignment cMapperAssignment_2_0_3_0 = (Assignment)cAlternatives_2_0_3.eContents().get(0);
+		private final RuleCall cMapperDtoMapperParserRuleCall_2_0_3_0_0 = (RuleCall)cMapperAssignment_2_0_3_0.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_0_3_1 = (Keyword)cAlternatives_2_0_3.eContents().get(1);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Action cLDtoInheritedReferenceAnnotationInfoAction_2_1_0 = (Action)cGroup_2_1.eContents().get(0);
+		private final Group cGroup_2_1_1 = (Group)cGroup_2_1.eContents().get(1);
+		private final Keyword cInheritRefKeyword_2_1_1_0 = (Keyword)cGroup_2_1_1.eContents().get(0);
+		private final Assignment cInheritedFeatureAssignment_2_1_1_1 = (Assignment)cGroup_2_1_1.eContents().get(1);
+		private final CrossReference cInheritedFeatureLEntityReferenceCrossReference_2_1_1_1_0 = (CrossReference)cInheritedFeatureAssignment_2_1_1_1.eContents().get(0);
+		private final RuleCall cInheritedFeatureLEntityReferenceValidLFQNWithKeywordsParserRuleCall_2_1_1_1_0_1 = (RuleCall)cInheritedFeatureLEntityReferenceCrossReference_2_1_1_1_0.eContents().get(1);
+		private final Keyword cMaptoKeyword_2_1_2 = (Keyword)cGroup_2_1.eContents().get(2);
+		private final Assignment cTypeAssignment_2_1_3 = (Assignment)cGroup_2_1.eContents().get(3);
+		private final CrossReference cTypeLDtoCrossReference_2_1_3_0 = (CrossReference)cTypeAssignment_2_1_3.eContents().get(0);
+		private final RuleCall cTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_1_3_0_1 = (RuleCall)cTypeLDtoCrossReference_2_1_3_0.eContents().get(1);
+		private final Group cGroup_2_1_4 = (Group)cGroup_2_1.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_1_4_0 = (Keyword)cGroup_2_1_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_4_1 = (Keyword)cGroup_2_1_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_4_2 = (Assignment)cGroup_2_1_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_4_2_0 = (RuleCall)cPropertiesAssignment_2_1_4_2.eContents().get(0);
+		private final Group cGroup_2_1_4_3 = (Group)cGroup_2_1_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_4_3_0 = (Keyword)cGroup_2_1_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_4_3_1 = (Assignment)cGroup_2_1_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_4_4 = (Keyword)cGroup_2_1_4.eContents().get(4);
+		private final Alternatives cAlternatives_2_1_5 = (Alternatives)cGroup_2_1.eContents().get(5);
+		private final Assignment cMapperAssignment_2_1_5_0 = (Assignment)cAlternatives_2_1_5.eContents().get(0);
+		private final RuleCall cMapperDtoMapperParserRuleCall_2_1_5_0_0 = (RuleCall)cMapperAssignment_2_1_5_0.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_1_5_1 = (Keyword)cAlternatives_2_1_5.eContents().get(1);
+		private final Group cGroup_2_2 = (Group)cAlternatives_2.eContents().get(2);
+		private final Action cLDtoAttributeAnnotationInfoAction_2_2_0 = (Action)cGroup_2_2.eContents().get(0);
+		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
+		private final Assignment cTransientAssignment_2_2_1_0 = (Assignment)cGroup_2_2_1.eContents().get(0);
+		private final Keyword cTransientTransientKeyword_2_2_1_0_0 = (Keyword)cTransientAssignment_2_2_1_0.eContents().get(0);
+		private final Assignment cTypeAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_2_1_1_0 = (CrossReference)cTypeAssignment_2_2_1_1.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_2_1_1_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_2_1_1_0.eContents().get(1);
+		private final Group cGroup_2_2_1_2 = (Group)cGroup_2_2_1.eContents().get(2);
+		private final Keyword cLeftSquareBracketKeyword_2_2_1_2_0 = (Keyword)cGroup_2_2_1_2.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_2_1_2_1 = (Assignment)cGroup_2_2_1_2.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_2_1_2_1_0 = (RuleCall)cConstraintsAssignment_2_2_1_2_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_2_1_2_2 = (Keyword)cGroup_2_2_1_2.eContents().get(2);
+		private final Assignment cNameAssignment_2_2_1_3 = (Assignment)cGroup_2_2_1.eContents().get(3);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_2_1_3_0 = (RuleCall)cNameAssignment_2_2_1_3.eContents().get(0);
+		private final Group cGroup_2_2_1_4 = (Group)cGroup_2_2_1.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_2_1_4_0 = (Keyword)cGroup_2_2_1_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_2_1_4_1 = (Keyword)cGroup_2_2_1_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_2_1_4_2 = (Assignment)cGroup_2_2_1_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_2_1_4_2_0 = (RuleCall)cPropertiesAssignment_2_2_1_4_2.eContents().get(0);
+		private final Group cGroup_2_2_1_4_3 = (Group)cGroup_2_2_1_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_2_1_4_3_0 = (Keyword)cGroup_2_2_1_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_2_1_4_3_1 = (Assignment)cGroup_2_2_1_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_2_1_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_2_1_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_2_1_4_4 = (Keyword)cGroup_2_2_1_4.eContents().get(4);
+		private final Keyword cSemicolonKeyword_2_2_1_5 = (Keyword)cGroup_2_2_1.eContents().get(5);
+		private final Group cGroup_2_3 = (Group)cAlternatives_2.eContents().get(3);
+		private final Action cLDtoAttributeAnnotationInfoAction_2_3_0 = (Action)cGroup_2_3.eContents().get(0);
+		private final Group cGroup_2_3_1 = (Group)cGroup_2_3.eContents().get(1);
+		private final Assignment cDirtyAssignment_2_3_1_0 = (Assignment)cGroup_2_3_1.eContents().get(0);
+		private final Keyword cDirtyDirtyKeyword_2_3_1_0_0 = (Keyword)cDirtyAssignment_2_3_1_0.eContents().get(0);
+		private final Assignment cTypeAssignment_2_3_1_1 = (Assignment)cGroup_2_3_1.eContents().get(1);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_3_1_1_0 = (CrossReference)cTypeAssignment_2_3_1_1.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_3_1_1_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_3_1_1_0.eContents().get(1);
+		private final Assignment cNameAssignment_2_3_1_2 = (Assignment)cGroup_2_3_1.eContents().get(2);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_3_1_2_0 = (RuleCall)cNameAssignment_2_3_1_2.eContents().get(0);
+		private final Group cGroup_2_3_1_3 = (Group)cGroup_2_3_1.eContents().get(3);
+		private final Keyword cPropertiesKeyword_2_3_1_3_0 = (Keyword)cGroup_2_3_1_3.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_3_1_3_1 = (Keyword)cGroup_2_3_1_3.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_3_1_3_2 = (Assignment)cGroup_2_3_1_3.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_3_1_3_2_0 = (RuleCall)cPropertiesAssignment_2_3_1_3_2.eContents().get(0);
+		private final Group cGroup_2_3_1_3_3 = (Group)cGroup_2_3_1_3.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_3_1_3_3_0 = (Keyword)cGroup_2_3_1_3_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_3_1_3_3_1 = (Assignment)cGroup_2_3_1_3_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_3_1_3_3_1_0 = (RuleCall)cPropertiesAssignment_2_3_1_3_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_3_1_3_4 = (Keyword)cGroup_2_3_1_3.eContents().get(4);
+		private final Keyword cSemicolonKeyword_2_3_1_4 = (Keyword)cGroup_2_3_1.eContents().get(4);
+		private final Group cGroup_2_4 = (Group)cAlternatives_2.eContents().get(4);
+		private final Action cLDtoAttributeAnnotationInfoAction_2_4_0 = (Action)cGroup_2_4.eContents().get(0);
+		private final Group cGroup_2_4_1 = (Group)cGroup_2_4.eContents().get(1);
+		private final Assignment cDerivedAssignment_2_4_1_0 = (Assignment)cGroup_2_4_1.eContents().get(0);
+		private final Keyword cDerivedDerivedKeyword_2_4_1_0_0 = (Keyword)cDerivedAssignment_2_4_1_0.eContents().get(0);
+		private final Assignment cDomainDescriptionAssignment_2_4_1_1 = (Assignment)cGroup_2_4_1.eContents().get(1);
+		private final Keyword cDomainDescriptionDomainDescriptionKeyword_2_4_1_1_0 = (Keyword)cDomainDescriptionAssignment_2_4_1_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_4_1_2 = (Assignment)cGroup_2_4_1.eContents().get(2);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_4_1_2_0 = (CrossReference)cTypeAssignment_2_4_1_2.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_4_1_2_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_4_1_2_0.eContents().get(1);
+		private final Assignment cNameAssignment_2_4_1_3 = (Assignment)cGroup_2_4_1.eContents().get(3);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_4_1_3_0 = (RuleCall)cNameAssignment_2_4_1_3.eContents().get(0);
+		private final Group cGroup_2_4_1_4 = (Group)cGroup_2_4_1.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_4_1_4_0 = (Keyword)cGroup_2_4_1_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_4_1_4_1 = (Keyword)cGroup_2_4_1_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_4_1_4_2 = (Assignment)cGroup_2_4_1_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_4_1_4_2_0 = (RuleCall)cPropertiesAssignment_2_4_1_4_2.eContents().get(0);
+		private final Group cGroup_2_4_1_4_3 = (Group)cGroup_2_4_1_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_4_1_4_3_0 = (Keyword)cGroup_2_4_1_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_4_1_4_3_1 = (Assignment)cGroup_2_4_1_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_4_1_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_4_1_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_4_1_4_4 = (Keyword)cGroup_2_4_1_4.eContents().get(4);
+		private final Assignment cDerivedGetterExpressionAssignment_2_4_1_5 = (Assignment)cGroup_2_4_1.eContents().get(5);
+		private final RuleCall cDerivedGetterExpressionXBlockExpressionParserRuleCall_2_4_1_5_0 = (RuleCall)cDerivedGetterExpressionAssignment_2_4_1_5.eContents().get(0);
+		private final Group cGroup_2_5 = (Group)cAlternatives_2.eContents().get(5);
+		private final Action cLDtoAttributeAnnotationInfoAction_2_5_0 = (Action)cGroup_2_5.eContents().get(0);
+		private final Alternatives cAlternatives_2_5_1 = (Alternatives)cGroup_2_5.eContents().get(1);
+		private final Assignment cIdAssignment_2_5_1_0 = (Assignment)cAlternatives_2_5_1.eContents().get(0);
+		private final Keyword cIdIdKeyword_2_5_1_0_0 = (Keyword)cIdAssignment_2_5_1_0.eContents().get(0);
+		private final Assignment cVersionAssignment_2_5_1_1 = (Assignment)cAlternatives_2_5_1.eContents().get(1);
+		private final Keyword cVersionVersionKeyword_2_5_1_1_0 = (Keyword)cVersionAssignment_2_5_1_1.eContents().get(0);
+		private final Assignment cUuidAssignment_2_5_1_2 = (Assignment)cAlternatives_2_5_1.eContents().get(2);
+		private final Keyword cUuidUuidKeyword_2_5_1_2_0 = (Keyword)cUuidAssignment_2_5_1_2.eContents().get(0);
+		private final Assignment cDomainDescriptionAssignment_2_5_1_3 = (Assignment)cAlternatives_2_5_1.eContents().get(3);
+		private final Keyword cDomainDescriptionDomainDescriptionKeyword_2_5_1_3_0 = (Keyword)cDomainDescriptionAssignment_2_5_1_3.eContents().get(0);
+		private final Assignment cDomainKeyAssignment_2_5_1_4 = (Assignment)cAlternatives_2_5_1.eContents().get(4);
+		private final Keyword cDomainKeyDomainKeyKeyword_2_5_1_4_0 = (Keyword)cDomainKeyAssignment_2_5_1_4.eContents().get(0);
+		private final Assignment cTypeAssignment_2_5_2 = (Assignment)cGroup_2_5.eContents().get(2);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_5_2_0 = (CrossReference)cTypeAssignment_2_5_2.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_5_2_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_5_2_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_5_3 = (Assignment)cGroup_2_5.eContents().get(3);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_5_3_0 = (RuleCall)cMultiplicityAssignment_2_5_3.eContents().get(0);
+		private final Group cGroup_2_5_4 = (Group)cGroup_2_5.eContents().get(4);
+		private final Keyword cLeftSquareBracketKeyword_2_5_4_0 = (Keyword)cGroup_2_5_4.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_5_4_1 = (Assignment)cGroup_2_5_4.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_5_4_1_0 = (RuleCall)cConstraintsAssignment_2_5_4_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_5_4_2 = (Keyword)cGroup_2_5_4.eContents().get(2);
+		private final Assignment cNameAssignment_2_5_5 = (Assignment)cGroup_2_5.eContents().get(5);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_5_5_0 = (RuleCall)cNameAssignment_2_5_5.eContents().get(0);
+		private final Group cGroup_2_5_6 = (Group)cGroup_2_5.eContents().get(6);
+		private final Keyword cPropertiesKeyword_2_5_6_0 = (Keyword)cGroup_2_5_6.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_5_6_1 = (Keyword)cGroup_2_5_6.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_5_6_2 = (Assignment)cGroup_2_5_6.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_5_6_2_0 = (RuleCall)cPropertiesAssignment_2_5_6_2.eContents().get(0);
+		private final Group cGroup_2_5_6_3 = (Group)cGroup_2_5_6.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_5_6_3_0 = (Keyword)cGroup_2_5_6_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_5_6_3_1 = (Assignment)cGroup_2_5_6_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_5_6_3_1_0 = (RuleCall)cPropertiesAssignment_2_5_6_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_5_6_4 = (Keyword)cGroup_2_5_6.eContents().get(4);
+		private final Keyword cSemicolonKeyword_2_5_7 = (Keyword)cGroup_2_5.eContents().get(7);
+		private final Group cGroup_2_6 = (Group)cAlternatives_2.eContents().get(6);
+		private final Action cLDtoReferenceAnnotationInfoAction_2_6_0 = (Action)cGroup_2_6.eContents().get(0);
+		private final Group cGroup_2_6_1 = (Group)cGroup_2_6.eContents().get(1);
+		private final Keyword cRefKeyword_2_6_1_0 = (Keyword)cGroup_2_6_1.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_2_6_1_1 = (UnorderedGroup)cGroup_2_6_1.eContents().get(1);
+		private final Assignment cCascadingAssignment_2_6_1_1_0 = (Assignment)cUnorderedGroup_2_6_1_1.eContents().get(0);
+		private final Keyword cCascadingCascadeKeyword_2_6_1_1_0_0 = (Keyword)cCascadingAssignment_2_6_1_1_0.eContents().get(0);
+		private final Assignment cLazyAssignment_2_6_1_1_1 = (Assignment)cUnorderedGroup_2_6_1_1.eContents().get(1);
+		private final Keyword cLazyLazyKeyword_2_6_1_1_1_0 = (Keyword)cLazyAssignment_2_6_1_1_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_6_1_2 = (Assignment)cGroup_2_6_1.eContents().get(2);
+		private final CrossReference cTypeLDtoCrossReference_2_6_1_2_0 = (CrossReference)cTypeAssignment_2_6_1_2.eContents().get(0);
+		private final RuleCall cTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_6_1_2_0_1 = (RuleCall)cTypeLDtoCrossReference_2_6_1_2_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_6_1_3 = (Assignment)cGroup_2_6_1.eContents().get(3);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_6_1_3_0 = (RuleCall)cMultiplicityAssignment_2_6_1_3.eContents().get(0);
+		private final Group cGroup_2_6_1_4 = (Group)cGroup_2_6_1.eContents().get(4);
+		private final Keyword cLeftSquareBracketKeyword_2_6_1_4_0 = (Keyword)cGroup_2_6_1_4.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_6_1_4_1 = (Assignment)cGroup_2_6_1_4.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_6_1_4_1_0 = (RuleCall)cConstraintsAssignment_2_6_1_4_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_6_1_4_2 = (Keyword)cGroup_2_6_1_4.eContents().get(2);
+		private final Assignment cNameAssignment_2_6_1_5 = (Assignment)cGroup_2_6_1.eContents().get(5);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_6_1_5_0 = (RuleCall)cNameAssignment_2_6_1_5.eContents().get(0);
+		private final Group cGroup_2_6_1_6 = (Group)cGroup_2_6_1.eContents().get(6);
+		private final Keyword cOppositeKeyword_2_6_1_6_0 = (Keyword)cGroup_2_6_1_6.eContents().get(0);
+		private final Assignment cOppositeAssignment_2_6_1_6_1 = (Assignment)cGroup_2_6_1_6.eContents().get(1);
+		private final CrossReference cOppositeLDtoReferenceCrossReference_2_6_1_6_1_0 = (CrossReference)cOppositeAssignment_2_6_1_6_1.eContents().get(0);
+		private final RuleCall cOppositeLDtoReferenceLFQNParserRuleCall_2_6_1_6_1_0_1 = (RuleCall)cOppositeLDtoReferenceCrossReference_2_6_1_6_1_0.eContents().get(1);
+		private final Group cGroup_2_6_1_7 = (Group)cGroup_2_6_1.eContents().get(7);
+		private final Keyword cPropertiesKeyword_2_6_1_7_0 = (Keyword)cGroup_2_6_1_7.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_6_1_7_1 = (Keyword)cGroup_2_6_1_7.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_6_1_7_2 = (Assignment)cGroup_2_6_1_7.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_6_1_7_2_0 = (RuleCall)cPropertiesAssignment_2_6_1_7_2.eContents().get(0);
+		private final Group cGroup_2_6_1_7_3 = (Group)cGroup_2_6_1_7.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_6_1_7_3_0 = (Keyword)cGroup_2_6_1_7_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_6_1_7_3_1 = (Assignment)cGroup_2_6_1_7_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_6_1_7_3_1_0 = (RuleCall)cPropertiesAssignment_2_6_1_7_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_6_1_7_4 = (Keyword)cGroup_2_6_1_7.eContents().get(4);
+		private final Alternatives cAlternatives_2_6_2 = (Alternatives)cGroup_2_6.eContents().get(2);
+		private final Assignment cMapperAssignment_2_6_2_0 = (Assignment)cAlternatives_2_6_2.eContents().get(0);
+		private final RuleCall cMapperLimitedMapperDtoMapperParserRuleCall_2_6_2_0_0 = (RuleCall)cMapperAssignment_2_6_2_0.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_6_2_1 = (Keyword)cAlternatives_2_6_2.eContents().get(1);
+		private final Group cGroup_2_7 = (Group)cAlternatives_2.eContents().get(7);
+		private final Action cLDtoAttributeAnnotationInfoAction_2_7_0 = (Action)cGroup_2_7.eContents().get(0);
+		private final Keyword cVarKeyword_2_7_1 = (Keyword)cGroup_2_7.eContents().get(1);
+		private final Assignment cTypeAssignment_2_7_2 = (Assignment)cGroup_2_7.eContents().get(2);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_7_2_0 = (CrossReference)cTypeAssignment_2_7_2.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_7_2_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_7_2_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_7_3 = (Assignment)cGroup_2_7.eContents().get(3);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_7_3_0 = (RuleCall)cMultiplicityAssignment_2_7_3.eContents().get(0);
+		private final Group cGroup_2_7_4 = (Group)cGroup_2_7.eContents().get(4);
+		private final Keyword cLeftSquareBracketKeyword_2_7_4_0 = (Keyword)cGroup_2_7_4.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_7_4_1 = (Assignment)cGroup_2_7_4.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_7_4_1_0 = (RuleCall)cConstraintsAssignment_2_7_4_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_7_4_2 = (Keyword)cGroup_2_7_4.eContents().get(2);
+		private final Assignment cNameAssignment_2_7_5 = (Assignment)cGroup_2_7.eContents().get(5);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_7_5_0 = (RuleCall)cNameAssignment_2_7_5.eContents().get(0);
+		private final Group cGroup_2_7_6 = (Group)cGroup_2_7.eContents().get(6);
+		private final Keyword cPropertiesKeyword_2_7_6_0 = (Keyword)cGroup_2_7_6.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_7_6_1 = (Keyword)cGroup_2_7_6.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_7_6_2 = (Assignment)cGroup_2_7_6.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_7_6_2_0 = (RuleCall)cPropertiesAssignment_2_7_6_2.eContents().get(0);
+		private final Group cGroup_2_7_6_3 = (Group)cGroup_2_7_6.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_7_6_3_0 = (Keyword)cGroup_2_7_6_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_7_6_3_1 = (Assignment)cGroup_2_7_6_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_7_6_3_1_0 = (RuleCall)cPropertiesAssignment_2_7_6_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_7_6_4 = (Keyword)cGroup_2_7_6.eContents().get(4);
+		private final Alternatives cAlternatives_2_7_7 = (Alternatives)cGroup_2_7.eContents().get(7);
+		private final Assignment cMapperAssignment_2_7_7_0 = (Assignment)cAlternatives_2_7_7.eContents().get(0);
+		private final RuleCall cMapperLimitedMapperDtoMapperParserRuleCall_2_7_7_0_0 = (RuleCall)cMapperAssignment_2_7_7_0.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_7_7_1 = (Keyword)cAlternatives_2_7_7.eContents().get(1);
+		private final Group cGroup_2_8 = (Group)cAlternatives_2.eContents().get(8);
+		private final Action cLDtoOperationAnnotationInfoAction_2_8_0 = (Action)cGroup_2_8.eContents().get(0);
+		private final Group cGroup_2_8_1 = (Group)cGroup_2_8.eContents().get(1);
+		private final Keyword cDefKeyword_2_8_1_0 = (Keyword)cGroup_2_8_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_8_1_1 = (Assignment)cGroup_2_8_1.eContents().get(1);
+		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_8_1_1_0 = (RuleCall)cTypeAssignment_2_8_1_1.eContents().get(0);
+		private final Assignment cNameAssignment_2_8_1_2 = (Assignment)cGroup_2_8_1.eContents().get(2);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_8_1_2_0 = (RuleCall)cNameAssignment_2_8_1_2.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_8_1_3 = (Keyword)cGroup_2_8_1.eContents().get(3);
+		private final Group cGroup_2_8_1_4 = (Group)cGroup_2_8_1.eContents().get(4);
+		private final Assignment cParamsAssignment_2_8_1_4_0 = (Assignment)cGroup_2_8_1_4.eContents().get(0);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_0_0 = (RuleCall)cParamsAssignment_2_8_1_4_0.eContents().get(0);
+		private final Group cGroup_2_8_1_4_1 = (Group)cGroup_2_8_1_4.eContents().get(1);
+		private final Keyword cCommaSpaceKeyword_2_8_1_4_1_0 = (Keyword)cGroup_2_8_1_4_1.eContents().get(0);
+		private final Assignment cParamsAssignment_2_8_1_4_1_1 = (Assignment)cGroup_2_8_1_4_1.eContents().get(1);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_1_1_0 = (RuleCall)cParamsAssignment_2_8_1_4_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_8_1_5 = (Keyword)cGroup_2_8_1.eContents().get(5);
+		private final Assignment cBodyAssignment_2_8_1_6 = (Assignment)cGroup_2_8_1.eContents().get(6);
+		private final RuleCall cBodyXExpressionParserRuleCall_2_8_1_6_0 = (RuleCall)cBodyAssignment_2_8_1_6.eContents().get(0);
+		
+		//DtoFeature returns dto::LDtoFeature:
+		//	{dto::LDtoFeature} annotations+=AnnotationDef* (({dto::LDtoInheritedAttribute.annotationInfo=current} "inherit var"
+		//	inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]) ("mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+		//	{dto::LDtoInheritedReference.annotationInfo=current} ("inherit ref"
+		//	inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]) "mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+		//	{dto::LDtoAttribute.annotationInfo=current} (transient?="transient" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//	("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", "
+		//	properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (dirty?="dirty"
+		//	type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue
+		//	(", " properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (derived?="derived"
+		//	domainDescription?="domainDescription"? type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords
+		//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//	derivedGetterExpression=XBlockExpression) | {dto::LDtoAttribute.annotationInfo=current} (id?="id" | version?="version"
+		//	| uuid?="uuid" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//	type=[common::LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//	name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+		//	{dto::LDtoReference.annotationInfo=current} ("ref" (cascading?="cascade"? & lazy?="lazy"?)
+		//	type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//	name=ValidIDWithKeywords ("opposite" opposite=[dto::LDtoReference|LFQN])? ("properties" "(" properties+=KeyAndValue
+		//	(", " properties+=KeyAndValue)* ")")?) (mapper=LimitedMapperDtoMapper | ";"?) |
+		//	{dto::LDtoAttribute.annotationInfo=current} "var" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//	multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "("
+		//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=LimitedMapperDtoMapper | ";"?) |
+		//	{dto::LDtoOperation.annotationInfo=current} ("def" type=JvmTypeReference name=ValidIDWithKeywords "("
+		//	(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression));
+		public ParserRule getRule() { return rule; }
+
+		//{dto::LDtoFeature} annotations+=AnnotationDef* (({dto::LDtoInheritedAttribute.annotationInfo=current} "inherit var"
+		//inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]) ("mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+		//{dto::LDtoInheritedReference.annotationInfo=current} ("inherit ref"
+		//inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]) "mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+		//{dto::LDtoAttribute.annotationInfo=current} (transient?="transient" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (dirty?="dirty"
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue
+		//(", " properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (derived?="derived"
+		//domainDescription?="domainDescription"? type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//derivedGetterExpression=XBlockExpression) | {dto::LDtoAttribute.annotationInfo=current} (id?="id" | version?="version"
+		//| uuid?="uuid" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+		//{dto::LDtoReference.annotationInfo=current} ("ref" (cascading?="cascade"? & lazy?="lazy"?)
+		//type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=ValidIDWithKeywords ("opposite" opposite=[dto::LDtoReference|LFQN])? ("properties" "(" properties+=KeyAndValue
+		//(", " properties+=KeyAndValue)* ")")?) (mapper=LimitedMapperDtoMapper | ";"?) |
+		//{dto::LDtoAttribute.annotationInfo=current} "var" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=LimitedMapperDtoMapper | ";"?) |
+		//{dto::LDtoOperation.annotationInfo=current} ("def" type=JvmTypeReference name=ValidIDWithKeywords "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression))
+		public Group getGroup() { return cGroup; }
+
+		//{dto::LDtoFeature}
+		public Action getLDtoFeatureAction_0() { return cLDtoFeatureAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//({dto::LDtoInheritedAttribute.annotationInfo=current} "inherit var"
+		//inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]) ("mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+		//{dto::LDtoInheritedReference.annotationInfo=current} ("inherit ref"
+		//inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]) "mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+		//{dto::LDtoAttribute.annotationInfo=current} (transient?="transient" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (dirty?="dirty"
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue
+		//(", " properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (derived?="derived"
+		//domainDescription?="domainDescription"? type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//derivedGetterExpression=XBlockExpression) | {dto::LDtoAttribute.annotationInfo=current} (id?="id" | version?="version"
+		//| uuid?="uuid" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+		//{dto::LDtoReference.annotationInfo=current} ("ref" (cascading?="cascade"? & lazy?="lazy"?)
+		//type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=ValidIDWithKeywords ("opposite" opposite=[dto::LDtoReference|LFQN])? ("properties" "(" properties+=KeyAndValue
+		//(", " properties+=KeyAndValue)* ")")?) (mapper=LimitedMapperDtoMapper | ";"?) |
+		//{dto::LDtoAttribute.annotationInfo=current} "var" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=LimitedMapperDtoMapper | ";"?) |
+		//{dto::LDtoOperation.annotationInfo=current} ("def" type=JvmTypeReference name=ValidIDWithKeywords "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//({dto::LDtoInheritedAttribute.annotationInfo=current} "inherit var"
+		//inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]) ("mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?)
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//{dto::LDtoInheritedAttribute.annotationInfo=current} "inherit var"
+		//inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]
+		public Group getGroup_2_0_0() { return cGroup_2_0_0; }
+
+		//{dto::LDtoInheritedAttribute.annotationInfo=current}
+		public Action getLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0() { return cLDtoInheritedAttributeAnnotationInfoAction_2_0_0_0; }
+
+		//"inherit var"
+		public Keyword getInheritVarKeyword_2_0_0_1() { return cInheritVarKeyword_2_0_0_1; }
+
+		//inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]
+		public Assignment getInheritedFeatureAssignment_2_0_0_2() { return cInheritedFeatureAssignment_2_0_0_2; }
+
+		//[entity::LEntityAttribute|ValidLFQNWithKeywords]
+		public CrossReference getInheritedFeatureLEntityAttributeCrossReference_2_0_0_2_0() { return cInheritedFeatureLEntityAttributeCrossReference_2_0_0_2_0; }
+
+		//ValidLFQNWithKeywords
+		public RuleCall getInheritedFeatureLEntityAttributeValidLFQNWithKeywordsParserRuleCall_2_0_0_2_0_1() { return cInheritedFeatureLEntityAttributeValidLFQNWithKeywordsParserRuleCall_2_0_0_2_0_1; }
+
+		//("mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"mapto"
+		public Keyword getMaptoKeyword_2_0_1_0() { return cMaptoKeyword_2_0_1_0; }
+
+		//type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_0_1_1() { return cTypeAssignment_2_0_1_1; }
+
+		//[dto::LDto|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLDtoCrossReference_2_0_1_1_0() { return cTypeLDtoCrossReference_2_0_1_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_1_0_1() { return cTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_1_0_1; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_0_2() { return cGroup_2_0_2; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_0_2_0() { return cPropertiesKeyword_2_0_2_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_0_2_1() { return cLeftParenthesisKeyword_2_0_2_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_2_2() { return cPropertiesAssignment_2_0_2_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_2_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_2_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_0_2_3() { return cGroup_2_0_2_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_0_2_3_0() { return cCommaSpaceKeyword_2_0_2_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_2_3_1() { return cPropertiesAssignment_2_0_2_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_2_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_2_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_0_2_4() { return cRightParenthesisKeyword_2_0_2_4; }
+
+		//mapper=DtoMapper | ";"?
+		public Alternatives getAlternatives_2_0_3() { return cAlternatives_2_0_3; }
+
+		//mapper=DtoMapper
+		public Assignment getMapperAssignment_2_0_3_0() { return cMapperAssignment_2_0_3_0; }
+
+		//DtoMapper
+		public RuleCall getMapperDtoMapperParserRuleCall_2_0_3_0_0() { return cMapperDtoMapperParserRuleCall_2_0_3_0_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_0_3_1() { return cSemicolonKeyword_2_0_3_1; }
+
+		//{dto::LDtoInheritedReference.annotationInfo=current} ("inherit ref"
+		//inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]) "mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?)
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//{dto::LDtoInheritedReference.annotationInfo=current}
+		public Action getLDtoInheritedReferenceAnnotationInfoAction_2_1_0() { return cLDtoInheritedReferenceAnnotationInfoAction_2_1_0; }
+
+		//"inherit ref" inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]
+		public Group getGroup_2_1_1() { return cGroup_2_1_1; }
+
+		//"inherit ref"
+		public Keyword getInheritRefKeyword_2_1_1_0() { return cInheritRefKeyword_2_1_1_0; }
+
+		//inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]
+		public Assignment getInheritedFeatureAssignment_2_1_1_1() { return cInheritedFeatureAssignment_2_1_1_1; }
+
+		//[entity::LEntityReference|ValidLFQNWithKeywords]
+		public CrossReference getInheritedFeatureLEntityReferenceCrossReference_2_1_1_1_0() { return cInheritedFeatureLEntityReferenceCrossReference_2_1_1_1_0; }
+
+		//ValidLFQNWithKeywords
+		public RuleCall getInheritedFeatureLEntityReferenceValidLFQNWithKeywordsParserRuleCall_2_1_1_1_0_1() { return cInheritedFeatureLEntityReferenceValidLFQNWithKeywordsParserRuleCall_2_1_1_1_0_1; }
+
+		//"mapto"
+		public Keyword getMaptoKeyword_2_1_2() { return cMaptoKeyword_2_1_2; }
+
+		//type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_1_3() { return cTypeAssignment_2_1_3; }
+
+		//[dto::LDto|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLDtoCrossReference_2_1_3_0() { return cTypeLDtoCrossReference_2_1_3_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_1_3_0_1() { return cTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_1_3_0_1; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_4() { return cGroup_2_1_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_4_0() { return cPropertiesKeyword_2_1_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_4_1() { return cLeftParenthesisKeyword_2_1_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_4_2() { return cPropertiesAssignment_2_1_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_4_3() { return cGroup_2_1_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_4_3_0() { return cCommaSpaceKeyword_2_1_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_4_3_1() { return cPropertiesAssignment_2_1_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_4_4() { return cRightParenthesisKeyword_2_1_4_4; }
+
+		//mapper=DtoMapper | ";"?
+		public Alternatives getAlternatives_2_1_5() { return cAlternatives_2_1_5; }
+
+		//mapper=DtoMapper
+		public Assignment getMapperAssignment_2_1_5_0() { return cMapperAssignment_2_1_5_0; }
+
+		//DtoMapper
+		public RuleCall getMapperDtoMapperParserRuleCall_2_1_5_0_0() { return cMapperDtoMapperParserRuleCall_2_1_5_0_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_1_5_1() { return cSemicolonKeyword_2_1_5_1; }
+
+		//{dto::LDtoAttribute.annotationInfo=current} (transient?="transient" type=[common::LScalarType|TYPE_CROSS_REFERENCE] ("["
+		//constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"?)
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//{dto::LDtoAttribute.annotationInfo=current}
+		public Action getLDtoAttributeAnnotationInfoAction_2_2_0() { return cLDtoAttributeAnnotationInfoAction_2_2_0; }
+
+		//transient?="transient" type=[common::LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?
+		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
+
+		//transient?="transient"
+		public Assignment getTransientAssignment_2_2_1_0() { return cTransientAssignment_2_2_1_0; }
+
+		//"transient"
+		public Keyword getTransientTransientKeyword_2_2_1_0_0() { return cTransientTransientKeyword_2_2_1_0_0; }
+
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_2_1_1() { return cTypeAssignment_2_2_1_1; }
+
+		//[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_2_1_1_0() { return cTypeLScalarTypeCrossReference_2_2_1_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_2_1_1_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_2_1_1_0_1; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_2_1_2() { return cGroup_2_2_1_2; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_2_1_2_0() { return cLeftSquareBracketKeyword_2_2_1_2_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_2_1_2_1() { return cConstraintsAssignment_2_2_1_2_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_2_1_2_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_2_1_2_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_2_1_2_2() { return cRightSquareBracketKeyword_2_2_1_2_2; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_2_1_3() { return cNameAssignment_2_2_1_3; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_2_1_3_0() { return cNameValidIDWithKeywordsParserRuleCall_2_2_1_3_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_2_1_4() { return cGroup_2_2_1_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_2_1_4_0() { return cPropertiesKeyword_2_2_1_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_2_1_4_1() { return cLeftParenthesisKeyword_2_2_1_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_2_1_4_2() { return cPropertiesAssignment_2_2_1_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_2_1_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_2_1_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_2_1_4_3() { return cGroup_2_2_1_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_2_1_4_3_0() { return cCommaSpaceKeyword_2_2_1_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_2_1_4_3_1() { return cPropertiesAssignment_2_2_1_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_2_1_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_2_1_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_2_1_4_4() { return cRightParenthesisKeyword_2_2_1_4_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_2_1_5() { return cSemicolonKeyword_2_2_1_5; }
+
+		//{dto::LDtoAttribute.annotationInfo=current} (dirty?="dirty" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?)
+		public Group getGroup_2_3() { return cGroup_2_3; }
+
+		//{dto::LDtoAttribute.annotationInfo=current}
+		public Action getLDtoAttributeAnnotationInfoAction_2_3_0() { return cLDtoAttributeAnnotationInfoAction_2_3_0; }
+
+		//dirty?="dirty" type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?
+		public Group getGroup_2_3_1() { return cGroup_2_3_1; }
+
+		//dirty?="dirty"
+		public Assignment getDirtyAssignment_2_3_1_0() { return cDirtyAssignment_2_3_1_0; }
+
+		//"dirty"
+		public Keyword getDirtyDirtyKeyword_2_3_1_0_0() { return cDirtyDirtyKeyword_2_3_1_0_0; }
+
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_3_1_1() { return cTypeAssignment_2_3_1_1; }
+
+		//[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_3_1_1_0() { return cTypeLScalarTypeCrossReference_2_3_1_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_3_1_1_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_3_1_1_0_1; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_3_1_2() { return cNameAssignment_2_3_1_2; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_3_1_2_0() { return cNameValidIDWithKeywordsParserRuleCall_2_3_1_2_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_3_1_3() { return cGroup_2_3_1_3; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_3_1_3_0() { return cPropertiesKeyword_2_3_1_3_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_3_1_3_1() { return cLeftParenthesisKeyword_2_3_1_3_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_3_1_3_2() { return cPropertiesAssignment_2_3_1_3_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_3_1_3_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_3_1_3_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_3_1_3_3() { return cGroup_2_3_1_3_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_3_1_3_3_0() { return cCommaSpaceKeyword_2_3_1_3_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_3_1_3_3_1() { return cPropertiesAssignment_2_3_1_3_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_3_1_3_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_3_1_3_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_3_1_3_4() { return cRightParenthesisKeyword_2_3_1_3_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_3_1_4() { return cSemicolonKeyword_2_3_1_4; }
+
+		//{dto::LDtoAttribute.annotationInfo=current} (derived?="derived" domainDescription?="domainDescription"?
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue
+		//(", " properties+=KeyAndValue)* ")")? derivedGetterExpression=XBlockExpression)
+		public Group getGroup_2_4() { return cGroup_2_4; }
+
+		//{dto::LDtoAttribute.annotationInfo=current}
+		public Action getLDtoAttributeAnnotationInfoAction_2_4_0() { return cLDtoAttributeAnnotationInfoAction_2_4_0; }
+
+		//derived?="derived" domainDescription?="domainDescription"? type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//derivedGetterExpression=XBlockExpression
+		public Group getGroup_2_4_1() { return cGroup_2_4_1; }
+
+		//derived?="derived"
+		public Assignment getDerivedAssignment_2_4_1_0() { return cDerivedAssignment_2_4_1_0; }
+
+		//"derived"
+		public Keyword getDerivedDerivedKeyword_2_4_1_0_0() { return cDerivedDerivedKeyword_2_4_1_0_0; }
+
+		//domainDescription?="domainDescription"?
+		public Assignment getDomainDescriptionAssignment_2_4_1_1() { return cDomainDescriptionAssignment_2_4_1_1; }
+
+		//"domainDescription"
+		public Keyword getDomainDescriptionDomainDescriptionKeyword_2_4_1_1_0() { return cDomainDescriptionDomainDescriptionKeyword_2_4_1_1_0; }
+
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_4_1_2() { return cTypeAssignment_2_4_1_2; }
+
+		//[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_4_1_2_0() { return cTypeLScalarTypeCrossReference_2_4_1_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_4_1_2_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_4_1_2_0_1; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_4_1_3() { return cNameAssignment_2_4_1_3; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_4_1_3_0() { return cNameValidIDWithKeywordsParserRuleCall_2_4_1_3_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_4_1_4() { return cGroup_2_4_1_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_4_1_4_0() { return cPropertiesKeyword_2_4_1_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_4_1_4_1() { return cLeftParenthesisKeyword_2_4_1_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_4_1_4_2() { return cPropertiesAssignment_2_4_1_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_4_1_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_4_1_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_4_1_4_3() { return cGroup_2_4_1_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_4_1_4_3_0() { return cCommaSpaceKeyword_2_4_1_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_4_1_4_3_1() { return cPropertiesAssignment_2_4_1_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_4_1_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_4_1_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_4_1_4_4() { return cRightParenthesisKeyword_2_4_1_4_4; }
+
+		//derivedGetterExpression=XBlockExpression
+		public Assignment getDerivedGetterExpressionAssignment_2_4_1_5() { return cDerivedGetterExpressionAssignment_2_4_1_5; }
+
+		//XBlockExpression
+		public RuleCall getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_4_1_5_0() { return cDerivedGetterExpressionXBlockExpressionParserRuleCall_2_4_1_5_0; }
+
+		//{dto::LDtoAttribute.annotationInfo=current} (id?="id" | version?="version" | uuid?="uuid" |
+		//domainDescription?="domainDescription" | domainKey?="domainKey") type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?
+		public Group getGroup_2_5() { return cGroup_2_5; }
+
+		//{dto::LDtoAttribute.annotationInfo=current}
+		public Action getLDtoAttributeAnnotationInfoAction_2_5_0() { return cLDtoAttributeAnnotationInfoAction_2_5_0; }
+
+		//id?="id" | version?="version" | uuid?="uuid" | domainDescription?="domainDescription" | domainKey?="domainKey"
+		public Alternatives getAlternatives_2_5_1() { return cAlternatives_2_5_1; }
+
+		//id?="id"
+		public Assignment getIdAssignment_2_5_1_0() { return cIdAssignment_2_5_1_0; }
+
+		//"id"
+		public Keyword getIdIdKeyword_2_5_1_0_0() { return cIdIdKeyword_2_5_1_0_0; }
+
+		//version?="version"
+		public Assignment getVersionAssignment_2_5_1_1() { return cVersionAssignment_2_5_1_1; }
+
+		//"version"
+		public Keyword getVersionVersionKeyword_2_5_1_1_0() { return cVersionVersionKeyword_2_5_1_1_0; }
+
+		//uuid?="uuid"
+		public Assignment getUuidAssignment_2_5_1_2() { return cUuidAssignment_2_5_1_2; }
+
+		//"uuid"
+		public Keyword getUuidUuidKeyword_2_5_1_2_0() { return cUuidUuidKeyword_2_5_1_2_0; }
+
+		//domainDescription?="domainDescription"
+		public Assignment getDomainDescriptionAssignment_2_5_1_3() { return cDomainDescriptionAssignment_2_5_1_3; }
+
+		//"domainDescription"
+		public Keyword getDomainDescriptionDomainDescriptionKeyword_2_5_1_3_0() { return cDomainDescriptionDomainDescriptionKeyword_2_5_1_3_0; }
+
+		//domainKey?="domainKey"
+		public Assignment getDomainKeyAssignment_2_5_1_4() { return cDomainKeyAssignment_2_5_1_4; }
+
+		//"domainKey"
+		public Keyword getDomainKeyDomainKeyKeyword_2_5_1_4_0() { return cDomainKeyDomainKeyKeyword_2_5_1_4_0; }
+
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_5_2() { return cTypeAssignment_2_5_2; }
+
+		//[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_5_2_0() { return cTypeLScalarTypeCrossReference_2_5_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_5_2_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_5_2_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_5_3() { return cMultiplicityAssignment_2_5_3; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_5_3_0() { return cMultiplicityMultiplicityParserRuleCall_2_5_3_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_5_4() { return cGroup_2_5_4; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_5_4_0() { return cLeftSquareBracketKeyword_2_5_4_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_5_4_1() { return cConstraintsAssignment_2_5_4_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_5_4_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_5_4_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_5_4_2() { return cRightSquareBracketKeyword_2_5_4_2; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_5_5() { return cNameAssignment_2_5_5; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_5_5_0() { return cNameValidIDWithKeywordsParserRuleCall_2_5_5_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_5_6() { return cGroup_2_5_6; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_5_6_0() { return cPropertiesKeyword_2_5_6_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_5_6_1() { return cLeftParenthesisKeyword_2_5_6_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_5_6_2() { return cPropertiesAssignment_2_5_6_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_5_6_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_5_6_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_5_6_3() { return cGroup_2_5_6_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_5_6_3_0() { return cCommaSpaceKeyword_2_5_6_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_5_6_3_1() { return cPropertiesAssignment_2_5_6_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_5_6_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_5_6_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_5_6_4() { return cRightParenthesisKeyword_2_5_6_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_5_7() { return cSemicolonKeyword_2_5_7; }
+
+		//{dto::LDtoReference.annotationInfo=current} ("ref" (cascading?="cascade"? & lazy?="lazy"?)
+		//type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=ValidIDWithKeywords ("opposite" opposite=[dto::LDtoReference|LFQN])? ("properties" "(" properties+=KeyAndValue
+		//(", " properties+=KeyAndValue)* ")")?) (mapper=LimitedMapperDtoMapper | ";"?)
+		public Group getGroup_2_6() { return cGroup_2_6; }
+
+		//{dto::LDtoReference.annotationInfo=current}
+		public Action getLDtoReferenceAnnotationInfoAction_2_6_0() { return cLDtoReferenceAnnotationInfoAction_2_6_0; }
+
+		//"ref" (cascading?="cascade"? & lazy?="lazy"?) type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("opposite" opposite=[dto::LDtoReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_6_1() { return cGroup_2_6_1; }
+
+		//"ref"
+		public Keyword getRefKeyword_2_6_1_0() { return cRefKeyword_2_6_1_0; }
+
+		//cascading?="cascade"? & lazy?="lazy"?
+		public UnorderedGroup getUnorderedGroup_2_6_1_1() { return cUnorderedGroup_2_6_1_1; }
+
+		//cascading?="cascade"?
+		public Assignment getCascadingAssignment_2_6_1_1_0() { return cCascadingAssignment_2_6_1_1_0; }
+
+		//"cascade"
+		public Keyword getCascadingCascadeKeyword_2_6_1_1_0_0() { return cCascadingCascadeKeyword_2_6_1_1_0_0; }
+
+		//lazy?="lazy"?
+		public Assignment getLazyAssignment_2_6_1_1_1() { return cLazyAssignment_2_6_1_1_1; }
+
+		//"lazy"
+		public Keyword getLazyLazyKeyword_2_6_1_1_1_0() { return cLazyLazyKeyword_2_6_1_1_1_0; }
+
+		//type=[dto::LDto|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_6_1_2() { return cTypeAssignment_2_6_1_2; }
+
+		//[dto::LDto|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLDtoCrossReference_2_6_1_2_0() { return cTypeLDtoCrossReference_2_6_1_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_6_1_2_0_1() { return cTypeLDtoTYPE_CROSS_REFERENCEParserRuleCall_2_6_1_2_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_6_1_3() { return cMultiplicityAssignment_2_6_1_3; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_6_1_3_0() { return cMultiplicityMultiplicityParserRuleCall_2_6_1_3_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_6_1_4() { return cGroup_2_6_1_4; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_6_1_4_0() { return cLeftSquareBracketKeyword_2_6_1_4_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_6_1_4_1() { return cConstraintsAssignment_2_6_1_4_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_6_1_4_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_6_1_4_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_6_1_4_2() { return cRightSquareBracketKeyword_2_6_1_4_2; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_6_1_5() { return cNameAssignment_2_6_1_5; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_6_1_5_0() { return cNameValidIDWithKeywordsParserRuleCall_2_6_1_5_0; }
+
+		//("opposite" opposite=[dto::LDtoReference|LFQN])?
+		public Group getGroup_2_6_1_6() { return cGroup_2_6_1_6; }
+
+		//"opposite"
+		public Keyword getOppositeKeyword_2_6_1_6_0() { return cOppositeKeyword_2_6_1_6_0; }
+
+		//opposite=[dto::LDtoReference|LFQN]
+		public Assignment getOppositeAssignment_2_6_1_6_1() { return cOppositeAssignment_2_6_1_6_1; }
+
+		//[dto::LDtoReference|LFQN]
+		public CrossReference getOppositeLDtoReferenceCrossReference_2_6_1_6_1_0() { return cOppositeLDtoReferenceCrossReference_2_6_1_6_1_0; }
+
+		//LFQN
+		public RuleCall getOppositeLDtoReferenceLFQNParserRuleCall_2_6_1_6_1_0_1() { return cOppositeLDtoReferenceLFQNParserRuleCall_2_6_1_6_1_0_1; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_6_1_7() { return cGroup_2_6_1_7; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_6_1_7_0() { return cPropertiesKeyword_2_6_1_7_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_6_1_7_1() { return cLeftParenthesisKeyword_2_6_1_7_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_6_1_7_2() { return cPropertiesAssignment_2_6_1_7_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_6_1_7_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_6_1_7_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_6_1_7_3() { return cGroup_2_6_1_7_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_6_1_7_3_0() { return cCommaSpaceKeyword_2_6_1_7_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_6_1_7_3_1() { return cPropertiesAssignment_2_6_1_7_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_6_1_7_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_6_1_7_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_6_1_7_4() { return cRightParenthesisKeyword_2_6_1_7_4; }
+
+		//mapper=LimitedMapperDtoMapper | ";"?
+		public Alternatives getAlternatives_2_6_2() { return cAlternatives_2_6_2; }
+
+		//mapper=LimitedMapperDtoMapper
+		public Assignment getMapperAssignment_2_6_2_0() { return cMapperAssignment_2_6_2_0; }
+
+		//LimitedMapperDtoMapper
+		public RuleCall getMapperLimitedMapperDtoMapperParserRuleCall_2_6_2_0_0() { return cMapperLimitedMapperDtoMapperParserRuleCall_2_6_2_0_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_6_2_1() { return cSemicolonKeyword_2_6_2_1; }
+
+		//{dto::LDtoAttribute.annotationInfo=current} "var" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=LimitedMapperDtoMapper | ";"?)
+		public Group getGroup_2_7() { return cGroup_2_7; }
+
+		//{dto::LDtoAttribute.annotationInfo=current}
+		public Action getLDtoAttributeAnnotationInfoAction_2_7_0() { return cLDtoAttributeAnnotationInfoAction_2_7_0; }
+
+		//"var"
+		public Keyword getVarKeyword_2_7_1() { return cVarKeyword_2_7_1; }
+
+		//type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_7_2() { return cTypeAssignment_2_7_2; }
+
+		//[common::LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_7_2_0() { return cTypeLScalarTypeCrossReference_2_7_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_7_2_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_7_2_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_7_3() { return cMultiplicityAssignment_2_7_3; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_7_3_0() { return cMultiplicityMultiplicityParserRuleCall_2_7_3_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_7_4() { return cGroup_2_7_4; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_7_4_0() { return cLeftSquareBracketKeyword_2_7_4_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_7_4_1() { return cConstraintsAssignment_2_7_4_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_7_4_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_7_4_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_7_4_2() { return cRightSquareBracketKeyword_2_7_4_2; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_7_5() { return cNameAssignment_2_7_5; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_7_5_0() { return cNameValidIDWithKeywordsParserRuleCall_2_7_5_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_7_6() { return cGroup_2_7_6; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_7_6_0() { return cPropertiesKeyword_2_7_6_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_7_6_1() { return cLeftParenthesisKeyword_2_7_6_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_7_6_2() { return cPropertiesAssignment_2_7_6_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_7_6_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_7_6_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_7_6_3() { return cGroup_2_7_6_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_7_6_3_0() { return cCommaSpaceKeyword_2_7_6_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_7_6_3_1() { return cPropertiesAssignment_2_7_6_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_7_6_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_7_6_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_7_6_4() { return cRightParenthesisKeyword_2_7_6_4; }
+
+		//mapper=LimitedMapperDtoMapper | ";"?
+		public Alternatives getAlternatives_2_7_7() { return cAlternatives_2_7_7; }
+
+		//mapper=LimitedMapperDtoMapper
+		public Assignment getMapperAssignment_2_7_7_0() { return cMapperAssignment_2_7_7_0; }
+
+		//LimitedMapperDtoMapper
+		public RuleCall getMapperLimitedMapperDtoMapperParserRuleCall_2_7_7_0_0() { return cMapperLimitedMapperDtoMapperParserRuleCall_2_7_7_0_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_7_7_1() { return cSemicolonKeyword_2_7_7_1; }
+
+		//{dto::LDtoOperation.annotationInfo=current} ("def" type=JvmTypeReference name=ValidIDWithKeywords "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Group getGroup_2_8() { return cGroup_2_8; }
+
+		//{dto::LDtoOperation.annotationInfo=current}
+		public Action getLDtoOperationAnnotationInfoAction_2_8_0() { return cLDtoOperationAnnotationInfoAction_2_8_0; }
+
+		//"def" type=JvmTypeReference name=ValidIDWithKeywords "(" (params+=FullJvmFormalParameter (", "
+		//params+=FullJvmFormalParameter)*)? ")" body=XExpression
+		public Group getGroup_2_8_1() { return cGroup_2_8_1; }
+
+		//"def"
+		public Keyword getDefKeyword_2_8_1_0() { return cDefKeyword_2_8_1_0; }
+
+		//type=JvmTypeReference
+		public Assignment getTypeAssignment_2_8_1_1() { return cTypeAssignment_2_8_1_1; }
+
+		//JvmTypeReference
+		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_8_1_1_0() { return cTypeJvmTypeReferenceParserRuleCall_2_8_1_1_0; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_8_1_2() { return cNameAssignment_2_8_1_2; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_8_1_2_0() { return cNameValidIDWithKeywordsParserRuleCall_2_8_1_2_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_8_1_3() { return cLeftParenthesisKeyword_2_8_1_3; }
+
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)?
+		public Group getGroup_2_8_1_4() { return cGroup_2_8_1_4; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_8_1_4_0() { return cParamsAssignment_2_8_1_4_0; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_0_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_0_0; }
+
+		//(", " params+=FullJvmFormalParameter)*
+		public Group getGroup_2_8_1_4_1() { return cGroup_2_8_1_4_1; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_8_1_4_1_0() { return cCommaSpaceKeyword_2_8_1_4_1_0; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_8_1_4_1_1() { return cParamsAssignment_2_8_1_4_1_1; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_1_1_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_8_1_4_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_8_1_5() { return cRightParenthesisKeyword_2_8_1_5; }
+
+		//body=XExpression
+		public Assignment getBodyAssignment_2_8_1_6() { return cBodyAssignment_2_8_1_6; }
+
+		//XExpression
+		public RuleCall getBodyXExpressionParserRuleCall_2_8_1_6_0() { return cBodyXExpressionParserRuleCall_2_8_1_6_0; }
+	}
+
+	public class DtoMapperElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "DtoMapper");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cToDTOKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cToDTOAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cToDTOXExpressionParserRuleCall_2_0 = (RuleCall)cToDTOAssignment_2.eContents().get(0);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cFromDTOKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cFromDTOAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cFromDTOXExpressionParserRuleCall_3_1_0 = (RuleCall)cFromDTOAssignment_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//DtoMapper returns dto::LDtoMapper:
+		//	"{" "toDTO" toDTO=XExpression ("fromDTO" fromDTO=XExpression)? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"{" "toDTO" toDTO=XExpression ("fromDTO" fromDTO=XExpression)? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+		//"toDTO"
+		public Keyword getToDTOKeyword_1() { return cToDTOKeyword_1; }
+
+		//toDTO=XExpression
+		public Assignment getToDTOAssignment_2() { return cToDTOAssignment_2; }
+
+		//XExpression
+		public RuleCall getToDTOXExpressionParserRuleCall_2_0() { return cToDTOXExpressionParserRuleCall_2_0; }
+
+		//("fromDTO" fromDTO=XExpression)?
+		public Group getGroup_3() { return cGroup_3; }
+
+		//"fromDTO"
+		public Keyword getFromDTOKeyword_3_0() { return cFromDTOKeyword_3_0; }
+
+		//fromDTO=XExpression
+		public Assignment getFromDTOAssignment_3_1() { return cFromDTOAssignment_3_1; }
+
+		//XExpression
+		public RuleCall getFromDTOXExpressionParserRuleCall_3_1_0() { return cFromDTOXExpressionParserRuleCall_3_1_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class LimitedMapperDtoMapperElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LimitedMapperDtoMapper");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cToDTOKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cToDTOAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cToDTOXExpressionParserRuleCall_2_0 = (RuleCall)cToDTOAssignment_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//// custom vars and refs should not be mapped to entity. 
+		//LimitedMapperDtoMapper returns dto::LDtoMapper:
+		//	"{" "toDTO" toDTO=XExpression "}";
+		public ParserRule getRule() { return rule; }
+
+		//"{" "toDTO" toDTO=XExpression "}"
+		public Group getGroup() { return cGroup; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_0() { return cLeftCurlyBracketKeyword_0; }
+
+		//"toDTO"
+		public Keyword getToDTOKeyword_1() { return cToDTOKeyword_1; }
+
+		//toDTO=XExpression
+		public Assignment getToDTOAssignment_2() { return cToDTOAssignment_2; }
+
+		//XExpression
+		public RuleCall getToDTOXExpressionParserRuleCall_2_0() { return cToDTOXExpressionParserRuleCall_2_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_3() { return cRightCurlyBracketKeyword_3; }
+	}
+
+	public class RefFQNElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RefFQN");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
+		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
+		private final Keyword cFullStopKeyword_1_0 = (Keyword)cGroup_1.eContents().get(0);
+		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
+		
+		//RefFQN:
+		//	ID ("." ID)*;
+		public ParserRule getRule() { return rule; }
+
+		//ID ("." ID)*
+		public Group getGroup() { return cGroup; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
+
+		//("." ID)*
+		public Group getGroup_1() { return cGroup_1; }
+
+		//"."
+		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
+
+		//ID
+		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
+	}
+	
+	
+	private final LDTOModelElements pLDTOModel;
+	private final ClassElements pClass;
+	private final DtoFeatureElements pDtoFeature;
+	private final DtoMapperElements pDtoMapper;
+	private final LimitedMapperDtoMapperElements pLimitedMapperDtoMapper;
+	private final RefFQNElements pRefFQN;
+	
+	private final Grammar grammar;
+
+	private final CommonGrammarGrammarAccess gaCommonGrammar;
+
+	@Inject
+	public DtoGrammarGrammarAccess(GrammarProvider grammarProvider,
+		CommonGrammarGrammarAccess gaCommonGrammar) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaCommonGrammar = gaCommonGrammar;
+		this.pLDTOModel = new LDTOModelElements();
+		this.pClass = new ClassElements();
+		this.pDtoFeature = new DtoFeatureElements();
+		this.pDtoMapper = new DtoMapperElements();
+		this.pLimitedMapperDtoMapper = new LimitedMapperDtoMapperElements();
+		this.pRefFQN = new RefFQNElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.dsl.dto.xtext.DtoGrammar".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 CommonGrammarGrammarAccess getCommonGrammarGrammarAccess() {
+		return gaCommonGrammar;
+	}
+
+	
+	//LDTOModel returns dto::LDtoModel:
+	//	packages+=TypedPackage*;
+	public LDTOModelElements getLDTOModelAccess() {
+		return pLDTOModel;
+	}
+	
+	public ParserRule getLDTOModelRule() {
+		return getLDTOModelAccess().getRule();
+	}
+
+	//Class returns dto::LDto:
+	//	{dto::LDto} annotations+=AnnotationDef* ({dto::LDto.annotationInfo=current} abstract?="abstract"? "dto"
+	//	name=ValidIDWithKeywords ("extends" superType=[dto::LDto|TYPE_CROSS_REFERENCE])? ("wraps"
+	//	wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{" features+=DtoFeature* "}" |
+	//	{dto::LAutoInheritDto.annotationInfo=current} abstract?="abstract"? "autoDto" name=ValidIDWithKeywords ("extends"
+	//	superType=[dto::LDto|TYPE_CROSS_REFERENCE])? "wraps" wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE] "{"
+	//	features+=DtoFeature* "}");
+	public ClassElements getClassAccess() {
+		return pClass;
+	}
+	
+	public ParserRule getClassRule() {
+		return getClassAccess().getRule();
+	}
+
+	//DtoFeature returns dto::LDtoFeature:
+	//	{dto::LDtoFeature} annotations+=AnnotationDef* (({dto::LDtoInheritedAttribute.annotationInfo=current} "inherit var"
+	//	inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]) ("mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE])?
+	//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+	//	{dto::LDtoInheritedReference.annotationInfo=current} ("inherit ref"
+	//	inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]) "mapto" type=[dto::LDto|TYPE_CROSS_REFERENCE]
+	//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=DtoMapper | ";"?) |
+	//	{dto::LDtoAttribute.annotationInfo=current} (transient?="transient" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+	//	("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (dirty?="dirty"
+	//	type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue
+	//	(", " properties+=KeyAndValue)* ")")? ";"?) | {dto::LDtoAttribute.annotationInfo=current} (derived?="derived"
+	//	domainDescription?="domainDescription"? type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords
+	//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+	//	derivedGetterExpression=XBlockExpression) | {dto::LDtoAttribute.annotationInfo=current} (id?="id" | version?="version"
+	//	| uuid?="uuid" | domainDescription?="domainDescription" | domainKey?="domainKey")
+	//	type=[common::LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+	//	name=ValidIDWithKeywords ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+	//	{dto::LDtoReference.annotationInfo=current} ("ref" (cascading?="cascade"? & lazy?="lazy"?)
+	//	type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+	//	name=ValidIDWithKeywords ("opposite" opposite=[dto::LDtoReference|LFQN])? ("properties" "(" properties+=KeyAndValue
+	//	(", " properties+=KeyAndValue)* ")")?) (mapper=LimitedMapperDtoMapper | ";"?) |
+	//	{dto::LDtoAttribute.annotationInfo=current} "var" type=[common::LScalarType|TYPE_CROSS_REFERENCE]
+	//	multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=ValidIDWithKeywords ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (mapper=LimitedMapperDtoMapper | ";"?) |
+	//	{dto::LDtoOperation.annotationInfo=current} ("def" type=JvmTypeReference name=ValidIDWithKeywords "("
+	//	(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression));
+	public DtoFeatureElements getDtoFeatureAccess() {
+		return pDtoFeature;
+	}
+	
+	public ParserRule getDtoFeatureRule() {
+		return getDtoFeatureAccess().getRule();
+	}
+
+	//DtoMapper returns dto::LDtoMapper:
+	//	"{" "toDTO" toDTO=XExpression ("fromDTO" fromDTO=XExpression)? "}";
+	public DtoMapperElements getDtoMapperAccess() {
+		return pDtoMapper;
+	}
+	
+	public ParserRule getDtoMapperRule() {
+		return getDtoMapperAccess().getRule();
+	}
+
+	//// custom vars and refs should not be mapped to entity. 
+	//LimitedMapperDtoMapper returns dto::LDtoMapper:
+	//	"{" "toDTO" toDTO=XExpression "}";
+	public LimitedMapperDtoMapperElements getLimitedMapperDtoMapperAccess() {
+		return pLimitedMapperDtoMapper;
+	}
+	
+	public ParserRule getLimitedMapperDtoMapperRule() {
+		return getLimitedMapperDtoMapperAccess().getRule();
+	}
+
+	//RefFQN:
+	//	ID ("." ID)*;
+	public RefFQNElements getRefFQNAccess() {
+		return pRefFQN;
+	}
+	
+	public ParserRule getRefFQNRule() {
+		return getRefFQNAccess().getRule();
+	}
+
+	//TypedPackage returns types::LTypedPackage:
+	//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=Type* "}")?;
+	public CommonGrammarGrammarAccess.TypedPackageElements getTypedPackageAccess() {
+		return gaCommonGrammar.getTypedPackageAccess();
+	}
+	
+	public ParserRule getTypedPackageRule() {
+		return getTypedPackageAccess().getRule();
+	}
+
+	//Type returns types::LType:
+	//	ScalarType | Class;
+	public CommonGrammarGrammarAccess.TypeElements getTypeAccess() {
+		return gaCommonGrammar.getTypeAccess();
+	}
+	
+	public ParserRule getTypeRule() {
+		return getTypeAccess().getRule();
+	}
+
+	//Import returns types::LImport:
+	//	"import" importedNamespace=LQualifiedNameWithWildCard ";"?;
+	public CommonGrammarGrammarAccess.ImportElements getImportAccess() {
+		return gaCommonGrammar.getImportAccess();
+	}
+	
+	public ParserRule getImportRule() {
+		return getImportAccess().getRule();
+	}
+
+	//DataType returns types::LDataType:
+	//	"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+	//	constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+	//	date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?;
+	public CommonGrammarGrammarAccess.DataTypeElements getDataTypeAccess() {
+		return gaCommonGrammar.getDataTypeAccess();
+	}
+	
+	public ParserRule getDataTypeRule() {
+		return getDataTypeAccess().getRule();
+	}
+
+	//AllConstraints returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast;
+	public CommonGrammarGrammarAccess.AllConstraintsElements getAllConstraintsAccess() {
+		return gaCommonGrammar.getAllConstraintsAccess();
+	}
+	
+	public ParserRule getAllConstraintsRule() {
+		return getAllConstraintsAccess().getRule();
+	}
+
+	//DataTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize;
+	public CommonGrammarGrammarAccess.DataTypeConstraintElements getDataTypeConstraintAccess() {
+		return gaCommonGrammar.getDataTypeConstraintAccess();
+	}
+	
+	public ParserRule getDataTypeConstraintRule() {
+		return getDataTypeConstraintAccess().getRule();
+	}
+
+	//DateConstraint returns types::LDatatypeConstraint:
+	//	DtCFuture | DtCPast | DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.DateConstraintElements getDateConstraintAccess() {
+		return gaCommonGrammar.getDateConstraintAccess();
+	}
+	
+	public ParserRule getDateConstraintRule() {
+		return getDateConstraintAccess().getRule();
+	}
+
+	//BlobTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.BlobTypeConstraintElements getBlobTypeConstraintAccess() {
+		return gaCommonGrammar.getBlobTypeConstraintAccess();
+	}
+	
+	public ParserRule getBlobTypeConstraintRule() {
+		return getBlobTypeConstraintAccess().getRule();
+	}
+
+	//enum ConstraintSeverity returns types::LConstraintSeverity:
+	//	INFO="info" | WARNING="warn" | ERROR="error";
+	public CommonGrammarGrammarAccess.ConstraintSeverityElements getConstraintSeverityAccess() {
+		return gaCommonGrammar.getConstraintSeverityAccess();
+	}
+	
+	public EnumRule getConstraintSeverityRule() {
+		return getConstraintSeverityAccess().getRule();
+	}
+
+	//DtCAssertFalse returns types::LDtCAssertFalse:
+	//	{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertFalseElements getDtCAssertFalseAccess() {
+		return gaCommonGrammar.getDtCAssertFalseAccess();
+	}
+	
+	public ParserRule getDtCAssertFalseRule() {
+		return getDtCAssertFalseAccess().getRule();
+	}
+
+	//DtCAssertTrue returns types::LDtCAssertTrue:
+	//	{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertTrueElements getDtCAssertTrueAccess() {
+		return gaCommonGrammar.getDtCAssertTrueAccess();
+	}
+	
+	public ParserRule getDtCAssertTrueRule() {
+		return getDtCAssertTrueAccess().getRule();
+	}
+
+	//DtCDecimalMax returns types::LDtCDecimalMax:
+	//	{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMaxElements getDtCDecimalMaxAccess() {
+		return gaCommonGrammar.getDtCDecimalMaxAccess();
+	}
+	
+	public ParserRule getDtCDecimalMaxRule() {
+		return getDtCDecimalMaxAccess().getRule();
+	}
+
+	//DtCDecimalMin returns types::LDtCDecimalMin:
+	//	{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMinElements getDtCDecimalMinAccess() {
+		return gaCommonGrammar.getDtCDecimalMinAccess();
+	}
+	
+	public ParserRule getDtCDecimalMinRule() {
+		return getDtCDecimalMinAccess().getRule();
+	}
+
+	//DtCDigits returns types::LDtCDigits:
+	//	{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+	//	("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDigitsElements getDtCDigitsAccess() {
+		return gaCommonGrammar.getDtCDigitsAccess();
+	}
+	
+	public ParserRule getDtCDigitsRule() {
+		return getDtCDigitsAccess().getRule();
+	}
+
+	//DtCFuture returns types::LDtCFuture:
+	//	{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCFutureElements getDtCFutureAccess() {
+		return gaCommonGrammar.getDtCFutureAccess();
+	}
+	
+	public ParserRule getDtCFutureRule() {
+		return getDtCFutureAccess().getRule();
+	}
+
+	//DtCPast returns types::LDtCPast:
+	//	{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCPastElements getDtCPastAccess() {
+		return gaCommonGrammar.getDtCPastAccess();
+	}
+	
+	public ParserRule getDtCPastRule() {
+		return getDtCPastAccess().getRule();
+	}
+
+	//DtCNumericMax returns types::LDtCNumericMax:
+	//	{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMaxElements getDtCNumericMaxAccess() {
+		return gaCommonGrammar.getDtCNumericMaxAccess();
+	}
+	
+	public ParserRule getDtCNumericMaxRule() {
+		return getDtCNumericMaxAccess().getRule();
+	}
+
+	//DtCNumericMin returns types::LDtCNumericMin:
+	//	{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMinElements getDtCNumericMinAccess() {
+		return gaCommonGrammar.getDtCNumericMinAccess();
+	}
+	
+	public ParserRule getDtCNumericMinRule() {
+		return getDtCNumericMinAccess().getRule();
+	}
+
+	//DtCNotNull returns types::LDtCNotNull:
+	//	{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNotNullElements getDtCNotNullAccess() {
+		return gaCommonGrammar.getDtCNotNullAccess();
+	}
+	
+	public ParserRule getDtCNotNullRule() {
+		return getDtCNotNullAccess().getRule();
+	}
+
+	//DtCNull returns types::LDtCNull:
+	//	{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNullElements getDtCNullAccess() {
+		return gaCommonGrammar.getDtCNullAccess();
+	}
+	
+	public ParserRule getDtCNullRule() {
+		return getDtCNullAccess().getRule();
+	}
+
+	//DtCRegEx returns types::LDtCRegEx:
+	//	{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCRegExElements getDtCRegExAccess() {
+		return gaCommonGrammar.getDtCRegExAccess();
+	}
+	
+	public ParserRule getDtCRegExRule() {
+		return getDtCRegExAccess().getRule();
+	}
+
+	//DtCSize returns types::LDtCSize:
+	//	{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey"
+	//	"=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCSizeElements getDtCSizeAccess() {
+		return gaCommonGrammar.getDtCSizeAccess();
+	}
+	
+	public ParserRule getDtCSizeRule() {
+		return getDtCSizeAccess().getRule();
+	}
+
+	//enum DateType returns types::LDateType:
+	//	DATE="date" | TIME="time" | TIMESTAMP="timestamp";
+	public CommonGrammarGrammarAccess.DateTypeElements getDateTypeAccess() {
+		return gaCommonGrammar.getDateTypeAccess();
+	}
+	
+	public EnumRule getDateTypeRule() {
+		return getDateTypeAccess().getRule();
+	}
+
+	//ScalarType returns types::LScalarType:
+	//	DataType | Enum;
+	public CommonGrammarGrammarAccess.ScalarTypeElements getScalarTypeAccess() {
+		return gaCommonGrammar.getScalarTypeAccess();
+	}
+	
+	public ParserRule getScalarTypeRule() {
+		return getScalarTypeAccess().getRule();
+	}
+
+	//Modifier returns types::LModifier:
+	//	final?="final"? & static?="static"? & visibility=LVisibility;
+	public CommonGrammarGrammarAccess.ModifierElements getModifierAccess() {
+		return gaCommonGrammar.getModifierAccess();
+	}
+	
+	public ParserRule getModifierRule() {
+		return getModifierAccess().getRule();
+	}
+
+	//Enum returns types::LEnum:
+	//	"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}";
+	public CommonGrammarGrammarAccess.EnumElements getEnumAccess() {
+		return gaCommonGrammar.getEnumAccess();
+	}
+	
+	public ParserRule getEnumRule() {
+		return getEnumAccess().getRule();
+	}
+
+	//EnumLiteral returns types::LEnumLiteral:
+	//	name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?;
+	public CommonGrammarGrammarAccess.EnumLiteralElements getEnumLiteralAccess() {
+		return gaCommonGrammar.getEnumLiteralAccess();
+	}
+	
+	public ParserRule getEnumLiteralRule() {
+		return getEnumLiteralAccess().getRule();
+	}
+
+	//AnnotationDef returns types::LAnnotationDef:
+	//	=> (annotation=XAnnotation);
+	public CommonGrammarGrammarAccess.AnnotationDefElements getAnnotationDefAccess() {
+		return gaCommonGrammar.getAnnotationDefAccess();
+	}
+	
+	public ParserRule getAnnotationDefRule() {
+		return getAnnotationDefAccess().getRule();
+	}
+
+	//enum LVisibility returns types::LVisibility:
+	//	PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public";
+	public CommonGrammarGrammarAccess.LVisibilityElements getLVisibilityAccess() {
+		return gaCommonGrammar.getLVisibilityAccess();
+	}
+	
+	public EnumRule getLVisibilityRule() {
+		return getLVisibilityAccess().getRule();
+	}
+
+	//ResultFilters returns types::LResultFilters:
+	//	{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}";
+	public CommonGrammarGrammarAccess.ResultFiltersElements getResultFiltersAccess() {
+		return gaCommonGrammar.getResultFiltersAccess();
+	}
+	
+	public ParserRule getResultFiltersRule() {
+		return getResultFiltersAccess().getRule();
+	}
+
+	//ResultFilter returns types::LResultFilter:
+	//	AttributeMatchingConstraint;
+	public CommonGrammarGrammarAccess.ResultFilterElements getResultFilterAccess() {
+		return gaCommonGrammar.getResultFilterAccess();
+	}
+	
+	public ParserRule getResultFilterRule() {
+		return getResultFilterAccess().getRule();
+	}
+
+	//AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+	//	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+	//	matchingLiteral=[types::LEnumLiteral]) ";"?;
+	public CommonGrammarGrammarAccess.AttributeMatchingConstraintElements getAttributeMatchingConstraintAccess() {
+		return gaCommonGrammar.getAttributeMatchingConstraintAccess();
+	}
+	
+	public ParserRule getAttributeMatchingConstraintRule() {
+		return getAttributeMatchingConstraintAccess().getRule();
+	}
+
+	//KeyAndValue returns types::LKeyAndValue:
+	//	"key" "=" key=STRING "value" "=" value=STRING;
+	public CommonGrammarGrammarAccess.KeyAndValueElements getKeyAndValueAccess() {
+		return gaCommonGrammar.getKeyAndValueAccess();
+	}
+	
+	public ParserRule getKeyAndValueRule() {
+		return getKeyAndValueAccess().getRule();
+	}
+
+	//enum LComparatorType returns types::LComparatorType:
+	//	EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>";
+	public CommonGrammarGrammarAccess.LComparatorTypeElements getLComparatorTypeAccess() {
+		return gaCommonGrammar.getLComparatorTypeAccess();
+	}
+	
+	public EnumRule getLComparatorTypeRule() {
+		return getLComparatorTypeAccess().getRule();
+	}
+
+	//LQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public CommonGrammarGrammarAccess.LQualifiedNameWithWildCardElements getLQualifiedNameWithWildCardAccess() {
+		return gaCommonGrammar.getLQualifiedNameWithWildCardAccess();
+	}
+	
+	public ParserRule getLQualifiedNameWithWildCardRule() {
+		return getLQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//LFQN:
+	//	ID ("." ID)*;
+	public CommonGrammarGrammarAccess.LFQNElements getLFQNAccess() {
+		return gaCommonGrammar.getLFQNAccess();
+	}
+	
+	public ParserRule getLFQNRule() {
+		return getLFQNAccess().getRule();
+	}
+
+	//TYPE_CROSS_REFERENCE:
+	//	ID;
+	public CommonGrammarGrammarAccess.TYPE_CROSS_REFERENCEElements getTYPE_CROSS_REFERENCEAccess() {
+		return gaCommonGrammar.getTYPE_CROSS_REFERENCEAccess();
+	}
+	
+	public ParserRule getTYPE_CROSS_REFERENCERule() {
+		return getTYPE_CROSS_REFERENCEAccess().getRule();
+	}
+
+	//ValidIDWithKeywords:
+	//	"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+	//	"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID;
+	public CommonGrammarGrammarAccess.ValidIDWithKeywordsElements getValidIDWithKeywordsAccess() {
+		return gaCommonGrammar.getValidIDWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidIDWithKeywordsRule() {
+		return getValidIDWithKeywordsAccess().getRule();
+	}
+
+	//ValidLFQNWithKeywords:
+	//	ValidIDWithKeywords ("." ValidIDWithKeywords)*;
+	public CommonGrammarGrammarAccess.ValidLFQNWithKeywordsElements getValidLFQNWithKeywordsAccess() {
+		return gaCommonGrammar.getValidLFQNWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidLFQNWithKeywordsRule() {
+		return getValidLFQNWithKeywordsAccess().getRule();
+	}
+
+	//Multiplicity returns types::LMultiplicity:
+	//	"[" lower=LowerBound (".." upper=UpperBound)? "]";
+	public CommonGrammarGrammarAccess.MultiplicityElements getMultiplicityAccess() {
+		return gaCommonGrammar.getMultiplicityAccess();
+	}
+	
+	public ParserRule getMultiplicityRule() {
+		return getMultiplicityAccess().getRule();
+	}
+
+	//enum LowerBound returns types::LLowerBound:
+	//	MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1";
+	public CommonGrammarGrammarAccess.LowerBoundElements getLowerBoundAccess() {
+		return gaCommonGrammar.getLowerBoundAccess();
+	}
+	
+	public EnumRule getLowerBoundRule() {
+		return getLowerBoundAccess().getRule();
+	}
+
+	//enum UpperBound returns types::LUpperBound:
+	//	MANY="*" | ONE="1";
+	public CommonGrammarGrammarAccess.UpperBoundElements getUpperBoundAccess() {
+		return gaCommonGrammar.getUpperBoundAccess();
+	}
+	
+	public EnumRule getUpperBoundRule() {
+		return getUpperBoundAccess().getRule();
+	}
+
+	//LInt returns ecore::EInt:
+	//	("+" | "-")? INT;
+	public CommonGrammarGrammarAccess.LIntElements getLIntAccess() {
+		return gaCommonGrammar.getLIntAccess();
+	}
+	
+	public ParserRule getLIntRule() {
+		return getLIntAccess().getRule();
+	}
+
+	//LDecimal returns ecore::EFloat:
+	//	LInt ("." INT)?;
+	public CommonGrammarGrammarAccess.LDecimalElements getLDecimalAccess() {
+		return gaCommonGrammar.getLDecimalAccess();
+	}
+	
+	public ParserRule getLDecimalRule() {
+		return getLDecimalAccess().getRule();
+	}
+
+	//XAnnotation:
+	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
+	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
+	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
+		return gaCommonGrammar.getXAnnotationAccess();
+	}
+	
+	public ParserRule getXAnnotationRule() {
+		return getXAnnotationAccess().getRule();
+	}
+
+	//XAnnotationElementValuePair:
+	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAnnotationElementValueOrCommaListAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueOrCommaListRule() {
+		return getXAnnotationElementValueOrCommaListAccess().getRule();
+	}
+
+	//XAnnotationElementValue returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
+	//	XAnnotationOrExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
+		return gaCommonGrammar.getXAnnotationElementValueAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueRule() {
+		return getXAnnotationElementValueAccess().getRule();
+	}
+
+	//XAnnotationOrExpression returns xbase::XExpression:
+	//	XAnnotation | XExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
+		return gaCommonGrammar.getXAnnotationOrExpressionAccess();
+	}
+	
+	public ParserRule getXAnnotationOrExpressionRule() {
+		return getXAnnotationOrExpressionAccess().getRule();
+	}
+
+	//XExpression:
+	//	XAssignment;
+	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAssignmentAccess();
+	}
+	
+	public ParserRule getXAssignmentRule() {
+		return getXAssignmentAccess().getRule();
+	}
+
+	//OpSingleAssign:
+	//	"=";
+	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
+		return gaCommonGrammar.getOpSingleAssignAccess();
+	}
+	
+	public ParserRule getOpSingleAssignRule() {
+		return getOpSingleAssignAccess().getRule();
+	}
+
+	//OpMultiAssign:
+	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOrExpressionAccess();
+	}
+	
+	public ParserRule getXOrExpressionRule() {
+		return getXOrExpressionAccess().getRule();
+	}
+
+	//OpOr:
+	//	"||";
+	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAndExpressionAccess();
+	}
+	
+	public ParserRule getXAndExpressionRule() {
+		return getXAndExpressionAccess().getRule();
+	}
+
+	//OpAnd:
+	//	"&&";
+	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXEqualityExpressionAccess();
+	}
+	
+	public ParserRule getXEqualityExpressionRule() {
+		return getXEqualityExpressionAccess().getRule();
+	}
+
+	//OpEquality:
+	//	"==" | "!=" | "===" | "!==";
+	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXRelationalExpressionAccess();
+	}
+	
+	public ParserRule getXRelationalExpressionRule() {
+		return getXRelationalExpressionAccess().getRule();
+	}
+
+	//OpCompare:
+	//	">=" | "<" "=" | ">" | "<";
+	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOtherOperatorExpressionAccess();
+	}
+	
+	public ParserRule getXOtherOperatorExpressionRule() {
+		return getXOtherOperatorExpressionAccess().getRule();
+	}
+
+	//OpOther:
+	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAdditiveExpressionAccess();
+	}
+	
+	public ParserRule getXAdditiveExpressionRule() {
+		return getXAdditiveExpressionAccess().getRule();
+	}
+
+	//OpAdd:
+	//	"+" | "-";
+	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXMultiplicativeExpressionAccess();
+	}
+	
+	public ParserRule getXMultiplicativeExpressionRule() {
+		return getXMultiplicativeExpressionAccess().getRule();
+	}
+
+	//OpMulti:
+	//	"*" | "**" | "/" | "%";
+	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
+		return gaCommonGrammar.getOpMultiAccess();
+	}
+	
+	public ParserRule getOpMultiRule() {
+		return getOpMultiAccess().getRule();
+	}
+
+	//XUnaryOperation returns XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
+		return gaCommonGrammar.getXUnaryOperationAccess();
+	}
+	
+	public ParserRule getXUnaryOperationRule() {
+		return getXUnaryOperationAccess().getRule();
+	}
+
+	//OpUnary:
+	//	"!" | "-" | "+";
+	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
+		return gaCommonGrammar.getOpUnaryAccess();
+	}
+	
+	public ParserRule getOpUnaryRule() {
+		return getOpUnaryAccess().getRule();
+	}
+
+	//XCastedExpression returns XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
+		return gaCommonGrammar.getXCastedExpressionAccess();
+	}
+	
+	public ParserRule getXCastedExpressionRule() {
+		return getXCastedExpressionAccess().getRule();
+	}
+
+	//XPostfixOperation returns XExpression:
+	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
+	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
+		return gaCommonGrammar.getXPostfixOperationAccess();
+	}
+	
+	public ParserRule getXPostfixOperationRule() {
+		return getXPostfixOperationAccess().getRule();
+	}
+
+	//OpPostfix:
+	//	"++" | "--";
+	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getXPrimaryExpressionAccess();
+	}
+	
+	public ParserRule getXPrimaryExpressionRule() {
+		return getXPrimaryExpressionAccess().getRule();
+	}
+
+	//XLiteral returns XExpression:
+	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
+	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
+		return gaCommonGrammar.getXLiteralAccess();
+	}
+	
+	public ParserRule getXLiteralRule() {
+		return getXLiteralAccess().getRule();
+	}
+
+	//XCollectionLiteral:
+	//	XSetLiteral | XListLiteral;
+	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
+		return gaCommonGrammar.getXCollectionLiteralAccess();
+	}
+	
+	public ParserRule getXCollectionLiteralRule() {
+		return getXCollectionLiteralAccess().getRule();
+	}
+
+	//XSetLiteral:
+	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
+		return gaCommonGrammar.getXSetLiteralAccess();
+	}
+	
+	public ParserRule getXSetLiteralRule() {
+		return getXSetLiteralAccess().getRule();
+	}
+
+	//XListLiteral:
+	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
+		return gaCommonGrammar.getXListLiteralAccess();
+	}
+	
+	public ParserRule getXListLiteralRule() {
+		return getXListLiteralAccess().getRule();
+	}
+
+	//XClosure returns XExpression:
+	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
+	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
+		return gaCommonGrammar.getXClosureAccess();
+	}
+	
+	public ParserRule getXClosureRule() {
+		return getXClosureAccess().getRule();
+	}
+
+	//XExpressionInClosure returns XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
+		return gaCommonGrammar.getXExpressionInClosureAccess();
+	}
+	
+	public ParserRule getXExpressionInClosureRule() {
+		return getXExpressionInClosureAccess().getRule();
+	}
+
+	//XShortClosure returns XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?="|") expression=XExpression;
+	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
+		return gaCommonGrammar.getXShortClosureAccess();
+	}
+	
+	public ParserRule getXShortClosureRule() {
+		return getXShortClosureAccess().getRule();
+	}
+
+	//XParenthesizedExpression returns XExpression:
+	//	"(" XExpression ")";
+	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
+		return gaCommonGrammar.getXParenthesizedExpressionAccess();
+	}
+	
+	public ParserRule getXParenthesizedExpressionRule() {
+		return getXParenthesizedExpressionAccess().getRule();
+	}
+
+	//XIfExpression returns XExpression:
+	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXSwitchExpressionAccess();
+	}
+	
+	public ParserRule getXSwitchExpressionRule() {
+		return getXSwitchExpressionAccess().getRule();
+	}
+
+	//XCasePart:
+	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
+		return gaCommonGrammar.getXCasePartAccess();
+	}
+	
+	public ParserRule getXCasePartRule() {
+		return getXCasePartAccess().getRule();
+	}
+
+	//XForLoopExpression returns XExpression:
+	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	//	eachExpression=XExpression;
+	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXBasicForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXBasicForLoopExpressionRule() {
+		return getXBasicForLoopExpressionAccess().getRule();
+	}
+
+	//XWhileExpression returns XExpression:
+	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
+		return gaCommonGrammar.getXWhileExpressionAccess();
+	}
+	
+	public ParserRule getXWhileExpressionRule() {
+		return getXWhileExpressionAccess().getRule();
+	}
+
+	//XDoWhileExpression returns XExpression:
+	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
+		return gaCommonGrammar.getXDoWhileExpressionAccess();
+	}
+	
+	public ParserRule getXDoWhileExpressionRule() {
+		return getXDoWhileExpressionAccess().getRule();
+	}
+
+	//XBlockExpression returns XExpression:
+	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
+		return gaCommonGrammar.getXBlockExpressionAccess();
+	}
+	
+	public ParserRule getXBlockExpressionRule() {
+		return getXBlockExpressionAccess().getRule();
+	}
+
+	//XExpressionOrVarDeclaration returns XExpression:
+	//	XVariableDeclaration | XExpression;
+	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXVariableDeclarationAccess();
+	}
+	
+	public ParserRule getXVariableDeclarationRule() {
+		return getXVariableDeclarationAccess().getRule();
+	}
+
+	//JvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference? name=ValidID;
+	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
+		return gaCommonGrammar.getJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getJvmFormalParameterRule() {
+		return getJvmFormalParameterAccess().getRule();
+	}
+
+	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXFeatureCallAccess();
+	}
+	
+	public ParserRule getXFeatureCallRule() {
+		return getXFeatureCallAccess().getRule();
+	}
+
+	//FeatureCallID:
+	//	ValidID | "extends" | "static" | "import" | "extension";
+	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
+		return gaCommonGrammar.getFeatureCallIDAccess();
+	}
+	
+	public ParserRule getFeatureCallIDRule() {
+		return getFeatureCallIDAccess().getRule();
+	}
+
+	//IdOrSuper:
+	//	FeatureCallID | "super";
+	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXConstructorCallAccess();
+	}
+	
+	public ParserRule getXConstructorCallRule() {
+		return getXConstructorCallAccess().getRule();
+	}
+
+	//XBooleanLiteral returns XExpression:
+	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
+		return gaCommonGrammar.getXBooleanLiteralAccess();
+	}
+	
+	public ParserRule getXBooleanLiteralRule() {
+		return getXBooleanLiteralAccess().getRule();
+	}
+
+	//XNullLiteral returns XExpression:
+	//	{XNullLiteral} "null";
+	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
+		return gaCommonGrammar.getXNullLiteralAccess();
+	}
+	
+	public ParserRule getXNullLiteralRule() {
+		return getXNullLiteralAccess().getRule();
+	}
+
+	//XNumberLiteral returns XExpression:
+	//	{XNumberLiteral} value=Number;
+	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
+		return gaCommonGrammar.getXNumberLiteralAccess();
+	}
+	
+	public ParserRule getXNumberLiteralRule() {
+		return getXNumberLiteralAccess().getRule();
+	}
+
+	//XStringLiteral returns XExpression:
+	//	{XStringLiteral} value=STRING;
+	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
+		return gaCommonGrammar.getXStringLiteralAccess();
+	}
+	
+	public ParserRule getXStringLiteralRule() {
+		return getXStringLiteralAccess().getRule();
+	}
+
+	//XTypeLiteral returns XExpression:
+	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
+		return gaCommonGrammar.getXTypeLiteralAccess();
+	}
+	
+	public ParserRule getXTypeLiteralRule() {
+		return getXTypeLiteralAccess().getRule();
+	}
+
+	//XThrowExpression returns XExpression:
+	//	{XThrowExpression} "throw" expression=XExpression;
+	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
+		return gaCommonGrammar.getXThrowExpressionAccess();
+	}
+	
+	public ParserRule getXThrowExpressionRule() {
+		return getXThrowExpressionAccess().getRule();
+	}
+
+	//XReturnExpression returns XExpression:
+	//	{XReturnExpression} "return" -> expression=XExpression?;
+	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXTryCatchFinallyExpressionAccess();
+	}
+	
+	public ParserRule getXTryCatchFinallyExpressionRule() {
+		return getXTryCatchFinallyExpressionAccess().getRule();
+	}
+
+	//XSynchronizedExpression returns XExpression:
+	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
+		return gaCommonGrammar.getXSynchronizedExpressionAccess();
+	}
+	
+	public ParserRule getXSynchronizedExpressionRule() {
+		return getXSynchronizedExpressionAccess().getRule();
+	}
+
+	//XCatchClause:
+	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
+		return gaCommonGrammar.getXCatchClauseAccess();
+	}
+	
+	public ParserRule getXCatchClauseRule() {
+		return getXCatchClauseAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaCommonGrammar.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//Number hidden():
+	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	public XbaseGrammarAccess.NumberElements getNumberAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getHEXRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9" ("0".."9" | "_")*;
+	public TerminalRule getINTRule() {
+		return gaCommonGrammar.getINTRule();
+	} 
+
+	//terminal DECIMAL:
+	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	public TerminalRule getDECIMALRule() {
+		return gaCommonGrammar.getDECIMALRule();
+	} 
+
+	//JvmTypeReference:
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
+	//	XFunctionTypeRef;
+	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmTypeReferenceRule() {
+		return getJvmTypeReferenceAccess().getRule();
+	}
+
+	//ArrayBrackets:
+	//	"[" "]";
+	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+		return gaCommonGrammar.getArrayBracketsAccess();
+	}
+	
+	public ParserRule getArrayBracketsRule() {
+		return getArrayBracketsAccess().getRule();
+	}
+
+	//XFunctionTypeRef:
+	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getJvmParameterizedTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmParameterizedTypeReferenceRule() {
+		return getJvmParameterizedTypeReferenceAccess().getRule();
+	}
+
+	//JvmArgumentTypeReference returns JvmTypeReference:
+	//	JvmTypeReference | JvmWildcardTypeReference;
+	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmArgumentTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmArgumentTypeReferenceRule() {
+		return getJvmArgumentTypeReferenceAccess().getRule();
+	}
+
+	//JvmWildcardTypeReference:
+	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
+	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmWildcardTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmWildcardTypeReferenceRule() {
+		return getJvmWildcardTypeReferenceAccess().getRule();
+	}
+
+	//JvmUpperBound:
+	//	"extends" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundRule() {
+		return getJvmUpperBoundAccess().getRule();
+	}
+
+	//JvmUpperBoundAnded returns JvmUpperBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundAndedRule() {
+		return getJvmUpperBoundAndedAccess().getRule();
+	}
+
+	//JvmLowerBound:
+	//	"super" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundRule() {
+		return getJvmLowerBoundAccess().getRule();
+	}
+
+	//JvmLowerBoundAnded returns JvmLowerBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundAndedRule() {
+		return getJvmLowerBoundAndedAccess().getRule();
+	}
+
+	//JvmTypeParameter:
+	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
+	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+		return gaCommonGrammar.getJvmTypeParameterAccess();
+	}
+	
+	public ParserRule getJvmTypeParameterRule() {
+		return getJvmTypeParameterAccess().getRule();
+	}
+
+	//QualifiedNameWithWildcard:
+	//	QualifiedName "." "*";
+	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+		return gaCommonGrammar.getQualifiedNameWithWildcardAccess();
+	}
+	
+	public ParserRule getQualifiedNameWithWildcardRule() {
+		return getQualifiedNameWithWildcardAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaCommonGrammar.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+
+	//XImportSection:
+	//	importDeclarations+=XImportDeclaration+;
+	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+
+	//QualifiedNameInStaticImport:
+	//	(ValidID ".")+;
+	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+		return gaCommonGrammar.getQualifiedNameInStaticImportAccess();
+	}
+	
+	public ParserRule getQualifiedNameInStaticImportRule() {
+		return getQualifiedNameInStaticImportAccess().getRule();
+	}
+
+	//terminal ID:
+	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaCommonGrammar.getIDRule();
+	} 
+
+	//terminal STRING:
+	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
+	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	public TerminalRule getSTRINGRule() {
+		return gaCommonGrammar.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaCommonGrammar.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaCommonGrammar.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaCommonGrammar.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaCommonGrammar.getANY_OTHERRule();
+	} 
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarJavaValidator.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarJavaValidator.java
new file mode 100644
index 0000000..bb7dd4f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/dto/xtext/validation/AbstractDtoGrammarJavaValidator.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractDtoGrammarJavaValidator extends org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/dsl/dto/v1"));
+	    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.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java
new file mode 100644
index 0000000..ffe6d56
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LAutoInheritDto.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LAuto Inherit Dto</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLAutoInheritDto()
+ * @generated
+ */
+public interface LAutoInheritDto extends LDto {
+} // LAutoInheritDto
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
new file mode 100644
index 0000000..7c38c16
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDto.java
@@ -0,0 +1,284 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * *
+ * A bean is an embeddable element that may become added to a entity using the @embedd annotation.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getFeatures <em>Features</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperType <em>Super Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeJvm <em>Super Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeMapperJvm <em>Super Type Mapper Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSubTypes <em>Sub Types</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedType <em>Wrapped Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedTypeJvm <em>Wrapped Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto()
+ * @generated
+ */
+public interface LDto extends LClass, LFeaturesHolder, LScalarType {
+	/**
+	 * Returns the value of the '<em><b>Features</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Features</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>Features</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_Features()
+	 * @generated
+	 */
+	EList<LDtoFeature> getFeatures();
+
+	/**
+	 * Returns the value of the '<em><b>Super Type</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSubTypes <em>Sub Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type</em>' reference.
+	 * @see #setSuperType(LDto)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_SuperType()
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getSubTypes
+	 * @generated
+	 */
+	LDto getSuperType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperType <em>Super Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type</em>' reference.
+	 * @see #getSuperType()
+	 * @generated
+	 */
+	void setSuperType(LDto value);
+
+	/**
+	 * Returns the value of the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type Jvm</em>' containment reference.
+	 * @see #setSuperTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_SuperTypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getSuperTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeJvm <em>Super Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type Jvm</em>' containment reference.
+	 * @see #getSuperTypeJvm()
+	 * @generated
+	 */
+	void setSuperTypeJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Super Type Mapper Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type Mapper Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type Mapper Jvm</em>' containment reference.
+	 * @see #setSuperTypeMapperJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_SuperTypeMapperJvm()
+	 * @generated
+	 */
+	JvmTypeReference getSuperTypeMapperJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeMapperJvm <em>Super Type Mapper Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type Mapper Jvm</em>' containment reference.
+	 * @see #getSuperTypeMapperJvm()
+	 * @generated
+	 */
+	void setSuperTypeMapperJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Sub Types</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.dto.LDto}.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperType <em>Super Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Types</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub Types</em>' reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_SubTypes()
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperType
+	 * @generated
+	 */
+	EList<LDto> getSubTypes();
+
+	/**
+	 * Returns the value of the '<em><b>Wrapped Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wrapped Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wrapped Type</em>' reference.
+	 * @see #setWrappedType(LType)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_WrappedType()
+	 * @generated
+	 */
+	LType getWrappedType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedType <em>Wrapped Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Wrapped Type</em>' reference.
+	 * @see #getWrappedType()
+	 * @generated
+	 */
+	void setWrappedType(LType value);
+
+	/**
+	 * Returns the value of the '<em><b>Wrapped Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Wrapped Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Wrapped Type Jvm</em>' containment reference.
+	 * @see #setWrappedTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDto_WrappedTypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getWrappedTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedTypeJvm <em>Wrapped Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Wrapped Type Jvm</em>' containment reference.
+	 * @see #getWrappedTypeJvm()
+	 * @generated
+	 */
+	void setWrappedTypeJvm(JvmTypeReference value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LOperation
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LDtoOperation> getOperations();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LDtoReference
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LDtoAbstractReference> getReferences();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LDtoAttribute
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LDtoAbstractAttribute> getAttributes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<? extends LFeature> getAllFeatures();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	void collectAllOSBPFeatures(LDto current, List<LDtoFeature> result);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LDtoAbstractAttribute getPrimaryKeyAttribute();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String getIdAttributeName();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LScalarType getIdAttributeType();
+
+} // LDto
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java
new file mode 100644
index 0000000..c129435
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractAttribute.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Abstract Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoAbstractAttribute()
+ * @generated
+ */
+public interface LDtoAbstractAttribute extends LDtoFeature, LAttribute {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	List<LKeyAndValue> getResolvedProperties();
+
+} // LDtoAbstractAttribute
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java
new file mode 100644
index 0000000..d7b06d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAbstractReference.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Abstract Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getTypeJvm <em>Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoAbstractReference()
+ * @generated
+ */
+public interface LDtoAbstractReference extends LDtoFeature, LReference {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' reference.
+	 * @see #setType(LDto)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoAbstractReference_Type()
+	 * @generated
+	 */
+	LDto getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getType <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(LDto value);
+
+	/**
+	 * Returns the value of the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #setTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoAbstractReference_TypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getTypeJvm <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #getTypeJvm()
+	 * @generated
+	 */
+	void setTypeJvm(JvmTypeReference value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	List<LKeyAndValue> getResolvedProperties();
+
+} // LDtoAbstractReference
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java
new file mode 100644
index 0000000..5033ea6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoAttribute.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoAttribute()
+ * @generated
+ */
+public interface LDtoAttribute extends LDtoAbstractAttribute {
+} // LDtoAttribute
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java
new file mode 100644
index 0000000..33ccd27
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoFeature.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Feature</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature#getMapper <em>Mapper</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoFeature()
+ * @generated
+ */
+public interface LDtoFeature extends LFeature {
+	/**
+	 * Returns the value of the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mapper</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>Mapper</em>' containment reference.
+	 * @see #setMapper(LDtoMapper)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoFeature_Mapper()
+	 * @generated
+	 */
+	LDtoMapper getMapper();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature#getMapper <em>Mapper</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mapper</em>' containment reference.
+	 * @see #getMapper()
+	 * @generated
+	 */
+	void setMapper(LDtoMapper value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LDto getDTO();
+
+} // LDtoFeature
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java
new file mode 100644
index 0000000..ad45623
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedAttribute.java
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Inherited Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeature <em>Inherited Feature</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoInheritedAttribute()
+ * @generated
+ */
+public interface LDtoInheritedAttribute extends LDtoAbstractAttribute {
+	/**
+	 * Returns the value of the '<em><b>Inherited Feature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inherited Feature</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inherited Feature</em>' reference.
+	 * @see #setInheritedFeature(LAttribute)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoInheritedAttribute_InheritedFeature()
+	 * @generated
+	 */
+	LAttribute getInheritedFeature();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeature <em>Inherited Feature</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inherited Feature</em>' reference.
+	 * @see #getInheritedFeature()
+	 * @generated
+	 */
+	void setInheritedFeature(LAttribute value);
+
+	/**
+	 * Returns the value of the '<em><b>Inherited Feature Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inherited Feature Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inherited Feature Type Jvm</em>' containment reference.
+	 * @see #setInheritedFeatureTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoInheritedAttribute_InheritedFeatureTypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getInheritedFeatureTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inherited Feature Type Jvm</em>' containment reference.
+	 * @see #getInheritedFeatureTypeJvm()
+	 * @generated
+	 */
+	void setInheritedFeatureTypeJvm(JvmTypeReference value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LScalarType getInheritedType();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LMultiplicity getInheritedMultiplicity();
+
+} // LDtoInheritedAttribute
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java
new file mode 100644
index 0000000..46c4b4a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoInheritedReference.java
@@ -0,0 +1,93 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Inherited Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeature <em>Inherited Feature</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoInheritedReference()
+ * @generated
+ */
+public interface LDtoInheritedReference extends LDtoAbstractReference {
+	/**
+	 * Returns the value of the '<em><b>Inherited Feature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inherited Feature</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inherited Feature</em>' reference.
+	 * @see #setInheritedFeature(LReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoInheritedReference_InheritedFeature()
+	 * @generated
+	 */
+	LReference getInheritedFeature();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeature <em>Inherited Feature</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inherited Feature</em>' reference.
+	 * @see #getInheritedFeature()
+	 * @generated
+	 */
+	void setInheritedFeature(LReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Inherited Feature Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inherited Feature Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inherited Feature Type Jvm</em>' containment reference.
+	 * @see #setInheritedFeatureTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoInheritedReference_InheritedFeatureTypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getInheritedFeatureTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inherited Feature Type Jvm</em>' containment reference.
+	 * @see #getInheritedFeatureTypeJvm()
+	 * @generated
+	 */
+	void setInheritedFeatureTypeJvm(JvmTypeReference value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LMultiplicity getInheritedMultiplicity();
+
+} // LDtoInheritedReference
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java
new file mode 100644
index 0000000..b30fc4f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoMapper.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Mapper</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getToDTO <em>To DTO</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getFromDTO <em>From DTO</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoMapper()
+ * @generated
+ */
+public interface LDtoMapper extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>To DTO</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>To DTO</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>To DTO</em>' containment reference.
+	 * @see #setToDTO(XExpression)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoMapper_ToDTO()
+	 * @generated
+	 */
+	XExpression getToDTO();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getToDTO <em>To DTO</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>To DTO</em>' containment reference.
+	 * @see #getToDTO()
+	 * @generated
+	 */
+	void setToDTO(XExpression value);
+
+	/**
+	 * Returns the value of the '<em><b>From DTO</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>From DTO</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>From DTO</em>' containment reference.
+	 * @see #setFromDTO(XExpression)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoMapper_FromDTO()
+	 * @generated
+	 */
+	XExpression getFromDTO();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getFromDTO <em>From DTO</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>From DTO</em>' containment reference.
+	 * @see #getFromDTO()
+	 * @generated
+	 */
+	void setFromDTO(XExpression value);
+
+} // LDtoMapper
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java
new file mode 100644
index 0000000..780cb3a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoModel.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoModel()
+ * @generated
+ */
+public interface LDtoModel 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.dsl.semantic.common.types.LTypedPackage}.
+	 * <!-- 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.dsl.semantic.dto.OSBPDtoPackage#getLDtoModel_Packages()
+	 * @generated
+	 */
+	EList<LTypedPackage> getPackages();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	EObject eResolveProxy(InternalEObject proxy);
+
+} // LDtoModel
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java
new file mode 100644
index 0000000..8cc4ad3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoOperation.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoOperation()
+ * @generated
+ */
+public interface LDtoOperation extends LOperation, LDtoFeature {
+} // LDtoOperation
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java
new file mode 100644
index 0000000..9a92224
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/LDtoReference.java
@@ -0,0 +1,56 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDto Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference#getOpposite <em>Opposite</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoReference()
+ * @generated
+ */
+public interface LDtoReference extends LDtoAbstractReference {
+	/**
+	 * Returns the value of the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Opposite</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Opposite</em>' reference.
+	 * @see #setOpposite(LDtoReference)
+	 * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage#getLDtoReference_Opposite()
+	 * @generated
+	 */
+	LDtoReference getOpposite();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference#getOpposite <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Opposite</em>' reference.
+	 * @see #getOpposite()
+	 * @generated
+	 */
+	void setOpposite(LDtoReference value);
+
+} // LDtoReference
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java
new file mode 100644
index 0000000..63f2f36
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoFactory.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+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.dsl.semantic.dto.OSBPDtoPackage
+ * @generated
+ */
+public interface OSBPDtoFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPDtoFactory eINSTANCE = org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>LDto Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Model</em>'.
+	 * @generated
+	 */
+	LDtoModel createLDtoModel();
+
+	/**
+	 * Returns a new object of class '<em>LDto</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto</em>'.
+	 * @generated
+	 */
+	LDto createLDto();
+
+	/**
+	 * Returns a new object of class '<em>LAuto Inherit Dto</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LAuto Inherit Dto</em>'.
+	 * @generated
+	 */
+	LAutoInheritDto createLAutoInheritDto();
+
+	/**
+	 * Returns a new object of class '<em>LDto Mapper</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Mapper</em>'.
+	 * @generated
+	 */
+	LDtoMapper createLDtoMapper();
+
+	/**
+	 * Returns a new object of class '<em>LDto Feature</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Feature</em>'.
+	 * @generated
+	 */
+	LDtoFeature createLDtoFeature();
+
+	/**
+	 * Returns a new object of class '<em>LDto Inherited Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Inherited Attribute</em>'.
+	 * @generated
+	 */
+	LDtoInheritedAttribute createLDtoInheritedAttribute();
+
+	/**
+	 * Returns a new object of class '<em>LDto Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Attribute</em>'.
+	 * @generated
+	 */
+	LDtoAttribute createLDtoAttribute();
+
+	/**
+	 * Returns a new object of class '<em>LDto Inherited Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Inherited Reference</em>'.
+	 * @generated
+	 */
+	LDtoInheritedReference createLDtoInheritedReference();
+
+	/**
+	 * Returns a new object of class '<em>LDto Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Reference</em>'.
+	 * @generated
+	 */
+	LDtoReference createLDtoReference();
+
+	/**
+	 * Returns a new object of class '<em>LDto Operation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDto Operation</em>'.
+	 * @generated
+	 */
+	LDtoOperation createLDtoOperation();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	OSBPDtoPackage getOSBPDtoPackage();
+
+} //OSBPDtoFactory
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
new file mode 100644
index 0000000..ac39332
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/OSBPDtoPackage.java
@@ -0,0 +1,2382 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+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 enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory
+ * @generated
+ */
+public interface OSBPDtoPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "dto";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/dsl/dto/v1";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "dto";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPDtoPackage eINSTANCE = org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoModelImpl <em>LDto Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoModelImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoModel()
+	 * @generated
+	 */
+	int LDTO_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_MODEL__PACKAGES = 0;
+
+	/**
+	 * The number of structural features of the '<em>LDto Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl <em>LDto</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDto()
+	 * @generated
+	 */
+	int LDTO = 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__ANNOTATIONS = OSBPTypesPackage.LCLASS__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__NAME = OSBPTypesPackage.LCLASS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__ANNOTATION_INFO = OSBPTypesPackage.LCLASS__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__ABSTRACT = OSBPTypesPackage.LCLASS__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__SERIALIZABLE = OSBPTypesPackage.LCLASS__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__SHORT_NAME = OSBPTypesPackage.LCLASS__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__FEATURES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Super Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__SUPER_TYPE = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__SUPER_TYPE_JVM = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Super Type Mapper Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__SUPER_TYPE_MAPPER_JVM = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Sub Types</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__SUB_TYPES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Wrapped Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__WRAPPED_TYPE = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Wrapped Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO__WRAPPED_TYPE_JVM = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>LDto</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE_COUNT = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 7;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LAutoInheritDtoImpl <em>LAuto Inherit Dto</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LAutoInheritDtoImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLAutoInheritDto()
+	 * @generated
+	 */
+	int LAUTO_INHERIT_DTO = 2;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__ANNOTATIONS = LDTO__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__NAME = LDTO__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__ANNOTATION_INFO = LDTO__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__ABSTRACT = LDTO__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__SERIALIZABLE = LDTO__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__SHORT_NAME = LDTO__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__FEATURES = LDTO__FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Super Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__SUPER_TYPE = LDTO__SUPER_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__SUPER_TYPE_JVM = LDTO__SUPER_TYPE_JVM;
+
+	/**
+	 * The feature id for the '<em><b>Super Type Mapper Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__SUPER_TYPE_MAPPER_JVM = LDTO__SUPER_TYPE_MAPPER_JVM;
+
+	/**
+	 * The feature id for the '<em><b>Sub Types</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__SUB_TYPES = LDTO__SUB_TYPES;
+
+	/**
+	 * The feature id for the '<em><b>Wrapped Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__WRAPPED_TYPE = LDTO__WRAPPED_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Wrapped Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO__WRAPPED_TYPE_JVM = LDTO__WRAPPED_TYPE_JVM;
+
+	/**
+	 * The number of structural features of the '<em>LAuto Inherit Dto</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAUTO_INHERIT_DTO_FEATURE_COUNT = LDTO_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoMapperImpl <em>LDto Mapper</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoMapperImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoMapper()
+	 * @generated
+	 */
+	int LDTO_MAPPER = 3;
+
+	/**
+	 * The feature id for the '<em><b>To DTO</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_MAPPER__TO_DTO = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>From DTO</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_MAPPER__FROM_DTO = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LDto Mapper</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_MAPPER_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl <em>LDto Feature</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoFeature()
+	 * @generated
+	 */
+	int LDTO_FEATURE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE__ANNOTATIONS = OSBPTypesPackage.LFEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE__NAME = OSBPTypesPackage.LFEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE__MULTIPLICITY = OSBPTypesPackage.LFEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE__ANNOTATION_INFO = OSBPTypesPackage.LFEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE__MAPPER = OSBPTypesPackage.LFEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDto Feature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_FEATURE_FEATURE_COUNT = OSBPTypesPackage.LFEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl <em>LDto Abstract Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoAbstractAttribute()
+	 * @generated
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__ANNOTATIONS = LDTO_FEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__NAME = LDTO_FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__MULTIPLICITY = LDTO_FEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__ANNOTATION_INFO = LDTO_FEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__MAPPER = LDTO_FEATURE__MAPPER;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__ID = LDTO_FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__UUID = LDTO_FEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__VERSION = LDTO_FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__LAZY = LDTO_FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__CASCADING = LDTO_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT = LDTO_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__DERIVED = LDTO_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__DIRTY = LDTO_FEATURE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY = LDTO_FEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION = LDTO_FEATURE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LDTO_FEATURE_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM = LDTO_FEATURE_FEATURE_COUNT + 12;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES = LDTO_FEATURE_FEATURE_COUNT + 13;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS = LDTO_FEATURE_FEATURE_COUNT + 14;
+
+	/**
+	 * The number of structural features of the '<em>LDto Abstract Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 15;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl <em>LDto Inherited Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoInheritedAttribute()
+	 * @generated
+	 */
+	int LDTO_INHERITED_ATTRIBUTE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__ANNOTATIONS = LDTO_ABSTRACT_ATTRIBUTE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__NAME = LDTO_ABSTRACT_ATTRIBUTE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__MULTIPLICITY = LDTO_ABSTRACT_ATTRIBUTE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__ANNOTATION_INFO = LDTO_ABSTRACT_ATTRIBUTE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__MAPPER = LDTO_ABSTRACT_ATTRIBUTE__MAPPER;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__ID = LDTO_ABSTRACT_ATTRIBUTE__ID;
+
+	/**
+	 * The feature id for the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__UUID = LDTO_ABSTRACT_ATTRIBUTE__UUID;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__VERSION = LDTO_ABSTRACT_ATTRIBUTE__VERSION;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__LAZY = LDTO_ABSTRACT_ATTRIBUTE__LAZY;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__CASCADING = LDTO_ABSTRACT_ATTRIBUTE__CASCADING;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__TRANSIENT = LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT;
+
+	/**
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__DERIVED = LDTO_ABSTRACT_ATTRIBUTE__DERIVED;
+
+	/**
+	 * The feature id for the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__DIRTY = LDTO_ABSTRACT_ATTRIBUTE__DIRTY;
+
+	/**
+	 * The feature id for the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__DOMAIN_KEY = LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__DOMAIN_DESCRIPTION = LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__TYPE = LDTO_ABSTRACT_ATTRIBUTE__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__TYPE_JVM = LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__PROPERTIES = LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__CONSTRAINTS = LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Feature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE = LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Feature Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM = LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LDto Inherited Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_ATTRIBUTE_FEATURE_COUNT = LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAttributeImpl <em>LDto Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAttributeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoAttribute()
+	 * @generated
+	 */
+	int LDTO_ATTRIBUTE = 7;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__ANNOTATIONS = LDTO_ABSTRACT_ATTRIBUTE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__NAME = LDTO_ABSTRACT_ATTRIBUTE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__MULTIPLICITY = LDTO_ABSTRACT_ATTRIBUTE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__ANNOTATION_INFO = LDTO_ABSTRACT_ATTRIBUTE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__MAPPER = LDTO_ABSTRACT_ATTRIBUTE__MAPPER;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__ID = LDTO_ABSTRACT_ATTRIBUTE__ID;
+
+	/**
+	 * The feature id for the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__UUID = LDTO_ABSTRACT_ATTRIBUTE__UUID;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__VERSION = LDTO_ABSTRACT_ATTRIBUTE__VERSION;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__LAZY = LDTO_ABSTRACT_ATTRIBUTE__LAZY;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__CASCADING = LDTO_ABSTRACT_ATTRIBUTE__CASCADING;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__TRANSIENT = LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT;
+
+	/**
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__DERIVED = LDTO_ABSTRACT_ATTRIBUTE__DERIVED;
+
+	/**
+	 * The feature id for the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__DIRTY = LDTO_ABSTRACT_ATTRIBUTE__DIRTY;
+
+	/**
+	 * The feature id for the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__DOMAIN_KEY = LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY;
+
+	/**
+	 * The feature id for the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__DOMAIN_DESCRIPTION = LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION;
+
+	/**
+	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__TYPE = LDTO_ABSTRACT_ATTRIBUTE__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__TYPE_JVM = LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__PROPERTIES = LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE__CONSTRAINTS = LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS;
+
+	/**
+	 * The number of structural features of the '<em>LDto Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ATTRIBUTE_FEATURE_COUNT = LDTO_ABSTRACT_ATTRIBUTE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl <em>LDto Abstract Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoAbstractReference()
+	 * @generated
+	 */
+	int LDTO_ABSTRACT_REFERENCE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__ANNOTATIONS = LDTO_FEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__NAME = LDTO_FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__MULTIPLICITY = LDTO_FEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__ANNOTATION_INFO = LDTO_FEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__MAPPER = LDTO_FEATURE__MAPPER;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__LAZY = LDTO_FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__CASCADING = LDTO_FEATURE_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 LDTO_ABSTRACT_REFERENCE__PROPERTIES = LDTO_FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__CONSTRAINTS = LDTO_FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__TYPE = LDTO_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE__TYPE_JVM = LDTO_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>LDto Abstract Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT = LDTO_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl <em>LDto Inherited Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoInheritedReference()
+	 * @generated
+	 */
+	int LDTO_INHERITED_REFERENCE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__ANNOTATIONS = LDTO_ABSTRACT_REFERENCE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__NAME = LDTO_ABSTRACT_REFERENCE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__MULTIPLICITY = LDTO_ABSTRACT_REFERENCE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__ANNOTATION_INFO = LDTO_ABSTRACT_REFERENCE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__MAPPER = LDTO_ABSTRACT_REFERENCE__MAPPER;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__LAZY = LDTO_ABSTRACT_REFERENCE__LAZY;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__CASCADING = LDTO_ABSTRACT_REFERENCE__CASCADING;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__PROPERTIES = LDTO_ABSTRACT_REFERENCE__PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__CONSTRAINTS = LDTO_ABSTRACT_REFERENCE__CONSTRAINTS;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__TYPE = LDTO_ABSTRACT_REFERENCE__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__TYPE_JVM = LDTO_ABSTRACT_REFERENCE__TYPE_JVM;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Feature</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__INHERITED_FEATURE = LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Inherited Feature Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM = LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LDto Inherited Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_INHERITED_REFERENCE_FEATURE_COUNT = LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoReferenceImpl <em>LDto Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoReferenceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoReference()
+	 * @generated
+	 */
+	int LDTO_REFERENCE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__ANNOTATIONS = LDTO_ABSTRACT_REFERENCE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__NAME = LDTO_ABSTRACT_REFERENCE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__MULTIPLICITY = LDTO_ABSTRACT_REFERENCE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__ANNOTATION_INFO = LDTO_ABSTRACT_REFERENCE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__MAPPER = LDTO_ABSTRACT_REFERENCE__MAPPER;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__LAZY = LDTO_ABSTRACT_REFERENCE__LAZY;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__CASCADING = LDTO_ABSTRACT_REFERENCE__CASCADING;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__PROPERTIES = LDTO_ABSTRACT_REFERENCE__PROPERTIES;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__CONSTRAINTS = LDTO_ABSTRACT_REFERENCE__CONSTRAINTS;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__TYPE = LDTO_ABSTRACT_REFERENCE__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__TYPE_JVM = LDTO_ABSTRACT_REFERENCE__TYPE_JVM;
+
+	/**
+	 * The feature id for the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE__OPPOSITE = LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LDto Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_REFERENCE_FEATURE_COUNT = LDTO_ABSTRACT_REFERENCE_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl <em>LDto Operation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoOperation()
+	 * @generated
+	 */
+	int LDTO_OPERATION = 11;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__ANNOTATIONS = OSBPTypesPackage.LOPERATION__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Modifier</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__MODIFIER = OSBPTypesPackage.LOPERATION__MODIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__TYPE = OSBPTypesPackage.LOPERATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__PARAMS = OSBPTypesPackage.LOPERATION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__BODY = OSBPTypesPackage.LOPERATION__BODY;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__NAME = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__MULTIPLICITY = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__ANNOTATION_INFO = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION__MAPPER = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LDto Operation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_OPERATION_FEATURE_COUNT = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 4;
+
+	/**
+	 * The meta object id for the '<em>Dto Feature List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoFeatureList()
+	 * @generated
+	 */
+	int DTO_FEATURE_LIST = 12;
+
+	/**
+	 * The meta object id for the '<em>Operations List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getOperationsList()
+	 * @generated
+	 */
+	int OPERATIONS_LIST = 13;
+
+	/**
+	 * The meta object id for the '<em>Dto Reference List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoReferenceList()
+	 * @generated
+	 */
+	int DTO_REFERENCE_LIST = 14;
+
+	/**
+	 * The meta object id for the '<em>Dto Attribute List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoAttributeList()
+	 * @generated
+	 */
+	int DTO_ATTRIBUTE_LIST = 15;
+
+	/**
+	 * The meta object id for the '<em>Dto Abstract Attribute List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoAbstractAttributeList()
+	 * @generated
+	 */
+	int DTO_ABSTRACT_ATTRIBUTE_LIST = 16;
+
+	/**
+	 * 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.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 17;
+
+	/**
+	 * The meta object id for the '<em>Properties List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getPropertiesList()
+	 * @generated
+	 */
+	int PROPERTIES_LIST = 18;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoModel <em>LDto Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Model</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoModel
+	 * @generated
+	 */
+	EClass getLDtoModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoModel#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.dsl.semantic.dto.LDtoModel#getPackages()
+	 * @see #getLDtoModel()
+	 * @generated
+	 */
+	EReference getLDtoModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDto <em>LDto</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto
+	 * @generated
+	 */
+	EClass getLDto();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getFeatures <em>Features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Features</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getFeatures()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_Features();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperType <em>Super Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Super Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperType()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_SuperType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeJvm <em>Super Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Super Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeJvm()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_SuperTypeJvm();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeMapperJvm <em>Super Type Mapper Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Super Type Mapper Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getSuperTypeMapperJvm()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_SuperTypeMapperJvm();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getSubTypes <em>Sub Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Sub Types</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getSubTypes()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_SubTypes();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedType <em>Wrapped Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Wrapped Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedType()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_WrappedType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedTypeJvm <em>Wrapped Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Wrapped Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDto#getWrappedTypeJvm()
+	 * @see #getLDto()
+	 * @generated
+	 */
+	EReference getLDto_WrappedTypeJvm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto <em>LAuto Inherit Dto</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LAuto Inherit Dto</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto
+	 * @generated
+	 */
+	EClass getLAutoInheritDto();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper <em>LDto Mapper</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Mapper</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoMapper
+	 * @generated
+	 */
+	EClass getLDtoMapper();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getToDTO <em>To DTO</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>To DTO</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getToDTO()
+	 * @see #getLDtoMapper()
+	 * @generated
+	 */
+	EReference getLDtoMapper_ToDTO();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getFromDTO <em>From DTO</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>From DTO</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoMapper#getFromDTO()
+	 * @see #getLDtoMapper()
+	 * @generated
+	 */
+	EReference getLDtoMapper_FromDTO();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature <em>LDto Feature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Feature</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoFeature
+	 * @generated
+	 */
+	EClass getLDtoFeature();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature#getMapper <em>Mapper</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Mapper</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoFeature#getMapper()
+	 * @see #getLDtoFeature()
+	 * @generated
+	 */
+	EReference getLDtoFeature_Mapper();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute <em>LDto Abstract Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Abstract Attribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute
+	 * @generated
+	 */
+	EClass getLDtoAbstractAttribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute <em>LDto Inherited Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Inherited Attribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+	 * @generated
+	 */
+	EClass getLDtoInheritedAttribute();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeature <em>Inherited Feature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Inherited Feature</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeature()
+	 * @see #getLDtoInheritedAttribute()
+	 * @generated
+	 */
+	EReference getLDtoInheritedAttribute_InheritedFeature();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Inherited Feature Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute#getInheritedFeatureTypeJvm()
+	 * @see #getLDtoInheritedAttribute()
+	 * @generated
+	 */
+	EReference getLDtoInheritedAttribute_InheritedFeatureTypeJvm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute <em>LDto Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Attribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute
+	 * @generated
+	 */
+	EClass getLDtoAttribute();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference <em>LDto Abstract Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Abstract Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference
+	 * @generated
+	 */
+	EClass getLDtoAbstractReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getType()
+	 * @see #getLDtoAbstractReference()
+	 * @generated
+	 */
+	EReference getLDtoAbstractReference_Type();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getTypeJvm <em>Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference#getTypeJvm()
+	 * @see #getLDtoAbstractReference()
+	 * @generated
+	 */
+	EReference getLDtoAbstractReference_TypeJvm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference <em>LDto Inherited Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Inherited Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference
+	 * @generated
+	 */
+	EClass getLDtoInheritedReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeature <em>Inherited Feature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Inherited Feature</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeature()
+	 * @see #getLDtoInheritedReference()
+	 * @generated
+	 */
+	EReference getLDtoInheritedReference_InheritedFeature();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Inherited Feature Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference#getInheritedFeatureTypeJvm()
+	 * @see #getLDtoInheritedReference()
+	 * @generated
+	 */
+	EReference getLDtoInheritedReference_InheritedFeatureTypeJvm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference <em>LDto Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoReference
+	 * @generated
+	 */
+	EClass getLDtoReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference#getOpposite <em>Opposite</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Opposite</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoReference#getOpposite()
+	 * @see #getLDtoReference()
+	 * @generated
+	 */
+	EReference getLDtoReference_Opposite();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoOperation <em>LDto Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDto Operation</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.dto.LDtoOperation
+	 * @generated
+	 */
+	EClass getLDtoOperation();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Dto Feature List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Dto Feature List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getDtoFeatureList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Operations List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Operations List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getOperationsList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Dto Reference List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Dto Reference List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getDtoReferenceList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Dto Attribute List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Dto Attribute List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getDtoAttributeList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Dto Abstract Attribute List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Dto Abstract Attribute List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getDtoAbstractAttributeList();
+
+	/**
+	 * 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
+	 * @generated
+	 */
+	EDataType getInternalEObject();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Properties List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Properties List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getPropertiesList();
+
+	/**
+	 * 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
+	 */
+	OSBPDtoFactory getOSBPDtoFactory();
+
+	/**
+	 * <!-- 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 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.dsl.semantic.dto.impl.LDtoModelImpl <em>LDto Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoModelImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoModel()
+		 * @generated
+		 */
+		EClass LDTO_MODEL = eINSTANCE.getLDtoModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_MODEL__PACKAGES = eINSTANCE.getLDtoModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl <em>LDto</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDto()
+		 * @generated
+		 */
+		EClass LDTO = eINSTANCE.getLDto();
+
+		/**
+		 * The meta object literal for the '<em><b>Features</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__FEATURES = eINSTANCE.getLDto_Features();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__SUPER_TYPE = eINSTANCE.getLDto_SuperType();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__SUPER_TYPE_JVM = eINSTANCE.getLDto_SuperTypeJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type Mapper Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__SUPER_TYPE_MAPPER_JVM = eINSTANCE.getLDto_SuperTypeMapperJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub Types</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__SUB_TYPES = eINSTANCE.getLDto_SubTypes();
+
+		/**
+		 * The meta object literal for the '<em><b>Wrapped Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__WRAPPED_TYPE = eINSTANCE.getLDto_WrappedType();
+
+		/**
+		 * The meta object literal for the '<em><b>Wrapped Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO__WRAPPED_TYPE_JVM = eINSTANCE.getLDto_WrappedTypeJvm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LAutoInheritDtoImpl <em>LAuto Inherit Dto</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LAutoInheritDtoImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLAutoInheritDto()
+		 * @generated
+		 */
+		EClass LAUTO_INHERIT_DTO = eINSTANCE.getLAutoInheritDto();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoMapperImpl <em>LDto Mapper</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoMapperImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoMapper()
+		 * @generated
+		 */
+		EClass LDTO_MAPPER = eINSTANCE.getLDtoMapper();
+
+		/**
+		 * The meta object literal for the '<em><b>To DTO</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_MAPPER__TO_DTO = eINSTANCE.getLDtoMapper_ToDTO();
+
+		/**
+		 * The meta object literal for the '<em><b>From DTO</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_MAPPER__FROM_DTO = eINSTANCE.getLDtoMapper_FromDTO();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl <em>LDto Feature</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoFeature()
+		 * @generated
+		 */
+		EClass LDTO_FEATURE = eINSTANCE.getLDtoFeature();
+
+		/**
+		 * The meta object literal for the '<em><b>Mapper</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_FEATURE__MAPPER = eINSTANCE.getLDtoFeature_Mapper();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl <em>LDto Abstract Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoAbstractAttribute()
+		 * @generated
+		 */
+		EClass LDTO_ABSTRACT_ATTRIBUTE = eINSTANCE.getLDtoAbstractAttribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl <em>LDto Inherited Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoInheritedAttribute()
+		 * @generated
+		 */
+		EClass LDTO_INHERITED_ATTRIBUTE = eINSTANCE.getLDtoInheritedAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Inherited Feature</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE = eINSTANCE.getLDtoInheritedAttribute_InheritedFeature();
+
+		/**
+		 * The meta object literal for the '<em><b>Inherited Feature Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM = eINSTANCE.getLDtoInheritedAttribute_InheritedFeatureTypeJvm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAttributeImpl <em>LDto Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAttributeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoAttribute()
+		 * @generated
+		 */
+		EClass LDTO_ATTRIBUTE = eINSTANCE.getLDtoAttribute();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl <em>LDto Abstract Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoAbstractReference()
+		 * @generated
+		 */
+		EClass LDTO_ABSTRACT_REFERENCE = eINSTANCE.getLDtoAbstractReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_ABSTRACT_REFERENCE__TYPE = eINSTANCE.getLDtoAbstractReference_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_ABSTRACT_REFERENCE__TYPE_JVM = eINSTANCE.getLDtoAbstractReference_TypeJvm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl <em>LDto Inherited Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoInheritedReference()
+		 * @generated
+		 */
+		EClass LDTO_INHERITED_REFERENCE = eINSTANCE.getLDtoInheritedReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Inherited Feature</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_INHERITED_REFERENCE__INHERITED_FEATURE = eINSTANCE.getLDtoInheritedReference_InheritedFeature();
+
+		/**
+		 * The meta object literal for the '<em><b>Inherited Feature Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM = eINSTANCE.getLDtoInheritedReference_InheritedFeatureTypeJvm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoReferenceImpl <em>LDto Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoReferenceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoReference()
+		 * @generated
+		 */
+		EClass LDTO_REFERENCE = eINSTANCE.getLDtoReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Opposite</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_REFERENCE__OPPOSITE = eINSTANCE.getLDtoReference_Opposite();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl <em>LDto Operation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getLDtoOperation()
+		 * @generated
+		 */
+		EClass LDTO_OPERATION = eINSTANCE.getLDtoOperation();
+
+		/**
+		 * The meta object literal for the '<em>Dto Feature List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoFeatureList()
+		 * @generated
+		 */
+		EDataType DTO_FEATURE_LIST = eINSTANCE.getDtoFeatureList();
+
+		/**
+		 * The meta object literal for the '<em>Operations List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getOperationsList()
+		 * @generated
+		 */
+		EDataType OPERATIONS_LIST = eINSTANCE.getOperationsList();
+
+		/**
+		 * The meta object literal for the '<em>Dto Reference List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoReferenceList()
+		 * @generated
+		 */
+		EDataType DTO_REFERENCE_LIST = eINSTANCE.getDtoReferenceList();
+
+		/**
+		 * The meta object literal for the '<em>Dto Attribute List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoAttributeList()
+		 * @generated
+		 */
+		EDataType DTO_ATTRIBUTE_LIST = eINSTANCE.getDtoAttributeList();
+
+		/**
+		 * The meta object literal for the '<em>Dto Abstract Attribute List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getDtoAbstractAttributeList()
+		 * @generated
+		 */
+		EDataType DTO_ABSTRACT_ATTRIBUTE_LIST = eINSTANCE.getDtoAbstractAttributeList();
+
+		/**
+		 * 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.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+		/**
+		 * The meta object literal for the '<em>Properties List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoPackageImpl#getPropertiesList()
+		 * @generated
+		 */
+		EDataType PROPERTIES_LIST = eINSTANCE.getPropertiesList();
+
+	}
+
+} //OSBPDtoPackage
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java
new file mode 100644
index 0000000..3642365
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoInheritDtoImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LAuto Inherit Dto</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LAutoInheritDtoImpl extends LDtoImpl implements LAutoInheritDto {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LAutoInheritDtoImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LAUTO_INHERIT_DTO;
+	}
+
+} //LAutoInheritDtoImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
new file mode 100644
index 0000000..3296c32
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractAttributeImpl.java
@@ -0,0 +1,1044 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import com.google.common.base.Objects;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+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.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Abstract Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isUuid <em>Uuid</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isVersion <em>Version</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isTransient <em>Transient</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isDerived <em>Derived</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isDirty <em>Dirty</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isDomainKey <em>Domain Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#isDomainDescription <em>Domain Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getDerivedGetterExpression <em>Derived Getter Expression</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractAttributeImpl#getConstraints <em>Constraints</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LDtoAbstractAttributeImpl extends LDtoFeatureImpl implements LDtoAbstractAttribute {
+	/**
+	 * The default value of the '{@link #isId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isId()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isUuid() <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUuid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean UUID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isUuid() <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUuid()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uuid = UUID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean VERSION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean version = VERSION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LAZY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean lazy = LAZY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CASCADING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cascading = CASCADING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransient()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TRANSIENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransient()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean transient_ = TRANSIENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDerived() <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DERIVED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDerived() <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean derived = DERIVED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDirty()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DIRTY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDirty()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean dirty = DIRTY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainKey() <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DOMAIN_KEY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDomainKey() <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean domainKey = DOMAIN_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainDescription() <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DOMAIN_DESCRIPTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDomainDescription() <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean domainDescription = DOMAIN_DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDerivedGetterExpression() <em>Derived Getter Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDerivedGetterExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression derivedGetterExpression;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LScalarType type;
+
+	/**
+	 * The cached value of the '{@link #getTypeJvm() <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference typeJvm;
+
+	/**
+	 * 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<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoAbstractAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_ABSTRACT_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(boolean newId) {
+		boolean oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isUuid() {
+		return uuid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUuid(boolean newUuid) {
+		boolean oldUuid = uuid;
+		uuid = newUuid;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID, oldUuid, uuid));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isVersion() {
+		return version;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVersion(boolean newVersion) {
+		boolean oldVersion = version;
+		version = newVersion;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION, oldVersion, version));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLazy() {
+		return lazy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLazy(boolean newLazy) {
+		boolean oldLazy = lazy;
+		lazy = newLazy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY, oldLazy, lazy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCascading() {
+		return cascading;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCascading(boolean newCascading) {
+		boolean oldCascading = cascading;
+		cascading = newCascading;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING, oldCascading, cascading));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTransient() {
+		return transient_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransient(boolean newTransient) {
+		boolean oldTransient = transient_;
+		transient_ = newTransient;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT, oldTransient, transient_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDerived() {
+		return derived;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerived(boolean newDerived) {
+		boolean oldDerived = derived;
+		derived = newDerived;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED, oldDerived, derived));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDirty() {
+		return dirty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirty(boolean newDirty) {
+		boolean oldDirty = dirty;
+		dirty = newDirty;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY, oldDirty, dirty));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDomainKey() {
+		return domainKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDomainKey(boolean newDomainKey) {
+		boolean oldDomainKey = domainKey;
+		domainKey = newDomainKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY, oldDomainKey, domainKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDomainDescription() {
+		return domainDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDomainDescription(boolean newDomainDescription) {
+		boolean oldDomainDescription = domainDescription;
+		domainDescription = newDomainDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION, oldDomainDescription, domainDescription));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getDerivedGetterExpression() {
+		return derivedGetterExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDerivedGetterExpression(XExpression newDerivedGetterExpression, NotificationChain msgs) {
+		XExpression oldDerivedGetterExpression = derivedGetterExpression;
+		derivedGetterExpression = newDerivedGetterExpression;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, oldDerivedGetterExpression, newDerivedGetterExpression);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerivedGetterExpression(XExpression newDerivedGetterExpression) {
+		if (newDerivedGetterExpression != derivedGetterExpression) {
+			NotificationChain msgs = null;
+			if (derivedGetterExpression != null)
+				msgs = ((InternalEObject)derivedGetterExpression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, null, msgs);
+			if (newDerivedGetterExpression != null)
+				msgs = ((InternalEObject)newDerivedGetterExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, null, msgs);
+			msgs = basicSetDerivedGetterExpression(newDerivedGetterExpression, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, newDerivedGetterExpression, newDerivedGetterExpression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject)type;
+			type = (LScalarType)eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE, oldType, type));
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(LScalarType newType) {
+		LScalarType oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getTypeJvm() {
+		return typeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeJvm(JvmTypeReference newTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldTypeJvm = typeJvm;
+		typeJvm = newTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM, oldTypeJvm, newTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeJvm(JvmTypeReference newTypeJvm) {
+		if (newTypeJvm != typeJvm) {
+			NotificationChain msgs = null;
+			if (typeJvm != null)
+				msgs = ((InternalEObject)typeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM, null, msgs);
+			if (newTypeJvm != null)
+				msgs = ((InternalEObject)newTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM, null, msgs);
+			msgs = basicSetTypeJvm(newTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM, newTypeJvm, newTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LKeyAndValue> getResolvedProperties() {
+		if ((this instanceof LDtoInheritedAttribute)) {
+			final LDtoInheritedAttribute temp = ((LDtoInheritedAttribute) this);
+			LAttribute _inheritedFeature = temp.getInheritedFeature();
+			boolean _equals = Objects.equal(_inheritedFeature, null);
+			if (_equals) {
+				return Collections.<LKeyAndValue>emptyList();
+			}
+			LAttribute _inheritedFeature_1 = temp.getInheritedFeature();
+			EList<LKeyAndValue> _properties = _inheritedFeature_1.getProperties();
+			final ArrayList<LKeyAndValue> result = new ArrayList<LKeyAndValue>(_properties);
+			EList<LKeyAndValue> _properties_1 = this.getProperties();
+			result.addAll(_properties_1);
+			return result;
+		}
+		else {
+			return this.getProperties();
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return basicSetDerivedGetterExpression(null, msgs);
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM:
+				return basicSetTypeJvm(null, msgs);
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).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 OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID:
+				return isId();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID:
+				return isUuid();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION:
+				return isVersion();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY:
+				return isLazy();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING:
+				return isCascading();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT:
+				return isTransient();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED:
+				return isDerived();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY:
+				return isDirty();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY:
+				return isDomainKey();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				return isDomainDescription();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return getDerivedGetterExpression();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE:
+				if (resolve) return getType();
+				return basicGetType();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM:
+				return getTypeJvm();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES:
+				return getProperties();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
+				return getConstraints();
+		}
+		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 OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID:
+				setId((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID:
+				setUuid((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION:
+				setVersion((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY:
+				setLazy((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING:
+				setCascading((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT:
+				setTransient((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED:
+				setDerived((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY:
+				setDirty((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY:
+				setDomainKey((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				setDomainDescription((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				setDerivedGetterExpression((XExpression)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE:
+				setType((LScalarType)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID:
+				setUuid(UUID_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION:
+				setVersion(VERSION_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY:
+				setLazy(LAZY_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING:
+				setCascading(CASCADING_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT:
+				setTransient(TRANSIENT_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED:
+				setDerived(DERIVED_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY:
+				setDirty(DIRTY_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY:
+				setDomainKey(DOMAIN_KEY_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				setDomainDescription(DOMAIN_DESCRIPTION_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				setDerivedGetterExpression((XExpression)null);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE:
+				setType((LScalarType)null);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID:
+				return id != ID_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID:
+				return uuid != UUID_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION:
+				return version != VERSION_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY:
+				return lazy != LAZY_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING:
+				return cascading != CASCADING_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT:
+				return transient_ != TRANSIENT_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED:
+				return derived != DERIVED_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY:
+				return dirty != DIRTY_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY:
+				return domainKey != DOMAIN_KEY_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				return domainDescription != DOMAIN_DESCRIPTION_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return derivedGetterExpression != null;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE:
+				return type != null;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM:
+				return typeJvm != null;
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS:
+				return constraints != null && !constraints.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LAttribute.class) {
+			switch (derivedFeatureID) {
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID: return OSBPTypesPackage.LATTRIBUTE__ID;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID: return OSBPTypesPackage.LATTRIBUTE__UUID;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION: return OSBPTypesPackage.LATTRIBUTE__VERSION;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY: return OSBPTypesPackage.LATTRIBUTE__LAZY;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING: return OSBPTypesPackage.LATTRIBUTE__CASCADING;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT: return OSBPTypesPackage.LATTRIBUTE__TRANSIENT;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED: return OSBPTypesPackage.LATTRIBUTE__DERIVED;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY: return OSBPTypesPackage.LATTRIBUTE__DIRTY;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY: return OSBPTypesPackage.LATTRIBUTE__DOMAIN_KEY;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION: return OSBPTypesPackage.LATTRIBUTE__DOMAIN_DESCRIPTION;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE: return OSBPTypesPackage.LATTRIBUTE__TYPE;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM: return OSBPTypesPackage.LATTRIBUTE__TYPE_JVM;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES: return OSBPTypesPackage.LATTRIBUTE__PROPERTIES;
+				case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS: return OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS;
+				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 == LAttribute.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LATTRIBUTE__ID: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__ID;
+				case OSBPTypesPackage.LATTRIBUTE__UUID: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__UUID;
+				case OSBPTypesPackage.LATTRIBUTE__VERSION: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__VERSION;
+				case OSBPTypesPackage.LATTRIBUTE__LAZY: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__LAZY;
+				case OSBPTypesPackage.LATTRIBUTE__CASCADING: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CASCADING;
+				case OSBPTypesPackage.LATTRIBUTE__TRANSIENT: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TRANSIENT;
+				case OSBPTypesPackage.LATTRIBUTE__DERIVED: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED;
+				case OSBPTypesPackage.LATTRIBUTE__DIRTY: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DIRTY;
+				case OSBPTypesPackage.LATTRIBUTE__DOMAIN_KEY: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_KEY;
+				case OSBPTypesPackage.LATTRIBUTE__DOMAIN_DESCRIPTION: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DOMAIN_DESCRIPTION;
+				case OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+				case OSBPTypesPackage.LATTRIBUTE__TYPE: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE;
+				case OSBPTypesPackage.LATTRIBUTE__TYPE_JVM: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__TYPE_JVM;
+				case OSBPTypesPackage.LATTRIBUTE__PROPERTIES: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__PROPERTIES;
+				case OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS: return OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE__CONSTRAINTS;
+				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(" (id: ");
+		result.append(id);
+		result.append(", uuid: ");
+		result.append(uuid);
+		result.append(", version: ");
+		result.append(version);
+		result.append(", lazy: ");
+		result.append(lazy);
+		result.append(", cascading: ");
+		result.append(cascading);
+		result.append(", transient: ");
+		result.append(transient_);
+		result.append(", derived: ");
+		result.append(derived);
+		result.append(", dirty: ");
+		result.append(dirty);
+		result.append(", domainKey: ");
+		result.append(domainKey);
+		result.append(", domainDescription: ");
+		result.append(domainDescription);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtoAbstractAttributeImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
new file mode 100644
index 0000000..0d2e61a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAbstractReferenceImpl.java
@@ -0,0 +1,522 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import com.google.common.base.Objects;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+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.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Abstract Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoAbstractReferenceImpl#getTypeJvm <em>Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LDtoAbstractReferenceImpl extends LDtoFeatureImpl implements LDtoAbstractReference {
+	/**
+	 * The default value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LAZY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean lazy = LAZY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CASCADING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cascading = CASCADING_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDto type;
+
+	/**
+	 * The cached value of the '{@link #getTypeJvm() <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference typeJvm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoAbstractReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLazy() {
+		return lazy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLazy(boolean newLazy) {
+		boolean oldLazy = lazy;
+		lazy = newLazy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY, oldLazy, lazy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCascading() {
+		return cascading;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCascading(boolean newCascading) {
+		boolean oldCascading = cascading;
+		cascading = newCascading;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING, oldCascading, cascading));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject)type;
+			type = (LDto)eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE, oldType, type));
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(LDto newType) {
+		LDto oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getTypeJvm() {
+		return typeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeJvm(JvmTypeReference newTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldTypeJvm = typeJvm;
+		typeJvm = newTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM, oldTypeJvm, newTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeJvm(JvmTypeReference newTypeJvm) {
+		if (newTypeJvm != typeJvm) {
+			NotificationChain msgs = null;
+			if (typeJvm != null)
+				msgs = ((InternalEObject)typeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM, null, msgs);
+			if (newTypeJvm != null)
+				msgs = ((InternalEObject)newTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM, null, msgs);
+			msgs = basicSetTypeJvm(newTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM, newTypeJvm, newTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LKeyAndValue> getResolvedProperties() {
+		if ((this instanceof LDtoInheritedReference)) {
+			final LDtoInheritedReference temp = ((LDtoInheritedReference) this);
+			LReference _inheritedFeature = temp.getInheritedFeature();
+			boolean _equals = Objects.equal(_inheritedFeature, null);
+			if (_equals) {
+				return Collections.<LKeyAndValue>emptyList();
+			}
+			LReference _inheritedFeature_1 = temp.getInheritedFeature();
+			EList<LKeyAndValue> _properties = _inheritedFeature_1.getProperties();
+			final ArrayList<LKeyAndValue> result = new ArrayList<LKeyAndValue>(_properties);
+			EList<LKeyAndValue> _properties_1 = this.getProperties();
+			result.addAll(_properties_1);
+			return result;
+		}
+		else {
+			return this.getProperties();
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).basicRemove(otherEnd, msgs);
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM:
+				return basicSetTypeJvm(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 OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY:
+				return isLazy();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING:
+				return isCascading();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
+				return getProperties();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
+				return getConstraints();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
+				if (resolve) return getType();
+				return basicGetType();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM:
+				return getTypeJvm();
+		}
+		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 OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY:
+				setLazy((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING:
+				setCascading((Boolean)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
+				setType((LDto)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY:
+				setLazy(LAZY_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING:
+				setCascading(CASCADING_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
+				setType((LDto)null);
+				return;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY:
+				return lazy != LAZY_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING:
+				return cascading != CASCADING_EDEFAULT;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS:
+				return constraints != null && !constraints.isEmpty();
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE:
+				return type != null;
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__TYPE_JVM:
+				return typeJvm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LReference.class) {
+			switch (derivedFeatureID) {
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY: return OSBPTypesPackage.LREFERENCE__LAZY;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING: return OSBPTypesPackage.LREFERENCE__CASCADING;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES: return OSBPTypesPackage.LREFERENCE__PROPERTIES;
+				case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS: return OSBPTypesPackage.LREFERENCE__CONSTRAINTS;
+				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 == LReference.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LREFERENCE__LAZY: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__LAZY;
+				case OSBPTypesPackage.LREFERENCE__CASCADING: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CASCADING;
+				case OSBPTypesPackage.LREFERENCE__PROPERTIES: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__PROPERTIES;
+				case OSBPTypesPackage.LREFERENCE__CONSTRAINTS: return OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE__CONSTRAINTS;
+				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(" (lazy: ");
+		result.append(lazy);
+		result.append(", cascading: ");
+		result.append(cascading);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtoAbstractReferenceImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java
new file mode 100644
index 0000000..50c3cdc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoAttributeImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoAttributeImpl extends LDtoAbstractAttributeImpl implements LDtoAttribute {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_ATTRIBUTE;
+	}
+
+} //LDtoAttributeImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java
new file mode 100644
index 0000000..5b5d616
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoFeatureImpl.java
@@ -0,0 +1,425 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import com.google.common.base.Objects;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Feature</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoFeatureImpl#getMapper <em>Mapper</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoFeatureImpl extends LAnnotationTargetImpl implements LDtoFeature {
+	/**
+	 * 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 #getMultiplicity() <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LMultiplicity multiplicity;
+
+	/**
+	 * The cached value of the '{@link #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * The cached value of the '{@link #getMapper() <em>Mapper</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMapper()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDtoMapper mapper;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoFeatureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_FEATURE;
+	}
+
+	/**
+	 * <!-- 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, OSBPDtoPackage.LDTO_FEATURE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getMultiplicity() {
+		return multiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMultiplicity(LMultiplicity newMultiplicity, NotificationChain msgs) {
+		LMultiplicity oldMultiplicity = multiplicity;
+		multiplicity = newMultiplicity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY, oldMultiplicity, newMultiplicity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplicity(LMultiplicity newMultiplicity) {
+		if (newMultiplicity != multiplicity) {
+			NotificationChain msgs = null;
+			if (multiplicity != null)
+				msgs = ((InternalEObject)multiplicity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY, null, msgs);
+			if (newMultiplicity != null)
+				msgs = ((InternalEObject)newMultiplicity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY, null, msgs);
+			msgs = basicSetMultiplicity(newMultiplicity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY, newMultiplicity, newMultiplicity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoMapper getMapper() {
+		return mapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMapper(LDtoMapper newMapper, NotificationChain msgs) {
+		LDtoMapper oldMapper = mapper;
+		mapper = newMapper;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_FEATURE__MAPPER, oldMapper, newMapper);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMapper(LDtoMapper newMapper) {
+		if (newMapper != mapper) {
+			NotificationChain msgs = null;
+			if (mapper != null)
+				msgs = ((InternalEObject)mapper).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_FEATURE__MAPPER, null, msgs);
+			if (newMapper != null)
+				msgs = ((InternalEObject)newMapper).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_FEATURE__MAPPER, null, msgs);
+			msgs = basicSetMapper(newMapper, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_FEATURE__MAPPER, newMapper, newMapper));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getDTO() {
+		EObject _eContainer = this.eContainer();
+		return ((LDto) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY:
+				return basicSetMultiplicity(null, msgs);
+			case OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(null, msgs);
+			case OSBPDtoPackage.LDTO_FEATURE__MAPPER:
+				return basicSetMapper(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 OSBPDtoPackage.LDTO_FEATURE__NAME:
+				return getName();
+			case OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY:
+				return getMultiplicity();
+			case OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO:
+				return getAnnotationInfo();
+			case OSBPDtoPackage.LDTO_FEATURE__MAPPER:
+				return getMapper();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_FEATURE__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__MAPPER:
+				setMapper((LDtoMapper)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_FEATURE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)null);
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+			case OSBPDtoPackage.LDTO_FEATURE__MAPPER:
+				setMapper((LDtoMapper)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_FEATURE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPDtoPackage.LDTO_FEATURE__MULTIPLICITY:
+				return multiplicity != null;
+			case OSBPDtoPackage.LDTO_FEATURE__ANNOTATION_INFO:
+				return annotationInfo != null;
+			case OSBPDtoPackage.LDTO_FEATURE__MAPPER:
+				return mapper != 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(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtoFeatureImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
new file mode 100644
index 0000000..23eefd0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImpl.java
@@ -0,0 +1,748 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import com.google.common.base.Objects;
+
+import com.google.common.collect.Iterables;
+
+import java.lang.Iterable;
+
+import java.util.Collection;
+import java.util.List;
+
+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.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getFeatures <em>Features</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getSuperType <em>Super Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getSuperTypeJvm <em>Super Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getSuperTypeMapperJvm <em>Super Type Mapper Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getSubTypes <em>Sub Types</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getWrappedType <em>Wrapped Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoImpl#getWrappedTypeJvm <em>Wrapped Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoImpl extends LClassImpl implements LDto {
+	/**
+	 * The cached value of the '{@link #getFeatures() <em>Features</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFeatures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDtoFeature> features;
+
+	/**
+	 * The cached value of the '{@link #getSuperType() <em>Super Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDto superType;
+
+	/**
+	 * The cached value of the '{@link #getSuperTypeJvm() <em>Super Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference superTypeJvm;
+
+	/**
+	 * The cached value of the '{@link #getSuperTypeMapperJvm() <em>Super Type Mapper Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperTypeMapperJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference superTypeMapperJvm;
+
+	/**
+	 * The cached value of the '{@link #getSubTypes() <em>Sub Types</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubTypes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDto> subTypes;
+
+	/**
+	 * The cached value of the '{@link #getWrappedType() <em>Wrapped Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWrappedType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LType wrappedType;
+
+	/**
+	 * The cached value of the '{@link #getWrappedTypeJvm() <em>Wrapped Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWrappedTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference wrappedTypeJvm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDtoFeature> getFeatures() {
+		if (features == null) {
+			features = new EObjectContainmentEList<LDtoFeature>(LDtoFeature.class, this, OSBPDtoPackage.LDTO__FEATURES);
+		}
+		return features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject)superType;
+			superType = (LDto)eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO__SUPER_TYPE, oldSuperType, superType));
+			}
+		}
+		return superType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto basicGetSuperType() {
+		return superType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperType(LDto newSuperType, NotificationChain msgs) {
+		LDto oldSuperType = superType;
+		superType = newSuperType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__SUPER_TYPE, oldSuperType, newSuperType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperType(LDto newSuperType) {
+		if (newSuperType != superType) {
+			NotificationChain msgs = null;
+			if (superType != null)
+				msgs = ((InternalEObject)superType).eInverseRemove(this, OSBPDtoPackage.LDTO__SUB_TYPES, LDto.class, msgs);
+			if (newSuperType != null)
+				msgs = ((InternalEObject)newSuperType).eInverseAdd(this, OSBPDtoPackage.LDTO__SUB_TYPES, LDto.class, msgs);
+			msgs = basicSetSuperType(newSuperType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__SUPER_TYPE, newSuperType, newSuperType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getSuperTypeJvm() {
+		return superTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperTypeJvm(JvmTypeReference newSuperTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldSuperTypeJvm = superTypeJvm;
+		superTypeJvm = newSuperTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__SUPER_TYPE_JVM, oldSuperTypeJvm, newSuperTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperTypeJvm(JvmTypeReference newSuperTypeJvm) {
+		if (newSuperTypeJvm != superTypeJvm) {
+			NotificationChain msgs = null;
+			if (superTypeJvm != null)
+				msgs = ((InternalEObject)superTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO__SUPER_TYPE_JVM, null, msgs);
+			if (newSuperTypeJvm != null)
+				msgs = ((InternalEObject)newSuperTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO__SUPER_TYPE_JVM, null, msgs);
+			msgs = basicSetSuperTypeJvm(newSuperTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__SUPER_TYPE_JVM, newSuperTypeJvm, newSuperTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getSuperTypeMapperJvm() {
+		return superTypeMapperJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperTypeMapperJvm(JvmTypeReference newSuperTypeMapperJvm, NotificationChain msgs) {
+		JvmTypeReference oldSuperTypeMapperJvm = superTypeMapperJvm;
+		superTypeMapperJvm = newSuperTypeMapperJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM, oldSuperTypeMapperJvm, newSuperTypeMapperJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperTypeMapperJvm(JvmTypeReference newSuperTypeMapperJvm) {
+		if (newSuperTypeMapperJvm != superTypeMapperJvm) {
+			NotificationChain msgs = null;
+			if (superTypeMapperJvm != null)
+				msgs = ((InternalEObject)superTypeMapperJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM, null, msgs);
+			if (newSuperTypeMapperJvm != null)
+				msgs = ((InternalEObject)newSuperTypeMapperJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM, null, msgs);
+			msgs = basicSetSuperTypeMapperJvm(newSuperTypeMapperJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM, newSuperTypeMapperJvm, newSuperTypeMapperJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDto> getSubTypes() {
+		if (subTypes == null) {
+			subTypes = new EObjectWithInverseResolvingEList<LDto>(LDto.class, this, OSBPDtoPackage.LDTO__SUB_TYPES, OSBPDtoPackage.LDTO__SUPER_TYPE);
+		}
+		return subTypes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType getWrappedType() {
+		if (wrappedType != null && wrappedType.eIsProxy()) {
+			InternalEObject oldWrappedType = (InternalEObject)wrappedType;
+			wrappedType = (LType)eResolveProxy(oldWrappedType);
+			if (wrappedType != oldWrappedType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO__WRAPPED_TYPE, oldWrappedType, wrappedType));
+			}
+		}
+		return wrappedType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType basicGetWrappedType() {
+		return wrappedType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWrappedType(LType newWrappedType) {
+		LType oldWrappedType = wrappedType;
+		wrappedType = newWrappedType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__WRAPPED_TYPE, oldWrappedType, wrappedType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getWrappedTypeJvm() {
+		return wrappedTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetWrappedTypeJvm(JvmTypeReference newWrappedTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldWrappedTypeJvm = wrappedTypeJvm;
+		wrappedTypeJvm = newWrappedTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM, oldWrappedTypeJvm, newWrappedTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setWrappedTypeJvm(JvmTypeReference newWrappedTypeJvm) {
+		if (newWrappedTypeJvm != wrappedTypeJvm) {
+			NotificationChain msgs = null;
+			if (wrappedTypeJvm != null)
+				msgs = ((InternalEObject)wrappedTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM, null, msgs);
+			if (newWrappedTypeJvm != null)
+				msgs = ((InternalEObject)newWrappedTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM, null, msgs);
+			msgs = basicSetWrappedTypeJvm(newWrappedTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM, newWrappedTypeJvm, newWrappedTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LDtoOperation> getOperations() {
+		EList<LDtoFeature> _features = this.getFeatures();
+		Iterable<LDtoOperation> _filter = Iterables.<LDtoOperation>filter(_features, LDtoOperation.class);
+		return IterableExtensions.<LDtoOperation>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LDtoAbstractReference> getReferences() {
+		EList<LDtoFeature> _features = this.getFeatures();
+		Iterable<LDtoAbstractReference> _filter = Iterables.<LDtoAbstractReference>filter(_features, LDtoAbstractReference.class);
+		return IterableExtensions.<LDtoAbstractReference>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LDtoAbstractAttribute> getAttributes() {
+		EList<LDtoFeature> _features = this.getFeatures();
+		Iterable<LDtoAbstractAttribute> _filter = Iterables.<LDtoAbstractAttribute>filter(_features, LDtoAbstractAttribute.class);
+		return IterableExtensions.<LDtoAbstractAttribute>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<? extends LFeature> getAllFeatures() {
+		final List<LDtoFeature> result = CollectionLiterals.<LDtoFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void collectAllOSBPFeatures(final LDto current, final List<LDtoFeature> result) {
+		boolean _equals = Objects.equal(current, null);
+		if (_equals) {
+			return;
+		}
+		EList<LDtoFeature> _features = current.getFeatures();
+		result.addAll(_features);
+		LDto _superType = current.getSuperType();
+		this.collectAllOSBPFeatures(_superType, result);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoAbstractAttribute getPrimaryKeyAttribute() {
+		List<? extends LFeature> _allFeatures = this.getAllFeatures();
+		Iterable<LDtoAbstractAttribute> _filter = Iterables.<LDtoAbstractAttribute>filter(_allFeatures, LDtoAbstractAttribute.class);
+		final Function1<LDtoAbstractAttribute, Boolean> _function = new Function1<LDtoAbstractAttribute, Boolean>() {
+			public Boolean apply(final LDtoAbstractAttribute it) {
+				boolean _matched = false;
+				if (!_matched) {
+					if (it instanceof LDtoInheritedAttribute) {
+						_matched=true;
+						boolean _or = false;
+						LAttribute _inheritedFeature = ((LDtoInheritedAttribute)it).getInheritedFeature();
+						boolean _isId = false;
+						if (_inheritedFeature!=null) {
+							_isId=_inheritedFeature.isId();
+						}
+						if (_isId) {
+							_or = true;
+						} else {
+							LAttribute _inheritedFeature_1 = ((LDtoInheritedAttribute)it).getInheritedFeature();
+							boolean _isUuid = false;
+							if (_inheritedFeature_1!=null) {
+								_isUuid=_inheritedFeature_1.isUuid();
+							}
+							_or = _isUuid;
+						}
+						return Boolean.valueOf(_or);
+					}
+				}
+				if (!_matched) {
+					if (it instanceof LDtoAttribute) {
+						_matched=true;
+						boolean _or = false;
+						boolean _isId = ((LDtoAttribute)it).isId();
+						if (_isId) {
+							_or = true;
+						} else {
+							boolean _isUuid = ((LDtoAttribute)it).isUuid();
+							_or = _isUuid;
+						}
+						return Boolean.valueOf(_or);
+					}
+				}
+				return Boolean.valueOf(false);
+			}
+		};
+		return IterableExtensions.<LDtoAbstractAttribute>findFirst(_filter, _function);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getIdAttributeName() {
+		LDtoAbstractAttribute attribute = this.getPrimaryKeyAttribute();
+		boolean _matched = false;
+		if (!_matched) {
+			if (attribute instanceof LDtoInheritedAttribute) {
+				_matched=true;
+				LAttribute _inheritedFeature = ((LDtoInheritedAttribute)attribute).getInheritedFeature();
+				return _inheritedFeature.getName();
+			}
+		}
+		if (!_matched) {
+			if (attribute instanceof LDtoAttribute) {
+				_matched=true;
+				return ((LDtoAttribute)attribute).getName();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType getIdAttributeType() {
+		LDtoAbstractAttribute attribute = this.getPrimaryKeyAttribute();
+		boolean _matched = false;
+		if (!_matched) {
+			if (attribute instanceof LDtoInheritedAttribute) {
+				_matched=true;
+				LAttribute _inheritedFeature = ((LDtoInheritedAttribute)attribute).getInheritedFeature();
+				return _inheritedFeature.getType();
+			}
+		}
+		if (!_matched) {
+			if (Objects.equal(attribute, LDtoAttribute.class)) {
+				_matched=true;
+				return attribute.getType();
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO__SUPER_TYPE:
+				if (superType != null)
+					msgs = ((InternalEObject)superType).eInverseRemove(this, OSBPDtoPackage.LDTO__SUB_TYPES, LDto.class, msgs);
+				return basicSetSuperType((LDto)otherEnd, msgs);
+			case OSBPDtoPackage.LDTO__SUB_TYPES:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getSubTypes()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO__FEATURES:
+				return ((InternalEList<?>)getFeatures()).basicRemove(otherEnd, msgs);
+			case OSBPDtoPackage.LDTO__SUPER_TYPE:
+				return basicSetSuperType(null, msgs);
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_JVM:
+				return basicSetSuperTypeJvm(null, msgs);
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM:
+				return basicSetSuperTypeMapperJvm(null, msgs);
+			case OSBPDtoPackage.LDTO__SUB_TYPES:
+				return ((InternalEList<?>)getSubTypes()).basicRemove(otherEnd, msgs);
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM:
+				return basicSetWrappedTypeJvm(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 OSBPDtoPackage.LDTO__FEATURES:
+				return getFeatures();
+			case OSBPDtoPackage.LDTO__SUPER_TYPE:
+				if (resolve) return getSuperType();
+				return basicGetSuperType();
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_JVM:
+				return getSuperTypeJvm();
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM:
+				return getSuperTypeMapperJvm();
+			case OSBPDtoPackage.LDTO__SUB_TYPES:
+				return getSubTypes();
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE:
+				if (resolve) return getWrappedType();
+				return basicGetWrappedType();
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM:
+				return getWrappedTypeJvm();
+		}
+		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 OSBPDtoPackage.LDTO__FEATURES:
+				getFeatures().clear();
+				getFeatures().addAll((Collection<? extends LDtoFeature>)newValue);
+				return;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE:
+				setSuperType((LDto)newValue);
+				return;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_JVM:
+				setSuperTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM:
+				setSuperTypeMapperJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPDtoPackage.LDTO__SUB_TYPES:
+				getSubTypes().clear();
+				getSubTypes().addAll((Collection<? extends LDto>)newValue);
+				return;
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE:
+				setWrappedType((LType)newValue);
+				return;
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM:
+				setWrappedTypeJvm((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO__FEATURES:
+				getFeatures().clear();
+				return;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE:
+				setSuperType((LDto)null);
+				return;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_JVM:
+				setSuperTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM:
+				setSuperTypeMapperJvm((JvmTypeReference)null);
+				return;
+			case OSBPDtoPackage.LDTO__SUB_TYPES:
+				getSubTypes().clear();
+				return;
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE:
+				setWrappedType((LType)null);
+				return;
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM:
+				setWrappedTypeJvm((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO__FEATURES:
+				return features != null && !features.isEmpty();
+			case OSBPDtoPackage.LDTO__SUPER_TYPE:
+				return superType != null;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_JVM:
+				return superTypeJvm != null;
+			case OSBPDtoPackage.LDTO__SUPER_TYPE_MAPPER_JVM:
+				return superTypeMapperJvm != null;
+			case OSBPDtoPackage.LDTO__SUB_TYPES:
+				return subTypes != null && !subTypes.isEmpty();
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE:
+				return wrappedType != null;
+			case OSBPDtoPackage.LDTO__WRAPPED_TYPE_JVM:
+				return wrappedTypeJvm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LDtoImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java
new file mode 100644
index 0000000..94ae612
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedAttributeImpl.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Inherited Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl#getInheritedFeature <em>Inherited Feature</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedAttributeImpl#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoInheritedAttributeImpl extends LDtoAbstractAttributeImpl implements LDtoInheritedAttribute {
+	/**
+	 * The cached value of the '{@link #getInheritedFeature() <em>Inherited Feature</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInheritedFeature()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAttribute inheritedFeature;
+
+	/**
+	 * The cached value of the '{@link #getInheritedFeatureTypeJvm() <em>Inherited Feature Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInheritedFeatureTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference inheritedFeatureTypeJvm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoInheritedAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAttribute getInheritedFeature() {
+		if (inheritedFeature != null && inheritedFeature.eIsProxy()) {
+			InternalEObject oldInheritedFeature = (InternalEObject)inheritedFeature;
+			inheritedFeature = (LAttribute)eResolveProxy(oldInheritedFeature);
+			if (inheritedFeature != oldInheritedFeature) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE, oldInheritedFeature, inheritedFeature));
+			}
+		}
+		return inheritedFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAttribute basicGetInheritedFeature() {
+		return inheritedFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInheritedFeature(LAttribute newInheritedFeature) {
+		LAttribute oldInheritedFeature = inheritedFeature;
+		inheritedFeature = newInheritedFeature;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE, oldInheritedFeature, inheritedFeature));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getInheritedFeatureTypeJvm() {
+		return inheritedFeatureTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInheritedFeatureTypeJvm(JvmTypeReference newInheritedFeatureTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldInheritedFeatureTypeJvm = inheritedFeatureTypeJvm;
+		inheritedFeatureTypeJvm = newInheritedFeatureTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM, oldInheritedFeatureTypeJvm, newInheritedFeatureTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInheritedFeatureTypeJvm(JvmTypeReference newInheritedFeatureTypeJvm) {
+		if (newInheritedFeatureTypeJvm != inheritedFeatureTypeJvm) {
+			NotificationChain msgs = null;
+			if (inheritedFeatureTypeJvm != null)
+				msgs = ((InternalEObject)inheritedFeatureTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM, null, msgs);
+			if (newInheritedFeatureTypeJvm != null)
+				msgs = ((InternalEObject)newInheritedFeatureTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM, null, msgs);
+			msgs = basicSetInheritedFeatureTypeJvm(newInheritedFeatureTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM, newInheritedFeatureTypeJvm, newInheritedFeatureTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType getInheritedType() {
+		LAttribute _inheritedFeature = this.getInheritedFeature();
+		return _inheritedFeature.getType();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getInheritedMultiplicity() {
+		LAttribute _inheritedFeature = this.getInheritedFeature();
+		return _inheritedFeature.getMultiplicity();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM:
+				return basicSetInheritedFeatureTypeJvm(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 OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE:
+				if (resolve) return getInheritedFeature();
+				return basicGetInheritedFeature();
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM:
+				return getInheritedFeatureTypeJvm();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE:
+				setInheritedFeature((LAttribute)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM:
+				setInheritedFeatureTypeJvm((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE:
+				setInheritedFeature((LAttribute)null);
+				return;
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM:
+				setInheritedFeatureTypeJvm((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE:
+				return inheritedFeature != null;
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM:
+				return inheritedFeatureTypeJvm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LDtoInheritedAttributeImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java
new file mode 100644
index 0000000..1d80cd1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoInheritedReferenceImpl.java
@@ -0,0 +1,258 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Inherited Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl#getInheritedFeature <em>Inherited Feature</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoInheritedReferenceImpl#getInheritedFeatureTypeJvm <em>Inherited Feature Type Jvm</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoInheritedReferenceImpl extends LDtoAbstractReferenceImpl implements LDtoInheritedReference {
+	/**
+	 * The cached value of the '{@link #getInheritedFeature() <em>Inherited Feature</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInheritedFeature()
+	 * @generated
+	 * @ordered
+	 */
+	protected LReference inheritedFeature;
+
+	/**
+	 * The cached value of the '{@link #getInheritedFeatureTypeJvm() <em>Inherited Feature Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInheritedFeatureTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference inheritedFeatureTypeJvm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoInheritedReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LReference getInheritedFeature() {
+		if (inheritedFeature != null && inheritedFeature.eIsProxy()) {
+			InternalEObject oldInheritedFeature = (InternalEObject)inheritedFeature;
+			inheritedFeature = (LReference)eResolveProxy(oldInheritedFeature);
+			if (inheritedFeature != oldInheritedFeature) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE, oldInheritedFeature, inheritedFeature));
+			}
+		}
+		return inheritedFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LReference basicGetInheritedFeature() {
+		return inheritedFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInheritedFeature(LReference newInheritedFeature) {
+		LReference oldInheritedFeature = inheritedFeature;
+		inheritedFeature = newInheritedFeature;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE, oldInheritedFeature, inheritedFeature));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getInheritedFeatureTypeJvm() {
+		return inheritedFeatureTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInheritedFeatureTypeJvm(JvmTypeReference newInheritedFeatureTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldInheritedFeatureTypeJvm = inheritedFeatureTypeJvm;
+		inheritedFeatureTypeJvm = newInheritedFeatureTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM, oldInheritedFeatureTypeJvm, newInheritedFeatureTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInheritedFeatureTypeJvm(JvmTypeReference newInheritedFeatureTypeJvm) {
+		if (newInheritedFeatureTypeJvm != inheritedFeatureTypeJvm) {
+			NotificationChain msgs = null;
+			if (inheritedFeatureTypeJvm != null)
+				msgs = ((InternalEObject)inheritedFeatureTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM, null, msgs);
+			if (newInheritedFeatureTypeJvm != null)
+				msgs = ((InternalEObject)newInheritedFeatureTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM, null, msgs);
+			msgs = basicSetInheritedFeatureTypeJvm(newInheritedFeatureTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM, newInheritedFeatureTypeJvm, newInheritedFeatureTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getInheritedMultiplicity() {
+		LReference _inheritedFeature = this.getInheritedFeature();
+		return _inheritedFeature.getMultiplicity();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM:
+				return basicSetInheritedFeatureTypeJvm(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 OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE:
+				if (resolve) return getInheritedFeature();
+				return basicGetInheritedFeature();
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM:
+				return getInheritedFeatureTypeJvm();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE:
+				setInheritedFeature((LReference)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM:
+				setInheritedFeatureTypeJvm((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE:
+				setInheritedFeature((LReference)null);
+				return;
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM:
+				setInheritedFeatureTypeJvm((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE:
+				return inheritedFeature != null;
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM:
+				return inheritedFeatureTypeJvm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LDtoInheritedReferenceImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java
new file mode 100644
index 0000000..cf50339
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoMapperImpl.java
@@ -0,0 +1,253 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Mapper</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoMapperImpl#getToDTO <em>To DTO</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoMapperImpl#getFromDTO <em>From DTO</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoMapperImpl extends LLazyResolverImpl implements LDtoMapper {
+	/**
+	 * The cached value of the '{@link #getToDTO() <em>To DTO</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getToDTO()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression toDTO;
+
+	/**
+	 * The cached value of the '{@link #getFromDTO() <em>From DTO</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFromDTO()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression fromDTO;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoMapperImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_MAPPER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getToDTO() {
+		return toDTO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetToDTO(XExpression newToDTO, NotificationChain msgs) {
+		XExpression oldToDTO = toDTO;
+		toDTO = newToDTO;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_MAPPER__TO_DTO, oldToDTO, newToDTO);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setToDTO(XExpression newToDTO) {
+		if (newToDTO != toDTO) {
+			NotificationChain msgs = null;
+			if (toDTO != null)
+				msgs = ((InternalEObject)toDTO).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_MAPPER__TO_DTO, null, msgs);
+			if (newToDTO != null)
+				msgs = ((InternalEObject)newToDTO).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_MAPPER__TO_DTO, null, msgs);
+			msgs = basicSetToDTO(newToDTO, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_MAPPER__TO_DTO, newToDTO, newToDTO));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getFromDTO() {
+		return fromDTO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFromDTO(XExpression newFromDTO, NotificationChain msgs) {
+		XExpression oldFromDTO = fromDTO;
+		fromDTO = newFromDTO;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_MAPPER__FROM_DTO, oldFromDTO, newFromDTO);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFromDTO(XExpression newFromDTO) {
+		if (newFromDTO != fromDTO) {
+			NotificationChain msgs = null;
+			if (fromDTO != null)
+				msgs = ((InternalEObject)fromDTO).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_MAPPER__FROM_DTO, null, msgs);
+			if (newFromDTO != null)
+				msgs = ((InternalEObject)newFromDTO).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_MAPPER__FROM_DTO, null, msgs);
+			msgs = basicSetFromDTO(newFromDTO, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_MAPPER__FROM_DTO, newFromDTO, newFromDTO));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_MAPPER__TO_DTO:
+				return basicSetToDTO(null, msgs);
+			case OSBPDtoPackage.LDTO_MAPPER__FROM_DTO:
+				return basicSetFromDTO(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 OSBPDtoPackage.LDTO_MAPPER__TO_DTO:
+				return getToDTO();
+			case OSBPDtoPackage.LDTO_MAPPER__FROM_DTO:
+				return getFromDTO();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_MAPPER__TO_DTO:
+				setToDTO((XExpression)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_MAPPER__FROM_DTO:
+				setFromDTO((XExpression)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_MAPPER__TO_DTO:
+				setToDTO((XExpression)null);
+				return;
+			case OSBPDtoPackage.LDTO_MAPPER__FROM_DTO:
+				setFromDTO((XExpression)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_MAPPER__TO_DTO:
+				return toDTO != null;
+			case OSBPDtoPackage.LDTO_MAPPER__FROM_DTO:
+				return fromDTO != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LDtoMapperImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java
new file mode 100644
index 0000000..0220772
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoModelImpl.java
@@ -0,0 +1,179 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.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.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoModel;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoModelImpl extends MinimalEObjectImpl.Container implements LDtoModel {
+	/**
+	 * 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<LTypedPackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LTypedPackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<LTypedPackage>(LTypedPackage.class, this, OSBPDtoPackage.LDTO_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- 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 OSBPDtoPackage.LDTO_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 OSBPDtoPackage.LDTO_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 OSBPDtoPackage.LDTO_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends LTypedPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LDtoModelImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java
new file mode 100644
index 0000000..834e182
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoOperationImpl.java
@@ -0,0 +1,476 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import com.google.common.base.Objects;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoOperationImpl#getMapper <em>Mapper</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoOperationImpl extends LOperationImpl implements LDtoOperation {
+	/**
+	 * 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 #getMultiplicity() <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LMultiplicity multiplicity;
+
+	/**
+	 * The cached value of the '{@link #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * The cached value of the '{@link #getMapper() <em>Mapper</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMapper()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDtoMapper mapper;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoOperationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_OPERATION;
+	}
+
+	/**
+	 * <!-- 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, OSBPDtoPackage.LDTO_OPERATION__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getMultiplicity() {
+		return multiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMultiplicity(LMultiplicity newMultiplicity, NotificationChain msgs) {
+		LMultiplicity oldMultiplicity = multiplicity;
+		multiplicity = newMultiplicity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY, oldMultiplicity, newMultiplicity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplicity(LMultiplicity newMultiplicity) {
+		if (newMultiplicity != multiplicity) {
+			NotificationChain msgs = null;
+			if (multiplicity != null)
+				msgs = ((InternalEObject)multiplicity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY, null, msgs);
+			if (newMultiplicity != null)
+				msgs = ((InternalEObject)newMultiplicity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY, null, msgs);
+			msgs = basicSetMultiplicity(newMultiplicity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY, newMultiplicity, newMultiplicity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoMapper getMapper() {
+		return mapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMapper(LDtoMapper newMapper, NotificationChain msgs) {
+		LDtoMapper oldMapper = mapper;
+		mapper = newMapper;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_OPERATION__MAPPER, oldMapper, newMapper);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMapper(LDtoMapper newMapper) {
+		if (newMapper != mapper) {
+			NotificationChain msgs = null;
+			if (mapper != null)
+				msgs = ((InternalEObject)mapper).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_OPERATION__MAPPER, null, msgs);
+			if (newMapper != null)
+				msgs = ((InternalEObject)newMapper).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPDtoPackage.LDTO_OPERATION__MAPPER, null, msgs);
+			msgs = basicSetMapper(newMapper, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_OPERATION__MAPPER, newMapper, newMapper));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getDTO() {
+		EObject _eContainer = this.eContainer();
+		return ((LDto) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY:
+				return basicSetMultiplicity(null, msgs);
+			case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(null, msgs);
+			case OSBPDtoPackage.LDTO_OPERATION__MAPPER:
+				return basicSetMapper(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 OSBPDtoPackage.LDTO_OPERATION__NAME:
+				return getName();
+			case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY:
+				return getMultiplicity();
+			case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO:
+				return getAnnotationInfo();
+			case OSBPDtoPackage.LDTO_OPERATION__MAPPER:
+				return getMapper();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_OPERATION__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__MAPPER:
+				setMapper((LDtoMapper)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_OPERATION__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)null);
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+			case OSBPDtoPackage.LDTO_OPERATION__MAPPER:
+				setMapper((LDtoMapper)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_OPERATION__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY:
+				return multiplicity != null;
+			case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO:
+				return annotationInfo != null;
+			case OSBPDtoPackage.LDTO_OPERATION__MAPPER:
+				return mapper != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LFeature.class) {
+			switch (derivedFeatureID) {
+				case OSBPDtoPackage.LDTO_OPERATION__NAME: return OSBPTypesPackage.LFEATURE__NAME;
+				case OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY: return OSBPTypesPackage.LFEATURE__MULTIPLICITY;
+				case OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO: return OSBPTypesPackage.LFEATURE__ANNOTATION_INFO;
+				default: return -1;
+			}
+		}
+		if (baseClass == LDtoFeature.class) {
+			switch (derivedFeatureID) {
+				case OSBPDtoPackage.LDTO_OPERATION__MAPPER: return OSBPDtoPackage.LDTO_FEATURE__MAPPER;
+				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 == LFeature.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LFEATURE__NAME: return OSBPDtoPackage.LDTO_OPERATION__NAME;
+				case OSBPTypesPackage.LFEATURE__MULTIPLICITY: return OSBPDtoPackage.LDTO_OPERATION__MULTIPLICITY;
+				case OSBPTypesPackage.LFEATURE__ANNOTATION_INFO: return OSBPDtoPackage.LDTO_OPERATION__ANNOTATION_INFO;
+				default: return -1;
+			}
+		}
+		if (baseClass == LDtoFeature.class) {
+			switch (baseFeatureID) {
+				case OSBPDtoPackage.LDTO_FEATURE__MAPPER: return OSBPDtoPackage.LDTO_OPERATION__MAPPER;
+				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(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDtoOperationImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java
new file mode 100644
index 0000000..46aaa06
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoReferenceImpl.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDto Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.dto.impl.LDtoReferenceImpl#getOpposite <em>Opposite</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDtoReferenceImpl extends LDtoAbstractReferenceImpl implements LDtoReference {
+	/**
+	 * The cached value of the '{@link #getOpposite() <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOpposite()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDtoReference opposite;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDtoReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPDtoPackage.Literals.LDTO_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoReference getOpposite() {
+		if (opposite != null && opposite.eIsProxy()) {
+			InternalEObject oldOpposite = (InternalEObject)opposite;
+			opposite = (LDtoReference)eResolveProxy(oldOpposite);
+			if (opposite != oldOpposite) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPDtoPackage.LDTO_REFERENCE__OPPOSITE, oldOpposite, opposite));
+			}
+		}
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoReference basicGetOpposite() {
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOpposite(LDtoReference newOpposite) {
+		LDtoReference oldOpposite = opposite;
+		opposite = newOpposite;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPDtoPackage.LDTO_REFERENCE__OPPOSITE, oldOpposite, opposite));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_REFERENCE__OPPOSITE:
+				if (resolve) return getOpposite();
+				return basicGetOpposite();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_REFERENCE__OPPOSITE:
+				setOpposite((LDtoReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_REFERENCE__OPPOSITE:
+				setOpposite((LDtoReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPDtoPackage.LDTO_REFERENCE__OPPOSITE:
+				return opposite != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LDtoReferenceImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java
new file mode 100644
index 0000000..5a1203e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoFactoryImpl.java
@@ -0,0 +1,395 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import java.util.List;
+
+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.dsl.semantic.common.types.LKeyAndValue;
+
+import org.eclipse.osbp.dsl.semantic.dto.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPDtoFactoryImpl extends EFactoryImpl implements OSBPDtoFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OSBPDtoFactory init() {
+		try {
+			OSBPDtoFactory theOSBPDtoFactory = (OSBPDtoFactory)EPackage.Registry.INSTANCE.getEFactory(OSBPDtoPackage.eNS_URI);
+			if (theOSBPDtoFactory != null) {
+				return theOSBPDtoFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new OSBPDtoFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPDtoFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case OSBPDtoPackage.LDTO_MODEL: return createLDtoModel();
+			case OSBPDtoPackage.LDTO: return createLDto();
+			case OSBPDtoPackage.LAUTO_INHERIT_DTO: return createLAutoInheritDto();
+			case OSBPDtoPackage.LDTO_MAPPER: return createLDtoMapper();
+			case OSBPDtoPackage.LDTO_FEATURE: return createLDtoFeature();
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE: return createLDtoInheritedAttribute();
+			case OSBPDtoPackage.LDTO_ATTRIBUTE: return createLDtoAttribute();
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE: return createLDtoInheritedReference();
+			case OSBPDtoPackage.LDTO_REFERENCE: return createLDtoReference();
+			case OSBPDtoPackage.LDTO_OPERATION: return createLDtoOperation();
+			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 OSBPDtoPackage.DTO_FEATURE_LIST:
+				return createDtoFeatureListFromString(eDataType, initialValue);
+			case OSBPDtoPackage.OPERATIONS_LIST:
+				return createOperationsListFromString(eDataType, initialValue);
+			case OSBPDtoPackage.DTO_REFERENCE_LIST:
+				return createDtoReferenceListFromString(eDataType, initialValue);
+			case OSBPDtoPackage.DTO_ATTRIBUTE_LIST:
+				return createDtoAttributeListFromString(eDataType, initialValue);
+			case OSBPDtoPackage.DTO_ABSTRACT_ATTRIBUTE_LIST:
+				return createDtoAbstractAttributeListFromString(eDataType, initialValue);
+			case OSBPDtoPackage.INTERNAL_EOBJECT:
+				return createInternalEObjectFromString(eDataType, initialValue);
+			case OSBPDtoPackage.PROPERTIES_LIST:
+				return createPropertiesListFromString(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 OSBPDtoPackage.DTO_FEATURE_LIST:
+				return convertDtoFeatureListToString(eDataType, instanceValue);
+			case OSBPDtoPackage.OPERATIONS_LIST:
+				return convertOperationsListToString(eDataType, instanceValue);
+			case OSBPDtoPackage.DTO_REFERENCE_LIST:
+				return convertDtoReferenceListToString(eDataType, instanceValue);
+			case OSBPDtoPackage.DTO_ATTRIBUTE_LIST:
+				return convertDtoAttributeListToString(eDataType, instanceValue);
+			case OSBPDtoPackage.DTO_ABSTRACT_ATTRIBUTE_LIST:
+				return convertDtoAbstractAttributeListToString(eDataType, instanceValue);
+			case OSBPDtoPackage.INTERNAL_EOBJECT:
+				return convertInternalEObjectToString(eDataType, instanceValue);
+			case OSBPDtoPackage.PROPERTIES_LIST:
+				return convertPropertiesListToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoModel createLDtoModel() {
+		LDtoModelImpl lDtoModel = new LDtoModelImpl();
+		return lDtoModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto createLDto() {
+		LDtoImpl lDto = new LDtoImpl();
+		return lDto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAutoInheritDto createLAutoInheritDto() {
+		LAutoInheritDtoImpl lAutoInheritDto = new LAutoInheritDtoImpl();
+		return lAutoInheritDto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoMapper createLDtoMapper() {
+		LDtoMapperImpl lDtoMapper = new LDtoMapperImpl();
+		return lDtoMapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoFeature createLDtoFeature() {
+		LDtoFeatureImpl lDtoFeature = new LDtoFeatureImpl();
+		return lDtoFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedAttribute createLDtoInheritedAttribute() {
+		LDtoInheritedAttributeImpl lDtoInheritedAttribute = new LDtoInheritedAttributeImpl();
+		return lDtoInheritedAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoAttribute createLDtoAttribute() {
+		LDtoAttributeImpl lDtoAttribute = new LDtoAttributeImpl();
+		return lDtoAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoInheritedReference createLDtoInheritedReference() {
+		LDtoInheritedReferenceImpl lDtoInheritedReference = new LDtoInheritedReferenceImpl();
+		return lDtoInheritedReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoReference createLDtoReference() {
+		LDtoReferenceImpl lDtoReference = new LDtoReferenceImpl();
+		return lDtoReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoOperation createLDtoOperation() {
+		LDtoOperationImpl lDtoOperation = new LDtoOperationImpl();
+		return lDtoOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LDtoFeature> createDtoFeatureListFromString(EDataType eDataType, String initialValue) {
+		return (List<LDtoFeature>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDtoFeatureListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LDtoOperation> createOperationsListFromString(EDataType eDataType, String initialValue) {
+		return (List<LDtoOperation>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertOperationsListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LDtoAbstractReference> createDtoReferenceListFromString(EDataType eDataType, String initialValue) {
+		return (List<LDtoAbstractReference>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDtoReferenceListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LDtoAbstractAttribute> createDtoAttributeListFromString(EDataType eDataType, String initialValue) {
+		return (List<LDtoAbstractAttribute>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDtoAttributeListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LDtoAbstractAttribute> createDtoAbstractAttributeListFromString(EDataType eDataType, String initialValue) {
+		return (List<LDtoAbstractAttribute>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertDtoAbstractAttributeListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- 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
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LKeyAndValue> createPropertiesListFromString(EDataType eDataType, String initialValue) {
+		return (List<LKeyAndValue>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertPropertiesListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPDtoPackage getOSBPDtoPackage() {
+		return (OSBPDtoPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static OSBPDtoPackage getPackage() {
+		return OSBPDtoPackage.eINSTANCE;
+	}
+
+} //OSBPDtoFactoryImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
new file mode 100644
index 0000000..ed9f719
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/impl/OSBPDtoPackageImpl.java
@@ -0,0 +1,824 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+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.dto.LAutoInheritDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoModel;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.xtext.common.types.TypesPackage;
+
+import org.eclipse.xtext.xbase.XbasePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPDtoPackageImpl extends EPackageImpl implements OSBPDtoPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lAutoInheritDtoEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoMapperEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoFeatureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoAbstractAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoInheritedAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoAbstractReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoInheritedReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lDtoOperationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType dtoFeatureListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType operationsListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType dtoReferenceListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType dtoAttributeListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType dtoAbstractAttributeListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType internalEObjectEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType propertiesListEDataType = 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.dsl.semantic.dto.OSBPDtoPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private OSBPDtoPackageImpl() {
+		super(eNS_URI, OSBPDtoFactory.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 OSBPDtoPackage#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 OSBPDtoPackage init() {
+		if (isInited) return (OSBPDtoPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPDtoPackage.eNS_URI);
+
+		// Obtain or create and register package
+		OSBPDtoPackageImpl theOSBPDtoPackage = (OSBPDtoPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof OSBPDtoPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new OSBPDtoPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		OSBPTypesPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theOSBPDtoPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theOSBPDtoPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theOSBPDtoPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(OSBPDtoPackage.eNS_URI, theOSBPDtoPackage);
+		return theOSBPDtoPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoModel() {
+		return lDtoModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoModel_Packages() {
+		return (EReference)lDtoModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDto() {
+		return lDtoEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_Features() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_SuperType() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_SuperTypeJvm() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_SuperTypeMapperJvm() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_SubTypes() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_WrappedType() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDto_WrappedTypeJvm() {
+		return (EReference)lDtoEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLAutoInheritDto() {
+		return lAutoInheritDtoEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoMapper() {
+		return lDtoMapperEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoMapper_ToDTO() {
+		return (EReference)lDtoMapperEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoMapper_FromDTO() {
+		return (EReference)lDtoMapperEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoFeature() {
+		return lDtoFeatureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoFeature_Mapper() {
+		return (EReference)lDtoFeatureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoAbstractAttribute() {
+		return lDtoAbstractAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoInheritedAttribute() {
+		return lDtoInheritedAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoInheritedAttribute_InheritedFeature() {
+		return (EReference)lDtoInheritedAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoInheritedAttribute_InheritedFeatureTypeJvm() {
+		return (EReference)lDtoInheritedAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoAttribute() {
+		return lDtoAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoAbstractReference() {
+		return lDtoAbstractReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoAbstractReference_Type() {
+		return (EReference)lDtoAbstractReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoAbstractReference_TypeJvm() {
+		return (EReference)lDtoAbstractReferenceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoInheritedReference() {
+		return lDtoInheritedReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoInheritedReference_InheritedFeature() {
+		return (EReference)lDtoInheritedReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoInheritedReference_InheritedFeatureTypeJvm() {
+		return (EReference)lDtoInheritedReferenceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoReference() {
+		return lDtoReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDtoReference_Opposite() {
+		return (EReference)lDtoReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDtoOperation() {
+		return lDtoOperationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getDtoFeatureList() {
+		return dtoFeatureListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getOperationsList() {
+		return operationsListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getDtoReferenceList() {
+		return dtoReferenceListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getDtoAttributeList() {
+		return dtoAttributeListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getDtoAbstractAttributeList() {
+		return dtoAbstractAttributeListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getPropertiesList() {
+		return propertiesListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPDtoFactory getOSBPDtoFactory() {
+		return (OSBPDtoFactory)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
+		lDtoModelEClass = createEClass(LDTO_MODEL);
+		createEReference(lDtoModelEClass, LDTO_MODEL__PACKAGES);
+
+		lDtoEClass = createEClass(LDTO);
+		createEReference(lDtoEClass, LDTO__FEATURES);
+		createEReference(lDtoEClass, LDTO__SUPER_TYPE);
+		createEReference(lDtoEClass, LDTO__SUPER_TYPE_JVM);
+		createEReference(lDtoEClass, LDTO__SUPER_TYPE_MAPPER_JVM);
+		createEReference(lDtoEClass, LDTO__SUB_TYPES);
+		createEReference(lDtoEClass, LDTO__WRAPPED_TYPE);
+		createEReference(lDtoEClass, LDTO__WRAPPED_TYPE_JVM);
+
+		lAutoInheritDtoEClass = createEClass(LAUTO_INHERIT_DTO);
+
+		lDtoMapperEClass = createEClass(LDTO_MAPPER);
+		createEReference(lDtoMapperEClass, LDTO_MAPPER__TO_DTO);
+		createEReference(lDtoMapperEClass, LDTO_MAPPER__FROM_DTO);
+
+		lDtoFeatureEClass = createEClass(LDTO_FEATURE);
+		createEReference(lDtoFeatureEClass, LDTO_FEATURE__MAPPER);
+
+		lDtoAbstractAttributeEClass = createEClass(LDTO_ABSTRACT_ATTRIBUTE);
+
+		lDtoInheritedAttributeEClass = createEClass(LDTO_INHERITED_ATTRIBUTE);
+		createEReference(lDtoInheritedAttributeEClass, LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE);
+		createEReference(lDtoInheritedAttributeEClass, LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM);
+
+		lDtoAttributeEClass = createEClass(LDTO_ATTRIBUTE);
+
+		lDtoAbstractReferenceEClass = createEClass(LDTO_ABSTRACT_REFERENCE);
+		createEReference(lDtoAbstractReferenceEClass, LDTO_ABSTRACT_REFERENCE__TYPE);
+		createEReference(lDtoAbstractReferenceEClass, LDTO_ABSTRACT_REFERENCE__TYPE_JVM);
+
+		lDtoInheritedReferenceEClass = createEClass(LDTO_INHERITED_REFERENCE);
+		createEReference(lDtoInheritedReferenceEClass, LDTO_INHERITED_REFERENCE__INHERITED_FEATURE);
+		createEReference(lDtoInheritedReferenceEClass, LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM);
+
+		lDtoReferenceEClass = createEClass(LDTO_REFERENCE);
+		createEReference(lDtoReferenceEClass, LDTO_REFERENCE__OPPOSITE);
+
+		lDtoOperationEClass = createEClass(LDTO_OPERATION);
+
+		// Create data types
+		dtoFeatureListEDataType = createEDataType(DTO_FEATURE_LIST);
+		operationsListEDataType = createEDataType(OPERATIONS_LIST);
+		dtoReferenceListEDataType = createEDataType(DTO_REFERENCE_LIST);
+		dtoAttributeListEDataType = createEDataType(DTO_ATTRIBUTE_LIST);
+		dtoAbstractAttributeListEDataType = createEDataType(DTO_ABSTRACT_ATTRIBUTE_LIST);
+		internalEObjectEDataType = createEDataType(INTERNAL_EOBJECT);
+		propertiesListEDataType = createEDataType(PROPERTIES_LIST);
+	}
+
+	/**
+	 * <!-- 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
+		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		XbasePackage theXbasePackage = (XbasePackage)EPackage.Registry.INSTANCE.getEPackage(XbasePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		lDtoEClass.getESuperTypes().add(theOSBPTypesPackage.getLClass());
+		lDtoEClass.getESuperTypes().add(theOSBPTypesPackage.getLFeaturesHolder());
+		lDtoEClass.getESuperTypes().add(theOSBPTypesPackage.getLScalarType());
+		lAutoInheritDtoEClass.getESuperTypes().add(this.getLDto());
+		lDtoMapperEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lDtoFeatureEClass.getESuperTypes().add(theOSBPTypesPackage.getLFeature());
+		lDtoAbstractAttributeEClass.getESuperTypes().add(this.getLDtoFeature());
+		lDtoAbstractAttributeEClass.getESuperTypes().add(theOSBPTypesPackage.getLAttribute());
+		lDtoInheritedAttributeEClass.getESuperTypes().add(this.getLDtoAbstractAttribute());
+		lDtoAttributeEClass.getESuperTypes().add(this.getLDtoAbstractAttribute());
+		lDtoAbstractReferenceEClass.getESuperTypes().add(this.getLDtoFeature());
+		lDtoAbstractReferenceEClass.getESuperTypes().add(theOSBPTypesPackage.getLReference());
+		lDtoInheritedReferenceEClass.getESuperTypes().add(this.getLDtoAbstractReference());
+		lDtoReferenceEClass.getESuperTypes().add(this.getLDtoAbstractReference());
+		lDtoOperationEClass.getESuperTypes().add(theOSBPTypesPackage.getLOperation());
+		lDtoOperationEClass.getESuperTypes().add(this.getLDtoFeature());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(lDtoModelEClass, LDtoModel.class, "LDtoModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoModel_Packages(), theOSBPTypesPackage.getLTypedPackage(), null, "packages", null, 0, -1, LDtoModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		EOperation op = addEOperation(lDtoModelEClass, theEcorePackage.getEObject(), "eResolveProxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getInternalEObject(), "proxy", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtoEClass, LDto.class, "LDto", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDto_Features(), this.getLDtoFeature(), null, "features", null, 0, -1, LDto.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDto_SuperType(), this.getLDto(), this.getLDto_SubTypes(), "superType", null, 0, 1, LDto.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDto_SuperTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "superTypeJvm", null, 0, 1, LDto.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDto_SuperTypeMapperJvm(), theTypesPackage.getJvmTypeReference(), null, "superTypeMapperJvm", null, 0, 1, LDto.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDto_SubTypes(), this.getLDto(), this.getLDto_SuperType(), "subTypes", null, 0, -1, LDto.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDto_WrappedType(), theOSBPTypesPackage.getLType(), null, "wrappedType", null, 0, 1, LDto.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDto_WrappedTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "wrappedTypeJvm", null, 0, 1, LDto.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		addEOperation(lDtoEClass, this.getOperationsList(), "getOperations", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoEClass, this.getDtoReferenceList(), "getReferences", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoEClass, this.getDtoAttributeList(), "getAttributes", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoEClass, theOSBPTypesPackage.getFeaturesList(), "getAllFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		op = addEOperation(lDtoEClass, null, "collectAllOSBPFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getLDto(), "current", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getDtoFeatureList(), "result", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoEClass, this.getLDtoAbstractAttribute(), "getPrimaryKeyAttribute", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoEClass, theEcorePackage.getEString(), "getIdAttributeName", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoEClass, theOSBPTypesPackage.getLScalarType(), "getIdAttributeType", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lAutoInheritDtoEClass, LAutoInheritDto.class, "LAutoInheritDto", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lDtoMapperEClass, LDtoMapper.class, "LDtoMapper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoMapper_ToDTO(), theXbasePackage.getXExpression(), null, "toDTO", null, 0, 1, LDtoMapper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDtoMapper_FromDTO(), theXbasePackage.getXExpression(), null, "fromDTO", null, 0, 1, LDtoMapper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lDtoFeatureEClass, LDtoFeature.class, "LDtoFeature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoFeature_Mapper(), this.getLDtoMapper(), null, "mapper", null, 0, 1, LDtoFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		addEOperation(lDtoFeatureEClass, this.getLDto(), "getDTO", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtoAbstractAttributeEClass, LDtoAbstractAttribute.class, "LDtoAbstractAttribute", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		addEOperation(lDtoAbstractAttributeEClass, this.getPropertiesList(), "getResolvedProperties", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtoInheritedAttributeEClass, LDtoInheritedAttribute.class, "LDtoInheritedAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoInheritedAttribute_InheritedFeature(), theOSBPTypesPackage.getLAttribute(), null, "inheritedFeature", null, 0, 1, LDtoInheritedAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDtoInheritedAttribute_InheritedFeatureTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "inheritedFeatureTypeJvm", null, 0, 1, LDtoInheritedAttribute.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		addEOperation(lDtoInheritedAttributeEClass, theOSBPTypesPackage.getLScalarType(), "getInheritedType", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		addEOperation(lDtoInheritedAttributeEClass, theOSBPTypesPackage.getLMultiplicity(), "getInheritedMultiplicity", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtoAttributeEClass, LDtoAttribute.class, "LDtoAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lDtoAbstractReferenceEClass, LDtoAbstractReference.class, "LDtoAbstractReference", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoAbstractReference_Type(), this.getLDto(), null, "type", null, 0, 1, LDtoAbstractReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDtoAbstractReference_TypeJvm(), theTypesPackage.getJvmTypeReference(), null, "typeJvm", null, 0, 1, LDtoAbstractReference.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		addEOperation(lDtoAbstractReferenceEClass, this.getPropertiesList(), "getResolvedProperties", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtoInheritedReferenceEClass, LDtoInheritedReference.class, "LDtoInheritedReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoInheritedReference_InheritedFeature(), theOSBPTypesPackage.getLReference(), null, "inheritedFeature", null, 0, 1, LDtoInheritedReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDtoInheritedReference_InheritedFeatureTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "inheritedFeatureTypeJvm", null, 0, 1, LDtoInheritedReference.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		addEOperation(lDtoInheritedReferenceEClass, theOSBPTypesPackage.getLMultiplicity(), "getInheritedMultiplicity", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lDtoReferenceEClass, LDtoReference.class, "LDtoReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDtoReference_Opposite(), this.getLDtoReference(), null, "opposite", null, 0, 1, LDtoReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lDtoOperationEClass, LDtoOperation.class, "LDtoOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Initialize data types
+		initEDataType(dtoFeatureListEDataType, List.class, "DtoFeatureList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.dto.LDtoFeature>");
+		initEDataType(operationsListEDataType, List.class, "OperationsList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.dto.LDtoOperation>");
+		initEDataType(dtoReferenceListEDataType, List.class, "DtoReferenceList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference>");
+		initEDataType(dtoAttributeListEDataType, List.class, "DtoAttributeList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute>");
+		initEDataType(dtoAbstractAttributeListEDataType, List.class, "DtoAbstractAttributeList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute>");
+		initEDataType(internalEObjectEDataType, InternalEObject.class, "InternalEObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(propertiesListEDataType, List.class, "PropertiesList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue>");
+
+		// 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", "dto"
+		   });
+	}
+
+} //OSBPDtoPackageImpl
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java
new file mode 100644
index 0000000..d7f3430
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoAdapterFactory.java
@@ -0,0 +1,518 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.dto.*;
+
+/**
+ * <!-- 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.dsl.semantic.dto.OSBPDtoPackage
+ * @generated
+ */
+public class OSBPDtoAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPDtoPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPDtoAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = OSBPDtoPackage.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 OSBPDtoSwitch<Adapter> modelSwitch =
+		new OSBPDtoSwitch<Adapter>() {
+			@Override
+			public Adapter caseLDtoModel(LDtoModel object) {
+				return createLDtoModelAdapter();
+			}
+			@Override
+			public Adapter caseLDto(LDto object) {
+				return createLDtoAdapter();
+			}
+			@Override
+			public Adapter caseLAutoInheritDto(LAutoInheritDto object) {
+				return createLAutoInheritDtoAdapter();
+			}
+			@Override
+			public Adapter caseLDtoMapper(LDtoMapper object) {
+				return createLDtoMapperAdapter();
+			}
+			@Override
+			public Adapter caseLDtoFeature(LDtoFeature object) {
+				return createLDtoFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLDtoAbstractAttribute(LDtoAbstractAttribute object) {
+				return createLDtoAbstractAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLDtoInheritedAttribute(LDtoInheritedAttribute object) {
+				return createLDtoInheritedAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLDtoAttribute(LDtoAttribute object) {
+				return createLDtoAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLDtoAbstractReference(LDtoAbstractReference object) {
+				return createLDtoAbstractReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLDtoInheritedReference(LDtoInheritedReference object) {
+				return createLDtoInheritedReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLDtoReference(LDtoReference object) {
+				return createLDtoReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLDtoOperation(LDtoOperation object) {
+				return createLDtoOperationAdapter();
+			}
+			@Override
+			public Adapter caseLLazyResolver(LLazyResolver object) {
+				return createLLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseLAnnotationTarget(LAnnotationTarget object) {
+				return createLAnnotationTargetAdapter();
+			}
+			@Override
+			public Adapter caseLType(LType object) {
+				return createLTypeAdapter();
+			}
+			@Override
+			public Adapter caseLClass(LClass object) {
+				return createLClassAdapter();
+			}
+			@Override
+			public Adapter caseLFeaturesHolder(LFeaturesHolder object) {
+				return createLFeaturesHolderAdapter();
+			}
+			@Override
+			public Adapter caseLScalarType(LScalarType object) {
+				return createLScalarTypeAdapter();
+			}
+			@Override
+			public Adapter caseLFeature(LFeature object) {
+				return createLFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLAttribute(LAttribute object) {
+				return createLAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLReference(LReference object) {
+				return createLReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLOperation(LOperation object) {
+				return createLOperationAdapter();
+			}
+			@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.dsl.semantic.dto.LDtoModel <em>LDto 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.dsl.semantic.dto.LDtoModel
+	 * @generated
+	 */
+	public Adapter createLDtoModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDto <em>LDto</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.dto.LDto
+	 * @generated
+	 */
+	public Adapter createLDtoAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto <em>LAuto Inherit Dto</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.dto.LAutoInheritDto
+	 * @generated
+	 */
+	public Adapter createLAutoInheritDtoAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoMapper <em>LDto Mapper</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.dto.LDtoMapper
+	 * @generated
+	 */
+	public Adapter createLDtoMapperAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature <em>LDto Feature</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.dto.LDtoFeature
+	 * @generated
+	 */
+	public Adapter createLDtoFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute <em>LDto Abstract Attribute</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.dto.LDtoAbstractAttribute
+	 * @generated
+	 */
+	public Adapter createLDtoAbstractAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute <em>LDto Inherited Attribute</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.dto.LDtoInheritedAttribute
+	 * @generated
+	 */
+	public Adapter createLDtoInheritedAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute <em>LDto Attribute</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.dto.LDtoAttribute
+	 * @generated
+	 */
+	public Adapter createLDtoAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference <em>LDto Abstract 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.dsl.semantic.dto.LDtoAbstractReference
+	 * @generated
+	 */
+	public Adapter createLDtoAbstractReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference <em>LDto Inherited 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.dsl.semantic.dto.LDtoInheritedReference
+	 * @generated
+	 */
+	public Adapter createLDtoInheritedReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoReference <em>LDto 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.dsl.semantic.dto.LDtoReference
+	 * @generated
+	 */
+	public Adapter createLDtoReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoOperation <em>LDto Operation</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.dto.LDtoOperation
+	 * @generated
+	 */
+	public Adapter createLDtoOperationAdapter() {
+		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.LAnnotationTarget <em>LAnnotation Target</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.LAnnotationTarget
+	 * @generated
+	 */
+	public Adapter createLAnnotationTargetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LType <em>LType</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.LType
+	 * @generated
+	 */
+	public Adapter createLTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass <em>LClass</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.LClass
+	 * @generated
+	 */
+	public Adapter createLClassAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</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.LFeaturesHolder
+	 * @generated
+	 */
+	public Adapter createLFeaturesHolderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType <em>LScalar 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.dsl.semantic.common.types.LScalarType
+	 * @generated
+	 */
+	public Adapter createLScalarTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</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.LFeature
+	 * @generated
+	 */
+	public Adapter createLFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</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.LAttribute
+	 * @generated
+	 */
+	public Adapter createLAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference <em>LReference</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.LReference
+	 * @generated
+	 */
+	public Adapter createLReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation <em>LOperation</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.LOperation
+	 * @generated
+	 */
+	public Adapter createLOperationAdapter() {
+		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;
+	}
+
+} //OSBPDtoAdapterFactory
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java
new file mode 100644
index 0000000..5141a18
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src-gen/org/eclipse/osbp/dsl/semantic/dto/util/OSBPDtoSwitch.java
@@ -0,0 +1,567 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), 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:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.dto.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.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.dto.*;
+
+/**
+ * <!-- 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.dsl.semantic.dto.OSBPDtoPackage
+ * @generated
+ */
+public class OSBPDtoSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPDtoPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPDtoSwitch() {
+		if (modelPackage == null) {
+			modelPackage = OSBPDtoPackage.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 OSBPDtoPackage.LDTO_MODEL: {
+				LDtoModel lDtoModel = (LDtoModel)theEObject;
+				T result = caseLDtoModel(lDtoModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO: {
+				LDto lDto = (LDto)theEObject;
+				T result = caseLDto(lDto);
+				if (result == null) result = caseLClass(lDto);
+				if (result == null) result = caseLFeaturesHolder(lDto);
+				if (result == null) result = caseLScalarType(lDto);
+				if (result == null) result = caseLType(lDto);
+				if (result == null) result = caseLAnnotationTarget(lDto);
+				if (result == null) result = caseLLazyResolver(lDto);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LAUTO_INHERIT_DTO: {
+				LAutoInheritDto lAutoInheritDto = (LAutoInheritDto)theEObject;
+				T result = caseLAutoInheritDto(lAutoInheritDto);
+				if (result == null) result = caseLDto(lAutoInheritDto);
+				if (result == null) result = caseLClass(lAutoInheritDto);
+				if (result == null) result = caseLFeaturesHolder(lAutoInheritDto);
+				if (result == null) result = caseLScalarType(lAutoInheritDto);
+				if (result == null) result = caseLType(lAutoInheritDto);
+				if (result == null) result = caseLAnnotationTarget(lAutoInheritDto);
+				if (result == null) result = caseLLazyResolver(lAutoInheritDto);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_MAPPER: {
+				LDtoMapper lDtoMapper = (LDtoMapper)theEObject;
+				T result = caseLDtoMapper(lDtoMapper);
+				if (result == null) result = caseLLazyResolver(lDtoMapper);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_FEATURE: {
+				LDtoFeature lDtoFeature = (LDtoFeature)theEObject;
+				T result = caseLDtoFeature(lDtoFeature);
+				if (result == null) result = caseLFeature(lDtoFeature);
+				if (result == null) result = caseLAnnotationTarget(lDtoFeature);
+				if (result == null) result = caseLLazyResolver(lDtoFeature);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_ABSTRACT_ATTRIBUTE: {
+				LDtoAbstractAttribute lDtoAbstractAttribute = (LDtoAbstractAttribute)theEObject;
+				T result = caseLDtoAbstractAttribute(lDtoAbstractAttribute);
+				if (result == null) result = caseLDtoFeature(lDtoAbstractAttribute);
+				if (result == null) result = caseLAttribute(lDtoAbstractAttribute);
+				if (result == null) result = caseLFeature(lDtoAbstractAttribute);
+				if (result == null) result = caseLAnnotationTarget(lDtoAbstractAttribute);
+				if (result == null) result = caseLLazyResolver(lDtoAbstractAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_INHERITED_ATTRIBUTE: {
+				LDtoInheritedAttribute lDtoInheritedAttribute = (LDtoInheritedAttribute)theEObject;
+				T result = caseLDtoInheritedAttribute(lDtoInheritedAttribute);
+				if (result == null) result = caseLDtoAbstractAttribute(lDtoInheritedAttribute);
+				if (result == null) result = caseLDtoFeature(lDtoInheritedAttribute);
+				if (result == null) result = caseLAttribute(lDtoInheritedAttribute);
+				if (result == null) result = caseLFeature(lDtoInheritedAttribute);
+				if (result == null) result = caseLAnnotationTarget(lDtoInheritedAttribute);
+				if (result == null) result = caseLLazyResolver(lDtoInheritedAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_ATTRIBUTE: {
+				LDtoAttribute lDtoAttribute = (LDtoAttribute)theEObject;
+				T result = caseLDtoAttribute(lDtoAttribute);
+				if (result == null) result = caseLDtoAbstractAttribute(lDtoAttribute);
+				if (result == null) result = caseLDtoFeature(lDtoAttribute);
+				if (result == null) result = caseLAttribute(lDtoAttribute);
+				if (result == null) result = caseLFeature(lDtoAttribute);
+				if (result == null) result = caseLAnnotationTarget(lDtoAttribute);
+				if (result == null) result = caseLLazyResolver(lDtoAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_ABSTRACT_REFERENCE: {
+				LDtoAbstractReference lDtoAbstractReference = (LDtoAbstractReference)theEObject;
+				T result = caseLDtoAbstractReference(lDtoAbstractReference);
+				if (result == null) result = caseLDtoFeature(lDtoAbstractReference);
+				if (result == null) result = caseLReference(lDtoAbstractReference);
+				if (result == null) result = caseLFeature(lDtoAbstractReference);
+				if (result == null) result = caseLAnnotationTarget(lDtoAbstractReference);
+				if (result == null) result = caseLLazyResolver(lDtoAbstractReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_INHERITED_REFERENCE: {
+				LDtoInheritedReference lDtoInheritedReference = (LDtoInheritedReference)theEObject;
+				T result = caseLDtoInheritedReference(lDtoInheritedReference);
+				if (result == null) result = caseLDtoAbstractReference(lDtoInheritedReference);
+				if (result == null) result = caseLDtoFeature(lDtoInheritedReference);
+				if (result == null) result = caseLReference(lDtoInheritedReference);
+				if (result == null) result = caseLFeature(lDtoInheritedReference);
+				if (result == null) result = caseLAnnotationTarget(lDtoInheritedReference);
+				if (result == null) result = caseLLazyResolver(lDtoInheritedReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_REFERENCE: {
+				LDtoReference lDtoReference = (LDtoReference)theEObject;
+				T result = caseLDtoReference(lDtoReference);
+				if (result == null) result = caseLDtoAbstractReference(lDtoReference);
+				if (result == null) result = caseLDtoFeature(lDtoReference);
+				if (result == null) result = caseLReference(lDtoReference);
+				if (result == null) result = caseLFeature(lDtoReference);
+				if (result == null) result = caseLAnnotationTarget(lDtoReference);
+				if (result == null) result = caseLLazyResolver(lDtoReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPDtoPackage.LDTO_OPERATION: {
+				LDtoOperation lDtoOperation = (LDtoOperation)theEObject;
+				T result = caseLDtoOperation(lDtoOperation);
+				if (result == null) result = caseLOperation(lDtoOperation);
+				if (result == null) result = caseLDtoFeature(lDtoOperation);
+				if (result == null) result = caseLFeature(lDtoOperation);
+				if (result == null) result = caseLAnnotationTarget(lDtoOperation);
+				if (result == null) result = caseLLazyResolver(lDtoOperation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto 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>LDto Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoModel(LDtoModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto</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>LDto</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDto(LDto object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAuto Inherit Dto</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>LAuto Inherit Dto</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAutoInheritDto(LAutoInheritDto object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Mapper</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>LDto Mapper</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoMapper(LDtoMapper object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Feature</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>LDto Feature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoFeature(LDtoFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Abstract Attribute</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>LDto Abstract Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoAbstractAttribute(LDtoAbstractAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Inherited Attribute</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>LDto Inherited Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoInheritedAttribute(LDtoInheritedAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Attribute</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>LDto Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoAttribute(LDtoAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Abstract 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>LDto Abstract Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoAbstractReference(LDtoAbstractReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Inherited 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>LDto Inherited Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoInheritedReference(LDtoInheritedReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto 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>LDto Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoReference(LDtoReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Operation</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>LDto Operation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoOperation(LDtoOperation 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>LAnnotation Target</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>LAnnotation Target</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAnnotationTarget(LAnnotationTarget object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LType</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>LType</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLType(LType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LClass</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>LClass</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLClass(LClass object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeatures Holder</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>LFeatures Holder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeaturesHolder(LFeaturesHolder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LScalar 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>LScalar Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLScalarType(LScalarType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeature</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>LFeature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeature(LFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAttribute</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>LAttribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAttribute(LAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LReference</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>LReference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLReference(LReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LOperation</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>LOperation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLOperation(LOperation 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;
+	}
+
+} //OSBPDtoSwitch
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammar.xtext b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammar.xtext
new file mode 100644
index 0000000..f617b69
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammar.xtext
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar org.eclipse.osbp.dsl.dto.xtext.DtoGrammar with org.eclipse.osbp.dsl.common.xtext.CommonGrammar
+
+import "http://osbp.eclipse.org/dsl/dto/v1" as dto
+import "http://osbp.eclipse.org/dsl/common/types/v1" as common
+import "http://osbp.eclipse.org/dsl/entity/v1" as entity
+import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
+import "http://www.eclipse.org/xtext/xbase/Xtype" as xtype
+import "http://www.eclipse.org/Xtext/Xbase/XAnnotations" as xannotation
+import "http://www.eclipse.org/xtext/common/JavaVMTypes" as types
+
+LDTOModel returns dto::LDtoModel:
+	packages+=TypedPackage*;
+
+Class returns dto::LDto:
+	{dto::LDto} annotations+=AnnotationDef*
+	
+	(({dto::LDto.annotationInfo=current}
+	(abstract?='abstract')? 'dto' name=ValidIDWithKeywords ('extends' superType=[dto::LDto|TYPE_CROSS_REFERENCE])? ('wraps' wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+	'{'
+	features+=DtoFeature*
+	'}')
+	|
+	({dto::LAutoInheritDto.annotationInfo=current}
+	(abstract?='abstract')? 'autoDto' name=ValidIDWithKeywords ('extends' superType=[dto::LDto|TYPE_CROSS_REFERENCE])? 'wraps' wrappedType=[entity::LEntity|TYPE_CROSS_REFERENCE]
+	'{'
+	features+=DtoFeature*
+	'}')
+	)
+	;
+
+DtoFeature returns dto::LDtoFeature:
+	{dto::LDtoFeature}
+	annotations+=AnnotationDef*
+	((({dto::LDtoInheritedAttribute.annotationInfo=current}
+	'inherit var' inheritedFeature=[entity::LEntityAttribute|ValidLFQNWithKeywords]) ('mapto' type=[dto::LDto|TYPE_CROSS_REFERENCE])? ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')? (mapper=DtoMapper
+	| ';'?))
+	|
+	({dto::LDtoInheritedReference.annotationInfo=current}
+	('inherit ref' inheritedFeature=[entity::LEntityReference|ValidLFQNWithKeywords]) 'mapto' type=[dto::LDto|TYPE_CROSS_REFERENCE] ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')? (mapper=DtoMapper |
+	';'?))
+	|
+	({dto::LDtoAttribute.annotationInfo=current}
+	(transient?='transient' type=[common::LScalarType|TYPE_CROSS_REFERENCE] ('['constraints+=AllConstraints* ']')? name=ValidIDWithKeywords ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?';'?))
+	|
+	({dto::LDtoAttribute.annotationInfo=current}
+	(dirty?='dirty' type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?';'?))
+	|
+	({dto::LDtoAttribute.annotationInfo=current}
+	(derived?='derived' (domainDescription?='domainDescription')? type=[common::LScalarType|TYPE_CROSS_REFERENCE] name=ValidIDWithKeywords ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')? derivedGetterExpression=XBlockExpression))
+	|
+	({dto::LDtoAttribute.annotationInfo=current}
+	(id?='id' | version?="version" | uuid?="uuid" | domainDescription?='domainDescription' | domainKey?='domainKey') type=[common::LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')?
+	name=ValidIDWithKeywords ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?
+	';'?)
+	|
+	({dto::LDtoReference.annotationInfo=current}
+	('ref' ((cascading?='cascade')? & (lazy?='lazy')?) type=[dto::LDto|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')? name=ValidIDWithKeywords 
+	('opposite' opposite=[dto::LDtoReference|LFQN])? ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?) 
+	(mapper=LimitedMapperDtoMapper |
+	';'?))
+	|
+	({dto::LDtoAttribute.annotationInfo=current}
+	'var' type=[common::LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')?
+	name=ValidIDWithKeywords ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')? (mapper=LimitedMapperDtoMapper |
+	';'?))
+	|
+	({dto::LDtoOperation.annotationInfo=current}
+	('def' type=JvmTypeReference name=ValidIDWithKeywords
+	'(' (params+=FullJvmFormalParameter (', ' params+=FullJvmFormalParameter)*)? ')'
+	body=XExpression)));
+
+DtoMapper returns dto::LDtoMapper:
+	'{' 'toDTO'
+	toDTO=XExpression
+	('fromDTO'
+	fromDTO=XExpression)?
+	'}';
+
+	// custom vars and refs should not be mapped to entity. 
+LimitedMapperDtoMapper returns dto::LDtoMapper:
+	'{' 'toDTO'
+	toDTO=XExpression
+	'}';
+
+RefFQN:
+	ID ('.' ID)*;
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarBundleSpaceModule.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarBundleSpaceModule.java
new file mode 100644
index 0000000..bb1fc2d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarBundleSpaceModule.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext;
+
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+@SuppressWarnings("restriction")
+public class DtoGrammarBundleSpaceModule extends DtoGrammarRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	public Class<? extends AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarBundleSpaceSetup.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarBundleSpaceSetup.java
new file mode 100644
index 0000000..800bf5b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarBundleSpaceSetup.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * It uses the {@link BundleSpaceTypeProviderFactory}.
+ */
+@SuppressWarnings("restriction")
+public class DtoGrammarBundleSpaceSetup extends
+		DtoGrammarStandaloneSetup {
+
+	public static void doSetup() {
+		new DtoGrammarBundleSpaceSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarBundleSpaceSetup
+				.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	public Injector createInjector() {
+		return Guice.createInjector(new DtoGrammarBundleSpaceModule());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarRuntimeModule.java
new file mode 100644
index 0000000..f0416de
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarRuntimeModule.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext;
+
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.formatting.IFormatter;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoTypesBuilder;
+import org.eclipse.osbp.dsl.dto.xtext.formatting.DtoGrammarFormatter;
+import org.eclipse.osbp.dsl.dto.xtext.generator.Generator;
+import org.eclipse.osbp.dsl.dto.xtext.generator.OutputConfigurationProvider;
+import org.eclipse.osbp.dsl.dto.xtext.jvmmodel.DtoGrammarJvmModelInferrer;
+import org.eclipse.osbp.dsl.dto.xtext.linker.DtoJvmLinkingHelper;
+import org.eclipse.osbp.dsl.dto.xtext.scope.DtoBatchScopeProvider;
+import org.eclipse.osbp.dsl.dto.xtext.scope.DtoImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.osbp.dsl.dto.xtext.scope.DtoScopeProvider;
+import org.eclipse.osbp.dsl.dto.xtext.serializer.DtoGrammarTransientValueService;
+import org.eclipse.osbp.dsl.dto.xtext.valueconverter.DtoQualifiedNameProvider;
+import org.eclipse.osbp.dsl.dto.xtext.valueconverter.DtoValueConverterService;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexDerivedStateComputer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexModelAssociator;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.FastLinkingService;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.validation.WarningAwareJvmTypeReferencesValidator;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+@SuppressWarnings("restriction")
+public class DtoGrammarRuntimeModule extends
+		org.eclipse.osbp.dsl.dto.xtext.AbstractDtoGrammarRuntimeModule {
+
+	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return DtoQualifiedNameProvider.class;
+	}
+
+	@Override
+	public Class<? extends IScopeProvider> bindIScopeProvider() {
+		return DtoScopeProvider.class;
+	}
+
+	@Override
+	public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return DtoBatchScopeProvider.class;
+	}
+
+	@Override
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class)
+				.annotatedWith(
+						Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+				.to(DtoImportedNamespaceAwareLocalScopeProvider.class);
+	}
+
+	public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() {
+		return DtoGrammarJvmModelInferrer.class;
+	}
+
+	public Class<? extends IFormatter> bindIFormatter() {
+		return DtoGrammarFormatter.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.jvmmodel.AnnotationCompiler> bindAnnotationCompiler() {
+		return org.eclipse.osbp.dsl.dto.xtext.jvmmodel.AnnotationCompiler.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension> bindAnnotationExtension() {
+		return org.eclipse.osbp.dsl.dto.xtext.extensions.AnnotationExtension.class;
+	}
+
+	public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder() {
+		return DtoTypesBuilder.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions> bindModelExtensions() {
+		return org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return Generator.class;
+	}
+
+	public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
+		return OutputConfigurationProvider.class;
+	}
+
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return DtoValueConverterService.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return LazyJvmTypeLinker.class;
+	}
+
+	public Class<? extends LazyJvmTypeLinkingHelper> bindJvmLinkingHelper() {
+		return DtoJvmLinkingHelper.class;
+	}
+
+	@Override
+	public void configureSerializerIScopeProvider(Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+				.annotatedWith(
+						org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class)
+				.to(DtoScopeProvider.class);
+	}
+
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return DtoGrammarTransientValueService.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends ILinkingService> bindILinkingService() {
+		return FastLinkingService.class;
+	}
+
+	public Class<? extends IJvmModelAssociator> bindIJvmModelAssociator() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IIndexModelAssociator> bindIIndexModelAssociator() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IJvmModelAssociations> bindIJvmModelAssociations() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	@org.eclipse.xtext.service.SingletonBinding(eager = true)
+	public Class<? extends org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator> bindJvmTypeReferencesValidator() {
+		return WarningAwareJvmTypeReferencesValidator.class;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarStandaloneSetup.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarStandaloneSetup.java
new file mode 100644
index 0000000..94d9f6d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammarStandaloneSetup.java
@@ -0,0 +1,66 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+ 
+package org.eclipse.osbp.dsl.dto.xtext;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.osbp.dsl.semantic.dto.impl.DtoFactoryImplCustom;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom;
+
+import com.google.inject.Injector;
+
+
+
+
+/**
+ * Initialization support for running Xtext languages without equinox extension
+ * registry
+ */
+public class DtoGrammarStandaloneSetup extends
+		DtoGrammarStandaloneSetupGenerated {
+
+	public static void doSetup() {
+		new DtoGrammarStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+
+	public void register(Injector injector) {
+		if (!EPackage.Registry.INSTANCE
+				.containsKey("http://osbp.eclipse.org/dto/v1")) {
+			EPackage.Registry.INSTANCE.put(
+					"http://osbp.eclipse.org/dsl/dto/v1", OSBPDtoPackage.eINSTANCE);
+			OSBPDtoPackage.eINSTANCE
+					.setEFactoryInstance(new DtoFactoryImplCustom());
+		}
+
+		if (!EPackage.Registry.INSTANCE
+				.containsKey("http://osbp.eclipse.org/entity/v1")) {
+			EPackage.Registry.INSTANCE.put(
+					"http://osbp.eclipse.org/dsl/entity/v1",
+					OSBPEntityPackage.eINSTANCE);
+			OSBPEntityPackage.eINSTANCE
+					.setEFactoryInstance(new EntityFactoryImplCustom());
+		}
+
+		if (!EPackage.Registry.INSTANCE
+				.containsKey("http://osbp.eclipse.org/dsl/common/types/v1")) {
+			EPackage.Registry.INSTANCE.put(
+					"http://osbp.eclipse.org/dsl/common/types/v1",
+					OSBPTypesPackage.eINSTANCE);
+		}
+
+		super.register(injector);
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/GenerateDtoGrammar.mwe2 b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/GenerateDtoGrammar.mwe2
new file mode 100644
index 0000000..a1aa4fc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/GenerateDtoGrammar.mwe2
@@ -0,0 +1,136 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+module org.eclipse.osbp.dsl.dto.xtext.GenerateDtoGrammar
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.xtext.generator.parser.antlr.*
+import org.eclipse.xtext.resource.XtextResourceSet
+
+var fileExtensions = "dto"
+var projectName = "org.eclipse.osbp.dsl.dto.xtext"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/dsl/dto/xtext/DtoGrammar.xtext"
+var runtimeProject = "../${projectName}"
+var backtrack = false
+var memoize = false
+
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+	bean = org.eclipse.osbp.dsl.mwe.SemanticModelSetupComponent {
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/common/types/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl"
+		}
+
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/entity/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom"
+		}
+		
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/dto/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoFactoryImpl"
+		}
+	}
+	
+	bean = StandaloneSetup {
+		scanClassPath = true
+		platformUri = "${runtimeProject}/.."
+		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.osbp.dsl.dto.xtext/model/dto.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage"
+		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"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		encoding = "UTF-8"
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		pathTestProject = "${runtimeProject}.tests"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			uri = grammarURI
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "205"
+					methodsPerClass = "500"
+				}
+			}
+			fragment = DebugAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			fragment = validation.JavaValidatorFragment {}
+			fragment = generator.GeneratorFragment {}
+			fragment = scoping.ImportNamespacesScopingFragment {}
+			fragment = builder.BuilderIntegrationFragment {}
+			fragment = quickfix.QuickfixProviderFragment {}
+			fragment = labeling.LabelProviderFragment {
+				generateStub = false
+			}
+			fragment = outline.OutlineTreeProviderFragment {}
+			fragment = outline.QuickOutlineFragment {}
+			fragment = compare.CompareFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "205"
+					methodsPerClass = "500"
+				}
+			}
+			fragment = refactoring.RefactorElementNameFragment {
+				useJdtRefactoring = true
+			}
+			fragment = types.TypesGeneratorFragment {}
+			fragment = xbase.XbaseGeneratorFragment {
+				generateXtendInferrer = true
+			}
+			fragment = templates.CodetemplatesGeneratorFragment {}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/AnnotationExtension.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/AnnotationExtension.xtend
new file mode 100644
index 0000000..1843ec4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/AnnotationExtension.xtend
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.extensions
+
+class AnnotationExtension extends org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension {
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.xtend
new file mode 100644
index 0000000..18ba195
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoModelExtensions.xtend
@@ -0,0 +1,674 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.List
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.entity.xtext.extensions.Constants
+import org.eclipse.osbp.dsl.semantic.common.helper.Bounds
+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.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+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.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.TypesFactory
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+
+class DtoModelExtensions extends ModelExtensions {
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension JvmTypesBuilder
+	@Inject extension MethodNamingExtensions
+
+	@Inject TypeReferences references;
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LDtoAbstractReference prop) {
+
+		// always use the lazy resolving jvmType proxy
+		return prop.typeJvm?.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LDtoAbstractAttribute prop) {
+		if (isAvoidJvmTypeProxiesForDatatype(prop)) {
+			return prop.toDataTypeTypeReference
+		}
+
+		// Use the jvmType proxy
+		return prop.typeJvm?.cloneWithProxies
+	}
+
+	override JvmTypeReference toSyntheticTypeReference(LDataType type) {
+		switch (type.syntheticSelector) {
+			case Constants::DT_INTERNAL_IS_CURRENT_VERSION:
+				references.findDeclaredType(Boolean::TYPE, type).newTypeRef()
+			case Constants::DT_INTERNAL_OBJECT_VERSION:
+				references.findDeclaredType(Integer::TYPE, type).newTypeRef()
+			case Constants::DT_INTERNAL_OBJECT_ID:
+				if (type.syntheticType != null) {
+					for (att : (type.syntheticType as LEntity).allAttributes) {
+						if (att.id || att.uuid) {
+							return att.toTypeReference
+						}
+					}
+				}
+		}
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LEntityAttribute prop, LDtoInheritedAttribute dtoAtt) {
+		if (prop.type instanceof LBean || prop.type instanceof LEntity || prop.type instanceof LEnum) {
+			return dtoAtt.inheritedFeatureTypeJvm.cloneWithProxies
+		} else {
+			return super.toTypeReference(prop)
+		}
+	}
+
+	def dispatch JvmTypeReference toDtoTypeReference(LDtoInheritedAttribute prop, LDtoInheritedAttribute dtoAtt) {
+		return null
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LBeanAttribute prop, LDtoInheritedAttribute dtoAtt) {
+		if (prop.type instanceof LBean || prop.type instanceof LEntity || prop.type instanceof LEnum) {
+			return dtoAtt.inheritedFeatureTypeJvm.cloneWithProxies
+		} else {
+			return super.toTypeReference(prop)
+		}
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LEntityReference prop, LDtoInheritedReference dtoRef) {
+		return dtoRef.inheritedFeatureTypeJvm.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LBeanReference prop, LDtoInheritedAttribute dtoRef) {
+		return dtoRef.inheritedFeatureTypeJvm.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LDtoInheritedAttribute prop) {
+
+		if (prop.type != null) {
+
+			// if the type is a different one, then use the type of the property
+			// it needs to be mapped by a custom mapper in dsl
+			if (prop.isAvoidJvmTypeProxiesForDatatype) {
+				return prop.toDataTypeTypeReference
+			} else {
+
+				// use the lazy resolving jvm type proxy
+				return prop.typeJvm.cloneWithProxies
+			}
+		}
+
+		// creates a proxy reference
+		return prop.inheritedFeature?.toDtoTypeReference(prop).cloneWithProxies
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def dispatch JvmTypeReference toDtoTypeReference(LDtoInheritedReference prop) {
+
+		if (prop.type != null) {
+
+			// if the type is a different one, then use the type of the property
+			// it needs to be mapped by a custom mapper in dsl
+			return prop.typeJvm.cloneWithProxies
+		}
+
+		// creates a proxy reference
+		return prop.inheritedFeature?.toDtoTypeReference(prop).cloneWithProxies
+	}
+
+	/**
+	 * Creates a type reference with respect to mappings to DTOs. For instance "Item"-Entity is mapped to ItemDTO
+	 */
+	def JvmTypeReference toDtoTypeReferenceWithMultiplicity(LDtoFeature prop) {
+		var ref = prop.toDtoTypeReference
+		if (ref != null && prop.bounds.toMany) {
+			ref = references.getTypeForName(typeof(List), prop, ref)
+		}
+		return ref
+	}
+
+	/**
+	 * Creates a type reference with respect to multiplicity
+	 */
+	def JvmTypeReference toRawTypeReferenceWithMultiplicity(LDtoFeature prop) {
+		var ref = prop.toRawTypeRefernce;
+		if (prop.bounds.toMany) {
+			ref = references.getTypeForName(typeof(List), prop, ref)
+		}
+		return ref
+	}
+
+	def dispatch isCascading(LDtoOperation prop) {
+		false
+	}
+
+	def LDtoAbstractReference getResolvedOpposite(LDtoReference prop) {
+
+		// For a toMany that has already an opposite, return it.
+		// Otherwise search in the referenced type for the property with the owner type.
+		if (prop.opposite != null) {
+			return prop.opposite
+		} else if (prop.type instanceof LDto) {
+			val LDto ref = prop.type as LDto
+			ref.references.findFirst[it.opposite == prop]
+		}
+	}
+
+	/**
+   	 * Returns true, if toCheck can be cast to superType
+   	 */
+	def boolean isCastable(LDto toCheck, LDto superType) {
+		val String toCheckFqn = toCheck.fullyQualifiedName.toString
+		val String superTypeFqn = superType.fullyQualifiedName.toString
+
+		if (toCheckFqn.equals(superTypeFqn)) {
+			return true
+		} else {
+			val LDto toCheckSuperType = toCheck.getSuperType
+			if (toCheckSuperType != null) {
+				return toCheckSuperType.isCastable(superType)
+			} else {
+				return false;
+			}
+		}
+	}
+
+	def dispatch inherited(LFeature prop) {
+		return false
+	}
+
+	def dispatch inherited(LDtoInheritedReference prop) {
+		return true
+	}
+
+	def dispatch inherited(LDtoInheritedAttribute prop) {
+		return true
+	}
+	
+	def dispatch boolean derived(LDtoInheritedReference prop) {
+		return false
+	}
+
+	def dispatch boolean derived(LDtoInheritedAttribute prop) {
+		return if(prop.inheritedFeature != null) prop.inheritedFeature.derived else false
+	}
+
+	/**
+	 * The binary <code>+</code> operator that concatenates two strings.
+	 * 
+	 * @param a
+	 *            a string.
+	 * @param b
+	 *            another string.
+	 * @return <code>a + b</code>
+	 */
+	def static String operator_plus(String a, String b) {
+		if (a == null || b == null)
+			return ""
+
+		return a + b;
+	}
+
+	def dispatch String toTypeName(LDtoAttribute prop) {
+		prop.type.name
+	}
+
+	def dispatch String toTypeName(LDtoInheritedAttribute prop) {
+		if (prop.type != null) {
+			prop.type.name
+		} else {
+			prop.inheritedFeature.^type.name
+		}
+	}
+
+	def dispatch String toTypeName(LDtoReference prop) {
+		prop.type?.name
+	}
+
+	def dispatch String toTypeName(LDtoInheritedReference prop) {
+		prop.type?.name
+	}
+
+	def dispatch String toQualifiedTypeName(LDtoAttribute prop) {
+		prop.type.fullyQualifiedName.toString
+	}
+
+	def dispatch String toQualifiedTypeName(LDtoInheritedAttribute prop) {
+		if (prop.type != null) {
+			prop.type.fullyQualifiedName.toString
+		} else {
+			prop.inheritedFeature.^type.fullyQualifiedName.toString
+		}
+	}
+
+	def dispatch String toQualifiedTypeName(LDtoReference prop) {
+		prop.type?.fullyQualifiedName.toString
+	}
+
+	def dispatch String toQualifiedTypeName(LDtoInheritedReference prop) {
+		prop.type?.fullyQualifiedName.toString
+	}
+
+	def dispatch LType toRawType(LFeature prop) {
+		throw new IllegalStateException("not a valid call")
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LDtoAttribute prop) {
+		prop.type
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LDtoInheritedAttribute prop) {
+		prop.inheritedFeature?.type
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LDtoReference prop) {
+		prop.type
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LDtoInheritedReference prop) {
+		prop.inheritedFeature?.toRawType
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LEntityReference prop) {
+		prop.type
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LEntityAttribute prop) {
+		prop.type
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LBeanReference prop) {
+		prop.type
+	}
+
+	/**
+	 * Returns the type of the property or reference without any mappings
+	 */
+	def dispatch LType toRawType(LBeanAttribute prop) {
+		prop.type
+	}
+
+	/**
+	 * Returns the type reference of the property or reference without any mappings
+	 */
+	def dispatch toRawTypeRefernce(LDtoFeature prop) {
+		prop.toRawType?.toTypeReference
+	}
+
+	/**
+	 * Returns the type reference of the property or reference without any mappings
+	 */
+	def dispatch toRawTypeRefernce(LDtoInheritedReference prop) {
+		val LReference ref = prop.inheritedFeature
+		if (ref instanceof LEntityReference) {
+			return ref.typeJvm.cloneWithProxies
+		} else if (ref instanceof LBeanReference) {
+			return ref.typeJvm.cloneWithProxies
+		}
+		return TypesFactory.eINSTANCE.createJvmUnknownTypeReference
+	}
+
+	/**
+	 * Returns the type reference of the property or reference without any mappings
+	 */
+	def dispatch toRawTypeRefernce(LDtoAbstractReference prop) {
+		prop.toRawType?.toTypeReference
+	}
+
+	/**
+	 * Returns the type reference of the property or reference without any mappings
+	 */
+	def String toRawTypeName(LDtoFeature prop) {
+		prop.toRawType?.name
+	}
+
+	def dispatch LFeature opposite(LDtoFeature prop) {
+		null
+	}
+
+	def dispatch LFeature opposite(LDtoReference prop) {
+		return prop.opposite
+	}
+
+	def dispatch LFeature opposite(LDtoInheritedReference prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.opposite
+		} else {
+			return null
+		}
+	}
+
+	def dispatch LFeature opposite(LEntityReference prop) {
+		prop.opposite
+	}
+
+	def dispatch LFeature opposite(LBeanReference prop) {
+		prop.opposite
+	}
+
+	def dispatch Bounds getBounds(LDtoFeature prop) {
+		if (prop.inherited) {
+			return Bounds.createFor(prop.inheritedFeature);
+		} else {
+			return Bounds.createFor(prop);
+		}
+	}
+
+	def dispatch String toName(LDtoFeature feature) {
+		if(feature == null || !feature.inherited && feature.name == null) return ""
+		if (feature.inherited) {
+			return feature.inheritedFeature?.toName
+		}
+		return feature.name.replace("^", "")
+	}
+
+	def dispatch String toName(LDto dto) {
+		if (dto == null || dto.name == null) {
+			return ""
+		}
+		return dto.name.replace("^", "")
+	}
+
+	def dispatch String toName(Void param) {
+		return ""
+	}
+
+	//	def dispatch String internalToName(LFeature prop) {
+	//		return prop.name;
+	//	}
+	//
+	//	def dispatch String internalToName(LDtoFeature prop) {
+	//		if (prop.inherited) {
+	//			return prop.inheritedFeature?.name;
+	//		} else {
+	//			return prop.name;
+	//		}
+	//	}
+	def dispatch LReference inheritedFeature(LDtoFeature prop) {
+		return null
+	}
+
+	def dispatch LReference inheritedFeature(LDtoInheritedReference prop) {
+		return prop.inheritedFeature
+	}
+
+	def dispatch LAttribute inheritedFeature(LDtoInheritedAttribute prop) {
+		return prop.inheritedFeature
+	}
+
+	override isToMany(LFeature prop) {
+		if (prop == null) {
+			return false
+		}
+		return internalIsToMany(prop);
+	}
+
+	def dispatch boolean isAbstract(LType context) {
+		false
+	}
+
+	def dispatch boolean isAbstract(LEntity context) {
+		context.abstract
+	}
+
+	def dispatch boolean isAbstract(LDto context) {
+		context.abstract
+	}
+
+	def dispatch boolean isTransient(EObject context) {
+		false
+	}
+
+	def dispatch boolean isTransient(LDtoAttribute context) {
+		context.transient
+	}
+
+	def dispatch boolean internalIsToMany(LFeature prop) {
+		return prop.bounds.toMany;
+	}
+
+	def dispatch boolean internalIsToMany(LDtoFeature prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.internalIsToMany
+		} else {
+			return prop.bounds.toMany;
+		}
+	}
+
+	def dispatch boolean isCascading(LDtoAbstractReference prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.cascading
+		} else {
+			return prop.cascading;
+		}
+	}
+
+	def dispatch boolean isCascading(LDtoAbstractAttribute prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.cascading
+		} else {
+			return prop.cascading;
+		}
+	}
+
+	def isAttribute(LDtoFeature prop) {
+		return prop instanceof LAttribute
+	}
+
+	def isContainmentReference(LDtoFeature prop) {
+		return prop instanceof LReference && prop.cascading
+	}
+
+	def isCrossReference(LDtoFeature prop) {
+		return prop instanceof LReference && !prop.cascading
+	}
+
+	def dispatch isContainerReference(LDtoAbstractAttribute prop) {
+		return false
+	}
+
+	def dispatch isContainerReference(LDtoOperation prop) {
+		return false
+	}
+
+	def dispatch isContainerReference(LDtoReference prop) {
+		val opposite = prop.opposite
+		if (opposite != null && opposite.cascading) {
+			return true
+		} else if (!prop.bounds.toMany && opposite != null && opposite.bounds.toMany) {
+			// non containment container ref
+			return true
+		}
+		return false
+	}
+
+	def dispatch isContainerReference(LDtoInheritedReference prop) {
+		val opposite = prop.inheritedFeature.opposite
+		if (opposite != null && opposite.cascading) {
+			return true
+		} else if (!prop.bounds.toMany && opposite != null && opposite.bounds.toMany) {
+			// non containment container ref
+			return true
+		}
+		return false
+	}
+
+	def toMapperTypeReference(LType type) {
+		references.getTypeForName(type.toFqnMapperName, type, null)
+	}
+
+	def toMapperTypeReference(LDtoAbstractReference ref) {
+		ref.type.toMapperTypeReference
+	}
+
+	def dispatch isIDorUUID(LAttribute prop) {
+		return false
+	}
+
+	def dispatch isIDorUUID(LDtoAttribute prop) {
+		return prop.id || prop.uuid
+	}
+
+	def dispatch isIDorUUID(LDtoInheritedAttribute prop) {
+		return prop.inheritedFeature.id || prop.inheritedFeature.uuid
+	}
+
+	/**
+	 * Returns all containment features that need to be copied.
+	 */
+	def getContainmentReferencesToCopy(LDto dto) {
+		dto.features.filter [
+			it.containmentReference
+		]
+	}
+
+	override boolean isBasedOnDatatype(LFeature feature) {
+		if (feature instanceof LDtoInheritedAttribute) {
+			return if(feature.inheritedFeature != null) feature.inheritedFeature.isBasedOnDatatype else false
+		}
+		return super.isBasedOnDatatype(feature)
+	}
+
+	override LDataType getDatatype(LFeature feature) {
+		if (feature instanceof LDtoInheritedAttribute) {
+			return if(feature.inheritedFeature != null) feature.inheritedFeature.getDatatype else null
+		}
+		return super.getDatatype(feature)
+	}
+
+	override typeIsEnum(LAttribute prop) {
+		if (prop instanceof LDtoInheritedAttribute) {
+			return if(prop.inheritedFeature != null) prop.inheritedFeature.typeIsEnum else false
+		}
+		return super.typeIsEnum(prop)
+	}
+
+	/**
+	 * Returns all attributes that need to be copied.
+	 */
+	def getAttributesToCopy(LDto dto) {
+		dto.features.filter [
+			it.attribute
+		]
+	}
+
+	/**
+	 * Returns all crossreferences that need to be copied.
+	 */
+	def getCrossReferencesToCopy(LDto dto) {
+		dto.features.filter [
+			return !it.containerReference && it.isCrossReference
+		]
+	}
+
+	def boolean isBean(LType type) {
+		if (type instanceof LDto) {
+			return type.wrappedType instanceof LBean
+		}
+		return type instanceof LBean
+	}
+
+	def dispatch LAttribute idAttribute(LDto dto) {
+		for (LDtoAbstractAttribute prop : dto.collectAllAttributes) {
+			if (prop.inherited && prop.inheritedFeature != null) {
+				val LAttribute attribute = prop.inheritedFeature as LAttribute
+				if (attribute.id || attribute.uuid) {
+					return attribute
+				}
+			} else {
+				if (prop.id || prop.uuid) {
+					return prop
+				}
+			}
+		}
+	}
+
+	def dispatch LAttribute idAttribute(LEntity entity) {
+		for (LEntityAttribute prop : entity.collectAllAttributes) {
+			if (prop.id || prop.uuid) {
+				return prop
+			}
+		}
+	}
+
+	def Iterable<LDtoAbstractAttribute> collectAllAttributes(LDto dto) {
+		return dto.allFeatures.filter[it instanceof LDtoAbstractAttribute].map[it as LDtoAbstractAttribute]
+	}
+
+	def Iterable<LEntityAttribute> collectAllAttributes(LEntity entity) {
+		return entity.allFeatures.filter[it instanceof LEntityAttribute].map[it as LEntityAttribute]
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoTypesBuilder.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoTypesBuilder.xtend
new file mode 100644
index 0000000..b932bac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/DtoTypesBuilder.xtend
@@ -0,0 +1,1618 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.Collections
+import org.eclipse.osbp.dsl.common.xtext.extensions.TreeAppendableExtensions
+import org.eclipse.osbp.dsl.common.xtext.jvmmodel.CommonTypesBuilder
+import org.eclipse.osbp.dsl.dto.lib.ICrossReference
+import org.eclipse.osbp.dsl.dto.lib.IMapper
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess
+import org.eclipse.osbp.dsl.dto.lib.MappingContext
+import org.eclipse.osbp.dsl.dto.xtext.jvmmodel.AnnotationCompiler
+import org.eclipse.osbp.dsl.entity.xtext.extensions.Constants
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+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.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
+import org.eclipse.osbp.dsl.semantic.entity.LOperation
+import org.eclipse.osbp.runtime.common.annotations.DomainDescription
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.JvmVisibility
+import org.eclipse.xtext.common.types.TypesFactory
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.XExpression
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1
+
+class DtoTypesBuilder extends CommonTypesBuilder {
+
+	@Inject extension DtoModelExtensions
+	@Inject extension MethodNamingExtensions
+	@Inject extension TreeAppendableExtensions
+	@Inject extension IQualifiedNameProvider
+	@Inject extension AnnotationExtension
+
+	@Inject
+	private IJvmModelAssociator associator;
+	@Inject AnnotationCompiler annotationCompiler
+	@Inject TypesFactory typesFactory;
+	@Inject TypeReferences references;
+
+	def htmlCode(CharSequence s) {
+		"<code>".concat(String::valueOf(s)).concat("</code>")
+	}
+	 
+	def JvmField toDiposeField(LDto sourceElement) {
+		val JvmField field = sourceElement.toPrimitiveTypeField("disposed", Boolean::TYPE)
+		associate(sourceElement, field)
+		annotationCompiler.addDisposeFieldAnnotation(sourceElement, field)
+		return field
+	}
+
+	def JvmOperation toDispose(LDto lClass) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, lClass)
+		op.simpleName = "dispose"
+		op.documentation = '''
+		Calling dispose will destroy that instance. The internal state will be 
+		set to 'disposed' and methods of that object must not be used anymore. 
+		Each call will result in runtime exceptions.<br/>
+		If this object keeps composition containments, these will be disposed too. 
+		So the whole composition containment tree will be disposed on calling this method.'''
+		
+		annotationCompiler.addDisposeFieldAnnotation(lClass, op)
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(lClass)
+				p >> '''
+					if (isDisposed()) {
+					  return;
+					}
+				'''
+				val compositionContainmentProps = lClass.features.filter[cascading]
+				if (!compositionContainmentProps.empty) {
+					p >> "try " >>> "{"
+					p >> "// Dispose all the composition references.\n"
+					for (prop : compositionContainmentProps) {
+						val fieldRef = "this.".concat(prop.toName.toFirstLower)
+						val typeName = prop.toTypeName
+						val typeVar = typeName.toFirstLower
+						if (prop.toMany) {
+							p >> '''
+								if («fieldRef» != null) {
+								  for («typeName» «typeVar» : «fieldRef») {
+								    «typeVar».dispose();
+								  }
+								  «fieldRef» = null;
+								}
+							'''
+						} else {
+							p >> '''
+								if («fieldRef» != null) {
+								  «fieldRef».dispose();
+								  «fieldRef» = null;
+								}
+							'''
+						}
+					}
+					p <<< "}"
+					p >>> "finally {"
+
+				//p.increaseIndentation
+				}
+				if (lClass.superType != null) {
+					p >> "super.dispose();"
+				} else {
+					p >> "firePropertyChange(\"disposed\", this.disposed, this.disposed = true);"
+				}
+				if (!compositionContainmentProps.empty) {
+					p <<< "}"
+				}
+			])
+
+		associate(lClass, op)
+	}
+
+	def JvmOperation toMethod(LOperation sourceElement, String name, JvmTypeReference returnType,
+		Procedure1<? super JvmOperation> initializer) {
+		val op = typesFactory.createJvmOperation()
+		op.simpleName = name
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = cloneWithProxies(returnType)
+
+		annotationCompiler.processAnnotation(sourceElement, op);
+		associate(sourceElement, op);
+		initializeSafely(op, initializer);
+	}
+
+	def dispatch JvmOperation toSetter(LDtoAbstractAttribute prop) {
+//		if (prop.toMany) {
+//			throw new RuntimeException("toMany-References not allowed for setters!");
+//		}
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toDtoTypeReferenceWithMultiplicity
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toSetterName
+		op.parameters += prop.toParameter(paramName, typeRef)
+		op.documentation = '''
+			Sets the <code>«paramName»</code> property to this instance.
+			
+			@param «paramName» - the property
+			@throws RuntimeException if instance is <code>disposed</code>
+		'''
+
+		if (!prop.toMany) {
+			if(prop.toRawType.isBean) {
+				setBody(op, '''
+				// ensure that embedded beans will notify their parent about changes
+				// so their dirty state can be handled properly
+				if (this.«paramName» != null) {
+					this.«paramName».removePropertyChangeListener(this);
+				}
+				
+				firePropertyChange("«paramName»", this.«paramName», this.«paramName» = «paramName» );
+				
+				if (this.«paramName» != null) {
+					this.«paramName».addPropertyChangeListener(this);
+				}
+				''')
+			}else{
+				setBody(op, '''firePropertyChange("«paramName»", this.«paramName», this.«paramName» = «paramName» );
+				«IF prop.IDorUUID»
+				installLazyCollections();
+				«ENDIF»
+				''')
+			}
+			
+		} else {
+			setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p >> prop.toCheckDisposedCall()
+				val fieldRef = "this." + prop.toName
+
+				p >> "for (" +prop.toDtoTypeReference.simpleName  + " dto : " + prop.toCollectionInternalGetterName + "().toArray(new " + prop.toDtoTypeReference.simpleName + "[" + fieldRef + ".size()])) " >>> "{"
+				
+				p >> prop.toCollectionRemoverName + "(dto);"
+				p <<< "}"
+					
+				p >> "if(" + paramName +" == null)" >>> "{"
+					p >> "return;"
+				p <<< "}"
+						
+				p >> "for (" +prop.toDtoTypeReference.simpleName  + " dto : " + paramName + ") " >>> "{"
+						p >> prop.toCollectionAdderName + "(dto);"
+				p <<< "}"
+				])
+			}
+
+		return associate(prop, op);
+	}
+
+	def dispatch JvmOperation toSetter(LDtoAbstractReference prop) {
+//		if (prop.toMany) {
+//			throw new RuntimeException("toMany-References not allowed for setters!");
+//		}
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toDtoTypeReferenceWithMultiplicity
+		val opposite = prop.opposite
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toSetterName
+		op.parameters += prop.toParameter(paramName, typeRef)
+		op.documentation = '''
+			Sets the <code>«paramName»</code> property to this instance.
+			«IF (opposite != null)»
+				Since the reference has an opposite reference, the opposite <code>«prop.toTypeName»#
+				«opposite.name.toFirstLower»</code> of the <code>«paramName»</code> will be handled automatically and no 
+				further coding is required to keep them in sync.<p>
+				See {@link «prop.toTypeName»#«opposite.toSetterName»(«prop.toTypeName»)
+			«ENDIF»
+			
+			@param «paramName» - the property
+			@throws RuntimeException if instance is <code>disposed</code>
+		'''
+		
+		op.body = '''
+		checkDisposed();
+		«IF opposite == null»
+			«IF !prop.toMany»
+				firePropertyChange("«paramName»", this.«paramName», this.«paramName» = «paramName»);
+			«ELSE»
+				for («prop.toDtoTypeReference.simpleName» dto : «prop.toCollectionInternalGetterName»().toArray(new «prop.toDtoTypeReference.simpleName»[this.«prop.toName».size()])) {
+					«prop.toCollectionRemoverName»(dto);
+				}
+
+				if(«paramName» == null) {
+					return;
+				}
+				
+				for («prop.toDtoTypeReference.simpleName» dto : «paramName») {
+					«prop.toCollectionAdderName»(dto);
+				}
+			«ENDIF»
+		«ELSE»
+			«IF !prop.toMany»
+				if (this.«prop.toName» != null) {
+					«IF opposite.toMany»
+						this.«prop.toName».«opposite.toCollectionInternalRemoverName»(this);
+					«ELSE»
+						this.«prop.toName».«opposite.toInternalSetterName»(null);
+					«ENDIF»
+				}
+				
+				«prop.toInternalSetterName»(«paramName»);
+				
+				if (this.«prop.toName» != null) {
+					«IF opposite.toMany»
+						this.«prop.toName».«opposite.toCollectionInternalAdderName»(this);
+					«ELSE»
+						this.«prop.toName».«opposite.toInternalSetterName»(this);
+					«ENDIF»
+				}
+			«ELSE»
+				for («prop.toDtoTypeReference.simpleName» dto : «prop.toCollectionInternalGetterName»().toArray(new «prop.toDtoTypeReference.simpleName»[this.«prop.toName».size()])) {
+					«prop.toCollectionRemoverName»(dto);
+				}
+
+				if(«paramName» == null) {
+					return;
+				}
+				
+				for («prop.toDtoTypeReference.simpleName» dto : «paramName») {
+					«prop.toCollectionAdderName»(dto);
+				}
+			«ENDIF»
+		«ENDIF»
+		'''
+		return associate(prop, op);
+	}
+	
+	// dispatch used by sub classes
+	def dispatch JvmOperation toGetter(LDtoAbstractAttribute prop, String methodName) {
+		val propertyName = prop.toName
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = methodName
+		op.returnType = cloneWithProxies(prop.toDtoTypeReferenceWithMultiplicity)
+
+		if (prop.derived) {
+			val customDoc = prop.documentation
+			if (customDoc != null) {
+				op.documentation = customDoc
+			} else {
+				op.documentation = '''
+				Calculates the value for the derived property «prop.name»
+				 
+				@return «prop.name» The derived property value'''
+			}
+
+			// set the domain description annotation
+			if (prop.domainDescription) {
+				op.annotations += prop.toAnnotation(typeof(DomainDescription))
+			}
+
+			setBody(op, prop.derivedGetterExpression)
+
+		} else {
+			op.documentation = if (prop.toMany) {
+				"Returns an unmodifiable list of " + propertyName + "."
+			} else if (propertyName != null) {
+				"Returns the ".concat((if(prop.bounds.required) "<em>required</em> " else "")).concat(propertyName).
+					concat(" property").concat(
+						(if(!prop.toRawType.isBean && !prop.bounds.required) " or <code>null</code> if not present" else "")).concat(".")
+			}
+
+			setBody(op,
+				[ // ITreeAppendable it |
+					if(it == null) return
+					val p = it.trace(prop);
+					if (prop.toMany) {
+						p >> "return " >> newTypeRef(prop, typeof(Collections)) >> ".unmodifiableList" >>
+							"(" + prop.toCollectionInternalGetterName + "());"
+					} else {
+						if(prop.toRawType.isBean) {
+							p >> "if(this." + propertyName + "== null)" >>> "{"
+							p >> "this." + propertyName + " = new " + prop.toRawType.toDTOBeanSimpleName + "();"
+							p <<< "}"
+						}
+						p >> "return this." + propertyName + ";"
+					}
+				])
+		}
+		return associate(prop, op);
+	}
+	
+		// dispatch used by sub classes
+	def dispatch JvmOperation toGetter(LDtoAbstractReference prop, String methodName) {
+		val propertyName = prop.toName
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.simpleName = methodName
+		op.returnType = cloneWithProxies(prop.toDtoTypeReferenceWithMultiplicity)
+		op.documentation = if (prop.toMany) {
+			"Returns an unmodifiable list of " + propertyName + "."
+		} else if (propertyName != null) {
+			"Returns the ".concat((if(prop.bounds.required) "<em>required</em> " else "")).concat(propertyName).
+				concat(" property").concat(
+					(if(!prop.toRawType.isBean && !prop.bounds.required) " or <code>null</code> if not present" else "")).concat(".")
+		}
+
+		setBody(op,
+			[ // ITreeAppendable it |
+				if(it == null) return
+				val p = it.trace(prop);
+				if (prop.toMany) {
+					p >> "return " >> newTypeRef(prop, typeof(Collections)) >> ".unmodifiableList" >>
+						"(" + prop.toCollectionInternalGetterName + "());"
+				} else {
+					if(prop.toRawType.isBean) {
+						p >> "if(this." + propertyName + "== null)" >>> "{"
+						p >> "this." + propertyName + " = new " + prop.toRawType.toDTOBeanSimpleName + "();"
+						p <<< "}"
+					}
+					p >> "return this." + propertyName + ";"
+				}
+			])
+
+		return associate(prop, op);
+	}
+
+	def JvmOperation toProxySetter(LDtoAbstractReference prop) {
+		if (prop.toMany) {
+			throw new RuntimeException("toMany-References not allowed for setters!");
+		}
+		val paramName = prop.toMethodParamName
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toSetterName
+		op.parameters += prop.toParameter(paramName, references.getTypeForName(typeof(ICrossReference), prop))
+		op.documentation = '''
+			Sets the proxy of the <code>«paramName»</code> property for lazy cross reference loading.
+		'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p >> prop.toCheckDisposedCall()
+				p >> "firePropertyChange(\"" + paramName + "\", this." + paramName + ", this." + paramName + " = " +
+					paramName + ");"
+			])
+
+		return associate(prop, op);
+	}
+
+	def JvmOperation toProxyGetter(LDtoAbstractReference prop) {
+		if (prop.toMany) {
+			throw new RuntimeException("toMany-References not allowed for setters!");
+		}
+		val paramName = prop.toMethodParamName
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(typeof(ICrossReference), prop)
+		op.simpleName = prop.toGetterName
+		op.documentation = '''
+			Returns the proxy of the <code>«paramName»</code>.
+		'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p >> prop.toCheckDisposedCall()
+				p >> "return " + paramName + ";"
+			])
+
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds an adder method for a *toMany relation like
+     * <code>Order.addToOrderLines(OrderLine orderLine)</code>.
+     */
+	def JvmOperation toAdder(LDtoFeature prop, String propertyName) {
+		val paramName = prop.toTypeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionAdderName
+		if (prop.toDtoTypeReference != null) {
+			op.parameters += prop.toParameter(paramName, prop.toDtoTypeReference)
+		}
+
+		op.documentation = '''
+			Adds the given «paramName» to this object. <p>
+			«IF prop.opposite != null»
+				Since the reference is a composition reference, the opposite reference <code>«prop.toTypeName»#«prop.opposite.name.
+				toFirstLower»</code> of the <code>«paramName»</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+				See {@link «prop.toTypeName»#«prop.opposite.toSetterName»(«prop.toTypeName»)}.
+			«ENDIF»
+			
+			@param «paramName» - the property
+			@throws RuntimeException if instance is <code>disposed</code>
+		'''
+
+		val opposite = prop.opposite
+		op.body = '''
+		checkDisposed();
+		
+		«IF opposite != null»
+			«paramName».«prop.opposite.toSetterName»(this);
+		«ELSE»
+			if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)){
+				«prop.toCollectionInternalAdderName»(«paramName»);
+			}
+		«ENDIF»
+		'''
+
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds an adder method for a *toMany relation like
+     * <code>Order.addToOrderLines(OrderLine orderLine)</code>.
+     */
+	def JvmOperation toProxyAdder(LDtoAbstractReference prop, String propertyName) {
+		val paramName = prop.toTypeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionAdderName
+		op.parameters += prop.toParameter(paramName, references.getTypeForName(typeof(ICrossReference), prop))
+
+		op.documentation = '''
+		Adds the cross reference proxy «paramName». <p>'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p += prop.toCheckDisposedCall()
+				p >> "if (!" + prop.toGetterName + "().contains(" + paramName + "))" >>> "{"
+				{
+					p >> prop.toGetterName + "().add(" + paramName + ");"
+				}
+				p <<< "}"
+			])
+		return associate(prop, op);
+	}
+
+	def JvmVisibility getInternalMethodVisibility(LDtoFeature ref) {
+		val LPackage ownerPackage = (ref.eContainer() as LType).package;
+		val LPackage refPackage = ref.toRawType.package;
+		if (ownerPackage.equals(refPackage)) {
+			null // package visibility
+		} else {
+			JvmVisibility::PUBLIC
+		}
+	}
+
+	def dispatch JvmOperation toInternalSetter(LDtoAbstractReference prop) {
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toDtoTypeReference
+		val JvmOperation result = typesFactory.createJvmOperation();
+		result.visibility = JvmVisibility::PUBLIC
+		result.returnType = references.getTypeForName(Void::TYPE, prop)
+		result.simpleName = prop.toInternalSetterName
+		result.parameters += prop.toParameter(paramName, typeRef)
+
+		result.documentation = '''For internal use only!'''
+
+		setBody(result,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> "firePropertyChange(\"" + paramName + "\", this." + paramName + ", this." + paramName + " = " +
+					paramName + ");"
+			])
+		return associate(prop, result);
+	}
+
+	override JvmField toField(LFeature prop) {
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+		jvmField.type = (prop as LDtoFeature).toDtoTypeReferenceWithMultiplicity
+		jvmField.transient = prop.transient
+
+		// if uuid
+		if (prop instanceof LAttribute && ((prop as LAttribute).isCreateUuid || (prop as LAttribute).isHistorizedOID)) {
+			jvmField.setInitializer [
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> '''java.util.UUID.randomUUID().toString()'''
+			]
+		}
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+	
+	def boolean isCreateUuid(LAttribute att) {
+		if(att instanceof LDtoInheritedAttribute) {
+			val iAtt = att as LDtoInheritedAttribute
+			return iAtt.inheritedFeature.isUuid
+		}else{
+			att.isUuid
+		}
+	}
+	
+	def boolean isHistorizedOID(LAttribute att) {
+			if(att instanceof LDtoInheritedAttribute) {
+				val iAtt = att as LDtoInheritedAttribute
+				val feature = iAtt.inheritedFeature
+				if(feature instanceof LEntityFeature) {
+					val entity = feature.entity
+					if((entity.timedependent || entity.historized) && att.toName.equals(Constants::PROP__OID) &&
+						entity.uuidPresent) {
+						return true
+				}
+			}
+		}
+		return false
+	}
+
+	def boolean uuidPresent(LEntity entity) {
+		entity.allAttributes.exists[it.uuid]
+	}
+
+	def JvmField toProxyField(LFeature prop) {
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+		jvmField.type = references.getTypeForName(typeof(ICrossReference), prop)
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def dispatch JvmOperation toInternalSetter(LDtoAbstractAttribute prop) {
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toDtoTypeReference
+		val JvmOperation result = typesFactory.createJvmOperation();
+//		result.visibility = getInternalMethodVisibility(prop)
+		result.visibility = JvmVisibility::PUBLIC
+		result.returnType = references.getTypeForName(Void::TYPE, prop)
+		result.simpleName = prop.toInternalSetterName
+		result.parameters += prop.toParameter(paramName, typeRef)
+
+		result.documentation = '''For internal use only!'''
+
+		setBody(result,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> "firePropertyChange(\"" + paramName + "\", this." + paramName + ", this." + paramName + " = " +
+					paramName + ");"
+			])
+		return associate(prop, result);
+	}
+
+	def dispatch JvmOperation toInternalAdder(LDtoAbstractReference prop) {
+		val paramName = prop.toTypeName.toFirstLower
+		val typeRef = prop.toDtoTypeReference
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionInternalAdderName
+
+		val param = prop.toParameter(paramName, typeRef);
+		if (param != null) {
+			op.parameters += param
+		}
+
+		op.documentation = '''For internal use only!'''
+
+		op.body = '''
+			«IF prop.toRawType.isBean»
+			// add this as property change listener for embeddable beans
+			«paramName».addPropertyChangeListener(this);
+			«ENDIF»
+			
+			if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)) {
+				if(!MappingContext.isMappingMode()) {
+					// collections will become resolved! We need to send a delta notification.
+					List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+					«prop.toCollectionInternalGetterName»().add(«paramName»);
+					firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());
+				} else {
+					// in mapping mode, we do NOT resolve any collection
+					«prop.toCollectionInternalGetterName»().add(«paramName»);
+				}
+			}
+		'''
+		return associate(prop, op);
+	}
+
+	def dispatch JvmOperation toInternalAdder(LDtoAbstractAttribute prop) {
+		val paramName = prop.toTypeName.toFirstLower
+		val typeRef = prop.toDtoTypeReference
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionInternalAdderName
+
+		val param = prop.toParameter(paramName, typeRef);
+		if (param != null) {
+			op.parameters += param
+		}
+
+		op.documentation = '''For internal use only!'''
+
+		op.body = '''
+			«IF prop.toRawType.isBean»
+			// add this as property change listener for embeddable beans
+			«paramName».addPropertyChangeListener(this);
+			«ENDIF»
+			List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			«prop.toCollectionInternalGetterName»().add(«paramName»);
+			firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());
+		'''
+		
+		return associate(prop, op);
+	}
+
+	def dispatch JvmOperation toInternalRemover(LDtoAbstractReference prop) {
+		val paramName = prop.toTypeName.toFirstLower
+		val typeRef = prop.toDtoTypeReference
+		val op = typesFactory.createJvmOperation();
+//		op.visibility = getInternalMethodVisibility(prop)
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionInternalRemoverName
+
+		val param = prop.toParameter(paramName, typeRef);
+		if (param != null) {
+			op.parameters += param
+		}
+
+		op.documentation = '''For internal use only!'''
+
+		op.body = '''
+			«IF prop.toRawType.isBean»
+			// remove this as property change listener from the embeddable bean
+			«paramName».removePropertyChangeListener(this);
+			«ENDIF»
+			if(!MappingContext.isMappingMode()) {
+				// collections will become resolved! We need to send a delta notification.
+				List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+				«prop.toCollectionInternalGetterName»().remove(«paramName»);
+				firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());	
+			}else{
+				// in mapping mode, we do NOT resolve any collection
+				«prop.toCollectionInternalGetterName»().remove(«paramName»);
+			}
+		'''
+		
+		return associate(prop, op)
+	}
+
+	def dispatch JvmOperation toInternalRemover(LDtoAbstractAttribute prop) {
+		val paramName = prop.toTypeName.toFirstLower
+		val typeRef = prop.toDtoTypeReference
+		val op = typesFactory.createJvmOperation();
+//		op.visibility = getInternalMethodVisibility(prop)
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionInternalRemoverName
+
+		val param = prop.toParameter(paramName, typeRef);
+		if (param != null) {
+			op.parameters += param
+		}
+
+		op.documentation = '''For internal use only!'''
+
+		op.body = '''
+			«IF prop.toRawType.isBean»
+			// remove this as property change listener from the embeddable bean
+			«paramName».removePropertyChangeListener(this);
+			«ENDIF»
+			List<«prop.toTypeName»> oldList = new java.util.ArrayList<>(«prop.toCollectionInternalGetterName»());
+			«prop.toCollectionInternalGetterName»().remove(«paramName»);
+			firePropertyChange("«prop.toName»", oldList, «prop.toCollectionInternalGetterName»());
+		'''
+		return associate(prop, op)
+	}
+
+	def dispatch JvmOperation toInternalCollectionGetter(LDtoAbstractReference prop, String name) {
+		val fieldName = name.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation()
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = prop.toDtoTypeReferenceWithMultiplicity
+		op.simpleName = prop.toCollectionInternalGetterName
+		op.documentation = '''
+			Returns the list of «htmlCode(prop.toTypeName)»s thereby lazy initializing it. For internal use only!
+			
+			@return list - the resulting list
+		'''
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return;
+				var p = it.trace(prop);
+				val fieldRef = "this." + fieldName
+				p >> "if (" + fieldRef + " == null)" >>> " {"
+				{
+					p >> fieldRef >> " = new java.util.ArrayList<" + prop.toTypeName + ">();"
+				}
+				p <<< "}"
+				p >> "return " + fieldRef + ";"
+			])
+		prop.associate(op)
+	}
+
+	def dispatch JvmOperation toInternalCollectionGetter(LDtoAbstractAttribute prop, String name) {
+		val fieldName = name.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation()
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = prop.toDtoTypeReferenceWithMultiplicity
+		op.simpleName = prop.toCollectionInternalGetterName
+		op.documentation = '''
+			Returns the list of «htmlCode(prop.toTypeName)»s thereby lazy initializing it. For internal use only!
+			
+			@return list - the resulting list
+		'''
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return;
+				var p = it.trace(prop);
+				val fieldRef = "this." + fieldName
+				p >> "if (" + fieldRef + " == null)" >>> " {"
+				{
+					p >> fieldRef >> " = new java.util.ArrayList<" + prop.toDtoTypeReference.qualifiedName + ">();"
+				}
+				p <<< "}"
+				p >> "return " + fieldRef + ";"
+			])
+		prop.associate(op)
+	}
+
+	/**
+     * Builds a remover method for a *toMany relation like
+     * <code>Order.removeFromOrderLines(OrderLine orderLine)</code>.
+     */
+	def dispatch JvmOperation toRemover(LDtoAbstractReference prop, String propertyName) {
+		val paramName = prop.toTypeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionRemoverName
+		if (prop.toDtoTypeReference != null) {
+			op.parameters += prop.toParameter(paramName, prop.toDtoTypeReference)
+		}
+		if (prop.opposite != null) {
+			op.documentation = '''
+				Removes the given «paramName» from this object. <p>
+				«IF prop.cascading»
+					Since the reference is a cascading reference, the opposite reference («prop.toTypeName».«prop.opposite.name.
+					toFirstLower»)
+					of the «paramName» will be handled automatically and no further coding is required to keep them in sync. 
+					See {@link «prop.toTypeName»#«prop.opposite.toSetterName»(«prop.toTypeName»)}.
+				«ENDIF»
+				
+				@param «paramName» - the property
+				@throws RuntimeException if instance is <code>disposed</code>
+			'''
+		}
+		
+		val opposite = prop.opposite
+		val cascading = prop.isCascading
+		op.body = '''
+		checkDisposed();
+		
+		«IF opposite != null»
+			«paramName».«prop.opposite.toSetterName»(null);
+		«ELSE»
+			«prop.toCollectionInternalRemoverName»(«paramName»);
+		«ENDIF»
+		'''
+		
+//		setBody(op,
+//			[ // ITreeAppendable
+//				if(it == null) return
+//				val p = it.trace(prop);
+//				p += prop.toCheckDisposedCall()
+//				if (prop.opposite != null) {
+//					p >> "if (isCopy())" >>> "{"
+//						p >>> "// avoid opposite reference update"
+//						p >> prop.toCollectionInternalGetterName + "().remove(" + paramName + ");"
+//					p <<< "} else {" 
+//					p >>> paramName + "." + prop.opposite.toSetterName + "(null);"
+//					p <<< "}"
+//				} else {
+//					p >> prop.toCollectionInternalGetterName + "().remove(" + paramName + ");"
+//				}
+//			])
+		return associate(prop, op);
+	}
+
+	def JvmOperation toProxyRemover(LDtoAbstractReference prop, String propertyName) {
+		val paramName = prop.toTypeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionRemoverName
+		op.parameters += prop.toParameter(paramName, references.getTypeForName(typeof(ICrossReference), prop))
+		op.documentation = '''
+			Removes the proxy cross reference «paramName» from this object. <p>
+		'''
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p += prop.toCheckDisposedCall()
+				p >> prop.toGetterName + "().remove(" + paramName + ");"
+			])
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds a remover method for a *toMany relation like
+     * <code>Order.removeFromOrderLines(OrderLine orderLine)</code>.
+     */
+	def dispatch JvmOperation toRemover(LDtoAbstractAttribute prop, String propertyName) {
+		val paramName = prop.toTypeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionRemoverName
+		if (prop.toDtoTypeReference != null) {
+			op.parameters += prop.toParameter(paramName, prop.toDtoTypeReference)
+		}
+		if (prop.opposite != null) {
+			op.documentation = '''
+				Removes the given «paramName» from this object. <p>
+				«IF prop.cascading»
+					Since the reference is a cascading reference, the opposite reference <code>«prop.toTypeName».«prop.opposite.name.
+					toFirstLower»</code> of the <code>«paramName»</code> will be handled automatically and no further coding is required to keep them in sync. 
+					See {@link «prop.toTypeName»#«prop.opposite.toSetterName»(«prop.toTypeName»)}.
+				«ENDIF»
+				
+				@param «paramName» - the property
+				@throws RuntimeException if instance is <code>disposed</code>
+			'''
+		} else {
+		}
+		val opposite = prop.opposite
+		val cascading = prop.isCascading
+		op.body = '''
+		checkDisposed();
+		
+		«IF opposite != null»
+			«paramName».«prop.opposite.toSetterName»(null);
+		«ELSE»
+			«prop.toCollectionInternalRemoverName»(«paramName»);
+		«ENDIF»
+		'''
+		return associate(prop, op);
+	}
+
+	def JvmOperation toMapperBindMethod(LDto dto) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = references.getTypeForName(Void::TYPE, dto)
+		op.simpleName = "bindMapperAccess"
+		op.parameters += dto.toParameter("mapperAccess", references.getTypeForName(typeof(IMapperAccess), dto, null))
+		op.documentation = '''
+			Called by OSGi-DS. Binds the mapper access service.
+			
+			@param service - The mapper access service
+		''';
+
+		op.body = '''
+			this.mapperAccess = mapperAccess;
+		'''
+		return associate(dto, op);
+	}
+
+	def JvmOperation toMapperUnbindMethod(LDto dto) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = references.getTypeForName(Void::TYPE, dto)
+		op.simpleName = "unbindMapperAccess"
+		op.parameters += dto.toParameter("mapperAccess", references.getTypeForName(typeof(IMapperAccess), dto, null))
+		op.documentation = '''
+			Called by OSGi-DS. Binds the mapper access service.
+			
+			@param service - The mapper access service
+		''';
+
+		op.body = '''
+			this.mapperAccess = null;
+		'''
+		return associate(dto, op);
+	}
+
+	def JvmField toMapperField(LDtoAbstractReference prop) {
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toMapperFieldName
+		jvmField.visibility = JvmVisibility::PRIVATE
+		jvmField.type = cloneWithProxies(prop.type.toMapperTypeReference)
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def JvmOperation toGetToDtoMapperAccess(LDto dto) {
+
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+
+		val dTypeParam = typesFactory.createJvmTypeParameter
+		dTypeParam.setName("D")
+		op.typeParameters += dTypeParam
+		val eTypeParam = typesFactory.createJvmTypeParameter
+		eTypeParam.name = "E"
+		op.typeParameters += eTypeParam
+
+		val dType = typesFactory.createJvmGenericType("D")
+		val dTypeRef = typesFactory.createJvmParameterizedTypeReference()
+		dTypeRef.type = dType
+		val eType = typesFactory.createJvmGenericType("E")
+		val eTypeRef = typesFactory.createJvmParameterizedTypeReference()
+		eTypeRef.type = eType
+
+		op.returnType = references.getTypeForName(typeof(IMapper), dto, dTypeRef.cloneWithProxies,
+			eTypeRef.cloneWithProxies)
+		op.simpleName = "getToDtoMapper"
+		op.parameters +=
+			dto.toParameter("dtoClass", references.getTypeForName(typeof(Class), dto, dTypeRef.cloneWithProxies))
+		op.parameters +=
+			dto.toParameter("entityClass", references.getTypeForName(typeof(Class), dto, eTypeRef.cloneWithProxies))
+
+		op.documentation = '''
+		Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+		
+		@param dtoClass - the class of the dto that should be mapped
+		@param entityClass - the class of the entity that should be mapped
+		@return the mapper instance or <code>null</code>'''
+
+		op.body = '''
+			return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+		'''
+		return associate(dto, op);
+	}
+	
+	def JvmOperation toGetToEntityMapperAccess(LDto dto) {
+
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+
+		val dTypeParam = typesFactory.createJvmTypeParameter
+		dTypeParam.setName("D")
+		op.typeParameters += dTypeParam
+		val eTypeParam = typesFactory.createJvmTypeParameter
+		eTypeParam.name = "E"
+		op.typeParameters += eTypeParam
+
+		val dType = typesFactory.createJvmGenericType("D")
+		val dTypeRef = typesFactory.createJvmParameterizedTypeReference()
+		dTypeRef.type = dType
+		val eType = typesFactory.createJvmGenericType("E")
+		val eTypeRef = typesFactory.createJvmParameterizedTypeReference()
+		eTypeRef.type = eType
+
+		op.returnType = references.getTypeForName(typeof(IMapper), dto, dTypeRef.cloneWithProxies,
+			eTypeRef.cloneWithProxies)
+		op.simpleName = "getToEntityMapper"
+		op.parameters +=
+			dto.toParameter("dtoClass", references.getTypeForName(typeof(Class), dto, dTypeRef.cloneWithProxies))
+		op.parameters +=
+			dto.toParameter("entityClass", references.getTypeForName(typeof(Class), dto, eTypeRef.cloneWithProxies))
+
+		op.documentation = '''
+		Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+		
+		@param dtoClass - the class of the dto that should be mapped
+		@param entityClass - the class of the entity that should be mapped
+		@return the mapper instance or <code>null</code>'''
+
+		op.body = '''
+			return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+		'''
+		return associate(dto, op);
+	}
+
+	def JvmOperation toMapToDto(LDto dto) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, dto)
+		op.simpleName = "mapToDTO"
+		op.parameters += dto.toParameter("dto", dto.findDtoTypeReference)
+		op.parameters += dto.toParameter("entity", dto.wrappedTypeJvm?.cloneWithProxies)
+		op.parameters += dto.toParameter("context", references.getTypeForName(typeof(MappingContext), dto))
+		op.documentation = '''
+			Maps the entity {@link «dto.wrappedType.toName»} to the dto {@link «dto.toName»}.
+			
+			@param dto - The target dto
+			@param entity - The source entity
+			@param context - The context to get information about depth,...
+		''';
+
+		op.body = '''
+			if(context == null){
+				throw new IllegalArgumentException("Please pass a context!");
+			}
+			«IF !dto.wrappedType.isBean»
+				context.register(createDtoHash(entity), dto);
+				
+			«ENDIF»
+			«IF dto.superType != null»
+				super.mapToDTO(dto, entity, context);
+				
+			«ENDIF»
+			«FOR f : dto.features.filter[inherited || mapper?.toDTO != null]»
+				«IF (!f.bounds.toMany)»
+«««					Do not map containerreference by default -> Causes Loop!»
+«««					«IF f.isContainerReference»
+«««					if(dto.get«f.toName.toFirstUpper»() == null) {
+«««						// «f.toName» is container property. So check for null to avoid looping
+«««						dto.set«f.toName.toFirstUpper»(«f.toMapPropertyToDto»(entity, context));
+«««					}
+«««					«ELSE»
+					dto.set«f.toName.toFirstUpper»(«f.toMapPropertyToDto»(entity, context));
+«««					«ENDIF»
+				«ELSE»
+«««		REPLACED BY installLazyCollections			if(dto.«f.toGetterName»().isEmpty()) {
+«««						for(«f.toDtoTypeReference.qualifiedName» _dtoValue : «f.toMapPropertyToDto»(entity, context)) {
+«««							dto.«f.toCollectionAdderName»(_dtoValue);
+«««						}
+«««					}
+				«ENDIF»
+			«ENDFOR»
+		'''
+		return associate(dto, op);
+	}
+	
+	def JvmOperation toInstallLazyCollections(LDto dto) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = references.getTypeForName(Void::TYPE, dto)
+		op.simpleName = "installLazyCollections"
+		op.documentation = '''
+			Installs lazy collection resolving for entity {@link «dto.wrappedType.toName»} to the dto {@link «dto.toName»}.
+		''';
+
+		op.body = '''
+			«IF dto.superType != null»
+				super.installLazyCollections();
+			«ENDIF»
+			«FOR f : dto.references.filter[inherited && !dto.wrappedType.isBean]»
+				«IF (f.bounds.toMany)»
+					«IF (f.isContainmentReference)»
+						«f.toName» = new org.eclipse.osbp.dsl.dto.lib.OppositeContainmentDtoList<>(
+										org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(),
+										«f.toDtoTypeReference.simpleName».class, "«f.opposite.name».«(f.opposite as LReference).toDtoIdAttribute»",
+										(java.util.function.Supplier<Object> & Serializable) () -> this.get«dto.idAttribute.name.toFirstUpper»());
+					«ELSE»
+						«f.toName» = new org.eclipse.osbp.dsl.dto.lib.OppositeDtoList<>(
+										org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(),
+										«f.toDtoTypeReference.simpleName».class, "«f.opposite.name».«(f.opposite as LReference).toDtoIdAttribute»",
+										(java.util.function.Supplier<Object> & Serializable) () -> this.get«dto.idAttribute.name.toFirstUpper»());
+					«ENDIF»
+				«ENDIF»
+			«ENDFOR»
+		'''
+		return associate(dto, op);
+	}
+	
+	def String toDtoIdAttribute(LReference ref) {
+		ref.toRawType.idAttribute.name
+	}
+
+	def JvmOperation toMapToEntity(LDto dto) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, dto)
+		op.simpleName = "mapToEntity"
+		op.parameters += dto.toParameter("dto", dto.findDtoTypeReference)
+		op.parameters += dto.toParameter("entity", dto.wrappedTypeJvm?.cloneWithProxies)
+		op.parameters += dto.toParameter("context", references.getTypeForName(typeof(MappingContext), dto))
+		op.documentation = '''
+			Maps the dto {@link «dto.toName»} to the entity {@link «dto.wrappedType.toName»}.
+			
+			@param dto - The source dto
+			@param entity - The target entity
+			@param context - The context to get information about depth,...
+		''';
+
+		op.body = '''
+			if(context == null){
+				throw new IllegalArgumentException("Please pass a context!");
+			}
+			
+			«IF !dto.wrappedType.isBean»
+				context.register(createEntityHash(dto), entity);
+				context.registerMappingRoot(createEntityHash(dto), dto);
+			«ENDIF»
+			«IF dto.superType != null»
+				super.mapToEntity(dto, entity, context);
+			«ENDIF»
+
+			«FOR f : dto.features.filter[inherited || mapper?.fromDTO != null]»
+				«IF!f.bounds.toMany»
+					«IF !f.derived»
+						entity.set«f.toName.toFirstUpper»(«f.toMapPropertyToEntity»(dto, entity, context));
+					«ENDIF»
+				«ELSE»
+					«f.toMapPropertyToEntity»(dto, entity, context);
+				«ENDIF»
+			«ENDFOR»
+		'''
+
+		return associate(dto, op);
+	}
+
+	//	def JvmOperation toMapToDtoProperty(LDtoFeature prop) {
+	//		val LDto dto = prop.eContainer as LDto
+	//		val op = typesFactory.createJvmOperation();
+	//		op.visibility = JvmVisibility::PROTECTED
+	//		op.returnType = references.getTypeForName(Void::TYPE, prop)
+	//		op.simpleName = prop.toMapPropertyToDto
+	//
+	//		associate(prop, op);
+	//  
+	//		initializeSafely(op) [
+	//			parameters += prop.toParameter("dto", dto.wrappedType.toTypeReference)
+	//			parameters += prop.toParameter("entity", dto.toTypeReference)
+	//			documentation = '''
+	//				Maps the property «prop.toName» to the given entity to the given dto.
+	//				
+	//				@param dto - The target dto
+	//				@param entity - The source entity
+	//			''';
+	//			val XExpression mapExpression = prop.toMapToDtoExpression
+	//			if (mapExpression != null) {
+	//				body = mapExpression
+	//			} else {
+	//				body = []
+	//			}
+	//		]
+	//	}
+	//
+	//	def JvmOperation toMapToEntityProperty(LDtoFeature prop) {
+	//		val LDto dto = prop.eContainer as LDto
+	//		
+	//		val op = typesFactory.createJvmOperation();
+	//		op.visibility = JvmVisibility::PROTECTED
+	//		op.returnType = references.getTypeForName(Void::TYPE, prop)
+	//		op.simpleName = prop.toMapPropertyToEntity
+	//
+	//		associate(prop, op);
+	//
+	//		initializeSafely(op) [
+	//			parameters += op.toParameter("in", dto.toTypeReference)
+	//			parameters += op.toParameter("out", dto.wrappedType.toTypeReference)
+	//			documentation = '''
+	//				Maps the property «prop.toName» from the given dto to the given entity.
+	//				
+	//				@param dto - The source dto
+	//				@param entity - The target entity
+	//			'''
+	//			val mapExpression = prop.toMapToEntityExpression
+	//			associate(prop, mapExpression)
+	//			if (mapExpression != null) {
+	//				body = mapExpression
+	//			} else {
+	//				body = []
+	//			}
+	//		]
+	//
+	//	}
+	/**
+	 * returns the mapper class type
+	 */
+	def JvmGenericType toMapperJvmType(LDto lDto) {
+		val type = createJvmGenericType(lDto, lDto.toFqnMapperName)
+		associate(lDto, type)
+	}
+
+	def dispatch JvmOperation toMapToDtoProperty(LDtoAbstractAttribute prop) {
+		val LDto dto = prop.eContainer as LDto
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = prop.toDtoTypeReferenceWithMultiplicity
+		op.simpleName = prop.toMapPropertyToDto
+
+		associate(prop, op);
+
+		initializeSafely(op) [
+			parameters += prop.toParameter("in", dto.wrappedTypeJvm?.cloneWithProxies)
+			parameters += prop.toParameter("context", references.getTypeForName(typeof(MappingContext), prop))
+			documentation = '''
+				Maps the property «prop.toName» from the given entity to dto property.
+				
+				@param in - The source entity
+				@param context - The context to get information about depth,...
+				@return the mapped value
+			''';
+			val XExpression mapExpression = prop.toMapToDtoExpression
+			if (mapExpression != null) {
+				body = mapExpression
+			} else {
+				if (prop.toRawType instanceof LBean) {
+					if (prop.bounds.toMany) {
+						body = '''
+						org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toRawType.toDTOBeanSimpleName», «prop.toRawType.toName»> mapper = getToDtoMapper(«prop.toRawType.toDTOBeanSimpleName».class, «prop.toRawType.toName».class);
+						if(mapper == null) {
+							throw new IllegalStateException("Mapper must not be null!");
+						} 
+						
+						if (context.isDetectRecursion(«prop.toRawType.toDTOBeanSimpleName».class)) {
+							return java.util.Collections.emptyList();
+						}
+						
+						context.increaseLevel();
+						List<«prop.toRawType.toDTOBeanSimpleName»> results = new java.util.ArrayList<«prop.toRawType.toDTOBeanSimpleName»>();
+						for («prop.toRawType.toName» _entity : in.«prop.toGetterName»()) {
+							«prop.toDtoTypeReference.qualifiedName» _dto = context.get(mapper.createDtoHash(_entity));
+							if (_dto == null) {
+								_dto = mapper.createDto();
+								mapper.mapToDTO(_dto, _entity, context);
+							} else {
+								if(context.isRefresh()){
+									mapper.mapToDTO(_dto, _entity, context);
+								}
+							}
+							results.add(_dto);
+						}
+						context.decreaseLevel();
+						return results;'''
+					} else {
+						body = '''
+						if(in.get«prop.toName.toFirstUpper»() != null) {
+							// find a mapper that knows how to map the concrete input type.
+							org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toRawType.toDTOBeanSimpleName», «prop.toRawType.toName»> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toRawType.toDTOBeanSimpleName», «prop.toRawType.toName»>) getToDtoMapper(«prop.toRawType.toDTOBeanSimpleName».class, in.get«prop.toName.toFirstUpper»().getClass());
+							if(mapper == null) {
+								throw new IllegalStateException("Mapper must not be null!");
+							}
+						
+							«prop.toRawType.toDTOBeanSimpleName» dto = null;
+						«IF !prop.toRawType.isBean»
+							dto = context.get(mapper.createDtoHash(in.«prop.toGetterName»()));
+							if(dto != null) {
+								if(context.isRefresh()){
+									mapper.mapToDTO(dto, in.«prop.toGetterName»(), context);
+								}
+								return dto;
+							}
+							
+						«ENDIF»
+							context.increaseLevel();
+							dto = mapper.createDto();
+							mapper.mapToDTO(dto, in.«prop.toGetterName»(), context);
+							context.decreaseLevel();
+							return dto;
+						} else {
+							return null;
+						}
+						'''
+					}
+				} else {
+					if (prop.typeIsBoolean) {
+						body = '''return in.is«prop.toName.toFirstUpper»();'''
+					} else if(prop.typeIsEnum) {
+						body = '''
+						if(in.get«prop.toName.toFirstUpper»() != null) {
+							return «prop.toRawType.toDTOEnumFullyQualifiedName».valueOf(in.get«prop.toName.toFirstUpper»().name());
+						} else {
+							return null;
+						}
+						'''
+					} else {
+						body = '''return in.get«prop.toName.toFirstUpper»();'''
+					}
+				}
+			}
+		]
+	}
+
+	def dispatch JvmOperation toMapToDtoProperty(LDtoAbstractReference prop) {
+		val LDto dto = prop.eContainer as LDto
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = prop.toDtoTypeReferenceWithMultiplicity
+
+		op.simpleName = prop.toMapPropertyToDto
+
+		associate(prop, op);
+
+		initializeSafely(op) [
+			parameters += prop.toParameter("in", dto.wrappedTypeJvm?.cloneWithProxies)
+			parameters += prop.toParameter("context", references.getTypeForName(typeof(MappingContext), prop))
+			documentation = '''
+				Maps the property «prop.toName» from the given entity to the dto.
+				
+				@param in - The source entity
+				@param context - The context to get information about depth,...
+				@return «IF (!prop.bounds.toMany)»the mapped dto«ELSE»A list of mapped dtos«ENDIF»
+			''';
+			val XExpression mapExpression = prop.toMapToDtoExpression
+			if (mapExpression != null) {
+				body = mapExpression
+			} else {
+				if (prop.bounds.toMany) {
+					body = '''
+«««					org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toTypeName», «prop.toRawType.toName»> mapper = getToDtoMapper(«prop.toTypeName».class, «prop.toRawType.toName».class);
+«««					if(mapper == null) {
+«««						throw new IllegalStateException("Mapper must not be null!");
+«««					} 
+«««					
+«««					if (context.isDetectRecursion(«prop.toTypeName».class)) {
+«««						return java.util.Collections.emptyList();
+«««					}
+«««					
+«««					context.increaseLevel();
+«««					List<«prop.toTypeName»> results = new java.util.ArrayList<«prop.toTypeName»>();
+«««					for («prop.toRawType.toName» _entity : in.get«prop.toName.toFirstUpper»()) {
+«««						«prop.toTypeName» _dto = context.get(mapper.createDtoHash(_entity));
+«««						if (_dto == null) {
+«««							_dto = mapper.createDto();
+«««							mapper.mapToDTO(_dto, _entity, context);
+«««						} else {
+«««							if(context.isRefresh()){
+«««								mapper.mapToDTO(_dto, _entity, context);
+«««							}
+«««						}
+«««						results.add(_dto);
+«««					}
+«««					context.decreaseLevel();
+					// nothing to do here. Mapping is done by OppositeLists
+					return null;'''
+				} else {
+					body = '''
+					if(in.get«prop.toName.toFirstUpper»() != null) {
+						// find a mapper that knows how to map the concrete input type.
+						org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toTypeName», «prop.toRawType.toName»> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toTypeName», «prop.toRawType.toName»>) getToDtoMapper(«prop.toTypeName».class, in.get«prop.toName.toFirstUpper»().getClass());
+						if(mapper == null) {
+							throw new IllegalStateException("Mapper must not be null!");
+						}
+						«prop.toTypeName» dto = null;
+						«IF !prop.toRawType.isBean»
+							dto = context.get(mapper.createDtoHash(in.get«prop.toName.toFirstUpper»()));
+							if(dto != null) {
+								if(context.isRefresh()){
+									mapper.mapToDTO(dto, in.«prop.toGetterName»(), context);
+								}
+								return dto;
+							}
+							
+						«ENDIF»
+						context.increaseLevel();
+						dto = mapper.createDto();
+						mapper.mapToDTO(dto, in.get«prop.toName.toFirstUpper»(), context);
+						context.decreaseLevel();
+						return dto;
+					} else {
+						return null;
+					}
+					'''
+				}
+			}
+		]
+	}
+	
+	def JvmGenericType findJvmType(LDto lDto){
+		return (associator as IJvmModelAssociations).getPrimaryJvmElement(lDto) as JvmGenericType
+	}
+
+	def dispatch JvmOperation toMapToEntityProperty(LDtoAbstractAttribute prop) {
+		val LDto dto = prop.eContainer as LDto
+		
+		// TODO change all stuff like this
+		val JvmGenericType dtoJvmType =	dto.findJvmType
+		
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = prop.toRawTypeReferenceWithMultiplicity
+		op.simpleName = prop.toMapPropertyToEntity
+
+		associate(prop, op);
+
+		initializeSafely(op) [
+			// TODO find typeref in sames resource!
+			parameters += prop.toParameter("in", dtoJvmType.newTypeRef(null))
+			parameters += prop.toParameter("parentEntity", dto.wrappedTypeJvm?.cloneWithProxies)
+			parameters += prop.toParameter("context", references.getTypeForName(typeof(MappingContext), prop))
+			documentation = '''
+				Maps the property «prop.toName» from the given entity to dto property.
+				
+				@param in - The source entity
+				@param parentEntity - The parentEntity
+				@param context - The context to get information about depth,...
+				@return the mapped value
+			''';
+			val XExpression mapExpression = prop.toMapToEntityExpression
+			if (mapExpression != null) {
+				body = mapExpression
+			} else {
+				if (prop.toRawType instanceof LBean) {
+					if (prop.bounds.toMany) {
+						body = '''
+						org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toRawType.toDTOBeanSimpleName», «prop.toRawType.toName»> mapper = getToEntityMapper(«prop.toRawType.toDTOBeanSimpleName».class, «prop.toRawType.toName».class);
+						if(mapper == null) {
+							throw new IllegalStateException("Mapper must not be null!");
+						}
+						
+						List<«prop.toRawType.toName»> results = new java.util.ArrayList<«prop.toRawType.toName»>();
+						for («prop.toRawType.toDTOBeanSimpleName» _dto : in.«prop.toGetterName»()) {
+							«prop.toRawType.toName» _entity = mapper.createEntity();
+							mapper.mapToEntity(_dto, _entity, context);
+							results.add(_entity);
+						}
+						return results;'''
+					} else {
+						body = '''
+						if(in.get«prop.toName.toFirstUpper»() != null) {
+							// find a mapper that knows how to map the concrete input type.
+							org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toRawType.toDTOBeanSimpleName», «prop.toRawType.toName»> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toRawType.toDTOBeanSimpleName», «prop.toRawType.toName»>) getToEntityMapper(in.get«prop.toName.toFirstUpper»().getClass(), «prop.toRawType.toName».class);
+							if(mapper == null) {
+								throw new IllegalStateException("Mapper must not be null!");
+							}
+						
+							«prop.toRawType.toName» entity = mapper.createEntity();
+							mapper.mapToEntity(in.«prop.toGetterName»(), entity, context);
+							return entity;							
+						} else {
+							return null;
+						}'''
+					}
+				} else {
+					if (prop.typeIsBoolean) {
+						body = '''return in.is«prop.toName.toFirstUpper»();'''
+					} else if(prop.typeIsEnum) {
+						body = '''
+						if(in.get«prop.toName.toFirstUpper»() != null) {
+							return «prop.toRawType.fullyQualifiedName.toString».valueOf(in.get«prop.toName.toFirstUpper»().name());
+						} else {
+							return null;
+						}
+						'''
+					} else {
+						body = '''return in.get«prop.toName.toFirstUpper»();'''
+					}
+				}
+			}
+		]
+	}
+
+	def dispatch JvmOperation toMapToEntityProperty(LDtoAbstractReference prop) {
+		val LDto dto = prop.eContainer as LDto
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = prop.toRawTypeReferenceWithMultiplicity
+		op.simpleName = prop.toMapPropertyToEntity
+
+		associate(prop, op);
+
+		initializeSafely(op) [
+			parameters += prop.toParameter("in", dto.findDtoTypeReference)
+			parameters += prop.toParameter("parentEntity", dto.wrappedTypeJvm?.cloneWithProxies)
+			parameters += prop.toParameter("context", references.getTypeForName(typeof(MappingContext), prop))
+			documentation = '''
+				Maps the property «prop.toName» from the given dto to the entity.
+				
+				@param in - The source dto
+				@param parentEntity - The parent entity
+				@param context - The context to get information about depth,...
+				@return «IF (!prop.bounds.toMany)»the mapped entity«ELSE»A list of mapped entities«ENDIF»
+			''';
+			val XExpression mapExpression = prop.toMapToEntityExpression
+			if (mapExpression != null) {
+				body = mapExpression
+			} else {
+				if (prop.bounds.toMany) {
+					body = '''
+					org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toTypeName», «prop.toRawType.toName»> mapper = getToEntityMapper(«prop.toTypeName».class, «prop.toRawType.toName».class);
+					if(mapper == null) {
+						throw new IllegalStateException("Mapper must not be null!");
+					}
+					
+					org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<«prop.toTypeName»> childsList = 
+						(org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<«prop.toTypeName»>) in.internalGet«prop.toName.toFirstUpper»();
+					
+					// if entities are being added, then they are passed to
+					// #addToContainerChilds of the parent entity. So the container ref is setup
+					// properly!
+					// if entities are being removed, then they are passed to the
+					// #internalRemoveFromChilds method of the parent entity. So they are
+					// removed directly from the list of entities.
+					childsList.mapToEntity(mapper,
+							parentEntity::addTo«prop.toName.toFirstUpper»,
+							parentEntity::internalRemoveFrom«prop.toName.toFirstUpper»);
+					return null;
+					'''
+				} else {
+					body = '''
+					if(in.get«prop.toName.toFirstUpper»() != null) {
+						// find a mapper that knows how to map the concrete input type.
+						org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toTypeName», «prop.toRawType.toName»> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<«prop.toTypeName», «prop.toRawType.toName»>) getToEntityMapper(in.get«prop.toName.toFirstUpper»().getClass(), «prop.toRawType.toName».class);
+						if(mapper == null) {
+							throw new IllegalStateException("Mapper must not be null!");
+						}
+					
+						«prop.toRawType.toName» entity = null;
+						«IF !prop.toRawType.isBean»
+							entity = context.get(mapper.createEntityHash(in.get«prop.toName.toFirstUpper»()));
+							if(entity != null) {
+								return entity;
+							} else {
+								entity = («prop.toRawType.toName») context
+									.findEntityByEntityManager(«prop.toRawType.toName».class, in.get«prop.toName.toFirstUpper»().get«prop.toRawType.idAttribute.toName.toFirstUpper»());
+								if (entity != null) {
+									context.register(mapper.createEntityHash(in.get«prop.toName.toFirstUpper»()), entity);
+									return entity;
+								}
+							}
+
+						«ENDIF»
+						entity = mapper.createEntity();
+						mapper.mapToEntity(in.get«prop.toName.toFirstUpper»(), entity, context);	
+						return entity;
+					} else {
+						return null;
+					}	
+					'''
+				}
+			}
+		]
+	}
+	
+	def findDtoTypeReference(LDto dto){
+		return getBySelector(dto, "dto").newTypeRef(null)
+	}
+	
+	def findDtoMapperTypeReference(LDto dto){
+		return getBySelector(dto, "mapper").newTypeRef(null)
+	}
+
+	def findSuperDtoMapperType(LDto dto, JvmTypeReference dtoType, JvmTypeReference entityType){
+		var type = getBySelector(dto.superType, "mapper")
+		if(type == null) {
+			val JvmParameterizedTypeReference ref = dto.superTypeMapperJvm.cloneWithProxies as JvmParameterizedTypeReference
+			ref.arguments += dtoType
+			ref.arguments += entityType
+			return ref
+		}else{
+			val JvmParameterizedTypeReference ref =  type.newTypeRef(null) as JvmParameterizedTypeReference
+			ref.arguments.clear
+			ref.arguments += dtoType
+			ref.arguments += entityType
+			return ref
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/MethodNamingExtensions.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/MethodNamingExtensions.xtend
new file mode 100644
index 0000000..56d441c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/extensions/MethodNamingExtensions.xtend
@@ -0,0 +1,108 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.extensions
+
+import com.google.inject.Inject
+import org.eclipse.osbp.dsl.common.xtext.extensions.NamingExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature
+import org.eclipse.osbp.dsl.semantic.dto.util.NamingConventionsUtil
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.XExpression
+
+class MethodNamingExtensions extends NamingExtensions {
+
+	@Inject extension DtoModelExtensions;
+	@Inject extension IQualifiedNameProvider;
+
+	def toMapPropertyToDto(LDtoFeature prop) {
+		"toDto_" + prop.toName
+	}
+
+	def toMapPropertyToEntity(LDtoFeature prop) {
+		"toEntity_" + prop.toName
+	}
+
+	def toMapperFieldName(LDtoFeature prop) {
+		prop.toName + "Mapper"
+	}
+
+	def toMapperName(LType dto) {
+		if (dto == null || dto.toName == null) {
+			return "setMISSING_NAME"
+		}
+		dto.toName.toMapperName
+	}
+
+	def toMapperName(String name) {
+		name + "Mapper"
+	}
+
+	def toFqnMapperName(LType dto) {
+		if (dto == null || dto.toName == null) {
+			return "setMISSING_NAME"
+		}
+		dto.toMapperNamePackage + "." + dto.toMapperName
+	}
+
+	def toMapperNamePackage(LType dto) {
+		if (dto == null || dto.fullyQualifiedName == null) {
+			return "setMISSING_NAME"
+		}
+		dto.fullyQualifiedName.skipLast(1).append("mapper").toString
+	}
+
+	def String toDTOBeanFullyQualifiedName(LType type) {
+		val LTypedPackage pkg = type.package as LTypedPackage
+		if (type instanceof LDto) {
+			return pkg.name + "." + type.toDTOBeanSimpleName
+		} else {
+			return pkg.toDtoPackageName + "." + type.toDTOBeanSimpleName
+		}
+	}
+
+	def String toDTOBeanSimpleName(LType type) {
+		val name = type?.name
+		if (type instanceof LDto) {
+			return name
+		} else {
+			return name.toDTOBeanSimpleName
+		}
+	}
+
+	def String toDTOEnumFullyQualifiedName(LType type) {
+		val LTypedPackage pkg = type.package as LTypedPackage
+		if (type instanceof LDto) {
+			return pkg.name + "." + type.toDTOEnumSimpleName
+		} else {
+			return pkg.toDtoPackageName + "." + type.toDTOEnumSimpleName
+		}
+	}
+
+	def String toDTOEnumSimpleName(LType type) {
+		return type?.name
+	}
+
+	def String toDTOBeanSimpleName(String name) {
+		return NamingConventionsUtil.toDtoName(name)
+	}
+
+	def XExpression toMapToEntityExpression(LDtoFeature prop) {
+		if(prop.mapper != null) return prop.mapper.fromDTO else null
+	}
+
+	def XExpression toMapToDtoExpression(LDtoFeature prop) {
+		if(prop.mapper != null) return prop.mapper.toDTO else null
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/formatting/DtoGrammarFormatter.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/formatting/DtoGrammarFormatter.java
new file mode 100644
index 0000000..e69bb0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/formatting/DtoGrammarFormatter.java
@@ -0,0 +1,125 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.dsl.dto.xtext.formatting;
+
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.osbp.dsl.common.xtext.formatting.CommonGrammarFormatter;
+import org.eclipse.osbp.dsl.dto.xtext.services.DtoGrammarGrammarAccess;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ * 
+ * Also see org.eclipse.xtext.xtext.XtextFormattingTokenSerializer as an
+ * example
+ */
+public class DtoGrammarFormatter extends CommonGrammarFormatter {
+
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		configure(c, (DtoGrammarGrammarAccess) getGrammarAccess());
+	}
+
+	public void configure(FormattingConfig c, DtoGrammarGrammarAccess ga) {
+		DtoGrammarGrammarAccess f = (DtoGrammarGrammarAccess) getGrammarAccess();
+
+		super.configure(c, ga.getCommonGrammarGrammarAccess());
+
+		configureClassDef(c, f.getClassAccess());
+		configureDtoFeature(c, f.getDtoFeatureAccess());
+		configureDtoMapper(c, f.getDtoMapperAccess());
+		configureLimitedMapperDtoMapper(c, f.getLimitedMapperDtoMapperAccess());
+
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).after(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(1, 1, 1).after(f.getML_COMMENTRule());
+
+		for (Keyword kw : ga.findKeywords("@")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(")")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(";")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(",")) {
+			c.setNoSpace().before(kw);
+		}
+	}
+
+	protected void configureClassDef(FormattingConfig c,
+			DtoGrammarGrammarAccess.ClassElements ele) {
+		c.setLinewrap().around(ele.getAnnotationsAssignment_1());
+		c.setLinewrap().around(ele.getRule());
+
+		// c.setIndentationIncrement().after(
+		// ele.getLeftCurlyBracketKeyword_2_0_6());
+		// c.setIndentationDecrement().before(
+		// ele.getRightCurlyBracketKeyword_2_0_8());
+		c.setLinewrap(2).after(ele.getRightCurlyBracketKeyword_2_1_9());
+	}
+
+	protected void configureDtoFeature(FormattingConfig c,
+			DtoGrammarGrammarAccess.DtoFeatureElements ele) {
+		c.setLinewrap().around(ele.getAnnotationsAssignment_1());
+		// Setting for ";"
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_0_3_1());
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_1_5_1());
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_2_1_5());
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_1_5_1());
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_5_7());
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_6_2_1());
+		c.setNoSpace().before(ele.getSemicolonKeyword_2_7_7_1());
+
+		c.setLinewrap(1, 1, 2).around(ele.getRule());
+		c.setIndentationIncrement().before(ele.getRule());
+		c.setIndentationDecrement().after(ele.getRule());
+	}
+
+	protected void configureDtoMapper(FormattingConfig c,
+			DtoGrammarGrammarAccess.DtoMapperElements ele) {
+		c.setLinewrap(1, 1, 2).after(ele.getRule());
+
+		// Settings for "{" and "}"
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_0());
+		c.setLinewrap().after(ele.getLeftCurlyBracketKeyword_0());
+
+		c.setLinewrap(1).before(ele.getRightCurlyBracketKeyword_4());
+		c.setIndentationDecrement().before(ele.getRightCurlyBracketKeyword_4());
+		c.setLinewrap(1, 1, 2).after(ele.getRightCurlyBracketKeyword_4());
+	}
+
+	protected void configureLimitedMapperDtoMapper(FormattingConfig c,
+			DtoGrammarGrammarAccess.LimitedMapperDtoMapperElements ele) {
+		c.setLinewrap(1, 1, 2).around(ele.getRule());
+
+		// Settings for "{" and "}"
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_0());
+		c.setIndentationDecrement().before(ele.getRightCurlyBracketKeyword_3());
+		c.setLinewrap(2).after(ele.getRightCurlyBracketKeyword_3());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.xtend
new file mode 100644
index 0000000..9b42052
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/ComponentGenerator.xtend
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.generator
+
+import com.google.inject.Inject
+import java.util.List
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.osbp.dsl.dto.xtext.extensions.MethodNamingExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+
+class ComponentGenerator {
+
+	@Inject extension MethodNamingExtensions
+	@Inject extension IQualifiedNameProvider
+ 
+	def getServiceContent(LDto dto) '''
+		<?xml version="1.0" encoding="UTF-8"?>
+		<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="«dto.toFqnMapperName.toLowerCase»">
+		       <implementation class="«dto.toFqnMapperName»"/>
+		       <service>
+				<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+				  </service>
+				  
+				«val tempDtos = dto.withParent»
+				<property name="fordto.from.entity" type="String" value="«dto.wrappedType.fullyQualifiedName.toString»"/>
+				«IF tempDtos.length > 1»
+					<property name="fordto.to.dto" type="String">«tempDtos.toOrString»
+					</property>
+				«ELSE»
+					<property name="fordto.to.dto" type="String" value="«dto.fullyQualifiedName.toString»"/>
+				«ENDIF»
+
+				<property name="forentity.from.dto" type="String" value="«dto.fullyQualifiedName.toString»"/>
+				«val tempEntities = dto.wrappedType.withParent»
+				«IF tempEntities.length > 1»
+					<property name="forentity.to.entity" type="String">«tempEntities.toOrString»
+					</property>
+				«ELSE»
+					<property name="forentity.to.entity" type="String" value="«dto.wrappedType.fullyQualifiedName.toString»"/>
+				«ENDIF»
+				
+				<property name="service.pid" type="String" value="«dto.toFqnMapperName.toLowerCase»"/>
+				<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+						cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+		</scr:component>
+	'''
+
+	/**
+	 * Properties will be returned as a String that OSGi will interpret as a list.
+	 */
+	def String toOrString(List<LType> types) {
+		val StringBuilder b = new StringBuilder
+
+		types.forEach [
+			if (b.length > 0) {
+				b.append("\n")
+			}
+			b.append(fullyQualifiedName.toString)
+		]
+
+		return b.toString
+	}
+
+	def dispatch List<LType> getWithParent(LEntity entity) {
+		val result = <LType>newArrayList()
+		collectWithParent(result, entity)
+		return result
+	}
+
+	def void collectWithParent(List<LType> result, LEntity entity) {
+		result += entity
+
+		if (entity.superType != null) {
+			collectWithParent(result, entity.superType)
+		}
+	}
+
+	def dispatch List<LType> getWithParent(LBean bean) {
+		val result = <LType>newArrayList()
+		collectWithParent(result, bean)
+		return result
+	}
+
+	def void collectWithParent(List<LType> result, LBean bean) {
+		result += bean
+
+		if (bean.superType != null) {
+			collectWithParent(result, bean.superType)
+		}
+	}
+
+	def dispatch List<LType> getWithParent(LDto dto) {
+		val result = <LType>newArrayList()
+		collectWithParent(result, dto)
+		return result
+	}
+
+	def void collectWithParent(List<LType> result, LDto dto) {
+		result += dto
+
+		if (dto.superType != null) {
+			collectWithParent(result, dto.superType)
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.xtend
new file mode 100644
index 0000000..3cab479
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/Generator.xtend
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.generator
+
+import com.google.inject.Inject
+import java.io.StringWriter
+import java.io.Writer
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.emf.ecore.xmi.XMLResource
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmType
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.xbase.compiler.DisableCodeGenerationAdapter
+import org.eclipse.xtext.xbase.compiler.IGeneratorConfigProvider
+import org.eclipse.osbp.dsl.dto.lib.IMapper
+import org.eclipse.osbp.dsl.dto.xtext.extensions.MethodNamingExtensions
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoModel
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingGenerator
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+class Generator extends DelegatingGenerator {
+
+	static final Logger LOGGER = LoggerFactory.getLogger(typeof(Generator))
+
+	@Inject extension MethodNamingExtensions
+	@Inject extension ComponentGenerator
+	@Inject extension SuperTypeCollector
+	@Inject
+	TypeReferences typeRefs
+
+	@Inject IGeneratorConfigProvider generatorConfigProvider
+
+	override dispatch void internalDoGenerate(JvmDeclaredType type, IFileSystemAccess fsa) {
+		if (DisableCodeGenerationAdapter.isDisabled(type))
+			return;
+		if (type.qualifiedName != null) {
+			val log = TimeLogger.start(typeof(Generator));
+			val JvmType mapper = typeRefs.getTypeForName(typeof(IMapper), type, null).type
+			if (mapper instanceof JvmDeclaredType && type.isSuperType(mapper as JvmDeclaredType)) {
+				fsa.generateFile(type.qualifiedName.replace('.', '/') + '.java', "Dto-Mappers",
+					type.generateType(generatorConfigProvider.get(type)))
+			} else {
+				val log2 = TimeLogger.start(typeof(Generator));
+				val output = type.generateType(generatorConfigProvider.get(type))
+				log2.stop(LOGGER, "raw class generation for " + type.qualifiedName)
+				fsa.generateFile(type.qualifiedName.replace('.', '/') + '.java', output)
+			}
+			log.stop(LOGGER, "generated " + type.qualifiedName)
+		}
+	}
+
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+		super.doGenerate(input, fsa)
+
+		for (tmp : input.allContents.filter[if(it instanceof LDto) wrappedType != null else false].toList) {
+			val LDto dto = tmp as LDto
+			val log = TimeLogger.start(typeof(Generator));
+			fsa.deleteFile(dto.toServiceComponentName);
+			fsa.generateFile(dto.toServiceComponentName, "OSGI-INF", dto.serviceContent);
+			log.stop(LOGGER, "generated " + dto.toServiceComponentName)
+		}
+
+	}
+
+//	def toBinary(Resource input, IFileSystemAccess fsa) {
+//		super.doGenerate(input, fsa)
+//
+//		val XMLResource outputRes = new XMLResourceImpl
+//		val LDtoModel lModel = input.contents.get(0) as LDtoModel
+//		outputRes.contents += EcoreUtil.copy(lModel)
+//
+//		val Writer writer = new StringWriter
+//		outputRes.save(writer, null)
+//
+//		fsa.generateFile(input.URI.lastSegment + ".dtos_bin", "ModelBin", writer.toString)
+//	}
+
+	def toServiceComponentName(LDto dto) {
+		dto.toFqnMapperName + ".xml"
+	}
+
+	def toServiceName(Resource input) {
+		val r = input.URI.lastSegment.replace("dtos", "services")
+		return r
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/OutputConfigurationProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/OutputConfigurationProvider.java
new file mode 100644
index 0000000..40e50c1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/OutputConfigurationProvider.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.xtext.generator;
+
+import java.util.Set;
+
+import org.eclipse.xtext.generator.OutputConfiguration;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingOutputConfigurationProvider;
+
+public class OutputConfigurationProvider extends
+		DelegatingOutputConfigurationProvider {
+
+	/**
+	 * @return a set of {@link OutputConfiguration} available for the generator
+	 */
+	public Set<OutputConfiguration> getOutputConfigurations() {
+		Set<OutputConfiguration> configs = super.getOutputConfigurations();
+
+		OutputConfiguration componentOutput = new OutputConfiguration(
+				"OSGI-INF");
+		componentOutput.setDescription("OSGi-Services");
+		componentOutput.setOutputDirectory("./OSGI-INF");
+		componentOutput.setOverrideExistingResources(true);
+		componentOutput.setCreateOutputDirectory(true);
+		componentOutput.setCleanUpDerivedResources(true);
+		componentOutput.setSetDerivedProperty(true);
+		componentOutput.setKeepLocalHistory(true);
+		configs.add(componentOutput);
+
+		OutputConfiguration dtoMapperOutput = new OutputConfiguration(
+				"Dto-Mappers");
+		dtoMapperOutput.setDescription("Dto Mappers");
+		dtoMapperOutput.setOutputDirectory("./src-gen");
+		dtoMapperOutput.setOverrideExistingResources(true);
+		dtoMapperOutput.setCreateOutputDirectory(true);
+		dtoMapperOutput.setCleanUpDerivedResources(true);
+		dtoMapperOutput.setSetDerivedProperty(true);
+		dtoMapperOutput.setKeepLocalHistory(true);
+		configs.add(dtoMapperOutput);
+
+//		OutputConfiguration servicesOutput = new OutputConfiguration(
+//				"Services-DSL");
+//		servicesOutput.setDescription("Services-DSL");
+//		servicesOutput.setOutputDirectory("./service-models");
+//		servicesOutput.setOverrideExistingResources(true);
+//		servicesOutput.setCreateOutputDirectory(true);
+//		servicesOutput.setKeepLocalHistory(true);
+//		// IMPORTANT - do not change!
+//		servicesOutput.setCanClearOutputDirectory(false);
+//		servicesOutput.setCleanUpDerivedResources(false);
+//		servicesOutput.setSetDerivedProperty(false);
+//		configs.add(servicesOutput);
+
+		OutputConfiguration binOutput = new OutputConfiguration("ModelBin");
+		binOutput.setDescription("ModelBin");
+		binOutput.setOutputDirectory("./modelsbin");
+		binOutput.setOverrideExistingResources(true);
+		binOutput.setCreateOutputDirectory(true);
+		binOutput.setCleanUpDerivedResources(true);
+		binOutput.setSetDerivedProperty(true);
+		binOutput.setKeepLocalHistory(true);
+		configs.add(binOutput);
+
+		return configs;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/SuperTypeCollector.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/SuperTypeCollector.java
new file mode 100644
index 0000000..5113d74
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/generator/SuperTypeCollector.java
@@ -0,0 +1,324 @@
+/*******************************************************************************
+ * Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.dto.xtext.generator;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.common.types.JvmAnyTypeReference;
+import org.eclipse.xtext.common.types.JvmArrayType;
+import org.eclipse.xtext.common.types.JvmConstraintOwner;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmDelegateTypeReference;
+import org.eclipse.xtext.common.types.JvmGenericArrayTypeReference;
+import org.eclipse.xtext.common.types.JvmLowerBound;
+import org.eclipse.xtext.common.types.JvmMultiTypeReference;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmPrimitiveType;
+import org.eclipse.xtext.common.types.JvmSpecializedTypeReference;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.JvmTypeConstraint;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.common.types.util.TypeReferences;
+import org.eclipse.xtext.common.types.util.TypesSwitch;
+
+import com.google.common.collect.Sets;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+/**
+ * @author Sebastian Zarnekow - Initial contribution and API
+ * @author Sven Efftinge
+ */
+@Deprecated
+@Singleton
+@SuppressWarnings("restriction")
+public class SuperTypeCollector {
+
+	public interface SuperTypeAcceptor {
+		/**
+		 * @param superType a found super type
+		 * @param distance the distance to the starting type. StringBuilder has a distance 1 to 
+		 * AbstractStringBuilder, distance 1 and 2 to CharSequence and distance 2 to Appendable.
+		 */
+		boolean accept(JvmTypeReference superType, int distance);
+	}
+	
+	@Inject(optional=true)
+	private TypesFactory factory = TypesFactory.eINSTANCE;
+	
+	@Inject
+	private TypeReferences typeReferences;
+	
+	protected JvmTypeReference newRef(JvmType type) {
+		if (type instanceof JvmArrayType) {
+			JvmTypeReference componentType = newRef(((JvmArrayType) type).getComponentType());
+			JvmGenericArrayTypeReference reference = factory.createJvmGenericArrayTypeReference();
+			reference.setComponentType(componentType);
+			return reference;
+		} else {
+			JvmParameterizedTypeReference reference = factory.createJvmParameterizedTypeReference();
+			reference.setType(type);
+			return reference;
+		}
+	}
+
+	public Set<JvmTypeReference> collectSuperTypes(JvmType type) {
+		return collectSuperTypes(newRef(type));
+	}
+
+	public Set<JvmTypeReference> collectSuperTypes(JvmTypeReference type) {
+		final Set<JvmTypeReference> result = Sets.newLinkedHashSet();
+		final Set<JvmType> rawTypes = Sets.newHashSet();
+		doCollectSupertypeData(type, new SuperTypeAcceptor() {
+			public boolean accept(JvmTypeReference superType, int distance) {
+				JvmType rawType = superType.getType();
+				if (rawType != null && !rawType.eIsProxy() && rawTypes.add(superType.getType())) {
+					result.add(superType);
+					return true;
+				}
+				return false;
+			}
+		});
+		return result;
+	}
+	
+	public void collectSuperTypes(JvmTypeReference type, SuperTypeAcceptor acceptor) {
+		doCollectSupertypeData(type, acceptor);
+	}
+
+	public Set<String> collectSuperTypeNames(JvmType type) {
+		return collectSuperTypeNames(newRef(type));
+	}
+
+	public Set<JvmType> collectSuperTypesAsRawTypes(JvmTypeReference type) {
+		final Set<JvmType> result = Sets.newLinkedHashSet();
+		doCollectSupertypeData(type, new SuperTypeAcceptor() {
+			public boolean accept(JvmTypeReference superType, int distance) {
+				JvmType rawType = superType.getType();
+				if (rawType != null && !rawType.eIsProxy()) {
+					boolean notYetSeen = result.add(superType.getType());
+					return notYetSeen;
+				}
+				return false;
+			}
+		});
+		return result;
+	}
+
+	public Set<String> collectSuperTypeNames(JvmTypeReference type) {
+		final Set<String> result = Sets.newLinkedHashSet();
+		doCollectSupertypeData(type, new SuperTypeAcceptor() {
+			public boolean accept(JvmTypeReference superType, int distance) {
+				String name = getSuperTypeName(superType);
+				if (name != null)
+					return result.add(name);
+				return false;
+			}
+			
+			public String getSuperTypeName(JvmTypeReference typeReference) {
+				if (typeReference instanceof JvmParameterizedTypeReference) {
+					JvmType rawType = typeReference.getType();
+					if (rawType != null && !rawType.eIsProxy()) {
+						return rawType.getIdentifier();
+					}
+					return null;
+				} else {
+					return typeReference.getIdentifier();
+				}
+			}
+		});
+		return result;
+	}
+
+	public void doCollectSupertypeData(JvmTypeReference type, SuperTypeAcceptor acceptor) {
+		if (type != null) {
+			Implementation implementation = new Implementation(acceptor, typeReferences);
+			implementation.doSwitch(type);
+		}
+	}
+
+	@Deprecated
+	static class Implementation extends TypesSwitch<Boolean> {
+
+		private boolean collecting = false;
+		private SuperTypeAcceptor acceptor;
+		private int level;
+		private final TypeReferences references;
+
+		Implementation(SuperTypeAcceptor acceptor, TypeReferences references) {
+			this.acceptor = acceptor;
+			this.references = references;
+			this.level = 0;
+		}
+		
+		@Override
+		public Boolean doSwitch(EObject theEObject) {
+			if (theEObject == null)
+				return Boolean.FALSE;
+			return super.doSwitch(theEObject);
+		}
+		
+		@Override
+		public Boolean caseJvmTypeReference(JvmTypeReference object) {
+			if (!object.eIsProxy()) {
+				if (!collecting || acceptor.accept(object, level)) {
+					collecting = true;
+					if (object.getType() != null)
+						doSwitch(object.getType());
+				}
+			}
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmGenericArrayTypeReference(JvmGenericArrayTypeReference object) {
+			if (!object.eIsProxy()) {
+				level++;
+				final SuperTypeAcceptor original = acceptor;
+				try {
+					final boolean[] outerCollecting = { collecting };
+					acceptor = new SuperTypeAcceptor() {
+						public boolean accept(JvmTypeReference superType, int distance) {
+							JvmTypeReference arraySuperType = references.createArrayType(superType);
+							boolean result = !outerCollecting[0];
+							if (!outerCollecting[0] || (result = original.accept(arraySuperType, distance))) {
+								outerCollecting[0] = true;
+							}
+							if (references.is(superType, Object.class)) {
+								outerCollecting[0] = true;
+								result = original.accept(superType, distance + 1) || result;
+								result = original.accept(references.getTypeForName(Serializable.class, superType.getType()), distance + 1) || result;
+								result = original.accept(references.getTypeForName(Cloneable.class, superType.getType()), distance + 1) || result;
+							}
+							return result;
+						}
+					};
+					if (object.getComponentType() != null) {
+						collecting = true;
+						doSwitch(object.getComponentType());
+					}
+				} finally {
+					acceptor = original;
+				}
+				JvmArrayType rawArrayType = object.getType();
+				if (rawArrayType != null) {
+					JvmType rawType = rawArrayType.getComponentType();
+					while(rawType instanceof JvmArrayType) {
+						rawType = ((JvmArrayType) rawType).getComponentType();
+					}
+					if (rawType instanceof JvmPrimitiveType) {
+						collecting = true;
+						doSwitch(references.getTypeForName(Serializable.class, rawType));
+						doSwitch(references.getTypeForName(Cloneable.class, rawType));
+					}
+				}
+				level--;
+			}
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmMultiTypeReference(JvmMultiTypeReference object) {
+			if (!object.eIsProxy()) {
+				collecting = true;
+				level++;
+				for(JvmTypeReference reference: object.getReferences()) {
+					doSwitch(reference);
+				}
+				level--;
+			}
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmDelegateTypeReference(JvmDelegateTypeReference object) {
+			if (!object.eIsProxy()) {
+				collecting = true;
+				doSwitch(object.getDelegate());
+			}
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmSpecializedTypeReference(JvmSpecializedTypeReference object) {
+			if (!object.eIsProxy()) {
+				collecting = true;
+				level++;
+				JvmTypeReference equivalent = object.getEquivalent();
+				if (equivalent != null)
+					doSwitch(equivalent);
+				level--;
+			}
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmAnyTypeReference(JvmAnyTypeReference object) {
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmDeclaredType(JvmDeclaredType object) {
+			if (!object.eIsProxy()) {
+				level++;
+				for (JvmTypeReference superType : object.getSuperTypes()) {
+					doSwitch(superType);
+				}
+				level--;
+			}
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmTypeConstraint(JvmTypeConstraint object) {
+			if (object.getTypeReference() != null)
+				return doSwitch(object.getTypeReference());
+			return Boolean.FALSE;
+		}
+		
+		@Override
+		public Boolean caseJvmConstraintOwner(JvmConstraintOwner object) {
+			if (!object.eIsProxy()) {
+				List<JvmTypeConstraint> constraints = object.getConstraints();
+				boolean boundProcessed = false;
+				if (!constraints.isEmpty()) {
+					for(JvmTypeConstraint constraint: constraints) {
+						if (constraint instanceof JvmLowerBound) {
+							doSwitch(constraint);
+							boundProcessed = true;
+						}
+					}
+					if (!boundProcessed) { 
+						for(JvmTypeConstraint constraint: constraints) {
+							doSwitch(constraint);
+							boundProcessed = true;
+						}
+					}
+				}
+				if (!boundProcessed) {
+					JvmType objectType = references.findDeclaredType(Object.class, object);
+					if (objectType != null)
+						doSwitch(references.createTypeRef(objectType));
+				}
+			}
+			return Boolean.FALSE;
+		}
+		
+	}
+
+	public boolean isSuperType(JvmDeclaredType subType, JvmDeclaredType superType) {
+		if (subType==null || superType == null)
+			return false;
+		return collectSuperTypesAsRawTypes(newRef(subType)).contains(superType);
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend
new file mode 100644
index 0000000..aa677f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/AnnotationCompiler.xtend
@@ -0,0 +1,304 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.util.List
+import org.eclipse.xtext.common.types.JvmAnnotationReference
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.dto.xtext.extensions.AnnotationExtension
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.runtime.common.annotations.Dirty
+import org.eclipse.osbp.runtime.common.annotations.Dispose
+import org.eclipse.osbp.runtime.common.annotations.DomainDescription
+import org.eclipse.osbp.runtime.common.annotations.DomainKey
+import org.eclipse.osbp.runtime.common.annotations.DomainReference
+import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraint
+import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraints
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute
+import org.eclipse.xtend.lib.macro.declaration.VoidType
+import org.eclipse.osbp.runtime.common.annotations.Id
+
+/** 
+ * This class is responsible to generate the Annotations defined in the entity model
+ */
+class AnnotationCompiler extends org.eclipse.osbp.dsl.common.xtext.jvmmodel.AnnotationCompiler {
+
+	@Inject extension JvmTypesBuilder
+	@Inject extension TypeHelper
+	@Inject extension DtoModelExtensions
+	@Inject extension AnnotationExtension
+
+	def protected dispatch void internalProcessAnnotation(LDto dto, JvmGenericType jvmType) {
+		dto.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+	}
+
+	def protected dispatch void internalProcessAnnotation(LDtoReference prop, JvmGenericType jvmType) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+	}
+
+	def protected dispatch void internalProcessAnnotation(LDtoReference prop, JvmField field) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(field);
+
+		field.annotations += prop.toAnnotation(typeof(DomainReference))
+
+		if (prop.cascading) {
+			prop.toValidAnnotation(field)
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
+	}
+
+	def protected List<LKeyAndValue> mergeKeyAndValues(LDtoInheritedAttribute att) {
+		val keyAndValues = newArrayList()
+
+		// add all datatype properties to the list
+		att.inheritedFeature.addDatatypeKeyAndValues(keyAndValues)
+
+		// add the attribute properties
+		keyAndValues.addAll(att.inheritedFeature.properties)
+
+		// add the attribute properties
+		keyAndValues.addAll(att.properties)
+
+		// remove duplicate keys
+		keyAndValues.removeDuplicateKeys
+
+		return keyAndValues
+	}
+
+	def protected List<LKeyAndValue> mergeKeyAndValues(LDtoInheritedReference ref) {
+		val keyAndValues = newArrayList()
+
+		// add the attribute properties
+		keyAndValues.addAll(ref.inheritedFeature.properties)
+
+		// add the attribute properties
+		keyAndValues.addAll(ref.properties)
+
+		// remove duplicate keys
+		keyAndValues.removeDuplicateKeys
+
+		return keyAndValues
+	}
+
+	def protected dispatch void internalProcessAnnotation(LDtoAttribute prop, JvmField field) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(field);
+
+		if (prop.id || prop.uuid) {
+			field.annotations += prop.toAnnotation(typeof(Id))
+		}
+
+		if (prop.domainKey) {
+			field.annotations += prop.toAnnotation(typeof(DomainKey))
+		}
+
+		if (prop.domainDescription) {
+			field.annotations += prop.toAnnotation(typeof(DomainDescription))
+		}
+
+		if (prop.dirty) {
+			field.annotations += prop.toAnnotation(typeof(Dirty))
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
+
+		if (prop.type.validAllowed) {
+			prop.toValidAnnotation(field)
+		}
+		super.toDatatypeBasedConstraintAnnotations(prop, field)
+	}
+
+	def protected dispatch void internalProcessAnnotation(LDtoInheritedAttribute prop, JvmField field) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(field);
+
+		if (prop.inheritedFeature.id || prop.inheritedFeature.uuid) {
+			field.annotations += prop.toAnnotation(typeof(Id))
+		}
+
+		if (prop.inheritedFeature.domainKey) {
+			field.annotations += prop.toAnnotation(typeof(DomainKey))
+		}
+
+		if (prop.inheritedFeature.domainDescription) {
+			field.annotations += prop.toAnnotation(typeof(DomainDescription))
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
+
+		if (prop.inheritedFeature.type.validAllowed) {
+			prop.toValidAnnotation(field)
+		}
+		
+		// also inherit annotations from the entities
+		prop.inheritedFeature.toInheritedConstraintAnnotations(field)
+	}
+
+	def protected dispatch void internalProcessAnnotation(LDtoInheritedReference prop, JvmField field) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(field);
+
+		field.annotations += prop.toAnnotation(typeof(DomainReference))
+
+		val inheritedRef = prop.inheritedFeature
+		if (inheritedRef instanceof LEntityReference) {
+			if (inheritedRef.resultFilters != null) {
+				inheritedRef.resultFilters.addConstraintsAnno(field, prop.type)
+			}
+
+			if (inheritedRef.cascading) {
+				prop.toValidAnnotation(field)
+			}
+
+			// also inherit annotations from the entities
+			inheritedRef.toInheritedConstraintAnnotations(field)
+
+			// create the properties annotations
+			prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
+
+		} else if (inheritedRef instanceof LBeanReference) {
+			if (inheritedRef.resultFilters != null) {
+				inheritedRef.resultFilters.addConstraintsAnno(field, prop.type)
+			}
+
+			if (inheritedRef.cascading) {
+				prop.toValidAnnotation(field)
+			}
+			
+			// also inherit annotations from the entities
+			inheritedRef.toInheritedConstraintAnnotations(field)
+
+			// create the properties annotations
+			prop.toPropertiesAnnotation(mergeKeyAndValues(prop), field)
+		}
+	}
+
+	def void addConstraintsAnno(LResultFilters constraints, JvmField jvmField, LDto mapsTo) {
+
+		// process the LAttributeMatchingConstraint
+		if (!constraints.resultFilters.filter[it instanceof LAttributeMatchingConstraint].empty) {
+
+			// collect all inner annotations
+			val innerAnnotations = newArrayList()
+			constraints.resultFilters.filter[it instanceof LAttributeMatchingConstraint].map[
+				it as LAttributeMatchingConstraint].forEach [
+				val enumClassTypeRef = attribute.name.findReplacementEnum(mapsTo)
+				if (enumClassTypeRef != null) {
+					val innerAnno = constraints.toAnnotation(typeof(TargetEnumConstraint))
+					innerAnno.addAnnAttr(it, "targetProperty", attribute.name)
+					innerAnno.addAnnAttr(it, "enumClass", enumClassTypeRef)
+					innerAnno.addAnnAttr(it, "enumLiteral", matchingLiteral.name)
+					innerAnnotations += innerAnno
+				}
+			]
+
+			// now create the outer annotation and add the array of inner annotations
+			val mainAnno = constraints.toAnnotation(typeof(TargetEnumConstraints))
+			mainAnno.addAnnAttr(constraints, "constraints",
+				innerAnnotations.toArray(<JvmAnnotationReference>newArrayOfSize(innerAnnotations.length)))
+			jvmField.annotations += mainAnno
+		}
+	}
+
+	/** 
+	 * Iterates all attributes of the target dto. If a matching att name was found, the jvmType proxy will be returned.
+	 */
+	def JvmTypeReference findReplacementEnum(String property, LDto mapsTo) {
+		for (att : mapsTo.allFeatures.filter[it instanceof LDtoAbstractAttribute].map[it as LDtoAbstractAttribute]) {
+			if (att instanceof LDtoInheritedAttribute) {
+				if (att.inheritedFeature?.name.equals(property)) {
+					return att.inheritedFeatureTypeJvm.cloneWithProxies
+				}
+			} else {
+				if (att.name.equals(property)) {
+					return att.typeJvm.cloneWithProxies
+				}
+			}
+		}
+		return null
+	}
+
+	def dispatch addDisposeFieldAnnotation(LDto dto, JvmField field) {
+		addAnno(dto, field, dto.toAnnotation(typeof(Dispose)))
+	}
+
+	def dispatch addDisposeFieldAnnotation(LDto dto, JvmOperation op) {
+		addAnno(dto, op, dto.toAnnotation(typeof(Dispose)))
+	}
+	 
+	def dispatch boolean isValidAllowed(LBean type) {
+		return true;
+	}
+	
+	def dispatch void toInheritedConstraintAnnotations(LDtoInheritedAttribute prop, JvmField jvmField) {
+		val feature = prop.inheritedFeature
+		if(feature instanceof LBeanAttribute) {
+			feature.toInheritedConstraintAnnotations(jvmField)
+		}else if(feature instanceof LEntityAttribute) {
+			feature.toInheritedConstraintAnnotations(jvmField)
+		}
+	}
+	
+	def dispatch void toInheritedConstraintAnnotations(LBeanAttribute prop, JvmField jvmField) {
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+
+		if (prop.constraints.empty) {
+			super.toDatatypeBasedConstraintAnnotations(prop, jvmField)
+		}
+	}
+
+	def dispatch void toInheritedConstraintAnnotations(LBeanReference prop, JvmField jvmField) {
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+	}
+
+	def dispatch void toInheritedConstraintAnnotations(LEntityAttribute prop, JvmField jvmField) {
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+
+		if (prop.constraints.empty) {
+			super.toDatatypeBasedConstraintAnnotations(prop, jvmField)
+		}
+	}
+
+	def dispatch void toInheritedConstraintAnnotations(LEntityReference prop, JvmField jvmField) {
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend
new file mode 100644
index 0000000..6dbbf8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/DtoGrammarJvmModelInferrer.xtend
@@ -0,0 +1,569 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.beans.PropertyChangeEvent
+import java.beans.PropertyChangeListener
+import java.io.Serializable
+import org.eclipse.emf.ecore.EObject
+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.JvmParameterizedTypeReference
+import org.eclipse.xtext.common.types.JvmType
+import org.eclipse.xtext.common.types.TypesFactory
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.osbp.dsl.dto.lib.IMapper
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess
+import org.eclipse.osbp.dsl.dto.lib.MappingContext
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoTypesBuilder
+import org.eclipse.osbp.dsl.dto.xtext.extensions.MethodNamingExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexModelInferrer
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.eclipse.osbp.dsl.common.datatypes.IDto
+
+/**
+ * <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 DtoGrammarJvmModelInferrer extends IndexModelInferrer {
+
+	protected val Logger log = LoggerFactory::getLogger(getClass())
+
+	@Inject AnnotationCompiler annotationCompiler
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension DtoTypesBuilder;
+	@Inject extension MethodNamingExtensions
+	@Inject extension DtoModelExtensions;
+	@Inject TypeReferences references
+
+	def dispatch void inferFullState(JvmType type, EObject element, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+	}
+
+	// used for test cases with old derived state computer
+	def dispatch void infer(LDto dto, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		// create dto type
+		val type = dto.toJvmType;
+		associateBySelector(dto, type, "dto")
+		type.inferDtoFullState(dto, acceptor, isPrelinkingPhase)
+
+		// create mapper type
+		if (dto.wrappedType != null) {
+			val mapperType = dto.toMapperJvmType;
+			associateBySelector(dto, mapperType, "mapper")
+			mapperType.inferMapperFullState(dto, acceptor, isPrelinkingPhase)
+		}
+	}
+
+	def dispatch void inferTypesOnly(LDto dto, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		// create dto type
+		val type = dto.toJvmType;
+		associateBySelector(dto, type, "dto")
+		type.markAsToBeDerivedLater(dto, isPrelinkingPhase)
+		acceptor.accept(type);
+
+		// create mapper type
+		if (dto.wrappedType != null) {
+			val mapperType = dto.toMapperJvmType;
+			associateBySelector(dto, mapperType, "mapper")
+			mapperType.markAsToBeDerivedLater(dto, isPrelinkingPhase, "mapper")
+			acceptor.accept(mapperType)
+		}
+
+		// pass inferring to delegates
+		inferTypesOnlyByDelegates(dto, acceptor, isPrelinkingPhase);
+	}
+
+	def dispatch void inferFullState(JvmGenericType type, LDto dto, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+		if (selector.equals("mapper")) {
+			type.inferMapperFullState(dto, acceptor, isPrelinkingPhase)
+		} else {
+			type.inferDtoFullState(dto, acceptor, isPrelinkingPhase)
+		}
+	}
+
+	def void inferDtoFullState(JvmDeclaredType type, LDto dto, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase) {
+
+		acceptor.accept(type).initializeLater [
+			type.markAsDerived
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			abstract = dto.abstract
+			annotationCompiler.processAnnotation(dto, it);
+			var LAttribute idAttribute = null
+			var JvmField idField = null
+			fileHeader = (dto.eContainer as LTypedPackage).documentation
+			documentation = dto.getDocumentation
+			if (dto.getSuperType != null && !dto.getSuperType.fullyQualifiedName.toString.empty) {
+				superTypes += dto.superTypeJvm.cloneWithProxies
+			}
+			
+			superTypes += references.getTypeForName(typeof(IDto), dto, null)
+			
+			superTypes += references.getTypeForName(typeof(Serializable), dto, null)
+			superTypes += references.getTypeForName(typeof(PropertyChangeListener), dto, null)
+			
+			if (dto.getSuperType == null) {
+				members += dto.toPropertyChangeSupportField()
+				members += dto.toDiposeField
+			}
+			//
+			// Fields
+			//
+			for (f : dto.getFeatures) {
+				switch f {
+					LAttribute: {
+						if (!f.derived && f.fullyQualifiedName != null && !f.fullyQualifiedName.toString.empty) {
+							if (f.isIDorUUID) {
+								idAttribute = f
+								idField = f.toField
+								members += idField
+							} else {
+								members += f.toField
+							}
+						}
+					}
+					LReference: {
+						if (f.fullyQualifiedName != null && !f.fullyQualifiedName.toString.empty) {
+							members += f.toField
+						}
+					}
+				}
+			}
+			// 
+			// Constructor
+			//
+			members += dto.toConstructor()[
+				body = '''installLazyCollections();'''
+			]
+			
+			members += dto.toInstallLazyCollections
+			
+			//
+			// Field accessors
+			//
+			if (dto.getSuperType == null) {
+				members += dto.toIsDisposed()
+				members += dto.toAddPropertyChangeListener()
+				members += dto.toAddPropertyChangeListenerWithProperty()
+				members += dto.toRemovePropertyChangeListener()
+				members += dto.toRemovePropertyChangeListenerWithProperty()
+				members += dto.toFirePropertyChange()
+			}
+			members += dto.toCheckDisposed()
+			members += dto.toDispose()
+			
+			for (f : dto.getFeatures) {
+				switch f {
+					LAttribute: {
+						members += f.toGetter()
+						if (!f.derived) {
+							if (f.isToMany) {
+								members += f.toInternalCollectionGetter(f.toName)
+								members += f.toAdder(f.toName)
+								members += f.toRemover(f.toName)
+								members += f.toSetter()
+							} else {
+								members += f.toSetter()
+							}
+						}
+					}
+					LReference: {
+						members += f.toGetter()
+						if (f.isToMany) {
+							members += f.toInternalCollectionGetter(f.toName)
+							members += f.toAdder(f.toName)
+							members += f.toRemover(f.toName)
+							members += f.toInternalAdder
+							members += f.toInternalRemover
+							members += f.toSetter()
+						} else {
+							members += f.toSetter()
+
+							if (f.isCascading || f.opposite != null) {
+								members += f.toInternalSetter
+							}
+						}
+					}
+				}
+			}
+			//
+			// Methods.
+			// 
+			for (op : dto.getOperations) {
+				members += op.toMethod(op.toName, op.getType) [
+					documentation = op.getDocumentation
+					for (p : op.getParams) {
+						parameters += p.toParameter(p.name, p.parameterType)
+					}
+					body = op.getBody
+				]
+			}
+			if (idAttribute != null) {
+				members += idAttribute.toEqualsMethod(it, false, idField)
+				members += idAttribute.toHashCodeMethod(false, idField)
+			}
+			val JvmParameterizedTypeReference typeRef = TypesFactory.eINSTANCE.createJvmParameterizedTypeReference
+			typeRef.type = it
+			val contextTypeRef = newTypeRef(typeof(MappingContext).name, null)
+			if (!dto.abstract) {
+				members += dto.toMethod("createDto", typeRef) [
+					body = '''return new «dto.name»();'''
+				]
+
+				members += dto.toMethod("copy", typeRef.cloneWithProxies) [
+					parameters += dto.toParameter("context", contextTypeRef.cloneWithProxies)
+					body = '''
+						checkDisposed();
+						
+						if (context == null) {
+							throw new IllegalArgumentException("Context must not be null!");
+						}
+						
+						if(context.isMaxLevel()){
+							return null;
+						}
+						
+						// if context contains a copied instance of this object
+						// then return it
+						«dto.name» newDto = context.get(this);
+						if(newDto != null){
+							return newDto;
+						}
+						
+						try{
+							context.increaseLevel();
+							
+							newDto = createDto();
+							context.register(this, newDto);
+							
+							// first copy the containments and attributes
+							copyContainments(this, newDto, context);
+							
+							// then copy cross references to ensure proper
+							// opposite references are copied too.
+							copyCrossReferences(this, newDto, context);
+						} finally {
+							context.decreaseLevel();
+						}
+						
+						return newDto;
+					'''
+				]
+			} else {
+				members += dto.toMethod("copy", typeRef.cloneWithProxies) [
+					abstract = true
+					parameters += dto.toParameter("context", contextTypeRef.cloneWithProxies)
+				]
+			}
+			members += dto.toMethod("copyContainments", references.getTypeForName(Void::TYPE, dto)) [
+				parameters += dto.toParameter("dto", typeRef.cloneWithProxies)
+				parameters += dto.toParameter("newDto", typeRef.cloneWithProxies)
+				parameters += dto.toParameter("context", contextTypeRef.cloneWithProxies)
+				body = '''
+					checkDisposed();
+					
+					if (context == null) {
+						throw new IllegalArgumentException("Context must not be null!");
+					}
+					
+					«IF dto.superType != null»
+						super.copyContainments(dto, newDto, context);
+					«ENDIF»
+					
+					// copy attributes and beans (beans if derived from entity model)
+					«FOR att : dto.attributesToCopy»
+						«IF att.internalIsToMany»
+							«IF att.toRawType instanceof LBean»
+								// copy list of «att.toName» dtos
+								for(«att.toRawType.toDTOBeanFullyQualifiedName» _dto : «att.toGetterName»()) {
+									newDto.«att.toCollectionAdderName»(_dto.copy(context));
+								}
+							«ELSE»
+								// copy list of «att.toName»
+								for(«att.toRawType.toName» _att : «att.toGetterName»()) {
+									newDto.«att.toCollectionAdderName»(_att);
+								}
+							«ENDIF»
+						«ELSE»
+							«IF att.toRawType instanceof LBean»
+								// copy dto «att.toName»
+								if(«att.toGetterName»() != null) {
+									newDto.«att.toSetterName»(«att.toGetterName»().copy(context));
+								}
+							«ELSE»
+								// copy «att.toName»
+								newDto.«att.toSetterName»(«att.toGetterName»());
+							«ENDIF»
+						«ENDIF»
+					«ENDFOR»
+					
+					// copy containment references (cascading is true)
+					«FOR ref : dto.containmentReferencesToCopy»
+						«IF ref.internalIsToMany»
+							// copy list of «ref.toName» dtos
+							for(«ref.toRawType.toDTOBeanFullyQualifiedName» _dto : «ref.toGetterName»()) {
+								newDto.«ref.toCollectionAdderName»(_dto.copy(context));
+							}
+						«ELSE»
+							// copy dto «ref.toName»
+							if(«ref.toGetterName»() != null) {
+								newDto.«ref.toSetterName»(«ref.toGetterName»().copy(context));
+							}
+						«ENDIF»
+					«ENDFOR»
+				'''
+			]
+			members += dto.toMethod("copyCrossReferences", references.getTypeForName(Void::TYPE, dto)) [
+				parameters += dto.toParameter("dto", typeRef.cloneWithProxies)
+				parameters += dto.toParameter("newDto", typeRef.cloneWithProxies)
+				parameters += dto.toParameter("context", newTypeRef(typeof(MappingContext).name, null))
+				body = '''
+					checkDisposed();
+					
+					if (context == null) {
+						throw new IllegalArgumentException("Context must not be null!");
+					}
+					
+					«IF dto.superType != null»
+						super.copyCrossReferences(dto, newDto, context);
+					«ENDIF»
+					
+					// copy cross references (cascading is false)
+					«FOR ref : dto.crossReferencesToCopy»
+						«IF ref.internalIsToMany»
+							// copy list of «ref.toName» dtos
+							for(«ref.toRawType.toDTOBeanFullyQualifiedName» _dto : «ref.toGetterName»()) {
+								newDto.«ref.toCollectionAdderName»(_dto.copy(context));
+							}
+						«ELSE»
+							// copy dto «ref.toName»
+							if(«ref.toGetterName»() != null) {
+								newDto.«ref.toSetterName»(«ref.toGetterName»().copy(context));
+							}
+						«ENDIF»
+					«ENDFOR»
+				'''
+			]
+			members += dto.toMethod("propertyChange", references.getTypeForName(Void::TYPE, dto)) [
+				parameters += dto.toParameter("event", newTypeRef(typeof(PropertyChangeEvent).name, null))
+				body = '''
+					Object source = event.getSource();
+					
+					// forward the event from embeddable beans to all listeners. So the parent of the embeddable
+					// bean will become notified and its dirty state can be handled properly
+					«FOR ref : dto.features.filter[!(it instanceof LOperation)].filter[it.toRawType.isBean]»
+						if(source == «ref.toName»){
+							firePropertyChange("«ref.toName»" + "_" + event.getPropertyName(), event.getOldValue(), event.getNewValue());
+						} else 
+					«ENDFOR»
+					{ 
+						«IF dto.superType != null»
+						super.propertyChange(event);
+						«ELSE»
+						// no super class available to forward event
+						«ENDIF»
+					}
+				'''
+			]
+			doInferLog.stop(log, "Inferring dto " + dto.name)
+		]
+	}
+
+	def void inferMapperFullState(JvmGenericType type, LDto dto, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase) {
+
+		acceptor.accept(type).initializeLater [
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			type.markAsDerived
+			fileHeader = (dto.eContainer as LTypedPackage).documentation
+			documentation = '''
+				This class maps the dto {@link «dto.toName»} to and from the entity {@link «dto.wrappedType.toName»}.
+			'''
+			//
+			// Constructor
+			//
+			members += dto.toConstructor()[]
+			if (dto.wrappedType != null) {
+				val dtoParam = TypesFactory.eINSTANCE.createJvmTypeParameter
+				dtoParam.name = "DTO"
+				val dtoUpper = TypesFactory.eINSTANCE.createJvmUpperBound
+
+				dtoUpper.typeReference = dto.findDtoTypeReference
+				dtoParam.constraints += dtoUpper
+				typeParameters += dtoParam
+
+				val entityParam = TypesFactory.eINSTANCE.createJvmTypeParameter
+				entityParam.name = "ENTITY"
+				val entityUpper = TypesFactory.eINSTANCE.createJvmUpperBound
+				entityUpper.typeReference = dto.wrappedTypeJvm?.cloneWithProxies
+				entityParam.constraints += entityUpper
+				typeParameters += entityParam
+
+				val entityType = TypesFactory.eINSTANCE.createJvmParameterizedTypeReference;
+				entityType.type = entityParam
+
+				val dtoType = TypesFactory.eINSTANCE.createJvmParameterizedTypeReference;
+				dtoType.type = dtoParam
+				if (dto.getSuperType != null) {
+					if (dto.getSuperType != null) {
+						superTypes += dto.findSuperDtoMapperType(dtoType, entityType)
+					}
+				} else {
+					superTypes += references.getTypeForName(typeof(IMapper), dto, dtoType, entityType)
+					members += dto.toField("mapperAccess", references.getTypeForName(typeof(IMapperAccess), dto, null))
+					members += dto.toGetToDtoMapperAccess
+					members += dto.toGetToEntityMapperAccess
+
+					members += dto.toMapperBindMethod
+					members += dto.toMapperUnbindMethod
+				}
+
+				members += dto.toMethod("createEntity", dto.wrappedTypeJvm) [
+					documentation = '''Creates a new instance of the entity'''
+					body = '''
+						«IF dto.wrappedType.abstract»throw new UnsupportedOperationException("Subclass needs to provide dto.");«ELSE»return new «dto.
+							wrappedType.toName»();«ENDIF»
+					'''
+				]
+
+				members += dto.toMethod("createDto", dto.findDtoTypeReference) [
+					documentation = '''Creates a new instance of the dto'''
+					body = '''
+						«IF dto.abstract»throw new UnsupportedOperationException("Subclass needs to provide dto.");«ELSE»return new «dto.
+							toName»();«ENDIF»
+					'''
+				]
+
+				members += dto.toMapToDto
+				members += dto.toMapToEntity
+
+				for (f : dto.getFeatures) {
+					switch f {
+						case f instanceof LDtoAbstractAttribute: {
+							val LDtoAbstractAttribute att = f as LDtoAbstractAttribute
+							if (att.inherited || att.mapper?.toDTO != null) {
+								members += att.toMapToDtoProperty
+							}
+							if (att.inherited || att.mapper?.fromDTO != null) {
+								members += att.toMapToEntityProperty
+							}
+						}
+						case f instanceof LDtoAbstractReference: {
+							val LDtoAbstractReference att = f as LDtoAbstractReference
+							if (att.inherited || att.mapper?.toDTO != null) {
+								members += att.toMapToDtoProperty
+							}
+
+							if (att.inherited || att.mapper?.fromDTO != null)
+								members += att.toMapToEntityProperty
+						}
+					}
+				}
+
+				val idAtt = dto.findIdProperty
+				members += dto.toMethod("createDtoHash", references.getTypeForName(typeof(String), dto, null)) [
+					parameters += dto.toParameter("in", references.getTypeForName(typeof(Object), dto, null))
+					if (idAtt != null) {
+						body = '''
+							return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(«dto.toName».class, in);
+						'''
+					} else {
+						body = '''
+							throw new UnsupportedOperationException("No id attribute available");
+						'''
+					}
+				]
+
+				members += dto.toMethod("createEntityHash", references.getTypeForName(typeof(String), dto, null)) [
+					parameters += dto.toParameter("in", references.getTypeForName(typeof(Object), dto, null))
+					if (idAtt != null) {
+						body = '''
+							return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(«dto.wrappedType.toName».class, in);
+						'''
+					} else {
+						body = '''
+							throw new UnsupportedOperationException("No id attribute available");
+						'''
+					}
+				]
+
+			}
+			doInferLog.stop(log, "Inferring mapper " + dto.name)
+		]
+	}
+
+	def LAttribute findIdProperty(LDto dto) {
+		for (att : dto.allFeatures.filter(typeof(LAttribute)).map[it as LAttribute]) {
+			if (att.isIDorUUID) {
+				return att
+			}
+		}
+		return null
+	}
+
+	// used for test cases with old derived state computer
+	def dispatch void infer(LEnum enumX, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		// create dto type
+		val type = enumX.toEnumerationType(enumX.fullyQualifiedName.toString, null)
+		type.inferFullState(enumX, acceptor, isPrelinkingPhase, "")
+	}
+
+	def dispatch void inferTypesOnly(LEnum enumX, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		// create dto type
+		val type = enumX.toEnumerationType(enumX.fullyQualifiedName.toString, null)
+		type.markAsToBeDerivedLater(enumX, isPrelinkingPhase)
+		acceptor.accept(type);
+
+		// pass inferring to delegates
+		inferTypesOnlyByDelegates(enumX, acceptor, isPrelinkingPhase);
+	}
+
+	def dispatch void inferFullState(JvmDeclaredType type, LEnum enumX, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+
+		acceptor.accept(type).initializeLater [
+			type.markAsDerived
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			fileHeader = (enumX.eContainer as LTypedPackage).documentation
+			documentation = enumX.documentation
+			for (f : enumX.literals) {
+				documentation = f.documentation
+				members += f.toEnumerationLiteral(f.name)
+			}
+			doInferLog.stop(log, "Inferring enum " + enumX.name)
+		]
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/TypeHelper.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/TypeHelper.java
new file mode 100644
index 0000000..9fb60f2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/jvmmodel/TypeHelper.java
@@ -0,0 +1,115 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.xtext.jvmmodel;
+
+import java.util.Date;
+
+import org.eclipse.xtext.common.types.JvmEnumerationType;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.util.TypeReferences;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@SuppressWarnings("restriction")
+@Singleton
+public class TypeHelper {
+
+	@Inject
+	private TypeReferences typeReferences;
+
+	/**
+	 * Returns true, if the type is numeric without digits
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isNumber(JvmType type) {
+		if (typeReferences.is(type, Byte.class)
+				|| typeReferences.is(type, Byte.TYPE)
+				|| typeReferences.is(type, Short.class)
+				|| typeReferences.is(type, Short.TYPE)
+				|| typeReferences.is(type, Integer.class)
+				|| typeReferences.is(type, Integer.TYPE)
+				|| typeReferences.is(type, Long.class)
+				|| typeReferences.is(type, Long.TYPE)
+				|| typeReferences.is(type, Float.class)
+				|| typeReferences.is(type, Float.TYPE)
+				|| typeReferences.is(type, Double.class)
+				|| typeReferences.is(type, Double.TYPE)) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns true, if the type is boolean
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isBoolean(JvmType type) {
+		if (typeReferences.is(type, Boolean.class)
+				|| typeReferences.is(type, Boolean.TYPE)) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns true, if the type is boolean
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isString(JvmType type) {
+		if (typeReferences.is(type, String.class)) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns true, if the type is date
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isDate(JvmType type) {
+		if (typeReferences.is(type, Date.class)) {
+			return true;
+		}
+		return false;
+	}
+
+	/**
+	 * Returns true, if the type is enum
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isEnum(JvmType type) {
+		return type instanceof JvmEnumerationType;
+	}
+
+	/**
+	 * Returns true, if the type is complex
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isComplexType(JvmType type) {
+		return !isBoolean(type) && !isDate(type) && !isEnum(type)
+				&& !isNumber(type) && !isString(type);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/linker/DtoJvmLinkingHelper.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/linker/DtoJvmLinkingHelper.java
new file mode 100644
index 0000000..3d81455
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/linker/DtoJvmLinkingHelper.java
@@ -0,0 +1,132 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.linker;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.MethodNamingExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.validation.SuppressWarningAdapter;
+
+import com.google.inject.Inject;
+
+public class DtoJvmLinkingHelper extends LazyJvmTypeLinkingHelper {
+
+	@Inject
+	private MethodNamingExtensions namingExtension;
+
+	public DtoJvmLinkingHelper() {
+		register(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE,
+				OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_JVM);
+		register(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE,
+				OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM);
+
+		register(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE,
+				OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM);
+
+		register(OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE,
+				OSBPDtoPackage.Literals.LDTO_ABSTRACT_REFERENCE__TYPE_JVM);
+
+		register(
+				OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE,
+				OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE_TYPE_JVM,
+				new IJvmLinkCrossRefStringEnhancer() {
+					@Override
+					public String enhance(EObject context,
+							EStructuralFeature feature, String crossRefString) {
+						LDtoInheritedAttribute lAtt = (LDtoInheritedAttribute) context
+								.eContainer();
+						LAttribute lInhAtt = lAtt.getInheritedFeature();
+						if (lInhAtt.eIsProxy()) {
+							return crossRefString;
+						}
+						if (lInhAtt.getType() instanceof LBean) {
+							return namingExtension.toDTOBeanSimpleName(lInhAtt
+									.getType().getName());
+						} else {
+							return lInhAtt.getType().getName();
+						}
+					}
+				}, null);
+
+		register(OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE,
+				OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE_JVM);
+
+		register(
+				OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE,
+				OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE_TYPE_JVM,
+				new IJvmLinkCrossRefStringEnhancer() {
+					@Override
+					public String enhance(EObject context,
+							EStructuralFeature feature, String crossRefString) {
+						LDtoInheritedReference lRef = (LDtoInheritedReference) context
+								.eContainer();
+						LReference lInhRef = lRef
+								.getInheritedFeature();
+						if(lInhRef.eIsProxy()){
+							return crossRefString;
+						}
+						if(lInhRef instanceof LEntityReference){
+							LEntityReference lEntityRef = (LEntityReference) lInhRef;
+							if (lEntityRef.getType() instanceof LEntity) {
+								return namingExtension
+										.toDTOBeanSimpleName(lEntityRef.getType()
+												.getName());
+							} else {
+								return lEntityRef.getType().getName();
+							}
+						}else if(lInhRef instanceof LBeanReference){
+							LBeanReference lBeanRef = (LBeanReference) lInhRef;
+							if (lBeanRef.getType() instanceof LBean) {
+								return namingExtension
+										.toDTOBeanSimpleName(lBeanRef.getType()
+												.getName());
+							} else {
+								return lBeanRef.getType().getName();
+							}
+						}
+						
+						throw new IllegalArgumentException(feature + " ----- " + context);
+					}
+				}, null);
+
+		// Also register the need of a proxy for the jvmType of a mapper. But
+		// therefore a different crossRefString needs to become used.
+		register(OSBPDtoPackage.Literals.LDTO__SUPER_TYPE,
+				OSBPDtoPackage.Literals.LDTO__SUPER_TYPE_MAPPER_JVM,
+				new IJvmLinkCrossRefStringEnhancer() {
+					@Override
+					public String enhance(EObject context,
+							EStructuralFeature feature, String crossRefString) {
+						return namingExtension.toMapperName(crossRefString);
+					}
+				}, new IJvmTypeRefFinisher() {
+					@Override
+					public void finish(EStructuralFeature jvmLinkFeature,
+							JvmTypeReference typeRef) {
+						typeRef.eAdapters().add(
+								new SuppressWarningAdapter(
+										SuppressWarningAdapter.RAW_TYPE));
+					}
+				});
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DatatypesFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DatatypesFilterScope.java
new file mode 100644
index 0000000..a9c45ee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DatatypesFilterScope.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.FilteringScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+
+import com.google.common.base.Predicate;
+
+public class DatatypesFilterScope extends FilteringScope {
+
+	public DatatypesFilterScope(IScope scope) {
+		super(scope, createPredicate());
+	}
+
+	private static Predicate<IEObjectDescription> createPredicate() {
+		return new Predicate<IEObjectDescription>() {
+			public boolean apply(IEObjectDescription input) {
+				if (input.getEObjectOrProxy() instanceof LDataType) {
+					return true;
+				}
+				return false;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoBatchScopeProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoBatchScopeProvider.java
new file mode 100644
index 0000000..0a5bb26
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoBatchScopeProvider.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonBatchScopeProvider;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * 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 DtoBatchScopeProvider extends CommonBatchScopeProvider {
+
+	@Override
+	public IScope getScope(final EObject context, EReference reference) {
+		if (reference == OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE) {
+			return new DtoInheritedReferenceScope(
+					(LDtoInheritedReference) context);
+		} else if (reference == OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE) {
+			return new DtoInheritedAttributeScope(
+					(LDtoInheritedAttribute) context);
+		} else if (reference == OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE) {
+			return new DtoRefOppositeScope((LDtoReference) context);
+		} else if (reference == OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE) {
+			return new WrappedTypeFilterScope(
+					super.getScope(context, reference));
+		} else if (reference == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE) {
+			return new InheritTypesFilterScope((LType) context, super.getScope(
+					context, reference));
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE) {
+			LAttribute att = (LAttribute) context;
+			if (att.isId() || att.isVersion() || att.isUuid()) {
+				return new DatatypesFilterScope(super.getScope(context,
+						reference));
+			} else if (att.isUuid()) {
+				return new UUIdFilterScope(super.getScope(context, reference));
+			}
+		}
+		return super.getScope(context, reference);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoImportedNamespaceAwareLocalScopeProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoImportedNamespaceAwareLocalScopeProvider.java
new file mode 100644
index 0000000..f54d1e6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoImportedNamespaceAwareLocalScopeProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011 - 2012, Lunifera GmbH (Gross Enzersdorf, Austria), Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the 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:
+ * 		Hans Georg Glöckler - Initial implementation
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import java.util.List;
+
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.scoping.impl.ImportNormalizer;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions;
+
+import com.google.inject.Inject;
+
+public class DtoImportedNamespaceAwareLocalScopeProvider extends
+		CommonImportedNamespaceAwareLocalScopeProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+	@Inject
+	private DtoModelExtensions extensions;
+
+	@Override
+	protected List<ImportNormalizer> getImplicitImports(boolean ignoreCase) {
+		List<ImportNormalizer> temp = super.getImplicitImports(ignoreCase);
+
+		temp.add(new ImportNormalizer(qualifiedNameConverter
+				.toQualifiedName("org.eclipse.osbp.dsl.common.datatypes"), true,
+				ignoreCase));
+
+		return temp;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoInheritedAttributeScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoInheritedAttributeScope.java
new file mode 100644
index 0000000..672be86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoInheritedAttributeScope.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+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;
+
+public class DtoInheritedAttributeScope extends AbstractScope {
+	private final LDtoInheritedAttribute prop;
+
+	public DtoInheritedAttributeScope(LDtoInheritedAttribute prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		LDto container = prop.getDTO();
+		LType type = container.getWrappedType();
+
+		if (type instanceof LEntity) {
+			LEntity entity = (LEntity) type;
+			for (LEntityAttribute entityRef : entity.getAllAttributes()) {
+				result.add(new EObjectDescription(QualifiedName
+						.create(entityRef.getName()), entityRef, null));
+			}
+		} else if (type instanceof LBean) {
+			LBean bean = (LBean) type;
+			for (LBeanAttribute beanRef : bean.getAllAttributes()) {
+				result.add(new EObjectDescription(QualifiedName.create(beanRef
+						.getName()), beanRef, null));
+			}
+		}
+
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoInheritedReferenceScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoInheritedReferenceScope.java
new file mode 100644
index 0000000..35e832c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoInheritedReferenceScope.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+public class DtoInheritedReferenceScope extends AbstractScope {
+	private final LDtoInheritedReference prop;
+
+	public DtoInheritedReferenceScope(LDtoInheritedReference prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		LDto container = prop.getDTO();
+		LType type = container.getWrappedType();
+
+		if (type instanceof LEntity) {
+			LEntity entity = (LEntity) type;
+			for (LEntityReference entityRef : entity.getAllReferences()) {
+				result.add(new EObjectDescription(QualifiedName
+						.create(entityRef.getName()), entityRef, null));
+			}
+		} else if (type instanceof LBean) {
+			LBean bean = (LBean) type;
+			for (LBeanReference beanRef : bean.getAllReferences()) {
+				result.add(new EObjectDescription(QualifiedName.create(beanRef
+						.getName()), beanRef, null));
+			}
+		}
+
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoRefOppositeScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoRefOppositeScope.java
new file mode 100644
index 0000000..6718191
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoRefOppositeScope.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+
+public class DtoRefOppositeScope extends AbstractScope {
+	private final LDtoReference prop;
+
+	public DtoRefOppositeScope(LDtoReference prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+ 
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		if (prop.getType() != null) {
+			LDto propClass = prop.getDTO();
+			LDto type = prop.getType();
+			for (LDtoAbstractReference oppositeProp : type.getReferences()) {
+				if (oppositeProp.getType() == propClass) {
+					String name = oppositeProp.getName();
+					if (name != null) {
+						result.add(new EObjectDescription(QualifiedName
+								.create(name), oppositeProp, null));
+					}
+				}
+			}
+		}
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoScopeProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoScopeProvider.java
new file mode 100644
index 0000000..e6a8124
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/DtoScopeProvider.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonScopeProvider;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+/**
+ * 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 DtoScopeProvider extends CommonScopeProvider {
+
+	@Override
+	public IScope getScope(final EObject context, EReference reference) {
+		if (reference == OSBPDtoPackage.Literals.LDTO_INHERITED_REFERENCE__INHERITED_FEATURE) {
+			return new DtoInheritedReferenceScope(
+					(LDtoInheritedReference) context);
+		} else if (reference == OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE) {
+			return new DtoInheritedAttributeScope(
+					(LDtoInheritedAttribute) context);
+		} else if (reference == OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE) {
+			return new DtoRefOppositeScope((LDtoReference) context);
+		} else if (reference == OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE) {
+			return new WrappedTypeFilterScope(
+					super.getScope(context, reference));
+		} else if (reference == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE) {
+			return new InheritTypesFilterScope((LType) context, super.getScope(
+					context, reference));
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE) {
+			LAttribute att = (LAttribute) context;
+			if (att.isId() || att.isVersion() || att.isUuid()) {
+				return new DatatypesFilterScope(super.getScope(context,
+						reference));
+			} else if (att.isUuid()) {
+				return new UUIdFilterScope(super.getScope(context, reference));
+			}
+		}
+		return super.getScope(context, reference);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/InheritTypesFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/InheritTypesFilterScope.java
new file mode 100644
index 0000000..70f9994
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/InheritTypesFilterScope.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.FilteringScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+import com.google.common.base.Predicate;
+
+public class InheritTypesFilterScope extends FilteringScope {
+
+	public InheritTypesFilterScope(LType context, IScope scope) {
+		super(scope, createPredicate(context));
+	}
+
+	private static Predicate<IEObjectDescription> createPredicate(
+			final LType context) {
+		return new Predicate<IEObjectDescription>() {
+
+			@Override
+			public boolean apply(IEObjectDescription input) {
+				LType type = (LType) input.getEObjectOrProxy();
+				if (type.eIsProxy()) {
+					type = (LType) EcoreUtil3.resolve(type, context.eResource()
+							.getResourceSet());
+				}
+				if (type != context && type.getName() != null) {
+					return true;
+				}
+				return false;
+			}
+		};
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/UUIdFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/UUIdFilterScope.java
new file mode 100644
index 0000000..fb9ee49
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/UUIdFilterScope.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.FilteringScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import com.google.common.base.Predicate;
+
+public class UUIdFilterScope extends FilteringScope {
+
+	public UUIdFilterScope(IScope scope) {
+		super(scope, createPredicate());
+	}
+
+	private static Predicate<IEObjectDescription> createPredicate() {
+		return new Predicate<IEObjectDescription>() {
+
+			@Override
+			public boolean apply(IEObjectDescription input) {
+				LType temp = (LType) input.getEObjectOrProxy();
+				if (temp instanceof LDataType) {
+					LDataType type = (LDataType) temp;
+					if (type.getJvmTypeReference() != null) {
+						if (type.getJvmTypeReference().getQualifiedName()
+								.equals("java.lang.String")) {
+							return true;
+						}
+					}
+				}
+				return false;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/WrappedTypeFilterScope.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/WrappedTypeFilterScope.java
new file mode 100644
index 0000000..5d6bfe0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/scope/WrappedTypeFilterScope.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.scope;
+
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.FilteringScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+
+import com.google.common.base.Predicate;
+
+public class WrappedTypeFilterScope extends FilteringScope {
+
+	public WrappedTypeFilterScope(IScope scope) {
+		super(scope, createPredicate());
+	}
+
+	private static Predicate<IEObjectDescription> createPredicate() {
+		return new Predicate<IEObjectDescription>() {
+			@Override
+			public boolean apply(IEObjectDescription input) {
+				LType type = (LType) input.getEObjectOrProxy();
+				if (type instanceof LEntity || type instanceof LBean) {
+					return true;
+				}
+				return false;
+			}
+		};
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java
new file mode 100644
index 0000000..e7ff302
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSemanticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.serializer;
+
+public class DtoGrammarSemanticSequencer extends AbstractDtoGrammarSemanticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..6c5fa1e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarSyntacticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.serializer;
+
+public class DtoGrammarSyntacticSequencer extends AbstractDtoGrammarSyntacticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarTransientValueService.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarTransientValueService.java
new file mode 100644
index 0000000..4082ee5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/serializer/DtoGrammarTransientValueService.java
@@ -0,0 +1,35 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.dto.xtext.serializer;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+
+@SuppressWarnings("restriction")
+public class DtoGrammarTransientValueService extends
+		LazyJvmTypeTransientValueService {
+
+	@Override
+	public ListTransient isListTransient(EObject semanticObject,
+			EStructuralFeature feature) {
+
+		if (feature == OSBPDtoPackage.Literals.LDTO__SUB_TYPES) {
+			return ListTransient.YES;
+		}
+
+		return super.isListTransient(semanticObject, feature);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarJavaValidator.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarJavaValidator.java
new file mode 100644
index 0000000..6f55c1e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/validation/DtoGrammarJavaValidator.java
@@ -0,0 +1,469 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+/*
+ * generated by Xtext
+ */
+package org.eclipse.osbp.dsl.dto.xtext.validation;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.util.TypeReferences;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.validation.CheckType;
+import org.eclipse.xtext.validation.ValidationMessageAcceptor;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+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.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoModel;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import com.google.inject.Inject;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("restriction")
+public class DtoGrammarJavaValidator extends
+		org.eclipse.osbp.dsl.dto.xtext.validation.AbstractDtoGrammarJavaValidator {
+
+	private static final String CODE__MISSING_OPPOSITE_REFERENCE = "104";
+	private static final String CODE__BIDIRECTIONAL_CASCADE_INVALID = "105";
+	private static final String CODE__CASCADE_DIRECTION_INVALID = "106";
+	private static final String CODE__OPPOSITE_WITHOUT_CASCADE = "107";
+	private static final String CODE__UUID_WRONG_TYPE = "108";
+	private static final String CODE__TWO_OPPOSITES_REQUIRED = "109";
+
+	private static final String CODE__DUPLICATE_ID = "110";
+	private static final String CODE__DUPLICATE_VERSION = "111";
+	private static final String CODE__DUPLICATE_PROPERTY_NAME = "112";
+	private static final String CODE__DUPLICATE_DOMAIN_KEY = "113";
+	private static final String CODE__DUPLICATE_DOMAIN_DESCRIPTION = "114";
+	private static final String CODE__DOMAIN_KEY__NO_MANY = "115";
+	private static final String CODE__DOMAIN_DESCRIPTION__NO_MANY = "116";
+	private static final String CODE__DOMAIN_KEY__TYPE = "117";
+	private static final String CODE__DOMAIN_DESCRIPTION__TYPE = "118";
+	private static final String CODE__DUPLICATE_DIRTY = "119";
+	private static final String CODE__DIRT__NO_MANY = "120";
+	private static final String CODE__DIRT__TYPE = "121";
+
+	@Inject
+	private IQualifiedNameProvider qnp;
+	@Inject
+	private DtoModelExtensions extensions;
+
+	@Check
+	public void checkDatatype_asPrimitive(LDataType dt) {
+		super.checkDatatype_asPrimitive(dt);
+	}
+
+	@Check
+	public void checkMulti_HasOppositeReference(LDtoReference prop) {
+		if (prop.isCascading()) {
+			if (extensions.isToMany(prop) && prop.getOpposite() == null) {
+				error("A cascading 'to-many' association needs an opposite reference.",
+						OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__MISSING_OPPOSITE_REFERENCE, (String[]) null);
+			}
+		}
+	}
+
+	@Check
+	public void checkOpposite_NotAlsoCascading(LDtoReference prop) {
+		if (prop.getOpposite() != null) {
+			if (prop.isCascading() && prop.getOpposite().isCascading()) {
+				error("Only one opposite may be specified as cascade",
+						OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+						CODE__BIDIRECTIONAL_CASCADE_INVALID, (String[]) null);
+			}
+
+			if (extensions.isToMany(prop.getOpposite())) {
+				if (prop.isCascading()) {
+					error("Cascade must not affect the common parent in a many-to-one relation",
+							prop,
+							OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+							CODE__CASCADE_DIRECTION_INVALID, new String[0]);
+				}
+			}
+		}
+	}
+
+	@Check
+	public void checkOpposite_TwoOpposites(LDtoReference prop) {
+		if (prop.getOpposite() != null
+				&& prop.getOpposite().getOpposite() == null) {
+			error("Both references need to have an opposite.",
+					OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE,
+					CODE__TWO_OPPOSITES_REQUIRED, (String[]) null);
+		}
+	}
+
+	@Check
+	public void checkOpposite_OneIsCascading(LDtoReference prop) {
+		// Bounds propBound = extensions.getBounds(prop);
+		//
+		// if (prop.getOpposite() != null) {
+		// Bounds oppositeBound = extensions.getBounds(prop.getOpposite());
+		//
+		// if (propBound.isToMany() || oppositeBound.isToMany()) {
+		// // no check required!
+		// // return;
+		// }
+		// }
+
+		if (prop.getOpposite() != null) {
+			if (!prop.isCascading() && !prop.getOpposite().isCascading()) {
+				error("Opposite references may only defined for cascading relations.",
+						prop, OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+						CODE__OPPOSITE_WITHOUT_CASCADE, new String[0]);
+			}
+		}
+	}
+
+	@Check
+	public void checkProperties_JavaKeyWord(LFeature lprop) {
+		super.checkProperties_JavaKeyWord(lprop);
+	}
+
+	@Check
+	public void checkDuplicatePackages_InFile(LDtoModel lmodel) {
+		Set<String> names = new HashSet<String>();
+		int counter = -1;
+		for (LPackage pkg : lmodel.getPackages()) {
+			counter++;
+			String pkgName = qnp.getFullyQualifiedName(pkg).toString();
+			if (names.contains(pkgName)) {
+				error(String.format("Package %s must not be defined twice!",
+						pkgName), OSBPDtoPackage.Literals.LDTO_MODEL__PACKAGES,
+						counter, CODE__DUPLICATE_LPACKAGE_IN_FILE,
+						(String[]) null);
+			}
+			names.add(pkgName);
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicateTypeInProject(LType type) {
+		if (type instanceof LDataType) {
+			return;
+		}
+		super.checkDuplicateType_InProject(type);
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicateDatatypeInPackage(LTypedPackage pkg) {
+		super.checkDuplicateDatatypeInPackage(pkg);
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicatePackage_InProject(LPackage lPackage) {
+		super.checkDuplicatePackage_InProject(lPackage);
+	}
+
+	@Check
+	public void checkManyToMany(LDtoReference prop) {
+		DtoModelExtensions extension = new DtoModelExtensions();
+		if (prop.getOpposite() != null && extension.isToMany(prop)
+				&& extension.isToMany(prop.getOpposite())) {
+			error(String.format("ManyToMany relations are not permitted!", qnp
+					.getFullyQualifiedName(prop).toString()),
+					OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE,
+					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+					CODE__MANY_TO_MANY__NOT_SUPPORTED, (String[]) null);
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_Features(LDtoAttribute prop) {
+		if (prop.isUuid()) {
+			boolean typeOK = false;
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (typename.equals("java.lang.String")) {
+					typeOK = true;
+				}
+			}
+			if (!typeOK) {
+				error("UUIDs must be of type String.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__UUID,
+						CODE__UUID_WRONG_TYPE, new String[0]);
+			}
+		}
+
+		if (prop.isDomainKey()) {
+			if (extensions.isToMany(prop)) {
+				error("DomainKey is not valid for one to many relations.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+						CODE__DOMAIN_KEY__NO_MANY, new String[0]);
+
+			}
+
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (!typename.equals("java.lang.String")) {
+					error("DomainKey must be of type String.",
+							OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+							CODE__DOMAIN_KEY__TYPE, new String[0]);
+				}
+			}
+		}
+
+		if (prop.isDomainDescription()) {
+			if (extensions.isToMany(prop)) {
+				error("DomainDescription is not valid for one to many relations.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+						CODE__DOMAIN_DESCRIPTION__NO_MANY, new String[0]);
+
+			}
+
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (!typename.equals("java.lang.String")) {
+					error("DomainDescription must be of type String.",
+							OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+							CODE__DOMAIN_DESCRIPTION__TYPE, new String[0]);
+				}
+			}
+		}
+
+		if (prop.isDirty()) {
+			if (extensions.isToMany(prop)) {
+				error("Dirty is not valid for one to many relations.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__DIRTY,
+						CODE__DIRT__NO_MANY, new String[0]);
+
+			}
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (!typename.equals("java.lang.Boolean")
+						&& !typename.equals(Boolean.TYPE.getName())) {
+					error("Dirty is not for the datatype. Only boolean valid.",
+							OSBPTypesPackage.Literals.LATTRIBUTE__DIRTY,
+							CODE__DIRT__TYPE, new String[0]);
+				}
+			}
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_Features(LDto dto) {
+
+		int idCounter = 0;
+		int versionCounter = 0;
+		int domainKeyCounter = 0;
+		int domainDescriptionCounter = 0;
+		int dirtyCounter = 0;
+		Map<String, Integer> attNames = new HashMap<String, Integer>();
+		for (LFeature feature : dto.getAllFeatures()) {
+			if (feature instanceof LDtoAttribute) {
+				LDtoAttribute att = (LDtoAttribute) feature;
+				if (att.isId() || att.isUuid()) {
+					idCounter++;
+				}
+				if (att.isVersion()) {
+					versionCounter++;
+				}
+				if (att.isDomainKey()) {
+					domainKeyCounter++;
+				}
+				if (att.isDomainDescription()) {
+					domainDescriptionCounter++;
+				}
+				if (att.isDirty()) {
+					dirtyCounter++;
+				}
+			}
+
+			if (!attNames.containsKey(feature.getName())) {
+				attNames.put(feature.getName(), 1);
+			} else {
+				int value = attNames.get(feature.getName());
+				attNames.put(feature.getName(), ++value);
+			}
+		}
+
+		if (idCounter > 1) {
+			int i = 0;
+			for (LDtoFeature feature : dto.getFeatures()) {
+				if (feature instanceof LDtoAttribute) {
+					if (((LDtoAttribute) feature).isId()
+							|| ((LDtoAttribute) feature).isUuid()) {
+						error("A DTO must only have one ID property.",
+								OSBPDtoPackage.Literals.LDTO__FEATURES, i,
+								CODE__DUPLICATE_ID, new String[0]);
+						break;
+					}
+				}
+
+				i++;
+			}
+		}
+		if (versionCounter > 1) {
+			int i = 0;
+			for (LDtoFeature feature : dto.getFeatures()) {
+				if (feature instanceof LDtoAttribute) {
+					if (((LDtoAttribute) feature).isVersion()) {
+						error("A DTO must only have one Version property.",
+								OSBPDtoPackage.Literals.LDTO__FEATURES, i,
+								CODE__DUPLICATE_VERSION, new String[0]);
+						break;
+					}
+				}
+				i++;
+			}
+		}
+
+		if (domainKeyCounter > 1) {
+			int i = 0;
+			for (LDtoFeature feature : dto.getFeatures()) {
+				if (feature instanceof LDtoAttribute) {
+					if (((LDtoAttribute) feature).isDomainKey()) {
+						error("A DTO must only have one DomainKey property.",
+								OSBPDtoPackage.Literals.LDTO__FEATURES, i,
+								CODE__DUPLICATE_DOMAIN_KEY, new String[0]);
+						break;
+					}
+				}
+				i++;
+			}
+		}
+
+		if (domainDescriptionCounter > 1) {
+			int i = 0;
+			for (LDtoFeature feature : dto.getFeatures()) {
+				if (feature instanceof LDtoAttribute) {
+					if (((LDtoAttribute) feature).isDomainDescription()) {
+						error("A DTO must only have one DomainDescription property.",
+								OSBPDtoPackage.Literals.LDTO__FEATURES, i,
+								CODE__DUPLICATE_DOMAIN_DESCRIPTION,
+								new String[0]);
+						break;
+					}
+				}
+				i++;
+			}
+		}
+
+		if (dirtyCounter > 1) {
+			int i = 0;
+			for (LDtoFeature feature : dto.getFeatures()) {
+				if (feature instanceof LDtoAttribute) {
+					if (((LDtoAttribute) feature).isId()
+							|| ((LDtoAttribute) feature).isUuid()) {
+						error("A DTO must only have one dirty property.",
+								OSBPDtoPackage.Literals.LDTO__FEATURES, i,
+								CODE__DUPLICATE_DIRTY, new String[0]);
+						break;
+					}
+				}
+
+				i++;
+			}
+		}
+
+		for (Map.Entry<String, Integer> entry : attNames.entrySet()) {
+			if (entry.getValue() > 1) {
+				int i = 0;
+				for (LDtoFeature feature : dto.getFeatures()) {
+					if (feature.getName().equals(entry.getKey())) {
+						error(String.format(
+								"The property \"%s\" must only be defined once!",
+								feature.getName()),
+								OSBPDtoPackage.Literals.LDTO__FEATURES, i,
+								CODE__DUPLICATE_PROPERTY_NAME, new String[0]);
+						break;
+					}
+					i++;
+				}
+			}
+		}
+	}
+
+	@Check
+	public void checkClassPath(LTypedPackage dtoModel) {
+		TypeReferences typeReferences = getServices().getTypeReferences();
+		final JvmGenericType listType = (JvmGenericType) typeReferences
+				.findDeclaredType(List.class, dtoModel);
+		if (listType == null || listType.getTypeParameters().isEmpty()) {
+			error("Couldn't find a JDK 1.5 or higher on the project's classpath.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__JDK_1_5);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.dsl.dto.lib.services.IDTOService", dtoModel) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.osbp.dsl.dto.lib' on the project's classpath.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DTO_LIB);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.runtime.common.annotations.Dispose", dtoModel) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.osbp.runtime.common' on the project's classpath.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__L_RUNTIME_COMMON);
+		}
+		if (typeReferences.findDeclaredType(Extension.class, dtoModel) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.xtext.xbase.lib' 2.7.3 or higher on the project's classpath.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__XBASE_LIB);
+		}
+		if (typeReferences.findDeclaredType("javax.persistence.Persistence",
+				dtoModel) == null) {
+			warning("Couldn't find the optional library 'javax.persistence' 2.1.0 or higher on the project's classpath. If you are using JPA-Dto-Services, the library is mandatory.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__JAVAX_PERSISTENCE);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.dsl.common.datatypes.IDatatypeConstants",
+				dtoModel) == null) {
+			warning("Couldn't find the optional library 'org.eclipse.osbp.dsl.datatype.lib' on the project's classpath. This may cause resolving problems.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+		if (typeReferences.findDeclaredType("javax.validation.Valid", dtoModel) == null) {
+			error("Couldn't find the library 'javax.validation' on the project's classpath. This may cause resolving problems.",
+					dtoModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+	}
+
+	@Check(CheckType.FAST)
+	public void checkFeatureHasName(LFeature feature) {
+		if (feature instanceof LDtoInheritedAttribute
+				|| feature instanceof LDtoInheritedReference) {
+			return;
+		}
+		super.checkFeatureHasName(feature);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/valueconverter/DtoQualifiedNameProvider.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/valueconverter/DtoQualifiedNameProvider.java
new file mode 100644
index 0000000..cc388e0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/valueconverter/DtoQualifiedNameProvider.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.valueconverter;
+
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.linking.impl.LinkingHelper;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.nodemodel.ILeafNode;
+import org.eclipse.xtext.nodemodel.impl.CompositeNodeWithSemanticElement;
+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonQualifiedNameProvider;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+
+import com.google.inject.Inject;
+
+public class DtoQualifiedNameProvider extends CommonQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+	@Inject
+	private DtoModelExtensions extensions;
+	@Inject
+	private LinkingHelper linkingHelper;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+
+		if (obj instanceof LDtoFeature) {
+			LDtoFeature feature = (LDtoFeature) obj;
+
+			String name = "";
+			if (extensions.inherited(feature)) {
+				CompositeNodeWithSemanticElement node = (CompositeNodeWithSemanticElement) NodeModelUtils
+						.getNode(feature);
+				if (node == null) {
+					// the model is beeing serialized. No grammar available yet
+					if(feature instanceof LDtoInheritedAttribute){
+						name = ((LDtoInheritedAttribute) feature).getInheritedFeature().getName();
+					}else{
+						name = ((LDtoInheritedReference) feature).getInheritedFeature().getName();
+					}
+				} else {
+					List<ILeafNode> leafs = IterableExtensions.toList(node
+							.getLeafNodes());
+					name = linkingHelper.getCrossRefNodeAsString(leafs.get(3),
+							false);
+				}
+			} else {
+				name = feature.getName();
+			}
+
+			return name != null ? qualifiedNameConverter.toQualifiedName(name)
+					: null;
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/valueconverter/DtoValueConverterService.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/valueconverter/DtoValueConverterService.java
new file mode 100644
index 0000000..2d3a524
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/dto/xtext/valueconverter/DtoValueConverterService.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.dto.xtext.valueconverter;
+
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonValueConverterService;
+
+import com.google.inject.Singleton;
+
+/**
+ * Adds a value conversion for the QualifiedNameWithWildCard rule.
+ */
+@SuppressWarnings("restriction")
+@Singleton
+public class DtoValueConverterService extends CommonValueConverterService {
+
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+	
+	@ValueConverter(rule = "RefFQN")
+	public IValueConverter<String> getQualifiedNameRefFQN() {
+		return getQualifiedNameValueConverter();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/DtoFactoryImplCustom.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/DtoFactoryImplCustom.java
new file mode 100644
index 0000000..042f158
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/DtoFactoryImplCustom.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LAutoInheritDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+public class DtoFactoryImplCustom extends OSBPDtoFactoryImpl {
+
+	@Override
+	public LDto createLDto() {
+		return new LDtoImplCustom();
+	}
+	
+	@Override
+	public LAutoInheritDto createLAutoInheritDto() {
+		return new LAutoinheritDtoImplCustom();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoinheritDtoImplCustom.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoinheritDtoImplCustom.java
new file mode 100644
index 0000000..1ce13f5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/LAutoinheritDtoImplCustom.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+public class LAutoinheritDtoImplCustom extends LAutoInheritDtoImpl {
+
+	/**
+	 * Overrides super type to ensure bidirectional proxy resolving
+	 */
+	@Override
+	public LDto getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject) superType;
+			LDto oldSuperEntity = (LDto) oldSuperType;
+			superType = (LDto) eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+
+				// ATENTION: inverse add must be called since bidirectional
+				// references uses proxy resolution for lazy linking. And the
+				// sub_types added to proxy must be added to new superType
+				for (LDto subType : oldSuperEntity.getSubTypes()) {
+					((InternalEObject) superType).eInverseAdd(
+							(InternalEObject) subType,
+							OSBPDtoPackage.LAUTO_INHERIT_DTO__SUB_TYPES, LDto.class, null);
+				}
+
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							OSBPDtoPackage.LAUTO_INHERIT_DTO__SUPER_TYPE, oldSuperType,
+							superType));
+			}
+		}
+		return superType;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImplCustom.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImplCustom.java
new file mode 100644
index 0000000..f044428
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/impl/LDtoImplCustom.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.dto.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+public class LDtoImplCustom extends LDtoImpl {
+
+	/**
+	 * Overrides super type to ensure bidirectional proxy resolving
+	 */
+	@Override
+	public LDto getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject) superType;
+			LDto oldSuperEntity = (LDto) oldSuperType;
+			superType = (LDto) eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+
+				// ATENTION: inverse add must be called since bidirectional
+				// references uses proxy resolution for lazy linking. And the
+				// sub_types added to proxy must be added to new superType
+				for (LDto subType : oldSuperEntity.getSubTypes()) {
+					((InternalEObject) superType).eInverseAdd(
+							(InternalEObject) subType,
+							OSBPDtoPackage.LDTO__SUB_TYPES, LDto.class, null);
+				}
+
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							OSBPDtoPackage.LDTO__SUPER_TYPE, oldSuperType,
+							superType));
+			}
+		}
+		return superType;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/util/NamingConventionsUtil.java b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/util/NamingConventionsUtil.java
new file mode 100644
index 0000000..4c336f3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.dto.xtext/src/org/eclipse/osbp/dsl/semantic/dto/util/NamingConventionsUtil.java
@@ -0,0 +1,261 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.dto.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+/**
+ * This util is used to convert between entity packages and dto packages.
+ */
+public class NamingConventionsUtil {
+
+	/** The Constant toDtoPathReplacements. */
+	private static final List<Pair> toDtoPathReplacements;
+	static {
+		toDtoPathReplacements = new ArrayList<Pair>();
+		toDtoPathReplacements.add(new Pair(".entitymodel", ".dtos"));
+		toDtoPathReplacements.add(new Pair("/entity/", "/dto/"));
+		toDtoPathReplacements.add(new Pair("/entities/", "/dtos/"));
+		toDtoPathReplacements.add(new Pair(".entities", ".dtos"));
+		toDtoPathReplacements.add(new Pair(".entity", ".dto"));
+	}
+
+	/** The Constant toEntityPathReplacements. */
+	private static final List<Pair> toEntityPathReplacements;
+	static {
+		toEntityPathReplacements = new ArrayList<Pair>();
+		toEntityPathReplacements.add(new Pair(".dtos.", ".entities."));
+		toEntityPathReplacements.add(new Pair(".dtos", ".entitymodel"));
+		toEntityPathReplacements.add(new Pair("/dto/", "/entity/"));
+		toEntityPathReplacements.add(new Pair("/dtos/", "/entities/"));
+		toEntityPathReplacements.add(new Pair(".dto", ".entity"));
+	}
+
+	/**
+	 * Replaces package fragments and returns the package name used for Auto-DTOs.
+	 *
+	 * @param packageName
+	 *            the package name
+	 * @return the string
+	 */
+	public static String toDtoPackage(String packageName) {
+		if (packageName == null) {
+			return "";
+		}
+		String result = packageName;
+		for (Pair pair : toDtoPathReplacements) {
+			result = pair.replace(result);
+		}
+		return result;
+	}
+
+	/**
+	 * Replaces package fragments and returns the full qualified name used for Auto-Entity-DTOs including the 'Dto'-Prefix.
+	 *
+	 * @param qualifiedEntityName
+	 *            the qualified entity name
+	 * @return the string
+	 */
+	public static String toDtoQualifiedName(String qualifiedEntityName) {
+		return toDtoName(toDtoQualifiedNameForEnum(qualifiedEntityName));
+	}
+
+	/**
+	 * Replaces package fragments and returns the full qualified name used for Auto-Enum-DTOs without the 'Dto'-Prefix.
+	 *
+	 * @param qualifiedEnumName
+	 *            the qualified enum name
+	 * @return the string
+	 */
+	public static String toDtoQualifiedNameForEnum(String qualifiedEnumName) {
+		if (qualifiedEnumName == null) {
+			return "";
+		}
+		String result = qualifiedEnumName;
+		for (Pair pair : toDtoPathReplacements) {
+			result = pair.replace(result);
+		}
+		return result;
+	}
+
+	/**
+	 * Replaces package fragments and returns the package name used for Auto-DTOs.
+	 *
+	 * @param lPackage
+	 *            the l package
+	 * @return the string
+	 */
+	public static String toDtoPackage(LTypedPackage lPackage) {
+		return toDtoPackage(lPackage.getName());
+	}
+
+	/**
+	 * Returns the name of the dto for the given type.
+	 *
+	 * @param lType
+	 *            the l type
+	 * @return the string
+	 */
+	public static String toDtoName(LType lType) {
+		return (lType instanceof LEnum) ? lType.getName() : toDtoName(lType.getName());
+	}
+
+	/**
+	 * Returns the name of the dto for the given type.
+	 *
+	 * @param prefix
+	 *            the prefix
+	 * @return the string
+	 */
+	public static String toDtoName(String prefix) {
+		return prefix + "Dto";
+	}
+
+	/**
+	 * Replaces package fragments of the Auto-DTOs and returns the package name used for the Entity.
+	 *
+	 * @param packageName
+	 *            the package name
+	 * @return the string
+	 */
+	public static String toEntityPackage(String packageName) {
+		if (packageName == null) {
+			return "";
+		}
+		String result = packageName;
+		for (Pair pair : toEntityPathReplacements) {
+			result = pair.replace(result);
+		}
+		return result;
+	}
+
+	/**
+	 * Replaces package fragments of the Auto-DTOs and returns the package name used for the Entity.
+	 *
+	 * @param lPackage
+	 *            the l package
+	 * @return the string
+	 */
+	public static String toEntityPackage(LTypedPackage lPackage) {
+		return toEntityPackage(lPackage.getName());
+	}
+
+	/**
+	 * Returns the name of the entity for the given type.
+	 *
+	 * @param lType
+	 *            the l type
+	 * @return the string
+	 */
+	public static String toEntityName(LType lType) {
+		return (lType instanceof LEnum) ? lType.getName() : toEntityName(lType.getName());
+	}
+
+	/**
+	 * Returns the name of the entity for the given type.
+	 *
+	 * @param prefix
+	 *            the prefix
+	 * @return the string
+	 */
+	public static String toEntityName(String prefix) {
+		int idx = prefix.lastIndexOf("Dto");
+		return prefix.substring(0, idx);
+	}
+
+	/**
+	 * Returns the name of the entity for the given LDto.
+	 *
+	 * @param prefix
+	 *            the prefix
+	 * @return the string
+	 */
+	public static String toEntityName(LDto dto) {
+		String prefix = dto.getName();
+		int idx = prefix.lastIndexOf("Dto");
+		return prefix.substring(0, idx);
+	}
+
+	/**
+	 * Returns the full qualified name of the entity for the given type.
+	 *
+	 * @param fqnDto
+	 *            the fqn dto
+	 * @return the string
+	 */
+	public static String toFqnEntityName(String fqnDto) {
+		int idx = fqnDto.lastIndexOf(".");
+		String pckgName = fqnDto.substring(0, idx + 1);
+		String dtoName = fqnDto.substring(idx + 1);
+		return toEntityPackage(pckgName).concat(toEntityName(dtoName));
+	}
+
+	/**
+	 * Returns the full qualified name of the entity for the given LDto.
+	 *
+	 * @param dto
+	 *            the LDto object
+	 * @return the full qualified name of an entity as string
+	 */
+	public static String toFqnEntityName(LDto dto) {
+		if (dto.eContainer() != null && dto.eContainer() instanceof LTypedPackage) {
+			String pckgName = ((LTypedPackage) dto.eContainer()).getName();
+			String dtoName = dto.getName();
+			return toEntityPackage(pckgName).concat(toEntityName(dtoName));
+		} else {
+			throw new IllegalStateException();
+		}
+	}
+
+	/**
+	 * The Class Pair.
+	 */
+	private static class Pair {
+
+		/** The source. */
+		private final String source;
+
+		/** The target. */
+		private final String target;
+
+		/**
+		 * Instantiates a new pair.
+		 *
+		 * @param source
+		 *            the source
+		 * @param target
+		 *            the target
+		 */
+		public Pair(String source, String target) {
+			super();
+			this.source = source;
+			this.target = target;
+		}
+
+		/**
+		 * Replace.
+		 *
+		 * @param value
+		 *            the value
+		 * @return the string
+		 */
+		public String replace(String value) {
+			return value.replace(source, target);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/.project b/org.eclipse.osbp.dsl.eclipse.ui.examples/.project
new file mode 100644
index 0000000..cedcd87
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.eclipse.ui.examples</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/LICENSE.txt b/org.eclipse.osbp.dsl.eclipse.ui.examples/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/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.dsl.eclipse.ui.examples/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.eclipse.ui.examples/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..532efcc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.eclipse.ui.examples
+Bundle-SymbolicName: org.eclipse.osbp.dsl.eclipse.ui.examples;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Require-Bundle: org.eclipse.ui;bundle-version="3.105.0",
+ org.eclipse.core.resources;bundle-version="3.8.100",
+ org.eclipse.core.runtime;bundle-version="3.9.0",
+ org.eclipse.emf.common.ui;bundle-version="2.8.0",
+ org.eclipse.ui.ide;bundle-version="3.9.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Import-Package: javax.inject;version="1.0.0",
+ org.slf4j;version="1.7.2"
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/about.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/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.dsl.eclipse.ui.examples/about.ini b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.ini
new file mode 100644
index 0000000..f21b13a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.ini
@@ -0,0 +1,2 @@
+featureImage=icons/Lunifera_Serpia_64.png
+aboutText=Lunifera modeling tools
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/about.mappings b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/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.dsl.eclipse.ui.examples/about.properties b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.properties
new file mode 100644
index 0000000..2475d99
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.eclipse.ui.examples
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties b/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties
new file mode 100644
index 0000000..b6c5a6e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/build.properties
@@ -0,0 +1,12 @@
+
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.html,  plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               about.ini,\
+               contents/,\
+               epl-v10.html,\
+               license.html,\
+               embedd-examples.xml
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/embedd-examples.xml b/org.eclipse.osbp.dsl.eclipse.ui.examples/embedd-examples.xml
new file mode 100644
index 0000000..b39033f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/embedd-examples.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<project name="Embedd the example into the contents folder" default="main">
+	<target name="main">
+		<echo>Embedding example: ${example.name}</echo>
+
+		<copy todir="${basedir}/contents/${example.name}">
+			<fileset dir="${basedir}/../${example.name}">
+				<include name="*" />
+				<include name="models/**" />
+				<exclude name="target/**" />
+			</fileset>
+		</copy>
+		<zip basedir="${basedir}/contents/${example.name}" destfile="${basedir}/contents/${example.name}.zip" />
+		<delete dir="${basedir}/contents/${example.name}" />
+	</target>
+</project>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-v10.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/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.dsl.eclipse.ui.examples/icons/OSBP_16.png b/org.eclipse.osbp.dsl.eclipse.ui.examples/icons/OSBP_16.png
new file mode 100644
index 0000000..4b26dbb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/icons/OSBP_16.png
Binary files differ
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/icons/PLACEHOLDER b/org.eclipse.osbp.dsl.eclipse.ui.examples/icons/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/icons/PLACEHOLDER
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/license.html b/org.eclipse.osbp.dsl.eclipse.ui.examples/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/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.dsl.eclipse.ui.examples/plugin.xml b/org.eclipse.osbp.dsl.eclipse.ui.examples/plugin.xml
new file mode 100644
index 0000000..99f1a75
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+	<extension point="org.eclipse.ui.newWizards">
+		<category id="org.eclipse.osbp.dsl.Examples" 
+				  name="OSBP DSL Examples" 
+				  parentCategory="org.eclipse.ui.Examples" />
+	</extension>
+
+   <!-- ========= org.eclipse.osbp.dsl.examples.EntityExamples ========= -->
+	<extension point="org.eclipse.ui.newWizards">
+		<wizard	id="org.eclipse.osbp.dsl.examples.EntityExamples" 
+			name="EntityDSL Samples" 
+			class="org.eclipse.emf.common.ui.wizard.ExampleInstallerWizard" 
+			category="org.eclipse.ui.Examples/org.eclipse.osbp.dsl.Examples"
+			icon="icons/OSBP_16.png" 
+			project="true">
+			<description>Installs the OSBP Entity DSL examples</description>
+		</wizard>
+	</extension>
+	<extension point="org.eclipse.emf.common.ui.examples">
+	  <example wizardID="org.eclipse.osbp.dsl.examples.EntityExamples" pageImage="icons/OSBP_16.png">
+		 <projectDescriptor name="org.eclipse.osbp.dsl.examples.entity" contentURI="contents/org.eclipse.osbp.dsl.examples.entity.zip" description="A hands-on tutorial to learn the OSBP Entity DSL."/>
+	  </example>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml b/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml
new file mode 100644
index 0000000..1a25437
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui.examples/pom.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.eclipse.ui.examples</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<!-- clean the target folder of entity example -->
+						<fileset>
+							<directory>${basedir}/../org.eclipse.osbp.dsl.examples.entity/target/</directory>
+							<includes>
+								<include>**/*</include>
+							</includes>
+							<followSymlinks>false</followSymlinks>
+						</fileset>
+						<!-- clean the contents folder -->
+						<fileset>
+							<directory>${basedir}/contents</directory>
+							<includes>
+								<include>**/*</include>
+							</includes>
+							<followSymlinks>false</followSymlinks>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>prepare-package</phase>
+						<configuration>
+							<quiet>true</quiet>
+							<target>
+								<ant antfile="embedd-examples.xml" target="main" dir=".">
+									<property name="example.name" value="org.eclipse.osbp.dsl.examples.entity"/>
+								</ant>
+							</target>
+						</configuration>
+						<goals>
+							<goal>run</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/.project b/org.eclipse.osbp.dsl.eclipse.ui/.project
new file mode 100644
index 0000000..83a57d6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.eclipse.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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/LICENSE.txt b/org.eclipse.osbp.dsl.eclipse.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.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.dsl.eclipse.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.eclipse.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c514d73
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.eclipse.ui
+Bundle-SymbolicName: org.eclipse.osbp.dsl.eclipse.ui;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Activator: org.eclipse.osbp.dsl.eclipse.ui.OSBPUiActivator
+Bundle-Vendor: Eclipse OSBP
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.ui.console,
+ org.eclipse.jdt.ui,
+ org.eclipse.ui.navigator,
+ org.eclipse.ui.navigator.resources,
+ org.eclipse.jdt.core,
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xpand,
+ org.eclipse.xtend
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Import-Package: javax.inject;version="1.0.0",
+ org.slf4j;version="1.7.2"
+Export-Package: org.eclipse.osbp.dsl.eclipse.ui.perspectives;
+  uses:="org.eclipse.ui";version="0.9.0",
+ org.eclipse.osbp.dsl.eclipse.ui.preferences;
+  uses:="org.eclipse.jface.preference,
+   org.eclipse.ui,
+   org.eclipse.core.runtime.preferences";version="0.9.0"
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/about.html b/org.eclipse.osbp.dsl.eclipse.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.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.dsl.eclipse.ui/about.ini b/org.eclipse.osbp.dsl.eclipse.ui/about.ini
new file mode 100644
index 0000000..f21b13a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/about.ini
@@ -0,0 +1,2 @@
+featureImage=icons/Lunifera_Serpia_64.png
+aboutText=Lunifera modeling tools
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/about.mappings b/org.eclipse.osbp.dsl.eclipse.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.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.dsl.eclipse.ui/about.properties b/org.eclipse.osbp.dsl.eclipse.ui/about.properties
new file mode 100644
index 0000000..877262b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.eclipse.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/build.properties b/org.eclipse.osbp.dsl.eclipse.ui/build.properties
new file mode 100644
index 0000000..53e4ece
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/build.properties
@@ -0,0 +1,10 @@
+
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.html,  plugin.xml,\
+               META-INF/,\
+               .,\
+               icons/,\
+               about.ini,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/epl-v10.html b/org.eclipse.osbp.dsl.eclipse.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.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.dsl.eclipse.ui/icons/OSBP_16.png b/org.eclipse.osbp.dsl.eclipse.ui/icons/OSBP_16.png
new file mode 100644
index 0000000..4b26dbb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/icons/OSBP_16.png
Binary files differ
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/icons/PLACEHOLDER b/org.eclipse.osbp.dsl.eclipse.ui/icons/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/icons/PLACEHOLDER
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/license.html b/org.eclipse.osbp.dsl.eclipse.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.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.dsl.eclipse.ui/plugin.xml b/org.eclipse.osbp.dsl.eclipse.ui/plugin.xml
new file mode 100644
index 0000000..ef94d20
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension point="org.eclipse.jdt.core.classpathContainerInitializer">            
+   		<classpathContainerInitializer                                          
+			id="org.eclipse.osbp.dsl.entity.ENTITY_CONTAINER"                                                        
+			class="org.eclipse.osbp.dsl.eclipse.ui.buildpath.EntityContainerInitializer"/>                           
+	</extension>
+	<extension
+         point="org.eclipse.jdt.ui.classpathContainerPage">
+      <classpathContainerPage
+            name="OSBP modeling container"
+            class="org.eclipse.osbp.dsl.eclipse.ui.buildpath.EntityContainerWizardPage"
+            id="org.eclipse.osbp.dsl.entity.ENTITY_CONTAINER">
+      </classpathContainerPage>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/pom.xml b/org.eclipse.osbp.dsl.eclipse.ui/pom.xml
new file mode 100644
index 0000000..8ad12d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.eclipse.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/OSBPUiActivator.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/OSBPUiActivator.java
new file mode 100644
index 0000000..87b33ef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/OSBPUiActivator.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2011, 2014 - Cristiano Gavião (Brazil), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ * 		Cristiano Gaviao - Initial implementation
+ */
+package org.eclipse.osbp.dsl.eclipse.ui;
+
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+import com.google.inject.Injector;
+
+public class OSBPUiActivator extends AbstractUIPlugin implements IStartup {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.eclipse.osbp.dsl.eclipse.ui"; //$NON-NLS-1$
+
+	// The shared instance
+	private static OSBPUiActivator plugin;
+
+	private Injector childInjector;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		childInjector = null;
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 * 
+	 * @return the shared instance
+	 */
+
+	public static OSBPUiActivator getInstance() {
+		return plugin;
+	}
+
+	@Override
+	public void earlyStartup() {
+
+	}
+
+	/**
+	 * Returns an image descriptor for the image file at the given plug-in
+	 * relative path
+	 * 
+	 * @param path
+	 *            the path
+	 * @return the image descriptor
+	 */
+	public static ImageDescriptor getImageDescriptor(String path) {
+		return imageDescriptorFromPlugin(PLUGIN_ID, path);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityClasspathContainer.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityClasspathContainer.java
new file mode 100644
index 0000000..a4e1ed5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityClasspathContainer.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * 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
+ *
+ * Contributors:
+ *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
+ * 
+ * Original source from org.eclipse.xtend.ide.buildpath.XtendsClasspathContainer
+ * 
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.buildpath;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jdt.core.IAccessRule;
+import org.eclipse.jdt.core.IClasspathAttribute;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.JavaCore;
+import org.osgi.framework.Bundle;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+final public class EntityClasspathContainer implements IClasspathContainer {
+
+	private static final String XTEXT_XBASE_LIB_BUNDLE_ID = "org.eclipse.xtext.xbase.lib";
+	private static final String XTEND_LIB_BUNDLE_ID = "org.eclipse.xtend.lib";
+	private static final String PERSISTENCE_BUNDLE_ID = "javax.persistence";
+	private static final String DATATYPES_BUNDLE_ID = "org.eclipse.osbp.dsl.datatype.lib";
+	private static final String DTO_BUNDLE_ID = "org.eclipse.osbp.dsl.dto.lib";
+	private static final String UI_GRAMMAR_BUNDLE_ID = "org.eclipse.osbp.ecview.dsl.lib";
+	private static final String RUNTIME_COMMON_BUNDLE_ID = "org.eclipse.osbp.runtime.common";
+	private static final String ECVIEW_COMMON_BUNDLE_ID = "org.eclipse.osbp.ecview.core.common";
+	private static final String LUNIFERA_JSR303_BUNDLE_ID = "org.eclipse.osbp.runtime.jsr303.validation";
+	private static final String OSGI_SERVICES_BUNDLE_ID = "org.eclipse.osgi.services";
+	private static final String OSGI_BUNDLE_ID = "org.eclipse.osgi";
+	private static final String SLF4J_API = "org.slf4j.api";
+	private static final String JAVAX_VALIDATION = "javax.validation.api";
+
+	public static final String[] BUNDLE_IDS_TO_INCLUDE = new String[] {
+			"com.google.guava", XTEXT_XBASE_LIB_BUNDLE_ID, XTEND_LIB_BUNDLE_ID,
+			PERSISTENCE_BUNDLE_ID, LUNIFERA_JSR303_BUNDLE_ID, OSGI_BUNDLE_ID,
+			OSGI_SERVICES_BUNDLE_ID, DATATYPES_BUNDLE_ID, DTO_BUNDLE_ID,
+			ECVIEW_COMMON_BUNDLE_ID, UI_GRAMMAR_BUNDLE_ID,
+			RUNTIME_COMMON_BUNDLE_ID, SLF4J_API, JAVAX_VALIDATION };
+
+	private static final String SOURCE_SUFIX = ".source"; //$NON-NLS-1$
+	private static final Logger LOG = LoggerFactory
+			.getLogger(EntityClasspathContainer.class);
+
+	private final IPath containerPath;
+	private IClasspathEntry[] classPathEnries;
+
+	EntityClasspathContainer(IPath containerPath) {
+		this.containerPath = containerPath;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public IClasspathEntry[] getClasspathEntries() {
+		if (classPathEnries == null) {
+			List<IClasspathEntry> cpEntries = new ArrayList<IClasspathEntry>();
+			for (String bundleId : EntityClasspathContainer.BUNDLE_IDS_TO_INCLUDE) {
+				addEntry(cpEntries, bundleId);
+			}
+			classPathEnries = cpEntries.toArray(new IClasspathEntry[] {});
+		}
+		return classPathEnries;
+	}
+
+	private void addEntry(final List<IClasspathEntry> cpEntries,
+			final String bundleId) {
+		Bundle bundle = Platform.getBundle(bundleId);
+		if (bundle != null) {
+			IPath bundlePath = bundlePath(bundle);
+			IPath sourceBundlePath = calculateSourceBundlePath(bundle,
+					bundlePath);
+			IClasspathAttribute[] extraAttributes = null;
+
+			cpEntries.add(JavaCore.newLibraryEntry(bundlePath,
+					sourceBundlePath, null, new IAccessRule[] {},
+					extraAttributes, false));
+		}
+	}
+
+	private IPath bundlePath(Bundle bundle) {
+		IPath path = binFolderPath(bundle);
+		if (bundle.getSymbolicName().equals(OSGI_BUNDLE_ID) || path == null) {
+			// common jar file case, no bin folder
+			try {
+				path = new Path(FileLocator.getBundleFile(bundle)
+						.getAbsolutePath());
+			} catch (IOException e) {
+				LOG.error(
+						"Can't resolve path '" + bundle.getSymbolicName() + "'", e); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		}
+		return path;
+
+	}
+
+	private IPath binFolderPath(Bundle bundle) {
+		URL binFolderURL = FileLocator.find(bundle, new Path("bin"), null);
+		if(binFolderURL == null) {
+			binFolderURL = FileLocator.find(bundle, new Path("target/classes"), null);
+		}
+		if (binFolderURL != null) {
+			try {
+				URL binFolderFileURL = FileLocator.toFileURL(binFolderURL);
+				return new Path(binFolderFileURL.getPath()).makeAbsolute();
+			} catch (IOException e) {
+				LOG.error(
+						"Can't resolve path '" + bundle.getSymbolicName() + "'", e); //$NON-NLS-1$ //$NON-NLS-2$
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * <p>
+	 * We can't use P2Utils and we can't use SimpleConfiguratorManipulator
+	 * because of API breakage between 3.5 and 4.2. So we do a bit EDV (Computer
+	 * data processing) ;-)
+	 * 
+	 */
+	private IPath calculateSourceBundlePath(Bundle bundle, IPath bundleLocation) {
+		IPath sourcesPath = null;
+		// Not an essential functionality, make it robust
+		try {
+			IPath binFolderPath = binFolderPath(bundle);
+			if (binFolderPath == null) {
+				// common case, jar file.
+				IPath bundlesParentFolder = bundleLocation
+						.removeLastSegments(1);
+				String binaryJarName = bundleLocation.lastSegment();
+				String symbolicName = bundle.getSymbolicName();
+				String sourceJarName = binaryJarName.replace(symbolicName,
+						symbolicName.concat(SOURCE_SUFIX));
+				IPath potentialSourceJar = bundlesParentFolder
+						.append(sourceJarName);
+				if (potentialSourceJar.toFile().exists())
+					sourcesPath = potentialSourceJar;
+			} else {
+				sourcesPath = binFolderPath.removeLastSegments(1);
+			}
+		} catch (Throwable t) { // NOSONAR - Not an essential functionality, make it robust
+			LOG.debug("Exception during source bundle inverstigation.", t);
+		}
+		return sourcesPath;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public String getDescription() {
+		return "OSBP modeling container";
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public int getKind() {
+		return IClasspathContainer.K_APPLICATION;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public IPath getPath() {
+		return containerPath;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityContainerInitializer.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityContainerInitializer.java
new file mode 100644
index 0000000..91a3947
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityContainerInitializer.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * 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
+ *
+ * Contributors:
+ *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
+ * 
+ * Original source from org.eclipse.xtend.ide.buildpath.XtendsContainerInitializer
+ * 
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.buildpath;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.ClasspathContainerInitializer;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+
+public class EntityContainerInitializer extends ClasspathContainerInitializer {
+
+	public static final Path ENTITY_LIBRARY_PATH = new Path("org.eclipse.osbp.dsl.entity.ENTITY_CONTAINER"); //$NON-NLS-1$
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public void initialize(final IPath containerPath, final IJavaProject project) throws CoreException {
+		if (isEntityPath(containerPath)) {
+			IClasspathContainer container = new EntityClasspathContainer(containerPath);
+			JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project },
+					new IClasspathContainer[] { container }, null);
+		}
+	}
+
+	/**
+	 * Allows users to manually add source bundles
+	 */
+	@Override
+	public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
+		return true;
+	}
+
+	@Override
+	public void requestClasspathContainerUpdate(final IPath containerPath, final IJavaProject project,
+			final IClasspathContainer containerSuggestion) throws CoreException {
+		super.requestClasspathContainerUpdate(containerPath, project, containerSuggestion);
+		new Job("Classpath container update") { //$NON-NLS-1$
+			@Override
+			protected IStatus run(IProgressMonitor monitor) {
+				try {
+					JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project },
+							new IClasspathContainer[] { containerSuggestion }, null);
+				} catch (CoreException ex) {
+					return new Status(IStatus.ERROR, "org.eclipse.osbp.dsl.entity.xtext", 0,
+							"Classpath container update failed", ex); //$NON-NLS-1$
+				}
+				return Status.OK_STATUS;
+			}
+		}.schedule();
+	}
+
+	private boolean isEntityPath(final IPath containerPath) {
+		return ENTITY_LIBRARY_PATH.equals(containerPath);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityContainerWizardPage.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityContainerWizardPage.java
new file mode 100644
index 0000000..c2bbff6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityContainerWizardPage.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * 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
+ *
+ * Contributors:
+ *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
+ * 
+ * Original source from org.eclipse.xtend.ide.buildpath.XtendsContainerWizardPage
+ * 
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.buildpath;
+
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.ui.wizards.IClasspathContainerPage;
+import org.eclipse.jdt.ui.wizards.NewElementWizardPage;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+@SuppressWarnings("restriction")
+public class EntityContainerWizardPage extends NewElementWizardPage implements
+		IClasspathContainerPage {
+
+	private IClasspathEntry containerEntry;
+
+	public EntityContainerWizardPage() {
+		super("EntityClassPathContainer"); //$NON-NLS-1$
+		setTitle("OSBP EntityDSL classpath container");
+		setImageDescriptor(JavaPluginImages.DESC_WIZBAN_ADD_LIBRARY);
+		setDescription("Add the classpath container for the entity DSL");
+		this.containerEntry = JavaCore
+				.newContainerEntry(EntityContainerInitializer.ENTITY_LIBRARY_PATH);
+	}
+
+	public void createControl(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+		composite.setLayout(new FillLayout());
+		Label label = new Label(composite, SWT.NONE);
+		String aboutText = NLS
+				.bind("This library provides all required and convenient dependency for EntityDSL projects.\n\nContainer includes:\n{0}\n",
+						containedBundles());
+		label.setText(aboutText);
+		setControl(composite);
+	}
+
+	private String containedBundles() {
+		StringBuilder builder = new StringBuilder();
+		for (String bundleId : EntityClasspathContainer.BUNDLE_IDS_TO_INCLUDE) {
+			builder.append("\t").append(bundleId).append("\n");
+		}
+		return builder.toString();
+	}
+
+	public boolean finish() {
+		return true;
+	}
+
+	public IClasspathEntry getSelection() {
+		return containerEntry;
+
+	}
+
+	public void setSelection(IClasspathEntry containerEntry) {
+		// do nothing
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityLibClasspathAdder.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityLibClasspathAdder.java
new file mode 100644
index 0000000..f9df9b8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/buildpath/EntityLibClasspathAdder.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * 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
+ *
+ * Contributors:
+ *     Florian Pirchner - copied source from Xtend and adjusted to EntityDSL
+ * 
+ * Original source from org.eclipse.xtend.ide.buildpath.XtendsLibClasspathAdder
+ * 
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.buildpath;
+
+import static com.google.common.collect.Sets.newHashSet;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.SubMonitor;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.xtext.util.MergeableManifest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EntityLibClasspathAdder {
+
+	private static final Logger LOG = LoggerFactory
+			.getLogger(EntityLibClasspathAdder.class);
+
+	private static final String PLUGIN_NATURE = "org.eclipse.pde.PluginNature";
+
+	public void addLibsToClasspath(IJavaProject javaProject,
+			IProgressMonitor monitor) {
+		try {
+			SubMonitor progress = SubMonitor.convert(monitor, 2);
+			IProject project = javaProject.getProject();
+			if (!project.hasNature(PLUGIN_NATURE)
+					|| !addToPluginManifest(project, progress.newChild(1)))
+				addToClasspath(javaProject, progress.newChild(1));
+		} catch (Exception exc) {
+			LOG.error("Error adding Xtend libs to classpath", exc);
+		}
+	}
+
+	protected boolean addToClasspath(IJavaProject javaProject,
+			IProgressMonitor monitor) throws JavaModelException {
+		IClasspathEntry xtendContainerEntry = JavaCore
+				.newContainerEntry(EntityContainerInitializer.ENTITY_LIBRARY_PATH);
+		IClasspathEntry[] rawClasspath = javaProject.getRawClasspath();
+		IClasspathEntry[] newRawClasspath = new IClasspathEntry[rawClasspath.length + 1];
+		for (int i = 0; i < rawClasspath.length; ++i) {
+			IClasspathEntry entry = rawClasspath[i];
+			if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER
+					&& entry.getPath().equals(xtendContainerEntry.getPath())) {
+				return false;
+			}
+			newRawClasspath[i + 1] = entry;
+		}
+		newRawClasspath[0] = xtendContainerEntry;
+		javaProject.setRawClasspath(newRawClasspath, monitor);
+		return true;
+	}
+
+	protected boolean addToPluginManifest(IProject project,
+			IProgressMonitor monitor) throws IOException, CoreException {
+		IResource manifestFile = project.findMember("META-INF/MANIFEST.MF");
+		if (manifestFile != null && manifestFile.isAccessible()
+				&& !manifestFile.getResourceAttributes().isReadOnly()
+				&& manifestFile instanceof IFile) {
+			OutputStream output = null;
+			InputStream input = null;
+			try {
+				MergeableManifest manifest = new MergeableManifest(
+						((IFile) manifestFile).getContents());
+				manifest.addRequiredBundles(newHashSet(EntityClasspathContainer.BUNDLE_IDS_TO_INCLUDE));
+				ByteArrayOutputStream out = new ByteArrayOutputStream();
+				output = new BufferedOutputStream(out);
+				manifest.write(output);
+				ByteArrayInputStream in = new ByteArrayInputStream(
+						out.toByteArray());
+				input = new BufferedInputStream(in);
+				((IFile) manifestFile).setContents(input, true, true, monitor);
+				return true;
+			} finally {
+				if (output != null)
+					output.close();
+				if (input != null)
+					input.close();
+			}
+		}
+		return false;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/perspectives/OSBPPerspective.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/perspectives/OSBPPerspective.java
new file mode 100644
index 0000000..20d257d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/perspectives/OSBPPerspective.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 - Cristiano Gavião (Brazil), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cristiano Gavião - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.perspectives;
+
+import org.eclipse.jdt.ui.JavaUI;
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+import org.eclipse.ui.console.IConsoleConstants;
+
+/**
+ * This class is meant to serve as an example for how various contributions are
+ * made to a perspective. Note that some of the extension point id's are
+ * referred to as API constants while others are hardcoded and may be subject to
+ * change.
+ */
+public class OSBPPerspective implements IPerspectiveFactory {
+
+	private IPageLayout pageLayout;
+
+	public OSBPPerspective() {
+		super();
+	}
+
+	public void createInitialLayout(IPageLayout layout) {
+		this.pageLayout = layout;
+		String editorArea = layout.getEditorArea();
+		layout.setEditorAreaVisible(false);
+		layout.setFixed(true);
+		addViews();
+		addActionSets();
+		addNewWizardShortcuts();
+		addPerspectiveShortcuts();
+		addViewShortcuts();
+		layout.addStandaloneView("example.view", true /* show title */,
+				IPageLayout.LEFT, 1.0f, editorArea);
+	}
+
+	private void addViews() {
+		// Creates the overall folder layout.
+		// Note that each new Folder uses a percentage of the remaining
+		// EditorArea.
+
+		IFolderLayout bottom = pageLayout.createFolder("bottomRight", // NON-NLS-1
+				IPageLayout.BOTTOM, 0.75f, pageLayout.getEditorArea());
+		bottom.addView(IPageLayout.ID_PROBLEM_VIEW);
+		bottom.addView("org.eclipse.team.ui.GenericHistoryView"); // NON-NLS-1
+		bottom.addPlaceholder(IConsoleConstants.ID_CONSOLE_VIEW);
+
+		IFolderLayout topLeft = pageLayout.createFolder("topLeft", // NON-NLS-1
+				IPageLayout.LEFT, 0.25f, pageLayout.getEditorArea());
+		topLeft.addView("org.eclipse.jdt.junit.ResultView"); // NON-NLS-1
+
+		pageLayout.addFastView("org.eclipse.team.ccvs.ui.RepositoriesView", 0.50f); // NON-NLS-1
+		pageLayout.addFastView("org.eclipse.team.sync.views.SynchronizeView",
+				0.50f); // NON-NLS-1
+	}
+
+	private void addActionSets() {
+		pageLayout.addActionSet("org.eclipse.debug.ui.launchActionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.debug.ui.debugActionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.debug.ui.profileActionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.jdt.debug.ui.JDTDebugActionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.jdt.junit.JUnitActionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.team.ui.actionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.team.cvs.ui.CVSActionSet"); // NON-NLS-1
+		pageLayout.addActionSet("org.eclipse.ant.ui.actionSet.presentation"); // NON-NLS-1
+		pageLayout.addActionSet(JavaUI.ID_ACTION_SET);
+		pageLayout.addActionSet(JavaUI.ID_ELEMENT_CREATION_ACTION_SET);
+		pageLayout.addActionSet(IPageLayout.ID_NAVIGATE_ACTION_SET); // NON-NLS-1
+	}
+
+	private void addPerspectiveShortcuts() {
+		pageLayout.addPerspectiveShortcut("org.eclipse.team.ui.TeamSynchronizingPerspective"); // NON-NLS-1
+		pageLayout.addPerspectiveShortcut("org.eclipse.team.cvs.ui.cvsPerspective"); // NON-NLS-1
+		pageLayout.addPerspectiveShortcut("org.eclipse.ui.resourcePerspective"); // NON-NLS-1
+	}
+
+	private void addNewWizardShortcuts() {
+		pageLayout.addNewWizardShortcut("org.eclipse.team.cvs.ui.newProjectCheckout");// NON-NLS-1
+		pageLayout.addNewWizardShortcut("org.eclipse.ui.wizards.new.folder");// NON-NLS-1
+		pageLayout.addNewWizardShortcut("org.eclipse.ui.wizards.new.file");// NON-NLS-1
+	}
+
+	private void addViewShortcuts() {
+		pageLayout.addShowViewShortcut("org.eclipse.ant.ui.views.AntView"); // NON-NLS-1
+		pageLayout.addShowViewShortcut("org.eclipse.team.ccvs.ui.AnnotateView"); // NON-NLS-1
+		pageLayout.addShowViewShortcut("org.eclipse.pde.ui.DependenciesView"); // NON-NLS-1
+		pageLayout.addShowViewShortcut("org.eclipse.jdt.junit.ResultView"); // NON-NLS-1
+		pageLayout.addShowViewShortcut("org.eclipse.team.ui.GenericHistoryView"); // NON-NLS-1
+		pageLayout.addShowViewShortcut(IConsoleConstants.ID_CONSOLE_VIEW);
+		pageLayout.addShowViewShortcut(JavaUI.ID_PACKAGES);
+		pageLayout.addShowViewShortcut(IPageLayout.ID_PROBLEM_VIEW);
+		pageLayout.addShowViewShortcut(IPageLayout.ID_OUTLINE);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/OSBPPreferencePage.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/OSBPPreferencePage.java
new file mode 100644
index 0000000..f60131c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/OSBPPreferencePage.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 - Cristiano Gavião (Brazil), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cristiano Gavião - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.preferences;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.DirectoryFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.jface.preference.StringFieldEditor;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.osbp.dsl.eclipse.ui.OSBPUiActivator;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This class represents a preference page that
+ * is contributed to the Preferences dialog. By 
+ * subclassing <code>FieldEditorPreferencePage</code>, we
+ * can use the field support built into JFace that allows
+ * us to create a page that is small and knows how to 
+ * save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They
+ * are stored in the preference store that belongs to
+ * the main plug-in class. That way, preferences can
+ * be accessed directly via the preference store.
+ */
+
+public class OSBPPreferencePage
+	extends FieldEditorPreferencePage
+	implements IWorkbenchPreferencePage {
+
+	/**
+	 * Instantiates a new OSBP preference page.
+	 */
+	public OSBPPreferencePage() {
+		super(GRID);
+		setPreferenceStore(OSBPUiActivator.getInstance().getPreferenceStore());
+		setDescription("A demonstration of a preference page implementation");
+	}
+	
+	/**
+	 * Creates the field editors. Field editors are abstractions of
+	 * the common GUI blocks needed to manipulate various types
+	 * of preferences. Each field editor knows how to save and
+	 * restore itself.
+	 */
+	public void createFieldEditors() {
+		addField(new DirectoryFieldEditor(PreferenceConstants.P_PATH, 
+				"&Directory preference:", getFieldEditorParent()));
+		addField(
+			new BooleanFieldEditor(
+				PreferenceConstants.P_BOOLEAN,
+				"&An example of a boolean preference",
+				getFieldEditorParent()));
+
+		addField(new RadioGroupFieldEditor(
+				PreferenceConstants.P_CHOICE,
+			"An example of a multiple-choice preference",
+			1,
+			new String[][] { { "&Choice 1", "choice1" }, {
+				"C&hoice 2", "choice2" }
+		}, getFieldEditorParent()));
+		addField(
+			new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent()));
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+	 */
+	public void init(IWorkbench workbench) {
+	}
+	
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/PreferenceConstants.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/PreferenceConstants.java
new file mode 100644
index 0000000..e00bd77
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/PreferenceConstants.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 - Cristiano Gavião (Brazil), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cristiano Gavião - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.preferences;
+
+/**
+ * Constant definitions for plug-in preferences
+ */
+public class PreferenceConstants {
+
+	public static final String P_PATH = "pathPreference";
+
+	public static final String P_BOOLEAN = "booleanPreference";
+
+	public static final String P_CHOICE = "choicePreference";
+
+	public static final String P_STRING = "stringPreference";
+	
+}
diff --git a/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/PreferenceInitializer.java b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/PreferenceInitializer.java
new file mode 100644
index 0000000..78c3a7f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.eclipse.ui/src/org/eclipse/osbp/dsl/eclipse/ui/preferences/PreferenceInitializer.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2014 - Cristiano Gavião (Brazil), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     Cristiano Gavião - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.eclipse.ui.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.osbp.dsl.eclipse.ui.OSBPUiActivator;
+
+/**
+ * Class used to initialize default preference values.
+ */
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#
+	 * initializeDefaultPreferences()
+	 */
+	public void initializeDefaultPreferences() {
+		IPreferenceStore store = OSBPUiActivator.getInstance()
+				.getPreferenceStore();
+		store.setDefault(PreferenceConstants.P_BOOLEAN, true);
+		store.setDefault(PreferenceConstants.P_CHOICE, "choice2");
+		store.setDefault(PreferenceConstants.P_STRING, "Default value");
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/.project b/org.eclipse.osbp.dsl.entity.xtext.edit/.project
new file mode 100644
index 0000000..c7155ba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.entity.xtext.edit</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext.edit/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/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.dsl.entity.xtext.edit/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.entity.xtext.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..1e4c505
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,34 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.semantic.entity.edit
+Bundle-SymbolicName: org.eclipse.osbp.dsl.entity.xtext.edit;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.osbp.dsl.semantic.entity.provider.EntityEditPlugin$Implementation
+Bundle-Vendor: Eclipse OSBP
+ Germany)
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.semantic.entity.provider;version="0.9.0";
+  uses:="org.eclipse.osbp.dsl.semantic.common.types.provider,
+   org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.common.types.util,
+   org.eclipse.emf.edit.command,
+   org.eclipse.emf.common,
+   org.eclipse.emf.common.command,
+   org.eclipse.osbp.dsl.semantic.entity.util,
+   org.eclipse.emf.common.util,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.emf.edit.provider,
+   org.eclipse.emf.common.notify,
+   org.eclipse.emf.edit.domain"
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext;visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext.edit;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.common.types.edit;bundle-version="[2.7.3,2.8.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/about.html b/org.eclipse.osbp.dsl.entity.xtext.edit/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/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.dsl.entity.xtext.edit/about.ini b/org.eclipse.osbp.dsl.entity.xtext.edit/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/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.dsl.entity.xtext.edit/about.mappings b/org.eclipse.osbp.dsl.entity.xtext.edit/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/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.dsl.entity.xtext.edit/about.properties b/org.eclipse.osbp.dsl.entity.xtext.edit/about.properties
new file mode 100644
index 0000000..66bbe37
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.entity.xtext.edit
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/build.properties b/org.eclipse.osbp.dsl.entity.xtext.edit/build.properties
new file mode 100644
index 0000000..e53b512
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/build.properties
@@ -0,0 +1,11 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               LICENSE.txt,\
+               license.html
+jars.compile.order = .
+source.. = src/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  LICENSE.txt,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..a0fcbc6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LConstraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LConstraints.gif
new file mode 100644
index 0000000..46f6dba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LContraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LContraints.gif
new file mode 100644
index 0000000..8740499
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_constraints_LContraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_refConstraints_LConstraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_refConstraints_LConstraints.gif
new file mode 100644
index 0000000..46f6dba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_refConstraints_LConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_refFilter_LConstraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_refFilter_LConstraints.gif
new file mode 100644
index 0000000..46f6dba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_refFilter_LConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_resultFilters_LResultFilters.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_resultFilters_LResultFilters.gif
new file mode 100644
index 0000000..f3a1336
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_resultFilters_LResultFilters.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..4f9a608
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..a51b1f6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..6b9efac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..a26ec40
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..6675426
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..5d7b895
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..201754f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..801a95c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..669fba2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_XComputedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_XComputedTypeReference.gif
new file mode 100644
index 0000000..c288d2e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_XComputedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_XFunctionTypeRef.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_XFunctionTypeRef.gif
new file mode 100644
index 0000000..0dd622c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanReference_typeJvm_XFunctionTypeRef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..00241cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..d064fcb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..c4ab846
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..babcc9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..b71213d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..67fc534
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..171603a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..c819bce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..d08a6f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBeanToEntityReference_typeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanAttribute.gif
new file mode 100644
index 0000000..daf990a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanFeature.gif
new file mode 100644
index 0000000..3f235b3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanReference.gif
new file mode 100644
index 0000000..3daea53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanToEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanToEntityReference.gif
new file mode 100644
index 0000000..5fc9320
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LBeanToEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LOperation.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LOperation.gif
new file mode 100644
index 0000000..8897aa8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_features_LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..bf50c76
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..64ea174
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..1da02c4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..4455fd0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..860276f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..40ef685
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..8eb4561
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..eabf210
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..5fc9320
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_XComputedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_XComputedTypeReference.gif
new file mode 100644
index 0000000..5f4cee6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_XComputedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_XFunctionTypeRef.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_XFunctionTypeRef.gif
new file mode 100644
index 0000000..1ebcee0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLBean_superTypeJvm_XFunctionTypeRef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..3388fd3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..8dafe0e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..aebc983
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..82e79c9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..ebe3a48
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..a8d9588
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..817db0b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..1bca29e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..4025290
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityAttribute_typeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityFeature_persistenceInfo_LEntityColumnPersistenceInfo.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityFeature_persistenceInfo_LEntityColumnPersistenceInfo.gif
new file mode 100644
index 0000000..f0b400c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityFeature_persistenceInfo_LEntityColumnPersistenceInfo.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityModel_packages_LTypedPackage.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityModel_packages_LTypedPackage.gif
new file mode 100644
index 0000000..135cbb0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityModel_packages_LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LAttributeMatchingConstraint.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LAttributeMatchingConstraint.gif
new file mode 100644
index 0000000..3145841
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LAttributeMatchingConstraint.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LConstraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LConstraints.gif
new file mode 100644
index 0000000..2bd03ce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LContraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LContraints.gif
new file mode 100644
index 0000000..698161b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_constraints_LContraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_refConstraints_LConstraints.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_refConstraints_LConstraints.gif
new file mode 100644
index 0000000..2bd03ce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_refConstraints_LConstraints.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_resultFilters_LResultFilters.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_resultFilters_LResultFilters.gif
new file mode 100644
index 0000000..de6af47
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_resultFilters_LResultFilters.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..76f9cb7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..88ba66a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..54a8425
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..cfb5278
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..a89d0ec
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..b6ac8cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..4e06b47
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..cc2ef52
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..6325826
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_XComputedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_XComputedTypeReference.gif
new file mode 100644
index 0000000..01d1dbb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_XComputedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_XFunctionTypeRef.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_XFunctionTypeRef.gif
new file mode 100644
index 0000000..6a08579
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntityReference_typeJvm_XFunctionTypeRef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityAttribute.gif
new file mode 100644
index 0000000..14cd97b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityFeature.gif
new file mode 100644
index 0000000..c85d5ad
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityReference.gif
new file mode 100644
index 0000000..425104d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LOperation.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LOperation.gif
new file mode 100644
index 0000000..8dd8d19
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_features_LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_indexes_LIndex.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_indexes_LIndex.gif
new file mode 100644
index 0000000..ec2e46d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_indexes_LIndex.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_inheritanceStrategy_LTablePerClassStrategy.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_inheritanceStrategy_LTablePerClassStrategy.gif
new file mode 100644
index 0000000..2639c9c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_inheritanceStrategy_LTablePerClassStrategy.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_inheritanceStrategy_LTablePerSubclassStrategy.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_inheritanceStrategy_LTablePerSubclassStrategy.gif
new file mode 100644
index 0000000..8efd2ad
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_inheritanceStrategy_LTablePerSubclassStrategy.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_persistenceInfo_LEntityPersistenceInfo.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_persistenceInfo_LEntityPersistenceInfo.gif
new file mode 100644
index 0000000..b871370
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_persistenceInfo_LEntityPersistenceInfo.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..b871370
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..0784406
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..945e8d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..2abf9ab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..582e5bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..117864d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..9f36b38
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..2b855e6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..b84f5fc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_XComputedTypeReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_XComputedTypeReference.gif
new file mode 100644
index 0000000..b154e73
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_XComputedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_XFunctionTypeRef.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_XFunctionTypeRef.gif
new file mode 100644
index 0000000..5961821
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLEntity_superTypeJvm_XFunctionTypeRef.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBean.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBean.gif
new file mode 100644
index 0000000..f5b2b6f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBean.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanAttribute.gif
new file mode 100644
index 0000000..5923218
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanFeature.gif
new file mode 100644
index 0000000..af36a7d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanReference.gif
new file mode 100644
index 0000000..fee426e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanToEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanToEntityReference.gif
new file mode 100644
index 0000000..1ed56d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LBeanToEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntity.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntity.gif
new file mode 100644
index 0000000..570aef8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityAttribute.gif
new file mode 100644
index 0000000..8278715
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityFeature.gif
new file mode 100644
index 0000000..263f6e6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityReference.gif
new file mode 100644
index 0000000..4096600
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LOperation.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LOperation.gif
new file mode 100644
index 0000000..352de32
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBean.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBean.gif
new file mode 100644
index 0000000..c6c7731
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBean.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanAttribute.gif
new file mode 100644
index 0000000..21f8952
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanFeature.gif
new file mode 100644
index 0000000..b9300d3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanReference.gif
new file mode 100644
index 0000000..b2f886a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanToEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanToEntityReference.gif
new file mode 100644
index 0000000..266d267
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LBeanToEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntity.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntity.gif
new file mode 100644
index 0000000..578475a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityAttribute.gif
new file mode 100644
index 0000000..fb71f8b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityFeature.gif
new file mode 100644
index 0000000..78ca278
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityReference.gif
new file mode 100644
index 0000000..c4063fe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif
new file mode 100644
index 0000000..9a956d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LBean.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LBean.gif
new file mode 100644
index 0000000..56f8f0b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LBean.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LEntity.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LEntity.gif
new file mode 100644
index 0000000..a3671be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LEntity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LAttribute.gif
new file mode 100644
index 0000000..5b881d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LAttribute_id.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LAttribute_id.gif
new file mode 100644
index 0000000..a9af5d5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LAttribute_id.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LBeanAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LBeanAttribute.gif
new file mode 100644
index 0000000..5b881d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LBeanAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LEntity.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LEntity.gif
new file mode 100644
index 0000000..e4c2a83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LEntity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LEntityAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LEntityAttribute.gif
new file mode 100644
index 0000000..5b881d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LEntityAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LInterface.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LInterface.gif
new file mode 100644
index 0000000..7d7df9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj/LInterface.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBean.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBean.gif
new file mode 100644
index 0000000..e4c2a83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBean.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanAttribute.gif
new file mode 100644
index 0000000..5b881d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanFeature.gif
new file mode 100644
index 0000000..7b7c428
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanReference.gif
new file mode 100644
index 0000000..30f0c48
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanToEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanToEntityReference.gif
new file mode 100644
index 0000000..5b881d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LBeanToEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntity.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntity.gif
new file mode 100644
index 0000000..e4c2a83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntity.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityAttribute.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityAttribute.gif
new file mode 100644
index 0000000..5b881d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityAttribute.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityColumnPersistenceInfo.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityColumnPersistenceInfo.gif
new file mode 100644
index 0000000..35ef84e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityColumnPersistenceInfo.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityFeature.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityFeature.gif
new file mode 100644
index 0000000..d3dc5a9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityFeature.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityModel.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityModel.gif
new file mode 100644
index 0000000..c00aedf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityModel.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityPersistenceInfo.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityPersistenceInfo.gif
new file mode 100644
index 0000000..a26660e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityPersistenceInfo.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityReference.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityReference.gif
new file mode 100644
index 0000000..2b69256
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntityReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntity_deprec.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntity_deprec.gif
new file mode 100644
index 0000000..83afb9b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LEntity_deprec.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LIndex.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LIndex.gif
new file mode 100644
index 0000000..14af8aa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LIndex.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LOperation.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LOperation.gif
new file mode 100644
index 0000000..be22463
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LTablePerClassStrategy.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LTablePerClassStrategy.gif
new file mode 100644
index 0000000..45731fe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LTablePerClassStrategy.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LTablePerSubclassStrategy.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LTablePerSubclassStrategy.gif
new file mode 100644
index 0000000..5a9bc75
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/LTablePerSubclassStrategy.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_alt_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_alt_obj.gif
new file mode 100644
index 0000000..f47bbfc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_alt_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_default_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_default_obj.gif
new file mode 100644
index 0000000..9a88459
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_default_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_obj.gif
new file mode 100644
index 0000000..435d62e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_private_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_private_obj.gif
new file mode 100644
index 0000000..ac01dd2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_private_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_protected_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_protected_obj.gif
new file mode 100644
index 0000000..63c8abf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/annotation_protected_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/class_default_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/class_default_obj.gif
new file mode 100644
index 0000000..4244a7f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/class_default_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/classfo_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/classfo_obj.gif
new file mode 100644
index 0000000..f1ee8cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/classfo_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_alt_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_alt_obj.gif
new file mode 100644
index 0000000..f470d4c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_alt_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_default_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_default_obj.gif
new file mode 100644
index 0000000..e6f557b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_default_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_obj.gif
new file mode 100644
index 0000000..15535f5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_private_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_private_obj.gif
new file mode 100644
index 0000000..4d83959
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_private_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_protected_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_protected_obj.gif
new file mode 100644
index 0000000..834aa85
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/enum_protected_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_default_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_default_obj.gif
new file mode 100644
index 0000000..6929d3d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_default_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_private_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_private_obj.gif
new file mode 100644
index 0000000..1fe064e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_private_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_protected_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_protected_obj.gif
new file mode 100644
index 0000000..3377b1e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_protected_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_public_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_public_obj.gif
new file mode 100644
index 0000000..d4cb425
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/field_public_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/filter_ps.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/filter_ps.gif
new file mode 100644
index 0000000..a4c9e60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/filter_ps.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/implm_co.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/implm_co.gif
new file mode 100644
index 0000000..b987122
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/implm_co.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_default_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_default_obj.gif
new file mode 100644
index 0000000..4244a7f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_default_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_private_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_private_obj.gif
new file mode 100644
index 0000000..7392f19
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_private_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_protected_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_protected_obj.gif
new file mode 100644
index 0000000..5105577
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_protected_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_public_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_public_obj.gif
new file mode 100644
index 0000000..e4c2a83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerclass_public_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_private_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_private_obj.gif
new file mode 100644
index 0000000..a1cbff3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_private_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_protected_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_protected_obj.gif
new file mode 100644
index 0000000..f58eef0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_protected_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_public_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_public_obj.gif
new file mode 100644
index 0000000..2ebc46e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/innerinterface_public_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/int_default_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/int_default_obj.gif
new file mode 100644
index 0000000..ab1b576
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/int_default_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/int_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/int_obj.gif
new file mode 100644
index 0000000..2ebc46e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/int_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/intf_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/intf_obj.gif
new file mode 100644
index 0000000..7d7df9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/intf_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/over_co.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/over_co.gif
new file mode 100644
index 0000000..938767b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/over_co.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/packd_obj.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/packd_obj.gif
new file mode 100644
index 0000000..2556b45
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/obj16/packd_obj.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/abstract.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/abstract.gif
new file mode 100644
index 0000000..533acc4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/abstract.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/overwrite.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/overwrite.gif
new file mode 100644
index 0000000..8533e2e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/overwrite.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/timedependent.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/timedependent.gif
new file mode 100644
index 0000000..96ccdaf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/timedependent.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/transient.gif b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/transient.gif
new file mode 100644
index 0000000..96ccdaf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/icons/full/ovr/transient.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/license.html b/org.eclipse.osbp.dsl.entity.xtext.edit/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/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.dsl.entity.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.properties
new file mode 100644
index 0000000..755d610
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.properties
@@ -0,0 +1,392 @@
+# 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 = Entity Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_LEntityModel_type = LEntity Model
+_UI_LBean_type = LBean
+_UI_LEntity_type = LEntity
+_UI_LEntityPersistenceInfo_type = LEntity Persistence Info
+_UI_LEntityColumnPersistenceInfo_type = LEntity Column Persistence Info
+_UI_LEntityInheritanceStrategy_type = LEntity Inheritance Strategy
+_UI_LTablePerClassStrategy_type = LTable Per Class Strategy
+_UI_LTablePerSubclassStrategy_type = LTable Per Subclass Strategy
+_UI_LEntityFeature_type = LEntity Feature
+_UI_LEntityAttribute_type = LEntity Attribute
+_UI_LEntityReference_type = LEntity Reference
+_UI_LBeanFeature_type = LBean Feature
+_UI_LBeanAttribute_type = LBean Attribute
+_UI_LBeanReference_type = LBean Reference
+_UI_LIndex_type = LIndex
+_UI_LOperation_type = LOperation
+_UI_XExpression_type = XExpression
+_UI_XIfExpression_type = XIf Expression
+_UI_XSwitchExpression_type = XSwitch Expression
+_UI_XCasePart_type = XCase Part
+_UI_XBlockExpression_type = XBlock Expression
+_UI_XVariableDeclaration_type = XVariable Declaration
+_UI_XAbstractFeatureCall_type = XAbstract Feature Call
+_UI_XMemberFeatureCall_type = XMember Feature Call
+_UI_XFeatureCall_type = XFeature Call
+_UI_XConstructorCall_type = XConstructor Call
+_UI_XBooleanLiteral_type = XBoolean Literal
+_UI_XNullLiteral_type = XNull Literal
+_UI_XNumberLiteral_type = XNumber Literal
+_UI_XStringLiteral_type = XString Literal
+_UI_XCollectionLiteral_type = XCollection Literal
+_UI_XListLiteral_type = XList Literal
+_UI_XSetLiteral_type = XSet Literal
+_UI_XClosure_type = XClosure
+_UI_XCastedExpression_type = XCasted Expression
+_UI_XBinaryOperation_type = XBinary Operation
+_UI_XUnaryOperation_type = XUnary Operation
+_UI_XPostfixOperation_type = XPostfix Operation
+_UI_XForLoopExpression_type = XFor Loop Expression
+_UI_XBasicForLoopExpression_type = XBasic For Loop Expression
+_UI_XAbstractWhileExpression_type = XAbstract While Expression
+_UI_XDoWhileExpression_type = XDo While Expression
+_UI_XWhileExpression_type = XWhile Expression
+_UI_XTypeLiteral_type = XType Literal
+_UI_XInstanceOfExpression_type = XInstance Of Expression
+_UI_XThrowExpression_type = XThrow Expression
+_UI_XTryCatchFinallyExpression_type = XTry Catch Finally Expression
+_UI_XCatchClause_type = XCatch Clause
+_UI_XAssignment_type = XAssignment
+_UI_XReturnExpression_type = XReturn Expression
+_UI_XSynchronizedExpression_type = XSynchronized Expression
+_UI_XAnnotation_type = XAnnotation
+_UI_XAnnotationElementValuePair_type = XAnnotation Element Value Pair
+_UI_EAttribute_type = EAttribute
+_UI_EAnnotation_type = EAnnotation
+_UI_EClass_type = EClass
+_UI_EClassifier_type = EClassifier
+_UI_EDataType_type = EData Type
+_UI_EEnum_type = EEnum
+_UI_EEnumLiteral_type = EEnum Literal
+_UI_EFactory_type = EFactory
+_UI_EModelElement_type = EModel Element
+_UI_ENamedElement_type = ENamed Element
+_UI_EObject_type = EObject
+_UI_EOperation_type = EOperation
+_UI_EPackage_type = EPackage
+_UI_EParameter_type = EParameter
+_UI_EReference_type = EReference
+_UI_EStructuralFeature_type = EStructural Feature
+_UI_ETypedElement_type = ETyped Element
+_UI_EStringToStringMapEntry_type = EString To String Map Entry
+_UI_EGenericType_type = EGeneric Type
+_UI_ETypeParameter_type = EType Parameter
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_LEntityModel_packages_feature = Packages
+_UI_LBean_features_feature = Features
+_UI_LBean_superType_feature = Super Type
+_UI_LBean_subTypes_feature = Sub Types
+_UI_LEntity_cacheable_feature = Cacheable
+_UI_LEntity_historized_feature = Historized
+_UI_LEntity_timedependent_feature = Timedependent
+_UI_LEntity_timedependentDateType_feature = Timedependent Date Type
+_UI_LEntity_mappedSuperclass_feature = Mapped Superclass
+_UI_LEntity_persistenceInfo_feature = Persistence Info
+_UI_LEntity_inheritanceStrategy_feature = Inheritance Strategy
+_UI_LEntity_features_feature = Features
+_UI_LEntity_indexes_feature = Indexes
+_UI_LEntity_superType_feature = Super Type
+_UI_LEntity_subTypes_feature = Sub Types
+_UI_LEntityPersistenceInfo_schemaName_feature = Schema Name
+_UI_LEntityPersistenceInfo_tableName_feature = Table Name
+_UI_LEntityColumnPersistenceInfo_columnName_feature = Column Name
+_UI_LTablePerClassStrategy_discriminatorColumn_feature = Discriminator Column
+_UI_LTablePerClassStrategy_discriminatorType_feature = Discriminator Type
+_UI_LTablePerClassStrategy_discriminatorValue_feature = Discriminator Value
+_UI_LTablePerSubclassStrategy_discriminatorColumn_feature = Discriminator Column
+_UI_LTablePerSubclassStrategy_discriminatorType_feature = Discriminator Type
+_UI_LTablePerSubclassStrategy_discriminatorValue_feature = Discriminator Value
+_UI_LEntityFeature_persistenceInfo_feature = Persistence Info
+_UI_LEntityReference_type_feature = Type
+_UI_LEntityReference_opposite_feature = Opposite
+_UI_LBeanReference_type_feature = Type
+_UI_LBeanReference_opposite_feature = Opposite
+_UI_LIndex_unique_feature = Unique
+_UI_LIndex_name_feature = Name
+_UI_LIndex_features_feature = Features
+_UI_XIfExpression_if_feature = If
+_UI_XIfExpression_then_feature = Then
+_UI_XIfExpression_else_feature = Else
+_UI_XSwitchExpression_switch_feature = Switch
+_UI_XSwitchExpression_cases_feature = Cases
+_UI_XSwitchExpression_default_feature = Default
+_UI_XSwitchExpression_declaredParam_feature = Declared Param
+_UI_XCasePart_case_feature = Case
+_UI_XCasePart_then_feature = Then
+_UI_XCasePart_typeGuard_feature = Type Guard
+_UI_XBlockExpression_expressions_feature = Expressions
+_UI_XVariableDeclaration_type_feature = Type
+_UI_XVariableDeclaration_name_feature = Name
+_UI_XVariableDeclaration_right_feature = Right
+_UI_XVariableDeclaration_writeable_feature = Writeable
+_UI_XAbstractFeatureCall_feature_feature = Feature
+_UI_XAbstractFeatureCall_typeArguments_feature = Type Arguments
+_UI_XAbstractFeatureCall_implicitReceiver_feature = Implicit Receiver
+_UI_XAbstractFeatureCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XAbstractFeatureCall_validFeature_feature = Valid Feature
+_UI_XAbstractFeatureCall_implicitFirstArgument_feature = Implicit First Argument
+_UI_XMemberFeatureCall_memberCallTarget_feature = Member Call Target
+_UI_XMemberFeatureCall_memberCallArguments_feature = Member Call Arguments
+_UI_XMemberFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XMemberFeatureCall_explicitStatic_feature = Explicit Static
+_UI_XMemberFeatureCall_nullSafe_feature = Null Safe
+_UI_XMemberFeatureCall_typeLiteral_feature = Type Literal
+_UI_XMemberFeatureCall_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XMemberFeatureCall_packageFragment_feature = Package Fragment
+_UI_XFeatureCall_featureCallArguments_feature = Feature Call Arguments
+_UI_XFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XFeatureCall_typeLiteral_feature = Type Literal
+_UI_XFeatureCall_packageFragment_feature = Package Fragment
+_UI_XConstructorCall_constructor_feature = Constructor
+_UI_XConstructorCall_arguments_feature = Arguments
+_UI_XConstructorCall_typeArguments_feature = Type Arguments
+_UI_XConstructorCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XConstructorCall_validFeature_feature = Valid Feature
+_UI_XConstructorCall_explicitConstructorCall_feature = Explicit Constructor Call
+_UI_XConstructorCall_anonymousClassConstructorCall_feature = Anonymous Class Constructor Call
+_UI_XBooleanLiteral_isTrue_feature = Is True
+_UI_XNumberLiteral_value_feature = Value
+_UI_XStringLiteral_value_feature = Value
+_UI_XCollectionLiteral_elements_feature = Elements
+_UI_XClosure_declaredFormalParameters_feature = Declared Formal Parameters
+_UI_XClosure_expression_feature = Expression
+_UI_XClosure_explicitSyntax_feature = Explicit Syntax
+_UI_XClosure_implicitParameter_feature = Implicit Parameter
+_UI_XCastedExpression_type_feature = Type
+_UI_XCastedExpression_target_feature = Target
+_UI_XBinaryOperation_leftOperand_feature = Left Operand
+_UI_XBinaryOperation_rightOperand_feature = Right Operand
+_UI_XBinaryOperation_reassignFirstArgument_feature = Reassign First Argument
+_UI_XUnaryOperation_operand_feature = Operand
+_UI_XPostfixOperation_operand_feature = Operand
+_UI_XForLoopExpression_forExpression_feature = For Expression
+_UI_XForLoopExpression_eachExpression_feature = Each Expression
+_UI_XForLoopExpression_declaredParam_feature = Declared Param
+_UI_XBasicForLoopExpression_expression_feature = Expression
+_UI_XBasicForLoopExpression_eachExpression_feature = Each Expression
+_UI_XBasicForLoopExpression_initExpressions_feature = Init Expressions
+_UI_XBasicForLoopExpression_updateExpressions_feature = Update Expressions
+_UI_XAbstractWhileExpression_predicate_feature = Predicate
+_UI_XAbstractWhileExpression_body_feature = Body
+_UI_XTypeLiteral_type_feature = Type
+_UI_XTypeLiteral_arrayDimensions_feature = Array Dimensions
+_UI_XInstanceOfExpression_type_feature = Type
+_UI_XInstanceOfExpression_expression_feature = Expression
+_UI_XThrowExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_finallyExpression_feature = Finally Expression
+_UI_XTryCatchFinallyExpression_catchClauses_feature = Catch Clauses
+_UI_XCatchClause_expression_feature = Expression
+_UI_XCatchClause_declaredParam_feature = Declared Param
+_UI_XAssignment_assignable_feature = Assignable
+_UI_XAssignment_value_feature = Value
+_UI_XAssignment_explicitStatic_feature = Explicit Static
+_UI_XAssignment_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XReturnExpression_expression_feature = Expression
+_UI_XSynchronizedExpression_param_feature = Param
+_UI_XSynchronizedExpression_expression_feature = Expression
+_UI_XAnnotation_elementValuePairs_feature = Element Value Pairs
+_UI_XAnnotation_annotationType_feature = Annotation Type
+_UI_XAnnotation_value_feature = Value
+_UI_XAnnotationElementValuePair_value_feature = Value
+_UI_XAnnotationElementValuePair_element_feature = Element
+_UI_EAttribute_iD_feature = ID
+_UI_EAttribute_iD_description = Whether the value of this attribute uniquely identifies an object within its containing resource
+_UI_EAttribute_eAttributeType_feature = EAttribute Type
+_UI_EAttribute_eAttributeType_description = The data type of this attribute
+_UI_EAnnotation_source_feature = Source
+_UI_EAnnotation_source_description = An identifier, typically an absolute URI, that uniquely identifies this kind of annotation
+_UI_EAnnotation_details_feature = Details
+_UI_EAnnotation_eModelElement_feature = EModel Element
+_UI_EAnnotation_contents_feature = Contents
+_UI_EAnnotation_references_feature = References
+_UI_EAnnotation_references_description = Objects referenced by this annotation
+_UI_EClass_abstract_feature = Abstract
+_UI_EClass_abstract_description = Whether instances of this class can be created
+_UI_EClass_interface_feature = Interface
+_UI_EClass_interface_description = Whether no corresponding implementation will be generated for this class
+_UI_EClass_eSuperTypes_feature = ESuper Types
+_UI_EClass_eSuperTypes_description = The immediate super types of this class
+_UI_EClass_eOperations_feature = EOperations
+_UI_EClass_eOperations_description = The operations defined by this class
+_UI_EClass_eAllAttributes_feature = EAll Attributes
+_UI_EClass_eAllReferences_feature = EAll References
+_UI_EClass_eReferences_feature = EReferences
+_UI_EClass_eAttributes_feature = EAttributes
+_UI_EClass_eAllContainments_feature = EAll Containments
+_UI_EClass_eAllOperations_feature = EAll Operations
+_UI_EClass_eAllStructuralFeatures_feature = EAll Structural Features
+_UI_EClass_eAllSuperTypes_feature = EAll Super Types
+_UI_EClass_eIDAttribute_feature = EID Attribute
+_UI_EClass_eStructuralFeatures_feature = EStructural Features
+_UI_EClass_eGenericSuperTypes_feature = EGeneric Super Types
+_UI_EClass_eAllGenericSuperTypes_feature = EAll Generic Super Types
+_UI_EClassifier_instanceClassName_feature = Instance Class Name
+_UI_EClassifier_instanceClassName_description = The erased instance class name denoted by this classifier
+_UI_EClassifier_instanceClass_feature = Instance Class
+_UI_EClassifier_defaultValue_feature = Default Value
+_UI_EClassifier_defaultValue_description = The default value for features of this type
+_UI_EClassifier_instanceTypeName_feature = Instance Type Name
+_UI_EClassifier_instanceTypeName_description = The full instance type name denoted by this classifier
+_UI_EClassifier_ePackage_feature = EPackage
+_UI_EClassifier_eTypeParameters_feature = EType Parameters
+_UI_EDataType_serializable_feature = Serializable
+_UI_EDataType_serializable_description = Whether a value of this data type can be serialized using the factory
+_UI_EEnum_eLiterals_feature = ELiterals
+_UI_EEnumLiteral_value_feature = Value
+_UI_EEnumLiteral_value_description = The integer value associated with this enumerator
+_UI_EEnumLiteral_instance_feature = Instance
+_UI_EEnumLiteral_literal_feature = Literal
+_UI_EEnumLiteral_literal_description = The literal value associated with this enumerator
+_UI_EEnumLiteral_eEnum_feature = EEnum
+_UI_EFactory_ePackage_feature = EPackage
+_UI_EFactory_ePackage_description = The package corresponding to this factory
+_UI_EModelElement_eAnnotations_feature = EAnnotations
+_UI_ENamedElement_name_feature = Name
+_UI_ENamedElement_name_description = The name of this model element
+_UI_EOperation_eContainingClass_feature = EContaining Class
+_UI_EOperation_eTypeParameters_feature = EType Parameters
+_UI_EOperation_eParameters_feature = EParameters
+_UI_EOperation_eExceptions_feature = EExceptions
+_UI_EOperation_eExceptions_description = The exceptions thrown by this operation
+_UI_EOperation_eGenericExceptions_feature = EGeneric Exceptions
+_UI_EPackage_nsURI_feature = Ns URI
+_UI_EPackage_nsURI_description = The universally unique namespace identifier, typically an absolute URI, for this package
+_UI_EPackage_nsPrefix_feature = Ns Prefix
+_UI_EPackage_nsPrefix_description = The namespace prefix used by default when serializing instances of the package's classes
+_UI_EPackage_eFactoryInstance_feature = EFactory Instance
+_UI_EPackage_eFactoryInstance_description = The factory corresponding to this package
+_UI_EPackage_eClassifiers_feature = EClassifiers
+_UI_EPackage_eSubpackages_feature = ESubpackages
+_UI_EPackage_eSuperPackage_feature = ESuper Package
+_UI_EParameter_eOperation_feature = EOperation
+_UI_EReference_containment_feature = Containment
+_UI_EReference_containment_description = Whether this reference represents a composite relationship
+_UI_EReference_container_feature = Container
+_UI_EReference_container_description = Whether this reference has as its opposite a containment reference
+_UI_EReference_resolveProxies_feature = Resolve Proxies
+_UI_EReference_resolveProxies_description = Whether this reference resolves proxies automatically
+_UI_EReference_eOpposite_feature = EOpposite
+_UI_EReference_eOpposite_description = The reference that represents the bidirectional opposite of this reference
+_UI_EReference_eReferenceType_feature = EReference Type
+_UI_EReference_eReferenceType_description = The target class of the reference
+_UI_EReference_eKeys_feature = EKeys
+_UI_EReference_eKeys_description = The attributes of the referenced class that uniquely identify a referenced instance
+_UI_EStructuralFeature_changeable_feature = Changeable
+_UI_EStructuralFeature_changeable_description = Whether the value of this feature can be changed
+_UI_EStructuralFeature_volatile_feature = Volatile
+_UI_EStructuralFeature_volatile_description = Whether no field will be generated for this feature
+_UI_EStructuralFeature_transient_feature = Transient
+_UI_EStructuralFeature_transient_description = Whether the value of this feature will be serialized
+_UI_EStructuralFeature_defaultValueLiteral_feature = Default Value Literal
+_UI_EStructuralFeature_defaultValueLiteral_description = The literal representation of the default value for this feature
+_UI_EStructuralFeature_defaultValue_feature = Default Value
+_UI_EStructuralFeature_defaultValue_description = The default value for this feature
+_UI_EStructuralFeature_unsettable_feature = Unsettable
+_UI_EStructuralFeature_unsettable_description = Whether the value space for this feature includes the state of not being set
+_UI_EStructuralFeature_derived_feature = Derived
+_UI_EStructuralFeature_derived_description = Whether the value of this feature is derived from the values of other features
+_UI_EStructuralFeature_eContainingClass_feature = EContaining Class
+_UI_EStructuralFeature_eContainingClass_description = The class that defines this feature
+_UI_ETypedElement_ordered_feature = Ordered
+_UI_ETypedElement_ordered_description = Whether the order in which values occur is meaningful
+_UI_ETypedElement_unique_feature = Unique
+_UI_ETypedElement_unique_description = Whether the same value may occur more than once
+_UI_ETypedElement_lowerBound_feature = Lower Bound
+_UI_ETypedElement_lowerBound_description = The minimum number of values that must occur
+_UI_ETypedElement_upperBound_feature = Upper Bound
+_UI_ETypedElement_upperBound_description = The maximum number of values that may occur; -1 represents unbounded and -2 represents unspecified
+_UI_ETypedElement_many_feature = Many
+_UI_ETypedElement_many_description = Whether more than one value may occur
+_UI_ETypedElement_required_feature = Required
+_UI_ETypedElement_required_description = Whether at least one value must occur
+_UI_ETypedElement_eType_feature = EType
+_UI_ETypedElement_eType_description = The type of this element
+_UI_ETypedElement_eGenericType_feature = EGeneric Type
+_UI_EStringToStringMapEntry_key_feature = Key
+_UI_EStringToStringMapEntry_key_description = The key of this map entry
+_UI_EStringToStringMapEntry_value_feature = Value
+_UI_EStringToStringMapEntry_value_description = The value of this map entry
+_UI_EGenericType_eUpperBound_feature = EUpper Bound
+_UI_EGenericType_eTypeArguments_feature = EType Arguments
+_UI_EGenericType_eRawType_feature = ERaw Type
+_UI_EGenericType_eRawType_description = The erased type denoted by this generic type
+_UI_EGenericType_eLowerBound_feature = ELower Bound
+_UI_EGenericType_eTypeParameter_feature = EType Parameter
+_UI_EGenericType_eTypeParameter_description = The type parameter denoted by this generic type
+_UI_EGenericType_eClassifier_feature = EClassifier
+_UI_EGenericType_eClassifier_description = The classifier denoted by this generic type
+_UI_ETypeParameter_eBounds_feature = EBounds
+_UI_Unknown_feature = Unspecified
+
+_UI_LDiscriminatorType_INHERIT_literal = INHERIT
+_UI_LDiscriminatorType_STRING_literal = STRING
+_UI_LDiscriminatorType_CHAR_literal = CHAR
+_UI_LDiscriminatorType_INTEGER_literal = INTEGER
+_UI_LBeanAttribute_typedName_feature = Typed Name
+_UI_LEntityAttribute_typedName_feature = Typed Name
+_UI_LEntityReference_typeJvm_feature = Type Jvm
+_UI_LBean_superTypeJvm_feature = Super Type Jvm
+_UI_LEntity_superTypeJvm_feature = Super Type Jvm
+_UI_XCasePart_fallThrough_feature = Fall Through
+_UI_XClosure_implicitFormalParameters_feature = Implicit Formal Parameters
+_UI_LBeanReference_typeJvm_feature = Type Jvm
+_UI_XFunctionTypeRef_type = XFunction Type Ref
+_UI_XComputedTypeReference_type = XComputed Type Reference
+_UI_XImportSection_type = XImport Section
+_UI_XImportDeclaration_type = XImport Declaration
+_UI_XFunctionTypeRef_paramTypes_feature = Param Types
+_UI_XFunctionTypeRef_returnType_feature = Return Type
+_UI_XFunctionTypeRef_type_feature = Type
+_UI_XFunctionTypeRef_instanceContext_feature = Instance Context
+_UI_XComputedTypeReference_typeProvider_feature = Type Provider
+_UI_XImportSection_importDeclarations_feature = Import Declarations
+_UI_XImportDeclaration_wildcard_feature = Wildcard
+_UI_XImportDeclaration_extension_feature = Extension
+_UI_XImportDeclaration_static_feature = Static
+_UI_XImportDeclaration_importedType_feature = Imported Type
+_UI_XImportDeclaration_memberName_feature = Member Name
+_UI_XImportDeclaration_importedNamespace_feature = Imported Namespace
+_UI_LEntityAttribute_typeJvm_feature = Type Jvm
+_UI_LBeanToEntityReference_type = LBean To Entity Reference
+_UI_LBeanToEntityReference_type_feature = Type
+_UI_LBeanToEntityReference_typeJvm_feature = Type Jvm
+_UI_LBeanToEntityReference_opposite_feature = Opposite
+_UI_LEntityAttribute_opposite_feature = Opposite
+_UI_LBeanReference_entityType_feature = Entity Type
+_UI_LEntityReference_constraints_feature = Constraints
+_UI_LBeanReference_constraints_feature = Constraints
+_UI_LEntity_persistenceUnit_feature = Persistence Unit
+_UI_LBean_persistenceUnit_feature = Persistence Unit
+_UI_LEntityReference_refConstraints_feature = Ref Constraints
+_UI_LBeanReference_refConstraints_feature = Ref Constraints
+_UI_LBeanReference_refFilter_feature = Ref Filter
+_UI_LEntityReference_resultFilters_feature = Result Filters
+_UI_LBeanReference_resultFilters_feature = Result Filters
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml
new file mode 100644
index 0000000..bf8a44e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/plugin.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ 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 
+  
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated entity -->
+      <factory
+            uri="http://osbp.eclipse.org/dsl/entity/v1"
+            class="org.eclipse.osbp.dsl.semantic.entity.provider.OSBPEntityItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated entity -->
+      <extender
+            uri="http://osbp.eclipse.org/dsl/common/types/v1"
+            class="org.eclipse.osbp.dsl.semantic.entity.provider.OSBPEntityItemProviderAdapterFactory$OSBPTypesChildCreationExtender"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml
new file mode 100644
index 0000000..a71ac8b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.entity.xtext.edit</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntityEditPlugin.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntityEditPlugin.java
new file mode 100644
index 0000000..9a163cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/EntityEditPlugin.java
@@ -0,0 +1,104 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.TypesEditPlugin;
+
+/**
+ * This is the central singleton for the Entity edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class EntityEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final EntityEditPlugin INSTANCE = new EntityEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EntityEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     org.eclipse.xtext.common.types.provider.TypesEditPlugin.INSTANCE,
+		     TypesEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java
new file mode 100644
index 0000000..60c51b9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanAttributeItemProvider.java
@@ -0,0 +1,807 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.AbstractOverrideableCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.xbase.XbaseFactory;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class LBeanAttributeItemProvider extends LBeanFeatureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public LBeanAttributeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdPropertyDescriptor(object);
+			addUuidPropertyDescriptor(object);
+			addVersionPropertyDescriptor(object);
+			addLazyPropertyDescriptor(object);
+			addCascadingPropertyDescriptor(object);
+			addTransientPropertyDescriptor(object);
+			addDerivedPropertyDescriptor(object);
+			addDirtyPropertyDescriptor(object);
+			addDomainKeyPropertyDescriptor(object);
+			addDomainDescriptionPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+			addTypedNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Id feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_id_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_id_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uuid feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUuidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_uuid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_uuid_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__UUID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Version feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addVersionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_version_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_version_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__VERSION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Lazy feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLazyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_lazy_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_lazy_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__LAZY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cascading feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addCascadingPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_cascading_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_cascading_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__CASCADING,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Transient feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTransientPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_transient_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_transient_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__TRANSIENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Derived feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addDerivedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_derived_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_derived_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dirty feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDirtyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_dirty_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_dirty_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DIRTY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDomainKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_domainKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_domainKey_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDomainDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_domainDescription_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_domainDescription_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_type_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Typed Name feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTypedNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LBeanAttribute_typedName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LBeanAttribute_typedName_feature", "_UI_LBeanAttribute_type"),
+				 OSBPEntityPackage.Literals.LBEAN_ATTRIBUTE__TYPED_NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(
+			Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LBeanAttribute.gif.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LBeanAttribute"));
+	}
+
+	private Object getOverlay(LBeanAttribute object) {
+		if (object.isTransient()) {
+			return getResourceLocator().getImage("full/ovr/transient.gif");
+		}
+		return null;
+	}
+
+	private Object getImage(LBeanAttribute object) {
+		if (object.isId() || object.isUuid()) {
+			return getResourceLocator().getImage("full/obj/LAttribute_id.gif");
+		}
+		return getResourceLocator().getImage("full/obj16/LBeanAttribute.gif");
+	}
+	/*@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LBeanAttribute"));
+	}
+
+	private Object getOverlay(LBeanAttribute object) {
+		if (object.isTransient()) {
+			return getResourceLocator().getImage("full/ovr/transient.gif");
+		}
+		return null;
+	}
+
+	private Object getImage(LBeanAttribute object) {
+		if (object.isId() || object.isUuid()) {
+			return getResourceLocator().getImage("full/obj16/LAttribute_id.gif");
+		}
+		return getResourceLocator().getImage("full/obj16/LBeanAttribute.gif");
+	}
+*/
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LBeanAttribute)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LBeanAttribute_type") :
+			getString("_UI_LBeanAttribute_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LBeanAttribute.class)) {
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__ID:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPED_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES:
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s
+	 * describing the children that can be created under this object. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(
+			Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXIfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSwitchExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBlockExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXVariableDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXMemberFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXConstructorCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXNullLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXNumberLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXStringLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXListLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSetLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXClosure()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXCastedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBinaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXUnaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXPostfixOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBasicForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXDoWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXTypeLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXInstanceOfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXThrowExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXTryCatchFinallyExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXAssignment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXReturnExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSynchronizedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+	}
+
+	private static final class AddImportForDatatypeCommand extends
+			AbstractOverrideableCommand {
+
+		private LEntityAttribute lAttribute;
+		private LTypedPackage typedPackage;
+		private boolean contains;
+		private String typePackageName;
+		private LImport newImport;
+		private LScalarType type;
+
+		protected AddImportForDatatypeCommand(EditingDomain domain,
+				LEntityAttribute lAttribute, LScalarType type) {
+			super(domain, "Create import statements",
+					"Creates import statements for added LDatatypes");
+			this.lAttribute = lAttribute;
+			this.type = type;
+			typedPackage = (LTypedPackage) lAttribute.getEntity().eContainer();
+		}
+
+		protected boolean prepare() {
+			return true;
+		}
+
+		@Override
+		public void doExecute() {
+			LTypedPackage typePackage = (LTypedPackage) type.eContainer();
+			typePackageName = typePackage.getName();
+
+			for (LImport lImport : typePackage.getImports()) {
+				if (lImport.getImportedNamespace().replace(".*", "")
+						.equals(typePackageName)) {
+					contains = true;
+				}
+			}
+
+			if (!contains) {
+				newImport = OSBPTypesFactory.eINSTANCE.createLImport();
+				newImport.setImportedNamespace(typePackageName + ".*");
+			}
+
+			doRedo();
+		}
+
+		@Override
+		public void doUndo() {
+			if (newImport != null) {
+				typedPackage.getImports().remove(newImport);
+			}
+		}
+
+		@Override
+		public void doRedo() {
+			if (newImport != null) {
+				typedPackage.getImports().add(newImport);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanFeatureItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanFeatureItemProvider.java
new file mode 100644
index 0000000..7c9f610
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanFeatureItemProvider.java
@@ -0,0 +1,284 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LAnnotationTargetItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LBeanFeatureItemProvider extends LAnnotationTargetItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanFeatureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFeature_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFeature_name_feature", "_UI_LFeature_type"),
+				 OSBPTypesPackage.Literals.LFEATURE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LBeanFeature.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LBeanFeature"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LBeanFeature)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LBeanFeature_type") :
+			getString("_UI_LBeanFeature_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LBeanFeature.class)) {
+			case OSBPEntityPackage.LBEAN_FEATURE__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY:
+			case OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+				 OSBPTypesFactory.eINSTANCE.createLMultiplicity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanItemProvider.java
new file mode 100644
index 0000000..7c03402
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanItemProvider.java
@@ -0,0 +1,352 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LClassItemProvider;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBean} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LBeanItemProvider extends LClassItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSuperTypePropertyDescriptor(object);
+			addSubTypesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Super Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSuperTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LBean_superType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LBean_superType_feature", "_UI_LBean_type"),
+				 OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Sub Types feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSubTypesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LBean_subTypes_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LBean_subTypes_feature", "_UI_LBean_type"),
+				 OSBPEntityPackage.Literals.LBEAN__SUB_TYPES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LBEAN__FEATURES);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LBean.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LBean"));
+	}
+
+	private Object getOverlay(LBean object) {
+		if (object.isAbstract()) {
+			return getResourceLocator().getImage("full/ovr/abstract.gif");
+		} 
+		return null;
+	}
+	
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LBean)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LBean_type") :
+			getString("_UI_LBean_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LBean.class)) {
+			case OSBPEntityPackage.LBEAN__FEATURES:
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPEntityPackage.Literals.LBEAN__FEATURES;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java
new file mode 100644
index 0000000..f5d7275
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LBeanReferenceItemProvider.java
@@ -0,0 +1,373 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LBeanReferenceItemProvider extends LBeanFeatureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLazyPropertyDescriptor(object);
+			addCascadingPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+			addOppositePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Lazy feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLazyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_lazy_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_lazy_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__LAZY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cascading feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCascadingPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_cascading_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_cascading_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LBeanReference_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LBeanReference_type_feature", "_UI_LBeanReference_type"),
+				 OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Opposite feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOppositePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LBeanReference_opposite_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LBeanReference_opposite_feature", "_UI_LBeanReference_type"),
+				 OSBPEntityPackage.Literals.LBEAN_REFERENCE__OPPOSITE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LREFERENCE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LBEAN_REFERENCE__RESULT_FILTERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LBeanReference.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LBeanReference"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LBeanReference)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LBeanReference_type") :
+			getString("_UI_LBeanReference_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LBeanReference.class)) {
+			case OSBPEntityPackage.LBEAN_REFERENCE__LAZY:
+			case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
+			case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS:
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM:
+			case OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LBEAN_REFERENCE__RESULT_FILTERS,
+				 OSBPTypesFactory.eINSTANCE.createLResultFilters()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java
new file mode 100644
index 0000000..e6ce6d9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityAttributeItemProvider.java
@@ -0,0 +1,829 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.AbstractOverrideableCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.xbase.XbaseFactory;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+
+/**
+ * This is the item provider adapter for a
+ * {@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute} object. <!--
+ * begin-user-doc --> <!-- end-user-doc -->
+ * 
+ * @generated
+ */
+public class LEntityAttributeItemProvider extends LEntityFeatureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public LEntityAttributeItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addIdPropertyDescriptor(object);
+			addUuidPropertyDescriptor(object);
+			addVersionPropertyDescriptor(object);
+			addLazyPropertyDescriptor(object);
+			addCascadingPropertyDescriptor(object);
+			addTransientPropertyDescriptor(object);
+			addDerivedPropertyDescriptor(object);
+			addDirtyPropertyDescriptor(object);
+			addDomainKeyPropertyDescriptor(object);
+			addDomainDescriptionPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+			addOppositePropertyDescriptor(object);
+			addTypedNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Id feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_id_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_id_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Uuid feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUuidPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_uuid_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_uuid_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__UUID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Version feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addVersionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_version_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_version_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__VERSION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Lazy feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLazyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_lazy_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_lazy_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__LAZY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cascading feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addCascadingPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_cascading_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_cascading_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__CASCADING,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Transient feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTransientPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_transient_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_transient_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__TRANSIENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Derived feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addDerivedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_derived_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_derived_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Dirty feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDirtyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_dirty_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_dirty_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DIRTY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Key feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDomainKeyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_domainKey_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_domainKey_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Domain Description feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDomainDescriptionPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_domainDescription_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_domainDescription_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LAttribute_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LAttribute_type_feature", "_UI_LAttribute_type"),
+				 OSBPTypesPackage.Literals.LATTRIBUTE__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Opposite feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOppositePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityAttribute_opposite_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityAttribute_opposite_feature", "_UI_LEntityAttribute_type"),
+				 OSBPEntityPackage.Literals.LENTITY_ATTRIBUTE__OPPOSITE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Typed Name feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTypedNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityAttribute_typedName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityAttribute_typedName_feature", "_UI_LEntityAttribute_type"),
+				 OSBPEntityPackage.Literals.LENTITY_ATTRIBUTE__TYPED_NAME,
+				 false,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(
+			Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LEntity.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return composeImage(getImage((LEntityAttribute) object),
+				getOverlay((LEntityAttribute) object));
+	}
+
+	private Object getOverlay(LEntityAttribute object) {
+		if (object.isTransient()) {
+			return getResourceLocator().getImage("full/ovr/transient.gif");
+		}
+		return null;
+	}
+
+	private Object getImage(LEntityAttribute object) {
+		if (object.isId() || object.isUuid()) {
+			return getResourceLocator().getImage("full/obj/LAttribute_id.gif");
+		}
+		return getResourceLocator().getImage("full/obj16/LEntityAttribute.gif");
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEntityAttribute)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEntityAttribute_type") :
+			getString("_UI_LEntityAttribute_type") + " " + label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntityAttribute.class)) {
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__ID:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPED_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES:
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s
+	 * describing the children that can be created under this object. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(
+			Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXIfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSwitchExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBlockExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXVariableDeclaration()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXMemberFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXFeatureCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXConstructorCall()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBooleanLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXNullLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXNumberLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXStringLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXListLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSetLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXClosure()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXCastedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBinaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXUnaryOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXPostfixOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXBasicForLoopExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXDoWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXWhileExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXTypeLiteral()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXInstanceOfExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXThrowExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXTryCatchFinallyExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXAssignment()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXReturnExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__DERIVED_GETTER_EXPRESSION,
+				 XbaseFactory.eINSTANCE.createXSynchronizedExpression()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LATTRIBUTE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+	}
+
+	@Override
+	protected Command createSetCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Object value, int index) {
+		if (feature == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE) {
+			CompoundCommand compound = new CompoundCommand();
+			compound.append(super.createSetCommand(domain, owner, feature,
+					value, index));
+			compound.append(new AddImportForDatatypeCommand(domain,
+					(LEntityAttribute) owner, (LScalarType) value));
+			return compound;
+		} else {
+			return super.createSetCommand(domain, owner, feature, value, index);
+		}
+	}
+
+	private static final class AddImportForDatatypeCommand extends
+			AbstractOverrideableCommand {
+
+		private LEntityAttribute lAttribute;
+		private LTypedPackage typedPackage;
+		private boolean contains;
+		private String typePackageName;
+		private LImport newImport;
+		private LScalarType type;
+
+		protected AddImportForDatatypeCommand(EditingDomain domain,
+				LEntityAttribute lAttribute, LScalarType type) {
+			super(domain, "Create import statements",
+					"Creates import statements for added LDatatypes");
+			this.lAttribute = lAttribute;
+			this.type = type;
+			typedPackage = (LTypedPackage) lAttribute.getEntity().eContainer();
+		}
+
+		protected boolean prepare() {
+			return true;
+		}
+
+		@Override
+		public void doExecute() {
+			LTypedPackage typePackage = (LTypedPackage) type.eContainer();
+			typePackageName = typePackage.getName();
+
+			for (LImport lImport : typePackage.getImports()) {
+				if (lImport.getImportedNamespace().replace(".*", "")
+						.equals(typePackageName)) {
+					contains = true;
+				}
+			}
+
+			if (!contains) {
+				newImport = OSBPTypesFactory.eINSTANCE.createLImport();
+				newImport.setImportedNamespace(typePackageName + ".*");
+			}
+
+			doRedo();
+		}
+
+		@Override
+		public void doUndo() {
+			if (newImport != null) {
+				typedPackage.getImports().remove(newImport);
+			}
+		}
+
+		@Override
+		public void doRedo() {
+			if (newImport != null) {
+				typedPackage.getImports().add(newImport);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityColumnPersistenceInfoItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityColumnPersistenceInfoItemProvider.java
new file mode 100644
index 0000000..f438223
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityColumnPersistenceInfoItemProvider.java
@@ -0,0 +1,154 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEntityColumnPersistenceInfoItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityColumnPersistenceInfoItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addColumnNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Column Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addColumnNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityColumnPersistenceInfo_columnName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityColumnPersistenceInfo_columnName_feature", "_UI_LEntityColumnPersistenceInfo_type"),
+				 OSBPEntityPackage.Literals.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LEntityColumnPersistenceInfo.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEntityColumnPersistenceInfo"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEntityColumnPersistenceInfo)object).getColumnName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEntityColumnPersistenceInfo_type") :
+			getString("_UI_LEntityColumnPersistenceInfo_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntityColumnPersistenceInfo.class)) {
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityFeatureItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityFeatureItemProvider.java
new file mode 100644
index 0000000..1a27125
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityFeatureItemProvider.java
@@ -0,0 +1,291 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LAnnotationTargetItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEntityFeatureItemProvider extends LAnnotationTargetItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeatureItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFeature_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFeature_name_feature", "_UI_LFeature_type"),
+				 OSBPTypesPackage.Literals.LFEATURE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY_FEATURE__PERSISTENCE_INFO);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LEntityFeature.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEntityFeature"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEntityFeature)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEntityFeature_type") :
+			getString("_UI_LEntityFeature_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntityFeature.class)) {
+			case OSBPEntityPackage.LENTITY_FEATURE__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY:
+			case OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO:
+			case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+				 OSBPTypesFactory.eINSTANCE.createLMultiplicity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_FEATURE__PERSISTENCE_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityColumnPersistenceInfo()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityItemProvider.java
new file mode 100644
index 0000000..ec0d4aa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityItemProvider.java
@@ -0,0 +1,521 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LClassItemProvider;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntity} object.
+ * <!-- begin-user-doc
+ * --> <!-- end-user-doc -->
+ * @generated
+ */
+public class LEntityItemProvider extends LClassItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	public LEntityItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCacheablePropertyDescriptor(object);
+			addHistorizedPropertyDescriptor(object);
+			addTimedependentPropertyDescriptor(object);
+			addTimedependentDateTypePropertyDescriptor(object);
+			addMappedSuperclassPropertyDescriptor(object);
+			addSuperTypePropertyDescriptor(object);
+			addSubTypesPropertyDescriptor(object);
+			addPersistenceUnitPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Cacheable feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addCacheablePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_cacheable_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_cacheable_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__CACHEABLE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Historized feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addHistorizedPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_historized_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_historized_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__HISTORIZED,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Timedependent feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addTimedependentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_timedependent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_timedependent_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__TIMEDEPENDENT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Timedependent Date Type feature.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTimedependentDateTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_timedependentDateType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_timedependentDateType_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__TIMEDEPENDENT_DATE_TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Mapped Superclass feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addMappedSuperclassPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_mappedSuperclass_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_mappedSuperclass_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__MAPPED_SUPERCLASS,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Super Type feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addSuperTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_superType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_superType_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Sub Types feature. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	protected void addSubTypesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_subTypes_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_subTypes_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__SUB_TYPES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Persistence Unit feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPersistenceUnitPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntity_persistenceUnit_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntity_persistenceUnit_feature", "_UI_LEntity_type"),
+				 OSBPEntityPackage.Literals.LENTITY__PERSISTENCE_UNIT,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(
+			Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY__PERSISTENCE_INFO);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY__INHERITANCE_STRATEGY);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY__FEATURES);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY__INDEXES);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LEntity.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return composeImage(getResourceLocator()
+				.getImage("full/obj16/LEntity.gif"), getOverlay((LEntity) object));
+	}
+
+	private Object getOverlay(LEntity object) {
+		if (object.isAbstract()) {
+			return getResourceLocator().getImage("full/ovr/abstract.gif");
+		} else if (object.isTimedependent()) {
+			return getResourceLocator().getImage("full/ovr/timedependent.gif");
+		}
+		return null;
+	}
+
+	/**
+	 * This returns the label text for the adapted class. <!-- begin-user-doc
+	 * --> <!-- end-user-doc -->
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEntity) object).getName();
+		return label == null || label.length() == 0 ? "" : label;
+	}
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc --> <!--
+	 * end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntity.class)) {
+			case OSBPEntityPackage.LENTITY__CACHEABLE:
+			case OSBPEntityPackage.LENTITY__HISTORIZED:
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT:
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT_DATE_TYPE:
+			case OSBPEntityPackage.LENTITY__MAPPED_SUPERCLASS:
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_UNIT:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_INFO:
+			case OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY:
+			case OSBPEntityPackage.LENTITY__FEATURES:
+			case OSBPEntityPackage.LENTITY__INDEXES:
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s
+	 * describing the children that can be created under this object. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(
+			Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__PERSISTENCE_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityPersistenceInfo()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__INHERITANCE_STRATEGY,
+				 OSBPEntityFactory.eINSTANCE.createLTablePerClassStrategy()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__INHERITANCE_STRATEGY,
+				 OSBPEntityFactory.eINSTANCE.createLTablePerSubclassStrategy()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__FEATURES,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__INDEXES,
+				 OSBPEntityFactory.eINSTANCE.createLIndex()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * This returns the label text for
+	 * {@link org.eclipse.emf.edit.command.CreateChildCommand}. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature,
+			Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPEntityPackage.Literals.LENTITY__FEATURES;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources. <!--
+	 * begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityModelItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityModelItemProvider.java
new file mode 100644
index 0000000..1e7a514
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityModelItemProvider.java
@@ -0,0 +1,180 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEntityModelItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY_MODEL__PACKAGES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LEntityModel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEntityModel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LEntityModel_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntityModel.class)) {
+			case OSBPEntityPackage.LENTITY_MODEL__PACKAGES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_MODEL__PACKAGES,
+				 OSBPTypesFactory.eINSTANCE.createLTypedPackage()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityPersistenceInfoItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityPersistenceInfoItemProvider.java
new file mode 100644
index 0000000..fcae41b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityPersistenceInfoItemProvider.java
@@ -0,0 +1,178 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEntityPersistenceInfoItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityPersistenceInfoItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addSchemaNamePropertyDescriptor(object);
+			addTableNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Schema Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSchemaNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityPersistenceInfo_schemaName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityPersistenceInfo_schemaName_feature", "_UI_LEntityPersistenceInfo_type"),
+				 OSBPEntityPackage.Literals.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Table Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTableNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityPersistenceInfo_tableName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityPersistenceInfo_tableName_feature", "_UI_LEntityPersistenceInfo_type"),
+				 OSBPEntityPackage.Literals.LENTITY_PERSISTENCE_INFO__TABLE_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LEntityPersistenceInfo.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEntityPersistenceInfo"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEntityPersistenceInfo)object).getSchemaName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEntityPersistenceInfo_type") :
+			getString("_UI_LEntityPersistenceInfo_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntityPersistenceInfo.class)) {
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME:
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__TABLE_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java
new file mode 100644
index 0000000..1a54994
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LEntityReferenceItemProvider.java
@@ -0,0 +1,373 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LEntityReferenceItemProvider extends LEntityFeatureItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityReferenceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addLazyPropertyDescriptor(object);
+			addCascadingPropertyDescriptor(object);
+			addTypePropertyDescriptor(object);
+			addOppositePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Lazy feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addLazyPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_lazy_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_lazy_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__LAZY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Cascading feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCascadingPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LReference_cascading_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LReference_cascading_feature", "_UI_LReference_type"),
+				 OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityReference_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityReference_type_feature", "_UI_LEntityReference_type"),
+				 OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Opposite feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addOppositePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LEntityReference_opposite_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LEntityReference_opposite_feature", "_UI_LEntityReference_type"),
+				 OSBPEntityPackage.Literals.LENTITY_REFERENCE__OPPOSITE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LREFERENCE__PROPERTIES);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY_REFERENCE__RESULT_FILTERS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LEntityReference.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LEntityReference"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LEntityReference)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LEntityReference_type") :
+			getString("_UI_LEntityReference_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LEntityReference.class)) {
+			case OSBPEntityPackage.LENTITY_REFERENCE__LAZY:
+			case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES:
+			case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS:
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM:
+			case OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__PROPERTIES,
+				 OSBPTypesFactory.eINSTANCE.createLKeyAndValue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertFalse()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCAssertTrue()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDecimalMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCDigits()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCFuture()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCPast()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMax()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNumericMin()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNotNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCNull()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCRegEx()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LREFERENCE__CONSTRAINTS,
+				 OSBPTypesFactory.eINSTANCE.createLDtCSize()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_REFERENCE__RESULT_FILTERS,
+				 OSBPTypesFactory.eINSTANCE.createLResultFilters()));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LIndexItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LIndexItemProvider.java
new file mode 100644
index 0000000..ecc4028
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LIndexItemProvider.java
@@ -0,0 +1,216 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LIndex} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LIndexItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LIndexItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addUniquePropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+			addFeaturesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Unique feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addUniquePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LIndex_unique_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LIndex_unique_feature", "_UI_LIndex_type"),
+				 OSBPEntityPackage.Literals.LINDEX__UNIQUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LIndex_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LIndex_name_feature", "_UI_LIndex_type"),
+				 OSBPEntityPackage.Literals.LINDEX__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Features feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFeaturesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LIndex_features_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LIndex_features_feature", "_UI_LIndex_type"),
+				 OSBPEntityPackage.Literals.LINDEX__FEATURES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LIndex.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LIndex"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LIndex)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LIndex_type") :
+			getString("_UI_LIndex_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LIndex.class)) {
+			case OSBPEntityPackage.LINDEX__UNIQUE:
+			case OSBPEntityPackage.LINDEX__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LOperationItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LOperationItemProvider.java
new file mode 100644
index 0000000..1edcb6b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LOperationItemProvider.java
@@ -0,0 +1,283 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LOperation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LOperationItemProvider extends org.eclipse.osbp.dsl.semantic.common.types.provider.LOperationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LOperationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFeature_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFeature_name_feature", "_UI_LFeature_type"),
+				 OSBPTypesPackage.Literals.LFEATURE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO);
+			childrenFeatures.add(OSBPEntityPackage.Literals.LENTITY_FEATURE__PERSISTENCE_INFO);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LOperation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LOperation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LOperation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LOperation_type") :
+			getString("_UI_LOperation_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LOperation.class)) {
+			case OSBPEntityPackage.LOPERATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPEntityPackage.LOPERATION__MULTIPLICITY:
+			case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO:
+			case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+				 OSBPTypesFactory.eINSTANCE.createLMultiplicity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPEntityPackage.Literals.LENTITY_FEATURE__PERSISTENCE_INFO,
+				 OSBPEntityFactory.eINSTANCE.createLEntityColumnPersistenceInfo()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LTablePerClassStrategyItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LTablePerClassStrategyItemProvider.java
new file mode 100644
index 0000000..fa81a80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LTablePerClassStrategyItemProvider.java
@@ -0,0 +1,202 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LTablePerClassStrategyItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTablePerClassStrategyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDiscriminatorColumnPropertyDescriptor(object);
+			addDiscriminatorTypePropertyDescriptor(object);
+			addDiscriminatorValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Discriminator Column feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDiscriminatorColumnPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LTablePerClassStrategy_discriminatorColumn_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LTablePerClassStrategy_discriminatorColumn_feature", "_UI_LTablePerClassStrategy_type"),
+				 OSBPEntityPackage.Literals.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Discriminator Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDiscriminatorTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LTablePerClassStrategy_discriminatorType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LTablePerClassStrategy_discriminatorType_feature", "_UI_LTablePerClassStrategy_type"),
+				 OSBPEntityPackage.Literals.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Discriminator Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDiscriminatorValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LTablePerClassStrategy_discriminatorValue_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LTablePerClassStrategy_discriminatorValue_feature", "_UI_LTablePerClassStrategy_type"),
+				 OSBPEntityPackage.Literals.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LTablePerClassStrategy.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LTablePerClassStrategy"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LTablePerClassStrategy)object).getDiscriminatorColumn();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LTablePerClassStrategy_type") :
+			getString("_UI_LTablePerClassStrategy_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LTablePerClassStrategy.class)) {
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE:
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LTablePerSubclassStrategyItemProvider.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LTablePerSubclassStrategyItemProvider.java
new file mode 100644
index 0000000..d675f2c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/LTablePerSubclassStrategyItemProvider.java
@@ -0,0 +1,202 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LTablePerSubclassStrategyItemProvider 
+	extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTablePerSubclassStrategyItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDiscriminatorColumnPropertyDescriptor(object);
+			addDiscriminatorTypePropertyDescriptor(object);
+			addDiscriminatorValuePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Discriminator Column feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDiscriminatorColumnPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LTablePerSubclassStrategy_discriminatorColumn_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LTablePerSubclassStrategy_discriminatorColumn_feature", "_UI_LTablePerSubclassStrategy_type"),
+				 OSBPEntityPackage.Literals.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Discriminator Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDiscriminatorTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LTablePerSubclassStrategy_discriminatorType_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LTablePerSubclassStrategy_discriminatorType_feature", "_UI_LTablePerSubclassStrategy_type"),
+				 OSBPEntityPackage.Literals.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Discriminator Value feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDiscriminatorValuePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LTablePerSubclassStrategy_discriminatorValue_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LTablePerSubclassStrategy_discriminatorValue_feature", "_UI_LTablePerSubclassStrategy_type"),
+				 OSBPEntityPackage.Literals.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LTablePerSubclassStrategy.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LTablePerSubclassStrategy"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LTablePerSubclassStrategy)object).getDiscriminatorColumn();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LTablePerSubclassStrategy_type") :
+			getString("_UI_LTablePerSubclassStrategy_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LTablePerSubclassStrategy.class)) {
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE:
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return EntityEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/OSBPEntityItemProviderAdapterFactory.java b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/OSBPEntityItemProviderAdapterFactory.java
new file mode 100644
index 0000000..632dd4b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.edit/src/org/eclipse/osbp/dsl/semantic/entity/provider/OSBPEntityItemProviderAdapterFactory.java
@@ -0,0 +1,760 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import java.util.List;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.util.OSBPTypesSwitch;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.util.OSBPEntityAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPEntityItemProviderAdapterFactory extends OSBPEntityAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPEntityItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntityModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityModelItemProvider lEntityModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityModelAdapter() {
+		if (lEntityModelItemProvider == null) {
+			lEntityModelItemProvider = new LEntityModelItemProvider(this);
+		}
+
+		return lEntityModelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LBean} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanItemProvider lBeanItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBean}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLBeanAdapter() {
+		if (lBeanItemProvider == null) {
+			lBeanItemProvider = new LBeanItemProvider(this);
+		}
+
+		return lBeanItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntity} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityItemProvider lEntityItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntity}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityAdapter() {
+		if (lEntityItemProvider == null) {
+			lEntityItemProvider = new LEntityItemProvider(this);
+		}
+
+		return lEntityItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityPersistenceInfoItemProvider lEntityPersistenceInfoItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityPersistenceInfoAdapter() {
+		if (lEntityPersistenceInfoItemProvider == null) {
+			lEntityPersistenceInfoItemProvider = new LEntityPersistenceInfoItemProvider(this);
+		}
+
+		return lEntityPersistenceInfoItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityColumnPersistenceInfoItemProvider lEntityColumnPersistenceInfoItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityColumnPersistenceInfoAdapter() {
+		if (lEntityColumnPersistenceInfoItemProvider == null) {
+			lEntityColumnPersistenceInfoItemProvider = new LEntityColumnPersistenceInfoItemProvider(this);
+		}
+
+		return lEntityColumnPersistenceInfoItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTablePerClassStrategyItemProvider lTablePerClassStrategyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLTablePerClassStrategyAdapter() {
+		if (lTablePerClassStrategyItemProvider == null) {
+			lTablePerClassStrategyItemProvider = new LTablePerClassStrategyItemProvider(this);
+		}
+
+		return lTablePerClassStrategyItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTablePerSubclassStrategyItemProvider lTablePerSubclassStrategyItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLTablePerSubclassStrategyAdapter() {
+		if (lTablePerSubclassStrategyItemProvider == null) {
+			lTablePerSubclassStrategyItemProvider = new LTablePerSubclassStrategyItemProvider(this);
+		}
+
+		return lTablePerSubclassStrategyItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityFeatureItemProvider lEntityFeatureItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityFeatureAdapter() {
+		if (lEntityFeatureItemProvider == null) {
+			lEntityFeatureItemProvider = new LEntityFeatureItemProvider(this);
+		}
+
+		return lEntityFeatureItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityAttributeItemProvider lEntityAttributeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityAttributeAdapter() {
+		if (lEntityAttributeItemProvider == null) {
+			lEntityAttributeItemProvider = new LEntityAttributeItemProvider(this);
+		}
+
+		return lEntityAttributeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityReferenceItemProvider lEntityReferenceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLEntityReferenceAdapter() {
+		if (lEntityReferenceItemProvider == null) {
+			lEntityReferenceItemProvider = new LEntityReferenceItemProvider(this);
+		}
+
+		return lEntityReferenceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanFeatureItemProvider lBeanFeatureItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLBeanFeatureAdapter() {
+		if (lBeanFeatureItemProvider == null) {
+			lBeanFeatureItemProvider = new LBeanFeatureItemProvider(this);
+		}
+
+		return lBeanFeatureItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanAttributeItemProvider lBeanAttributeItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLBeanAttributeAdapter() {
+		if (lBeanAttributeItemProvider == null) {
+			lBeanAttributeItemProvider = new LBeanAttributeItemProvider(this);
+		}
+
+		return lBeanAttributeItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanReferenceItemProvider lBeanReferenceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLBeanReferenceAdapter() {
+		if (lBeanReferenceItemProvider == null) {
+			lBeanReferenceItemProvider = new LBeanReferenceItemProvider(this);
+		}
+
+		return lBeanReferenceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LIndex} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LIndexItemProvider lIndexItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LIndex}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLIndexAdapter() {
+		if (lIndexItemProvider == null) {
+			lIndexItemProvider = new LIndexItemProvider(this);
+		}
+
+		return lIndexItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.entity.LOperation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LOperationItemProvider lOperationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.entity.LOperation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLOperationAdapter() {
+		if (lOperationItemProvider == null) {
+			lOperationItemProvider = new LOperationItemProvider(this);
+		}
+
+		return lOperationItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (lEntityModelItemProvider != null) lEntityModelItemProvider.dispose();
+		if (lBeanItemProvider != null) lBeanItemProvider.dispose();
+		if (lEntityItemProvider != null) lEntityItemProvider.dispose();
+		if (lEntityPersistenceInfoItemProvider != null) lEntityPersistenceInfoItemProvider.dispose();
+		if (lEntityColumnPersistenceInfoItemProvider != null) lEntityColumnPersistenceInfoItemProvider.dispose();
+		if (lTablePerClassStrategyItemProvider != null) lTablePerClassStrategyItemProvider.dispose();
+		if (lTablePerSubclassStrategyItemProvider != null) lTablePerSubclassStrategyItemProvider.dispose();
+		if (lEntityFeatureItemProvider != null) lEntityFeatureItemProvider.dispose();
+		if (lEntityAttributeItemProvider != null) lEntityAttributeItemProvider.dispose();
+		if (lEntityReferenceItemProvider != null) lEntityReferenceItemProvider.dispose();
+		if (lBeanFeatureItemProvider != null) lBeanFeatureItemProvider.dispose();
+		if (lBeanAttributeItemProvider != null) lBeanAttributeItemProvider.dispose();
+		if (lBeanReferenceItemProvider != null) lBeanReferenceItemProvider.dispose();
+		if (lIndexItemProvider != null) lIndexItemProvider.dispose();
+		if (lOperationItemProvider != null) lOperationItemProvider.dispose();
+	}
+
+	/**
+	 * A child creation extender for the {@link OSBPTypesPackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class OSBPTypesChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected static class CreationSwitch extends OSBPTypesSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLTypedPackage(LTypedPackage object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLType(LType object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLFeature(LFeature object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBean()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntity()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntityFeature()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntityAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLEntityReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBeanFeature()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBeanAttribute()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLBeanReference()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPEntityFactory.eINSTANCE.createLOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject)object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ResourceLocator getResourceLocator() {
+			return EntityEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/.project b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/.project
new file mode 100644
index 0000000..a465b43
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/.project
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.entity.xtext.grammar.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.osbp.ide.core.ui.shared.OSBPBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.osbp.ide.core.ui.shared.OSBPNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.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.dsl.entity.xtext.grammar.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c8a086c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,41 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.entity.xtext.grammar.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.entity.xtext.grammar.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.hamcrest.core;bundle-version="1.1.0",
+ javax.persistence;bundle-version="2.0.4",
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.semantic.common;bundle-version="[0.9.0,0.10.0)",
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.xbase.junit;bundle-version="[2.7.3,2.8.0)",
+ javax.validation.api;bundle-version="1.1.0"
+Import-Package: javax.validation;version="1.1.0",
+ javax.validation.constraints;version="1.1.0",
+ junit.framework;version="3.8.2",
+ org.apache.commons.logging,
+ 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",
+ org.osgi.service.component;version="1.2.0",
+ org.slf4j;version="1.6.4"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.dsl.entity.xtext.grammar.tests;version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.dsl.entity.xtext.grammar.tests.Activator
+Bundle-ClassPath: lib/mysql-connector-java-5.1.6.jar,.
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/build.properties b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/build.properties
new file mode 100644
index 0000000..5c04885
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/build.properties
@@ -0,0 +1,6 @@
+source.. = src/,\
+           xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               license.html
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-v10.html b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.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.dsl.entity.xtext.grammar.tests/license.html b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.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.dsl.entity.xtext.grammar.tests/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/pom.xml
new file mode 100644
index 0000000..7e803e3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/pom.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.entity.xtext.grammar.tests</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Test.class</include>
+						<include>**/*Tests.class</include>
+					</includes>
+					<failIfNoTests>false</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<!-- <argLine>${ui.test.vmargs}</argLine> -->
+					<bundleStartLevel>
+						<bundle>
+							<id>org.eclipse.osgi</id>
+							<level>-1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.common</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.ds</id>
+							<level>2</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.log</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi.services</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.dsl.entity.xtext.grammar.tests</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+					</bundleStartLevel>
+					<dependencies>
+						<!-- Plugins -->
+						<dependency>
+							<type>eclipse-plugin</type>
+							<artifactId>org.eclipse.equinox.ds</artifactId>
+							<version>0.0.0</version>
+						</dependency>
+						<dependency>
+							<type>eclipse-plugin</type>
+							<artifactId>org.eclipse.equinox.util</artifactId>
+							<version>0.0.0</version>
+						</dependency>
+					</dependencies>
+
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/Activator.java b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/Activator.java
new file mode 100644
index 0000000..b3e5daf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/Activator.java
@@ -0,0 +1,58 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.grammar.tests;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+public class Activator implements BundleActivator {
+
+	public BundleContext context;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		this.context = context;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		this.context = null;
+	}
+
+	/**
+	 * Returns the entity manager factory or <code>null</code>.
+	 * 
+	 * @return
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public static EntityManagerFactory getEMF() {
+		BundleContext context = FrameworkUtil.getBundle(Activator.class)
+				.getBundleContext();
+		ServiceReference[] refs;
+		try {
+			refs = context.getServiceReferences(
+					EntityManagerFactory.class.getName(),
+					"(osgi.unit.name=dbDerby)");
+			if (refs != null) {
+				return (EntityManagerFactory) context.getService(refs[0]);
+			}
+		} catch (InvalidSyntaxException e) {
+			throw new RuntimeException(e);
+		}
+
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/GrammarTests.xtend b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/GrammarTests.xtend
new file mode 100644
index 0000000..aab7f5a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/GrammarTests.xtend
@@ -0,0 +1,982 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.grammar.tests
+
+import com.google.inject.Inject
+import java.util.Map
+import org.eclipse.xtext.diagnostics.Severity
+import org.eclipse.xtext.junit4.InjectWith
+import org.eclipse.xtext.junit4.XtextRunner
+import org.eclipse.xtext.junit4.validation.ValidationTestHelper
+import org.eclipse.xtext.validation.Issue
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel
+
+import static org.eclipse.xtext.diagnostics.Severity.*
+import static org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator.*
+import static org.eclipse.osbp.dsl.entity.xtext.validation.EntityGrammarJavaValidator.*
+
+import static extension org.junit.Assert.*
+
+@RunWith(typeof(XtextRunner))
+@InjectWith(typeof(InjectorProvider))
+class GrammarTests {
+
+	@Inject extension ValidationTestHelper;
+	@Inject extension ParseHelper<LEntityModel>;
+
+	Map<String, Issue> result
+	Map<String, Issue> result2
+
+	@Test
+	def void id_1() {
+		result = '''
+		package org.eclipse.osbp.dsl.^entity.xtext.tests {
+		
+		datatype long jvmType Long as primitive;
+		
+			entity Test { 										// warn: no id
+		
+			}
+		
+			entity Test2 {
+				id long id; 
+				id long other; 									// error: duplicate id
+			}
+		}'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_ID.severity.assertSame(WARNING)
+		CODE__MISSING_ID.lineNumber.assertEquals(5)
+		CODE__DUPLICATE_ID.severity.assertSame(ERROR)
+		CODE__DUPLICATE_ID.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void id_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+				datatype long jvmType Long as primitive;
+				 
+				entity Test {
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					var long someValue;
+					id long other;								// error: duplicate id
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+		CODE__DUPLICATE_ID.severity.assertSame(ERROR)
+		CODE__DUPLICATE_ID.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void version_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					version long version;
+					version long other;								// error: duplicate version
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_VERSION.severity.assertSame(ERROR)
+		CODE__DUPLICATE_VERSION.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void version_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+				datatype long jvmType Long as primitive;
+				 
+				entity Test {
+					version long version;
+				}
+				
+				entity Test2 extends Test {
+					var long someValue;
+					version long other;							// error: duplicate version
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+		CODE__DUPLICATE_VERSION.severity.assertSame(ERROR)
+		CODE__DUPLICATE_VERSION.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					var long xxyy;									// error: duplicate property
+					var long other;
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+				datatype long jvmType Long as primitive;
+				 
+				entity Test {
+					var long xxyy;
+				}
+				
+				entity Test2 extends Test {
+					var long someValue;
+					var long xxyy;								// error: duplicate property (supertype)
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					var long other;
+					ref Test xxyy;									// error: duplicate property var-ref
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(11)
+	}
+
+	@Test
+	def void featureName_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;									// error: duplicate property id-ref
+					ref Test xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_5() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;									// error: duplicate property id-var
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void duplicatePackage_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;
+					var long xxyy;
+				}
+			}
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {			// error: duplicate package
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_LPACKAGE_IN_FILE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_LPACKAGE_IN_FILE.lineNumber.assertEquals(14)
+	}
+
+	@Test
+	def void duplicateType_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					var long xy;
+				}
+			
+				entity Test {										// error: duplicate type (entity)
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_LTYPE_IN_PROJECT.severity.assertSame(ERROR)
+		CODE__DUPLICATE_LTYPE_IN_PROJECT.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void duplicateType_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype number jvmType Long as primitive;
+			datatype number jvmType Float as primitive; 			// error: duplicate type (datatype)
+			
+				entity Test {
+					id long id;
+					var long xy;
+				}
+			
+				entity Test2 {
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_LDATATYPE_IN_PACKAGE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_LDATATYPE_IN_PACKAGE.lineNumber.assertEquals(4)
+	}
+
+	@Test
+	def void duplicateType_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests1 {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test1 {
+					id long xxyy;
+					var long abc;
+				}
+			}
+			package org.eclipse.osbp.dsl.^entity.xtext.tests2 {
+			
+			datatype long jvmType Long as primitive;				// error: duplicate type (in other package)
+			
+				entity Test2 {
+					id long cde;
+					var long ghi;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+	}
+
+	@Test
+	def void invalidPrimitive_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype xyz jvmType String as primitive;				// error: no such primitive Java type
+			
+				entity Test {
+					id xyz id;
+				}
+			
+				
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__NOT_A_VALID_PRIMITIVE.severity.assertSame(ERROR)
+		CODE__NOT_A_VALID_PRIMITIVE.lineNumber.assertEquals(3)
+	}
+
+	@Test
+	def void invalidPrimitive_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype abc jvmType Long as primitive;					// ok
+			datatype xyz jvmType String as primitive;				// error: no such primitive Java type
+			
+				entity Test {
+					id xyz id;
+				}
+			
+				
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__NOT_A_VALID_PRIMITIVE.severity.assertSame(ERROR)
+		CODE__NOT_A_VALID_PRIMITIVE.lineNumber.assertEquals(4)
+	}
+
+	@Test
+	def void javaKeyword() {
+		for (String keyword : CommonGrammarJavaValidator::javakeywords) {
+			result = '''
+				package org.eclipse.osbp.dsl.^entity.xtext.tests {
+					entity Test {
+						var long «keyword»; 						// each keyword produces error
+					}
+				}
+			'''.parse.validate.toMap[it.code]
+			result.values.iterator.next.severity.assertSame(ERROR)
+		}
+	}
+
+	@Test
+	def void bidirectionalAssociation_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*] mytests;						// error: no opposite reference given
+				}
+			
+				entity Test2 {
+					id long id;
+					var long mynumber;	
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_OPPOSITE_REFERENCE.severity.assertSame(ERROR)
+		CODE__MISSING_OPPOSITE_REFERENCE.lineNumber.assertEquals(7)
+	}
+
+	@Test
+	def void bidirectionalAssociation_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*] mytests opposite nosuchthing;		// error: type of opposite ref cannot be resolved
+				}
+			
+				entity Test2 { 
+					id long id;
+					var long mynumber;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		result.values.iterator.next.severity.assertSame(ERROR)
+	}
+
+	@Test
+	def void bidirectionalAssociation_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*]									// error: no opposite reference given
+				}
+			
+				bean Test2 { 
+					var long mynumber;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		result.values.iterator.next.severity.assertSame(ERROR)
+	}
+
+	@Test
+	def void bidirectionalAssociation_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*] mytests opposite nosuchthing;		// error: type of opposite ref cannot be resolved
+				}
+			
+				bean Test2 { 
+					var long mynumber;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		result.values.iterator.next.severity.assertSame(ERROR)
+	}
+
+	@Test
+	def void manyToMany_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+								          
+				entity Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test2[1..*] mytests opposite xyz;
+					}
+								       
+				entity Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;				// error: many-to-many between entities
+					}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.severity.assertSame(ERROR)
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.lineNumber.assertEquals(16)
+
+	}
+
+	@Test
+	def void manyToMany_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+								          
+				bean Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test2[1..*] mytests opposite xyz;
+					}
+								       
+				bean Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;				// error: many-to-many between beans
+					}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.severity.assertSame(ERROR)
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.lineNumber.assertEquals(16)
+
+	}
+
+	@Test
+	def void cascade_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1..*] mytests opposite xyz;	// error: cascade goes only one way (entities)
+				}
+			
+				entity Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test xyz;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.severity.assertSame(ERROR)
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void cascade_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+			
+				bean Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1..*] mytests opposite xyz;	// error: cascade goes only one way (beans)
+				}
+			
+				bean Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test xyz;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.severity.assertSame(ERROR)
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void cascade_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1] mytests opposite xyz;		// error: cascade must not go from many to one common parent
+				}
+								       
+				entity Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		CODE__CASCADE_DIRECTION_INVALID.severity.assertSame(ERROR)
+		CODE__CASCADE_DIRECTION_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void cascade_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				bean Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1] mytests opposite xyz;		// error: cascade must not go from many to one common parent
+				}
+								       
+				bean Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		CODE__CASCADE_DIRECTION_INVALID.severity.assertSame(ERROR)
+		CODE__CASCADE_DIRECTION_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void inheritance_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {}
+					id long id;
+					var long x;
+					var long mynumber;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per subclass {}  					// warning: inheritance mismatch
+					var long y;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(13)
+
+	}
+
+	@Test
+	def void inheritance_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per subclass {}
+					id long id;
+					var long x;
+					var long mynumber;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {}  					// warning: inheritance mismatch
+					var long y;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(13)
+	}
+
+	@Test
+	def void inheritance_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {
+						discriminatorColumn disc;
+						discriminatorType STRING;
+						discriminatorValue MAINTYPE;
+					}
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {
+						discriminatorColumn disc;					// warning: ignored
+					}
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(16)
+	}
+
+	@Test
+	def void inheritance_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {
+						discriminatorColumn disc;
+						discriminatorType STRING;
+						discriminatorValue MAINTYPE;
+					}
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {
+						discriminatorType INT;						// warning: ignored
+					}
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(16)
+	}
+
+	@Test
+	def void inheritance_5() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {
+						discriminatorColumn disc;
+						discriminatorType STRING;
+						discriminatorValue MAINTYPE;
+					}
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {
+						discriminatorValue MAINTYPE;				// error: not unique
+					}
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE.severity.assertSame(ERROR)
+		CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE.lineNumber.assertEquals(15)
+	}
+
+	@Test
+	def void persistence_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					tableName testtable;
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					tableName testtable;							// error: table name in use
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PERSISTENCE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PERSISTENCE.lineNumber.assertEquals(11)
+	}
+
+	@Test
+	def void persistence_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					tableName testtable;
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					tableName Testtable;							// error: table name equal when using CAPITALS
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PERSISTENCE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PERSISTENCE.lineNumber.assertEquals(11)
+	}
+
+	@Test
+	def void persistence_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					tableName testtable;
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					tableName testTable;							// no error: CamelCase recognized -> TEST_TABLE
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+	}
+
+	@Test
+	def void historized_1() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per class{}
+				uuid String id;
+				}
+			
+				historized entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__HISTORIZED_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__HISTORIZED_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void historized_2() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per subclass{}
+				uuid String id;
+				}
+			
+				historized entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__HISTORIZED_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__HISTORIZED_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void timedependent_1() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per class{}
+				uuid String id;
+				}
+			
+				timedependent entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void timedependent_2() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per subclass{}
+				uuid String id;
+				}
+			
+				timedependent entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void historized_id() {
+		result = '''
+			package org.eclipse.osbp.entitydsltest.validation {
+			
+				datatype String jvmType String;
+			
+				historized entity MyTest {
+				var String stuff;
+				}
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_ID_FOR_VERSIONED.severity.assertSame(ERROR)
+		CODE__MISSING_ID_FOR_VERSIONED.lineNumber.assertEquals(6)
+	}
+
+	@Test
+	def void timedependent_id() {
+		result = '''
+			package org.eclipse.osbp.entitydsltest.validation {
+			
+				datatype String jvmType String;
+			
+				timedependent entity MyTest {
+				var String stuff;
+				}
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_ID_FOR_VERSIONED.severity.assertSame(ERROR)
+		CODE__MISSING_ID_FOR_VERSIONED.lineNumber.assertEquals(6)
+	}
+
+	/**
+ 	* Helper methods 
+ 	*/
+	def int lineNumber(String code) {
+		result.get(code).lineNumber
+	}
+
+	def Severity severity(String code) {
+		result.get(code).severity
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/InjectorProvider.java b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/InjectorProvider.java
new file mode 100644
index 0000000..3254967
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/InjectorProvider.java
@@ -0,0 +1,27 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.grammar.tests;
+
+import org.eclipse.xtext.junit4.IInjectorProvider;
+import org.eclipse.osbp.dsl.entity.xtext.EntityGrammarStandaloneSetup;
+
+import com.google.inject.Injector;
+
+public class InjectorProvider implements IInjectorProvider {
+
+	@SuppressWarnings("restriction")
+	@Override
+	public Injector getInjector() {
+		return new EntityGrammarStandaloneSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/MultiFilesCompilationTestHelper.java b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/MultiFilesCompilationTestHelper.java
new file mode 100644
index 0000000..bbae0ae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/MultiFilesCompilationTestHelper.java
@@ -0,0 +1,84 @@
+/**
+ * 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
+ * 
+ * Sources based on {@link org.eclipse.xtext.xbase.compiler.CompilationTestHelper}
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.entity.xtext.grammar.tests;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.xtext.resource.FileExtensionProvider;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.util.IAcceptor;
+import org.eclipse.xtext.xbase.compiler.CompilationTestHelper;
+import org.eclipse.xtext.xbase.compiler.OnTheFlyJavaCompiler;
+import org.eclipse.xtext.xbase.lib.Pair;
+import org.junit.Assert;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+@SuppressWarnings("restriction")
+public class MultiFilesCompilationTestHelper extends CompilationTestHelper {
+
+	@Inject
+	private OnTheFlyJavaCompiler javaCompiler;
+
+	@Inject
+	private Provider<XtextResourceSet> resourceSetProvider;
+
+	@Inject
+	private FileExtensionProvider extensionProvider;
+
+	/**
+	 * Asserts that the expected code is generated for the given source. Assumes
+	 * that
+	 * 
+	 * @param source
+	 *            some valid source code written in the language under test
+	 * @param expected
+	 *            the expected Java source code.
+	 * @throws IOException
+	 */
+	@SuppressWarnings("unchecked")
+	public void assertCompilesFrom(final Map<String, CharSequence> expected,
+			CharSequence... input) throws IOException {
+		final boolean[] called = { false };
+
+		List<Pair<String, CharSequence>> resources = new ArrayList<Pair<String, CharSequence>>();
+		for (int i = 0; i < input.length; i++) {
+			String fileName = "MyFile" + i + "."
+					+ extensionProvider.getPrimaryFileExtension();
+			resources.add(new Pair<String, CharSequence>(fileName, input[i]));
+		}
+
+		compile(resourceSet(resources.toArray(new Pair[resources.size()])),
+				new IAcceptor<CompilationTestHelper.Result>() {
+					public void accept(Result r) {
+						for (Entry<String, CharSequence> entry : expected
+								.entrySet()) {
+							Assert.assertEquals(
+									entry.getValue().toString(),
+									r.getGeneratedCode(entry.getKey().replace(
+											'/', '.')));
+							called[0] = true;
+						}
+					}
+				});
+		Assert.assertTrue("Nothing was generated but the expectation was :\n"
+				+ expected, called[0]);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/ParseHelper.java b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/ParseHelper.java
new file mode 100644
index 0000000..d987a17
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.grammar.tests/src/org/eclipse/osbp/dsl/entity/xtext/grammar/tests/ParseHelper.java
@@ -0,0 +1,82 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.grammar.tests;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.resource.IResourceFactory;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.util.StringInputStream;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.name.Named;
+
+public class ParseHelper<T extends EObject> extends
+		org.eclipse.xtext.junit4.util.ParseHelper<T> {
+
+	@Inject
+	private Provider<XtextResourceSet> resourceSetProvider;
+
+	@Inject
+	private IResourceFactory resourceFactory;
+
+	@Inject
+	@Named(Constants.FILE_EXTENSIONS)
+	public String fileExtension;
+
+	@SuppressWarnings("unchecked")
+	public T parse(InputStream[] ins, URI uriToUse, Map<?, ?> options,
+			ResourceSet resourceSet) {
+		Resource resource = resourceFactory.createResource(uriToUse);
+		resourceSet.getResources().add(resource);
+		try {
+			for (InputStream in : ins) {
+				resource.load(in, options);
+			}
+
+			final T root = (T) (resource.getContents().isEmpty() ? null
+					: resource.getContents().get(0));
+			return root;
+		} catch (IOException e) {
+			throw new WrappedException(e);
+		}
+	}
+
+	public T parse(CharSequence... text) throws Exception {
+		return parse(resourceSetProvider.get(), text);
+	}
+
+	public T parse(ResourceSet resourceSetToUse, CharSequence... texts)
+			throws Exception {
+		return parse(getAsStreams(texts), computeUnusedUri(resourceSetToUse),
+				(Map<?, ?>) null, resourceSetToUse);
+	}
+
+	private InputStream[] getAsStreams(CharSequence[] texts) {
+		List<InputStream> streams = new ArrayList<InputStream>();
+		for (CharSequence seq : texts) {
+			streams.add(new StringInputStream(seq == null ? "" : seq.toString()));
+		}
+		return streams.toArray(new InputStream[streams.size()]);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/.project b/org.eclipse.osbp.dsl.entity.xtext.tests/.project
new file mode 100644
index 0000000..9021548
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/.project
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.entity.xtext.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.osbp.ide.core.ui.shared.OSBPBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.osbp.ide.core.ui.shared.OSBPNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d8bce2f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,45 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.entity.xtext.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.entity.xtext.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.hamcrest.core;bundle-version="1.1.0",
+ javax.persistence;bundle-version="2.0.4",
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.persistence.core;bundle-version="2.5.0",
+ org.eclipse.persistence.jpa;bundle-version="2.5.0",
+ org.eclipse.persistence.asm;bundle-version="3.3.1",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.semantic.common;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.apache.derby.core;bundle-version="10.5.1"
+Import-Package: javax.validation;version="1.1.0",
+ javax.validation.constraints;version="1.1.0",
+ junit.framework;version="3.8.2",
+ org.apache.commons.logging,
+ 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",
+ org.osgi.service.component;version="1.2.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.dsl.entity.xtext.tests;version="0.9.0"
+Meta-Persistence: META-INF/persistence.xml
+Bundle-Activator: org.eclipse.osbp.dsl.entity.xtext.tests.Activator
+Bundle-ClassPath: lib/mysql-connector-java-5.1.6.jar,.
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/persistence.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/persistence.xml
new file mode 100644
index 0000000..ca87ff2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/persistence.xml
@@ -0,0 +1,28 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
+	version="1.0">
+	<persistence-unit name="DEFAULT" 
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Person</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Manufacturer</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Car</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Customer</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Employee</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.UsedCar</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoByClass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoBySubclass</class>
+		<class>org.eclipse.osbp.entitydsl.documentation.common.ABar</class>
+		<class>org.eclipse.osbp.entitydsl.documentation.demo.Foo</class>
+		<class>org.eclipse.osbp.entitydsl.documentation.demo.Bar</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TreeEmployee</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.Foobar</class>
+	
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+	</persistence-unit>
+</persistence>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/services/javax.persistence.spi.PersistenceProvider b/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/services/javax.persistence.spi.PersistenceProvider
new file mode 100644
index 0000000..6077a33
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/META-INF/services/javax.persistence.spi.PersistenceProvider
@@ -0,0 +1 @@
+org.eclipse.persistence.jpa.PersistenceProvider
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.mapper.FoobarDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.mapper.FoobarDtoMapper.xml
new file mode 100644
index 0000000..3247a38
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.mapper.FoobarDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.mapper.foobardtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.mapper.FoobarDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.FoobarDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.Foobar"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.mapper.foobardtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseByClassDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseByClassDtoMapper.xml
new file mode 100644
index 0000000..d44000d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseByClassDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.basebyclassdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseByClassDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClassDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClass"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.basebyclassdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseBySubclassDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseBySubclassDtoMapper.xml
new file mode 100644
index 0000000..627d9be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseBySubclassDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.basebysubclassdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.BaseBySubclassDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclassDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.basebysubclassdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneByClassDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneByClassDtoMapper.xml
new file mode 100644
index 0000000..5b402c0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneByClassDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.onebyclassdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneByClassDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClassDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClass"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.onebyclassdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneBySubclassDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneBySubclassDtoMapper.xml
new file mode 100644
index 0000000..b3a1966
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneBySubclassDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.onebysubclassdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.OneBySubclassDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclassDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclass"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.onebysubclassdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoByClassDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoByClassDtoMapper.xml
new file mode 100644
index 0000000..7d8fb72
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoByClassDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.twobyclassdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoByClassDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoByClassDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoByClass"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.twobyclassdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoBySubclassDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoBySubclassDtoMapper.xml
new file mode 100644
index 0000000..3d50b54
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoBySubclassDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.twobysubclassdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.TwoBySubclassDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoBySubclassDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoBySubclass"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.mapper.twobysubclassdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.AddressDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.AddressDtoMapper.xml
new file mode 100644
index 0000000..e94fb56
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.AddressDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.addressdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.AddressDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.AddressDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Address"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.addressdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CarDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CarDtoMapper.xml
new file mode 100644
index 0000000..1455e60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CarDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.cardtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CarDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.CarDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Car"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.cardtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CustomerDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CustomerDtoMapper.xml
new file mode 100644
index 0000000..b427774
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CustomerDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.customerdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.CustomerDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.CustomerDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Customer"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.customerdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.EmployeeDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.EmployeeDtoMapper.xml
new file mode 100644
index 0000000..74c1b04
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.EmployeeDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.employeedtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.EmployeeDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.EmployeeDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Employee"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.employeedtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.ManufacturerDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.ManufacturerDtoMapper.xml
new file mode 100644
index 0000000..94d67fd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.ManufacturerDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.manufacturerdtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.ManufacturerDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.ManufacturerDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Manufacturer"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.manufacturerdtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.PersonDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.PersonDtoMapper.xml
new file mode 100644
index 0000000..6cce703
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.PersonDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.persondtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.PersonDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.PersonDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Person"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.persondtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.UsedCarDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.UsedCarDtoMapper.xml
new file mode 100644
index 0000000..b53e10b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.UsedCarDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.usedcardtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.UsedCarDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.UsedCarDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.UsedCar"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mapper.usedcardtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.mapper.TreeEmployeeDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.mapper.TreeEmployeeDtoMapper.xml
new file mode 100644
index 0000000..51499d2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.mapper.TreeEmployeeDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.mapper.treeemployeedtomapper">
+       <implementation class="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.mapper.TreeEmployeeDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TreeEmployeeDto"/>
+       <property name="entity" value="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TreeEmployee"/>
+       <property name="service.pid" value="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.mapper.treeemployeedtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.common.mapper.ABarDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.common.mapper.ABarDtoMapper.xml
new file mode 100644
index 0000000..49120fe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.common.mapper.ABarDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.entitydsl.documentation.common.mapper.abardtomapper">
+       <implementation class="org.eclipse.osbp.entitydsl.documentation.common.mapper.ABarDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.entitydsl.documentation.common.ABarDto"/>
+       <property name="entity" value="org.eclipse.osbp.entitydsl.documentation.common.ABar"/>
+       <property name="service.pid" value="org.eclipse.osbp.entitydsl.documentation.common.mapper.abardtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.demo.mapper.BarDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.demo.mapper.BarDtoMapper.xml
new file mode 100644
index 0000000..c8c6859
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.demo.mapper.BarDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.entitydsl.documentation.demo.mapper.bardtomapper">
+       <implementation class="org.eclipse.osbp.entitydsl.documentation.demo.mapper.BarDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.entitydsl.documentation.demo.BarDto"/>
+       <property name="entity" value="org.eclipse.osbp.entitydsl.documentation.demo.Bar"/>
+       <property name="service.pid" value="org.eclipse.osbp.entitydsl.documentation.demo.mapper.bardtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.demo.mapper.FooDtoMapper.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.demo.mapper.FooDtoMapper.xml
new file mode 100644
index 0000000..f2a51cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/OSGI-INF/org.eclipse.osbp.entitydsl.documentation.demo.mapper.FooDtoMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+   <scr:component name="org.eclipse.osbp.entitydsl.documentation.demo.mapper.foodtomapper">
+       <implementation class="org.eclipse.osbp.entitydsl.documentation.demo.mapper.FooDtoMapper"/>
+       <property name="dto" value="org.eclipse.osbp.entitydsl.documentation.demo.FooDto"/>
+       <property name="entity" value="org.eclipse.osbp.entitydsl.documentation.demo.Foo"/>
+       <property name="service.pid" value="org.eclipse.osbp.entitydsl.documentation.demo.mapper.foodtomapper"/>
+       <reference name="bind" interface="org.eclipse.osbp.dsl.dto.common.IMapperAccess" 
+       		cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+   </scr:component>
+</components>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/build.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/build.properties
new file mode 100644
index 0000000..1724c4d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+          src-gen/
+bin.includes = META-INF/,\
+               .,\
+               models/,\
+               epl-v10.html,\
+               license.html,\
+               OSGI-INF/
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/createDDL_ddlGeneration.jdbc b/org.eclipse.osbp.dsl.entity.xtext.tests/createDDL_ddlGeneration.jdbc
new file mode 100644
index 0000000..19a6b54
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/createDDL_ddlGeneration.jdbc
@@ -0,0 +1 @@
+CREATE TABLE FOOBAR (ID VARCHAR(255) NOT NULL, MYBLOB BLOB(2147483647), NAME VARCHAR(255), PRIMARY KEY (ID))
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dropDDL_ddlGeneration.jdbc b/org.eclipse.osbp.dsl.entity.xtext.tests/dropDDL_ddlGeneration.jdbc
new file mode 100644
index 0000000..b9b0d00
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dropDDL_ddlGeneration.jdbc
@@ -0,0 +1 @@
+DROP TABLE FOOBAR
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/blobtests.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/blobtests.dtos
new file mode 100644
index 0000000..25dd3d0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/blobtests.dtos
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.mapper.*;
+
+	datatype blobtype as blob;
+	datatype String jvmType java.lang.String;
+
+	autoDto FoobarDto wraps Foobar {
+		inherit var id;
+		inherit var name;
+		inherit var myblob;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/datatypes.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/datatypes.dtos
new file mode 100644
index 0000000..8e7fe1a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/datatypes.dtos
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.tests.datatypes.dtos {
+	
+	/* Imports the required artifacts */
+
+	datatype long jvmType java.lang.Long as primitive;
+	datatype int jvmType java.lang.Integer as primitive;
+	datatype String jvmType java.lang.String;
+	datatype date jvmType java.util.Date;
+	datatype bool jvmType java.lang.Boolean as primitive;
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/deleteCascadeSelfReference.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/deleteCascadeSelfReference.dtos
new file mode 100644
index 0000000..3475bdc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/deleteCascadeSelfReference.dtos
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.mapper.*;
+
+	datatype long jvmType java.lang.Long as primitive;
+	datatype String jvmType java.lang.String;
+
+	autoDto TreeEmployeeDto wraps TreeEmployee {
+		inherit var id;
+		inherit var Name;
+		/** Reference to children */
+		inherit ref subordinates mapto TreeEmployeeDto;
+		/** Reference to parent */
+		inherit ref boss mapto TreeEmployeeDto;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/entitydsldocumentation.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/entitydsldocumentation.dtos
new file mode 100644
index 0000000..7b4fee7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/entitydsldocumentation.dtos
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.documentation.demo.*;
+	import org.eclipse.osbp.entitydsl.documentation.demo.dtos.*;
+	import org.eclipse.osbp.entitydsl.documentation.demo.dtos.mapper.*;
+
+	datatype String jvmType java.lang.String;
+	datatype long jvmType java.lang.Long;
+
+	autoDto FooDto wraps Foo {
+		inherit var id;
+		inherit var name;
+	}
+	
+	autoDto BarDto extends FooDto wraps Bar {
+		inherit var number;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/entitydsldocumentation2.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/entitydsldocumentation2.dtos
new file mode 100644
index 0000000..416d739
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/entitydsldocumentation2.dtos
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.common.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.documentation.common.*;
+	import org.eclipse.osbp.entitydsl.documentation.common.dtos.*;
+	import org.eclipse.osbp.entitydsl.documentation.common.dtos.mapper.*;
+
+	datatype long jvmType java.lang.Long;
+
+	autoDto ABarDto wraps ABar {
+		inherit var id;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/inheritancetest.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/inheritancetest.dtos
new file mode 100644
index 0000000..f6cbbab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/inheritancetest.dtos
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper.*;
+
+	datatype long jvmType java.lang.Long;
+	datatype int jvmType java.lang.Integer as primitive;
+	datatype String jvmType java.lang.String;
+
+	autoDto BaseByClassDto wraps BaseByClass {
+		inherit var id;
+		inherit var version;
+	}
+	
+	autoDto OneByClassDto extends BaseByClassDto wraps OneByClass {
+		inherit var name;
+	}
+	
+	autoDto TwoByClassDto extends OneByClassDto wraps TwoByClass {
+		inherit var stuff;
+	}
+	
+	autoDto BaseBySubclassDto wraps BaseBySubclass {
+		inherit var id;
+		inherit var version;
+	}
+	
+	autoDto OneBySubclassDto extends BaseBySubclassDto wraps OneBySubclass {
+		inherit var name;
+	}
+	
+	autoDto TwoBySubclassDto extends OneBySubclassDto wraps TwoBySubclass {
+		inherit var stuff;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/testcarstore2.dtos b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/testcarstore2.dtos
new file mode 100644
index 0000000..4e30c6e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/dto-models/testcarstore2.dtos
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.*;
+	import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper.*;
+
+	datatype long jvmType java.lang.Long as primitive;
+	datatype int jvmType java.lang.Integer as primitive;
+	datatype String jvmType java.lang.String;
+	datatype datetype dateType date;
+	datatype timetype dateType time;
+	datatype bool jvmType java.lang.Boolean as primitive;
+
+	autoDto PersonDto wraps Person {
+		inherit var id;
+		inherit var firstname;
+		inherit var lastname;
+		inherit var birthdate;
+	}
+	
+	autoDto ManufacturerDto wraps Manufacturer {
+		inherit var id;
+		inherit var name;
+		inherit var address;
+		inherit ref cars mapto CarDto;
+	}
+	
+	autoDto CarDto wraps Car {
+		inherit var id;
+		inherit var modelname;
+		inherit var constructiondate;
+		inherit var price;
+		inherit ref manufacturer mapto ManufacturerDto;
+	}
+	
+	autoDto CustomerDto extends PersonDto wraps Customer {
+		inherit var isseller;
+		inherit var isbuyer;
+		inherit var phonenumber;
+		inherit var iban;
+		inherit var discount;
+	}
+	
+	autoDto EmployeeDto extends PersonDto wraps Employee {
+		inherit var employeenumber;
+		inherit var employeesince;
+		inherit var salary;
+		inherit var jobdescription;
+		inherit ref boss mapto EmployeeDto;
+		inherit ref subordinates mapto EmployeeDto;
+	}
+	
+	autoDto UsedCarDto extends CarDto wraps UsedCar {
+		inherit var state;
+		inherit var mileage;
+		inherit ref seller mapto CustomerDto;
+	}
+	
+	autoDto AddressDto wraps Address {
+		inherit var streetname;
+		inherit var housenumber;
+		inherit var city;
+		inherit var zipcode;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/epl-v10.html b/org.eclipse.osbp.dsl.entity.xtext.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.tests/i18n/I18N.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N.properties
new file mode 100644
index 0000000..94f379f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N.properties
@@ -0,0 +1,62 @@
+#default
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.foobar=foobar
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.id=id
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.myblob=myblob
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_class=base_by_class
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_subclass=base_by_subclass
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.id=id
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_class=one_by_class
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_subclass=one_by_subclass
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.stuff=stuff
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_class=two_by_class
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_subclass=two_by_subclass
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.version=version
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.address=address
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.birthdate=birthdate
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.boss=boss
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.car=car
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.cars=cars
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.city=city
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.constructiondate=constructiondate
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.customer=customer
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.discount=discount
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.employee=employee
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.employeenumber=employeenumber
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.employeesince=employeesince
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.firstname=firstname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.housenumber=housenumber
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.iban=iban
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.id=id
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.isbuyer=isbuyer
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.isseller=isseller
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.jobdescription=jobdescription
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.lastname=lastname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.manufacturer=manufacturer
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mileage=mileage
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.modelname=modelname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.person=person
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.phonenumber=phonenumber
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.price=price
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.salary=salary
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.seller=seller
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.state=state
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.streetname=streetname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.subordinates=subordinates
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.used_car=used_car
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.zipcode=zipcode
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.boss=boss
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.id=id
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.subordinates=subordinates
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.tree_employee=tree_employee
+org.eclipse.osbp.entitydsl.documentation.common.abar=abar
+org.eclipse.osbp.entitydsl.documentation.common.id=id
+org.eclipse.osbp.entitydsl.documentation.demo.bar=bar
+org.eclipse.osbp.entitydsl.documentation.demo.foo=foo
+org.eclipse.osbp.entitydsl.documentation.demo.getnumberasstring=getnumberasstring
+org.eclipse.osbp.entitydsl.documentation.demo.id=id
+org.eclipse.osbp.entitydsl.documentation.demo.name=name
+org.eclipse.osbp.entitydsl.documentation.demo.number=number
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_de.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_de.properties
new file mode 100644
index 0000000..af6fdef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_de.properties
@@ -0,0 +1 @@
+#de
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_de_AT.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_de_AT.properties
new file mode 100644
index 0000000..6c73e1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_de_AT.properties
@@ -0,0 +1 @@
+#de_AT
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_en.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_en.properties
new file mode 100644
index 0000000..4f81dad
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_en.properties
@@ -0,0 +1,62 @@
+#en
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.foobar=foobar
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.id=identifier
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.myblob=myblob
+org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_class=base by class
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_subclass=base by subclass
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.id=identifier
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_class=one by class
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_subclass=one by subclass
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.stuff=stuff
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_class=two by class
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_subclass=two by subclass
+org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.version=version
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.address=address
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.birthdate=birthdate
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.boss=boss
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.car=car
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.cars=cars
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.city=city
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.constructiondate=constructiondate
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.customer=customer
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.discount=discount
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.employee=employee
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.employeenumber=employeenumber
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.employeesince=employeesince
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.firstname=firstname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.housenumber=housenumber
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.iban=iban
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.id=identifier
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.isbuyer=isbuyer
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.isseller=isseller
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.jobdescription=jobdescription
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.lastname=lastname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.manufacturer=manufacturer
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.mileage=mileage
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.modelname=modelname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.person=person
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.phonenumber=phonenumber
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.price=price
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.salary=salary
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.seller=seller
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.state=state
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.streetname=streetname
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.subordinates=subordinates
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.used_car=used car
+org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.zipcode=zipcode
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.boss=boss
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.id=identifier
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.name=name
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.subordinates=subordinates
+org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.tree_employee=tree employee
+org.eclipse.osbp.entitydsl.documentation.common.abar=abar
+org.eclipse.osbp.entitydsl.documentation.common.id=identifier
+org.eclipse.osbp.entitydsl.documentation.demo.bar=bar
+org.eclipse.osbp.entitydsl.documentation.demo.foo=foo
+org.eclipse.osbp.entitydsl.documentation.demo.getnumberasstring=getnumberasstring
+org.eclipse.osbp.entitydsl.documentation.demo.id=identifier
+org.eclipse.osbp.entitydsl.documentation.demo.name=name
+org.eclipse.osbp.entitydsl.documentation.demo.number=number
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_en_US.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_en_US.properties
new file mode 100644
index 0000000..d89e21c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_en_US.properties
@@ -0,0 +1 @@
+#en_US
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_fr.properties b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_fr.properties
new file mode 100644
index 0000000..a84da83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/i18n/I18N_fr.properties
@@ -0,0 +1 @@
+#fr
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/license.html b/org.eclipse.osbp.dsl.entity.xtext.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.tests/models/BlobTests.entitymodel_old b/org.eclipse.osbp.dsl.entity.xtext.tests/models/BlobTests.entitymodel_old
new file mode 100644
index 0000000..10a1247
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/BlobTests.entitymodel_old
@@ -0,0 +1,27 @@
+  package org.eclipse.osbp.dsl.^entity.xtext.tests.blobtests  {
+
+	 entity Base {
+		id long id;
+		version long version;
+		var String name;
+		var Bean other;  
+	} 
+	              
+	bean Bean {
+		var String name;
+		ref Bean1 info   ;
+		var String huhu;
+	}
+	   
+	bean Bean1 {
+		var String name;
+		ref Bean2 addon;
+		var String huhu;
+	}
+	
+	bean Bean2 {
+		var String name;
+		var String huhu;
+	}
+}
+      
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel
new file mode 100644
index 0000000..e014ca9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.^entity.xtext.tests.blobtests {
+	
+	datatype blobtype as blob;
+	datatype String jvmType String;
+	
+	entity Foobar {
+		uuid String id;
+		var String name;
+		var blobtype myblob;
+	}
+	
+	
+}  
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/datatypes.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/datatypes.entitymodel
new file mode 100644
index 0000000..e835c60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/datatypes.entitymodel
@@ -0,0 +1,16 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.^entity.tests.datatypes {
+	
+	datatype long jvmType Long as primitive;
+	datatype int jvmType Integer as primitive;
+	datatype String jvmType String;
+	datatype date jvmType Date;
+	datatype bool jvmType Boolean as primitive;
+		
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel
new file mode 100644
index 0000000..81b4b1e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.^entity.xtext.tests.selfreference {
+	
+	datatype long jvmType Long as primitive;
+	datatype String jvmType String;
+	
+	entity TreeEmployee {
+		id long id;
+		var String Name;
+		
+		/* Reference to children */
+		ref cascade TreeEmployee[0..*] subordinates opposite boss;
+		
+		/* Reference to parent */
+		ref TreeEmployee[1] boss;
+	}
+	
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel
new file mode 100644
index 0000000..734c026
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo {
+		
+	datatype String jvmType String;
+	datatype long jvmType Long;
+	
+	
+	entity Foo {
+		inheritance per class{}
+		id long id;
+		var String name;
+	}
+	
+	entity Bar extends Foo {
+		var long number;
+		
+		def String getnumberasstring() {
+			return java.lang.Long::toString(number)
+		}
+	}
+
+}
+
+
+ 
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation2.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation2.entitymodel
new file mode 100644
index 0000000..caea2a7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation2.entitymodel
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.common {
+
+	datatype long jvmType Long;
+
+	entity ABar {
+		id long id;
+	}
+	
+}
+
+
+
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel
new file mode 100644
index 0000000..bbda5c9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.^entity.xtext.tests.classinheritance {
+	
+	datatype long jvmType Long;
+	datatype int jvmType Integer as primitive;
+	datatype String jvmType String;
+	
+	
+	
+	entity BaseByClass {
+		inheritance per class{}
+		id long id;
+		version int version;
+	}
+	
+	entity OneByClass extends BaseByClass { 
+		var String name;
+	}
+	
+	entity TwoByClass extends OneByClass {
+		var long stuff;
+	}
+	
+	entity BaseBySubclass {
+		inheritance per subclass{}
+		id long id;
+		version int version;
+	}
+	
+	entity OneBySubclass extends BaseBySubclass { 
+		var String name;
+	}
+	
+	entity TwoBySubclass extends OneBySubclass {
+		var long stuff;
+	}
+	
+}       
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel b/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel
new file mode 100644
index 0000000..4a0ee24
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.^entity.xtext.tests.model.testcarstore2{
+	
+	datatype long jvmType Long as primitive;
+	datatype int jvmType Integer as primitive;
+	datatype String jvmType String;
+	datatype datetype dateType date;
+	datatype timetype dateType time;
+	datatype bool jvmType Boolean as primitive;
+
+	entity Person {
+		schemaName Testcarstore2;
+		id long id;
+		var String firstname;
+		var String lastname;
+		var datetype birthdate;
+	}
+
+	bean Address {
+		var String streetname;
+		var int housenumber; 
+		var String city;
+		var int zipcode;
+	}
+	
+	entity Manufacturer {
+		schemaName Testcarstore2;
+		id long id;
+		var String name;
+		var Address address;
+		ref cascade Car[*] cars opposite manufacturer;
+	}
+	
+	entity Car { 
+		schemaName Testcarstore2;
+		id long id;
+		var String modelname;
+		var timetype constructiondate;
+		var int price;
+		ref Manufacturer[1] manufacturer opposite cars;
+	}
+	
+	entity Customer extends Person {
+		schemaName Testcarstore2;
+		var bool isseller;
+		var bool isbuyer;
+		var String phonenumber;
+		var String iban;
+		var int discount;
+	}
+	     
+	entity Employee extends Person {
+		schemaName Testcarstore2;
+		var long employeenumber;
+		var timetype employeesince;
+		var int salary;
+		var String jobdescription;
+		ref Employee[1] boss opposite subordinates;
+		ref cascade Employee[*] subordinates opposite boss;
+	}
+	
+	entity UsedCar extends Car {
+		schemaName Testcarstore2;
+		var String state;
+		var int mileage;
+		ref Customer[1] seller;
+	}
+	
+	
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/blobtests.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/blobtests.dtos.dtos_bin
new file mode 100644
index 0000000..5db007c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/blobtests.dtos.dtos_bin
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos">
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.mapper.*"/>
+    <types xsi:type="types:LDataType" name="blobtype" asBlob="true"/>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="FoobarDto">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel#/0/@packages.0/@types.2/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel#/0/@packages.0/@types.2/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel#/0/@packages.0/@types.2/@features.2"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/blobtests.entitymodel#/0/@packages.0/@types.2"/>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/blobtests.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/blobtests.entitymodel.entities_bin
new file mode 100644
index 0000000..c79962d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/blobtests.entitymodel.entities_bin
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.blobtests">
+    <types xsi:type="types:LDataType" name="blobtype" asBlob="true"/>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="entity:LEntity" name="Foobar">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="id" uuid="true" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="name" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="myblob" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/datatypes.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/datatypes.dtos.dtos_bin
new file mode 100644
index 0000000..e8a5596
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/datatypes.dtos.dtos_bin
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.tests.datatypes.dtos">
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="date">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.util.Date#java.util.Date"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="bool" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/datatypes.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/datatypes.entitymodel.entities_bin
new file mode 100644
index 0000000..e69f410
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/datatypes.entitymodel.entities_bin
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.tests.datatypes">
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="date">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.util.Date#java.util.Date"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="bool" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/deleteCascadeSelfReference.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/deleteCascadeSelfReference.dtos.dtos_bin
new file mode 100644
index 0000000..601e13d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/deleteCascadeSelfReference.dtos.dtos_bin
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos">
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.mapper.*"/>
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="TreeEmployeeDto">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel#/0/@packages.0/@types.2/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel#/0/@packages.0/@types.2/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.2">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel#/0/@packages.0/@types.2/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.2">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel#/0/@packages.0/@types.2/@features.3"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/deleteCascadeSelfReference.entitymodel#/0/@packages.0/@types.2"/>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/deleteCascadeSelfReference.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/deleteCascadeSelfReference.entitymodel.entities_bin
new file mode 100644
index 0000000..74082e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/deleteCascadeSelfReference.entitymodel.entities_bin
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.selfreference">
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="entity:LEntity" name="TreeEmployee">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="id" id="true" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="Name" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="subordinates" cascading="true" type="//@packages.0/@types.2" opposite="//@packages.0/@types.2/@features.3">
+        <multiplicity lower="ZERO" upper="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="boss" type="//@packages.0/@types.2">
+        <multiplicity lower="ONE"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation.dtos.dtos_bin
new file mode 100644
index 0000000..8f3a25f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation.dtos.dtos_bin
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.entitydsl.documentation.demo.dtos">
+    <imports importedNamespace="org.eclipse.osbp.entitydsl.documentation.demo.*"/>
+    <imports importedNamespace="org.eclipse.osbp.entitydsl.documentation.demo.dtos.*"/>
+    <imports importedNamespace="org.eclipse.osbp.entitydsl.documentation.demo.dtos.mapper.*"/>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="FooDto" subTypes="//@packages.0/@types.3">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel#/0/@packages.0/@types.2/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel#/0/@packages.0/@types.2/@features.1"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel#/0/@packages.0/@types.2"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="BarDto" superType="//@packages.0/@types.2">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel#/0/@packages.0/@types.3/@features.0"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel#/0/@packages.0/@types.3"/>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation.entitymodel.entities_bin
new file mode 100644
index 0000000..622d953
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation.entitymodel.entities_bin
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes" xmlns:xbase="http://www.eclipse.org/xtext/xbase/Xbase">
+  <packages name="org.eclipse.osbp.entitydsl.documentation.demo">
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="entity:LEntity" name="Foo" subTypes="//@packages.0/@types.3">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <inheritanceStrategy xsi:type="entity:LTablePerClassStrategy"/>
+      <features xsi:type="entity:LEntityAttribute" name="id" id="true" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="name" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Bar" superType="//@packages.0/@types.2">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="number" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LOperation" name="getnumberasstring">
+        <type xsi:type="types_1:JvmParameterizedTypeReference">
+          <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+        </type>
+        <body xsi:type="xbase:XBlockExpression">
+          <expressions xsi:type="xbase:XReturnExpression">
+            <expression xsi:type="xbase:XMemberFeatureCall" explicitOperationCall="true" explicitStatic="true">
+              <feature xsi:type="types_1:JvmOperation" href="java:/Objects/java.lang.Long#java.lang.Long.toString(long)"/>
+              <memberCallTarget xsi:type="xbase:XMemberFeatureCall">
+                <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+                <memberCallTarget xsi:type="xbase:XMemberFeatureCall">
+                  <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+                  <memberCallTarget xsi:type="xbase:XFeatureCall">
+                    <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+                  </memberCallTarget>
+                </memberCallTarget>
+              </memberCallTarget>
+              <memberCallArguments xsi:type="xbase:XFeatureCall">
+                <feature xsi:type="types_1:JvmField" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation.entitymodel#/3/@members.1"/>
+              </memberCallArguments>
+            </expression>
+          </expressions>
+        </body>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation2.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation2.dtos.dtos_bin
new file mode 100644
index 0000000..39bcdf7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation2.dtos.dtos_bin
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.entitydsl.documentation.common.dtos">
+    <imports importedNamespace="org.eclipse.osbp.entitydsl.documentation.common.*"/>
+    <imports importedNamespace="org.eclipse.osbp.entitydsl.documentation.common.dtos.*"/>
+    <imports importedNamespace="org.eclipse.osbp.entitydsl.documentation.common.dtos.mapper.*"/>
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="ABarDto">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation2.entitymodel#/0/@packages.0/@types.1/@features.0"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/entitydsldocumentation2.entitymodel#/0/@packages.0/@types.1"/>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation2.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation2.entitymodel.entities_bin
new file mode 100644
index 0000000..0a9c1c8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/entitydsldocumentation2.entitymodel.entities_bin
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.entitydsl.documentation.common">
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="entity:LEntity" name="ABar">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="id" id="true" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/inheritancetest.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/inheritancetest.dtos.dtos_bin
new file mode 100644
index 0000000..4949497
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/inheritancetest.dtos.dtos_bin
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos">
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper.*"/>
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="BaseByClassDto" subTypes="//@packages.0/@types.4">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.3/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.3/@features.1"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.3"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="OneByClassDto" superType="//@packages.0/@types.3" subTypes="//@packages.0/@types.5">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.4/@features.0"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.4"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="TwoByClassDto" superType="//@packages.0/@types.4">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.5/@features.0"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.5"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="BaseBySubclassDto" subTypes="//@packages.0/@types.7">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.6/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.6/@features.1"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.6"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="OneBySubclassDto" superType="//@packages.0/@types.6" subTypes="//@packages.0/@types.8">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.7/@features.0"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.7"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="TwoBySubclassDto" superType="//@packages.0/@types.7">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.8/@features.0"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/inheritancetest.entitymodel#/0/@packages.0/@types.8"/>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/inheritancetest.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/inheritancetest.entitymodel.entities_bin
new file mode 100644
index 0000000..d8329af
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/inheritancetest.entitymodel.entities_bin
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance">
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="entity:LEntity" name="BaseByClass" subTypes="//@packages.0/@types.4">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <inheritanceStrategy xsi:type="entity:LTablePerClassStrategy"/>
+      <features xsi:type="entity:LEntityAttribute" name="id" id="true" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="version" version="true" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="OneByClass" superType="//@packages.0/@types.3" subTypes="//@packages.0/@types.5">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="name" type="//@packages.0/@types.2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="TwoByClass" superType="//@packages.0/@types.4">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="stuff" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="BaseBySubclass" subTypes="//@packages.0/@types.7">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <inheritanceStrategy xsi:type="entity:LTablePerSubclassStrategy"/>
+      <features xsi:type="entity:LEntityAttribute" name="id" id="true" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="version" version="true" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="OneBySubclass" superType="//@packages.0/@types.6" subTypes="//@packages.0/@types.8">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="name" type="//@packages.0/@types.2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="TwoBySubclass" superType="//@packages.0/@types.7">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="stuff" type="//@packages.0/@types.0">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/testcarstore2.dtos.dtos_bin b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/testcarstore2.dtos.dtos_bin
new file mode 100644
index 0000000..b754ac6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/modelsbin/testcarstore2.dtos.dtos_bin
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="ASCII"?>
+<dto:LDtoModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dto="http://osbp.eclipse.org/dsl/dto/v1" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos">
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.*"/>
+    <imports importedNamespace="org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper.*"/>
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="datetype" date="true"/>
+    <types xsi:type="types:LDataType" name="timetype" date="true" dateType="TIME"/>
+    <types xsi:type="types:LDataType" name="bool" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="PersonDto" subTypes="//@packages.0/@types.9 //@packages.0/@types.10">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.6/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.6/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.6/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.6/@features.3"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.6"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="ManufacturerDto">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.8/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.8/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.8/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.8">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.8/@features.3"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.8"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="CarDto" subTypes="//@packages.0/@types.11">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.9/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.9/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.9/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.9/@features.3"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.7">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.9/@features.4"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.9"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="CustomerDto" superType="//@packages.0/@types.6">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.10/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.10/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.10/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.10/@features.3"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.10/@features.4"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.10"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="EmployeeDto" superType="//@packages.0/@types.6">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11/@features.3"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.10">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11/@features.4"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.10">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11/@features.5"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.11"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="UsedCarDto" superType="//@packages.0/@types.8">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.12/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.12/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedReference" type="//@packages.0/@types.9">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LEntityReference" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.12/@features.2"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.12"/>
+    </types>
+    <types xsi:type="dto:LAutoInheritDto" name="AddressDto">
+      <annotationInfo xsi:type="dto:LDto"/>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LBeanAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.7/@features.0"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LBeanAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.7/@features.1"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LBeanAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.7/@features.2"/>
+      </features>
+      <features xsi:type="dto:LDtoInheritedAttribute">
+        <annotationInfo xsi:type="dto:LDtoFeature"/>
+        <inheritedFeature xsi:type="entity:LBeanAttribute" href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.7/@features.3"/>
+      </features>
+      <wrappedType href="platform:/resource/org.eclipse.osbp.dsl.entity.xtext.tests/models/testcarstore2.entitymodel#/0/@packages.0/@types.7"/>
+    </types>
+  </packages>
+</dto:LDtoModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/old/MultiFilesCompilationTestHelper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/old/MultiFilesCompilationTestHelper.java
new file mode 100644
index 0000000..1461a80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/old/MultiFilesCompilationTestHelper.java
@@ -0,0 +1,84 @@
+/**
+ * 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
+ * 
+ * Sources based on {@link org.eclipse.xtext.xbase.compiler.CompilationTestHelper}
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.entity.xtext.tests;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.eclipse.xtext.resource.FileExtensionProvider;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.util.IAcceptor;
+import org.eclipse.xtext.xbase.compiler.CompilationTestHelper;
+import org.eclipse.xtext.xbase.compiler.OnTheFlyJavaCompiler;
+import org.eclipse.xtext.xbase.lib.Pair;
+import org.junit.Assert;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+@SuppressWarnings("restriction")
+public class MultiFilesCompilationTestHelper extends CompilationTestHelper {
+
+	@Inject
+	private OnTheFlyJavaCompiler javaCompiler;
+
+	@Inject
+	private Provider<XtextResourceSet> resourceSetProvider;
+
+	@Inject
+	private FileExtensionProvider extensionProvider;
+
+	/**
+	 * Asserts that the expected code is generated for the given source. Assumes
+	 * that
+	 * 
+	 * @param source
+	 *            some valid source code written in the language under test
+	 * @param expected
+	 *            the expected Java source code.
+	 * @throws IOException
+	 */
+	@SuppressWarnings("unchecked")
+	public void assertCompilesFrom(final Map<String, CharSequence> expected,
+			CharSequence... input) throws IOException {
+		final boolean[] called = { false };
+
+		List<Pair<String, CharSequence>> resources = new ArrayList<Pair<String, CharSequence>>();
+		for (int i = 0; i < input.length; i++) {
+			String fileName = "MyFile" + i + "."
+					+ extensionProvider.getPrimaryFileExtension();
+			resources.add(new Pair<String, CharSequence>(fileName, input[i]));
+		}
+
+		compile(resourceSet(resources.toArray(new Pair[resources.size()])),
+				new IAcceptor<CompilationTestHelper.Result>() {
+					public void accept(Result r) {
+						for (Entry<String, CharSequence> entry : expected
+								.entrySet()) {
+							Assert.assertEquals(
+									entry.getValue().toString(),
+									r.getGeneratedCode(entry.getKey().replace(
+											'/', '.')));
+							called[0] = true;
+						}
+					}
+				});
+		Assert.assertTrue("Nothing was generated but the expectation was :\n"
+				+ expected, called[0]);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/old/ValidationTests.xtend b/org.eclipse.osbp.dsl.entity.xtext.tests/old/ValidationTests.xtend
new file mode 100644
index 0000000..30d0be5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/old/ValidationTests.xtend
@@ -0,0 +1,988 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.validations
+
+import com.google.inject.Inject
+import java.util.Map
+import org.eclipse.xtext.diagnostics.Severity
+import org.eclipse.xtext.junit4.InjectWith
+import org.eclipse.xtext.junit4.XtextRunner
+import org.eclipse.xtext.junit4.validation.ValidationTestHelper
+import org.eclipse.xtext.validation.Issue
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator
+import org.eclipse.osbp.dsl.entity.xtext.tests.InjectorProvider
+import org.eclipse.osbp.dsl.entity.xtext.tests.ParseHelper
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel
+
+import static org.eclipse.xtext.diagnostics.Severity.*
+import static org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator.*
+import static org.eclipse.osbp.dsl.entity.xtext.validation.EntityGrammarJavaValidator.*
+
+import static extension org.junit.Assert.*
+
+@RunWith(typeof(XtextRunner))
+@InjectWith(typeof(InjectorProvider))
+class ValidationTests {
+
+	@Inject extension ValidationTestHelper;
+	@Inject extension ParseHelper<LEntityModel>;
+
+	Map<String, Issue> result
+	Map<String, Issue> result2
+
+	@Test
+	def void id_1() {
+		result = '''
+		package org.eclipse.osbp.dsl.^entity.xtext.tests {
+		
+		datatype long jvmType Long as primitive;
+		
+			entity Test { 										// warn: no id
+		
+			}
+		
+			entity Test2 {
+				id long id; 
+				id long other; 									// error: duplicate id
+			}
+		}'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_ID.severity.assertSame(WARNING)
+		CODE__MISSING_ID.lineNumber.assertEquals(5)
+		CODE__DUPLICATE_ID.severity.assertSame(ERROR)
+		CODE__DUPLICATE_ID.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void id_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+				datatype long jvmType Long as primitive;
+				 
+				entity Test {
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					var long someValue;
+					id long other;								// error: duplicate id
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+		CODE__DUPLICATE_ID.severity.assertSame(ERROR)
+		CODE__DUPLICATE_ID.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void version_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					version long version;
+					version long other;								// error: duplicate version
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_VERSION.severity.assertSame(ERROR)
+		CODE__DUPLICATE_VERSION.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void version_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+				datatype long jvmType Long as primitive;
+				 
+				entity Test {
+					version long version;
+				}
+				
+				entity Test2 extends Test {
+					var long someValue;
+					version long other;							// error: duplicate version
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+		CODE__DUPLICATE_VERSION.severity.assertSame(ERROR)
+		CODE__DUPLICATE_VERSION.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					var long xxyy;									// error: duplicate property
+					var long other;
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+				datatype long jvmType Long as primitive;
+				 
+				entity Test {
+					var long xxyy;
+				}
+				
+				entity Test2 extends Test {
+					var long someValue;
+					var long xxyy;								// error: duplicate property (supertype)
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					var long other;
+					ref Test xxyy;									// error: duplicate property var-ref
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(11)
+	}
+
+	@Test
+	def void featureName_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;									// error: duplicate property id-ref
+					ref Test xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void featureName_5() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;									// error: duplicate property id-var
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PROPERTY_NAME.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PROPERTY_NAME.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void duplicatePackage_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;
+					var long xxyy;
+				}
+			}
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {			// error: duplicate package
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+			
+				}
+			
+				entity Test2 {
+					id long xxyy;
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_LPACKAGE_IN_FILE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_LPACKAGE_IN_FILE.lineNumber.assertEquals(14)
+	}
+
+	@Test
+	def void duplicateType_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					var long xy;
+				}
+			
+				entity Test {										// error: duplicate type (entity)
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_LTYPE_IN_PROJECT.severity.assertSame(ERROR)
+		CODE__DUPLICATE_LTYPE_IN_PROJECT.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void duplicateType_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype number jvmType Long as primitive;
+			datatype number jvmType Float as primitive; 			// error: duplicate type (datatype)
+			
+				entity Test {
+					id long id;
+					var long xy;
+				}
+			
+				entity Test2 {
+					var long xxyy;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_LDATATYPE_IN_PACKAGE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_LDATATYPE_IN_PACKAGE.lineNumber.assertEquals(4)
+	}
+
+	@Test
+	def void duplicateType_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests1 {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test1 {
+					id long xxyy;
+					var long abc;
+				}
+			}
+			package org.eclipse.osbp.dsl.^entity.xtext.tests2 {
+			
+			datatype long jvmType Long as primitive;				// error: duplicate type (in other package)
+			
+				entity Test2 {
+					id long cde;
+					var long ghi;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		result.size.assertEquals(0)
+	}
+
+	@Test
+	def void invalidPrimitive_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype xyz jvmType String as primitive;				// error: no such primitive Java type
+			
+				entity Test {
+					id xyz id;
+				}
+			
+				
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__NOT_A_VALID_PRIMITIVE.severity.assertSame(ERROR)
+		CODE__NOT_A_VALID_PRIMITIVE.lineNumber.assertEquals(3)
+	}
+
+	@Test
+	def void invalidPrimitive_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype abc jvmType Long as primitive;					// ok
+			datatype xyz jvmType String as primitive;				// error: no such primitive Java type
+			
+				entity Test {
+					id xyz id;
+				}
+			
+				
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__NOT_A_VALID_PRIMITIVE.severity.assertSame(ERROR)
+		CODE__NOT_A_VALID_PRIMITIVE.lineNumber.assertEquals(4)
+	}
+
+	@Test
+	def void javaKeyword() {
+		for (String keyword : CommonGrammarJavaValidator::javakeywords) {
+			result = '''
+				package org.eclipse.osbp.dsl.^entity.xtext.tests {
+					entity Test {
+						var long «keyword»; 						// each keyword produces error
+					}
+				}
+			'''.parse.validate.toMap[it.code]
+			result.values.iterator.next.severity.assertSame(ERROR)
+		}
+	}
+
+	@Test
+	def void bidirectionalAssociation_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*] mytests;						// error: no opposite reference given
+				}
+			
+				entity Test2 {
+					id long id;
+					var long mynumber;	
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_OPPOSITE_REFERENCE.severity.assertSame(ERROR)
+		CODE__MISSING_OPPOSITE_REFERENCE.lineNumber.assertEquals(7)
+	}
+
+	@Test
+	def void bidirectionalAssociation_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*] mytests opposite nosuchthing;		// error: type of opposite ref cannot be resolved
+				}
+			
+				entity Test2 { 
+					id long id;
+					var long mynumber;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		result.values.iterator.next.severity.assertSame(ERROR)
+	}
+
+	@Test
+	def void bidirectionalAssociation_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*]									// error: no opposite reference given
+				}
+			
+				bean Test2 { 
+					var long mynumber;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		result.values.iterator.next.severity.assertSame(ERROR)
+	}
+
+	@Test
+	def void bidirectionalAssociation_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					ref Test2[*] mytests opposite nosuchthing;		// error: type of opposite ref cannot be resolved
+				}
+			
+				bean Test2 { 
+					var long mynumber;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		result.values.iterator.next.severity.assertSame(ERROR)
+	}
+
+	@Test
+	def void manyToMany_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+								          
+				entity Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test2[1..*] mytests opposite xyz;
+					}
+								       
+				entity Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;				// error: many-to-many between entities
+					}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.severity.assertSame(ERROR)
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.lineNumber.assertEquals(16)
+
+	}
+
+	@Test
+	def void manyToMany_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+								          
+				bean Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test2[1..*] mytests opposite xyz;
+					}
+								       
+				bean Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;				// error: many-to-many between beans
+					}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.severity.assertSame(ERROR)
+		CODE__MANY_TO_MANY__NOT_SUPPORTED.lineNumber.assertEquals(16)
+
+	}
+
+	@Test
+	def void cascade_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+			
+				entity Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1..*] mytests opposite xyz;	// error: cascade goes only one way (entities)
+				}
+			
+				entity Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test xyz;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.severity.assertSame(ERROR)
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void cascade_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+				datatype long jvmType Long as primitive;
+			
+				bean Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1..*] mytests opposite xyz;	// error: cascade goes only one way (beans)
+				}
+			
+				bean Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test xyz;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.severity.assertSame(ERROR)
+		CODE__BIDIRECTIONAL_CASCADE_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void cascade_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1] mytests opposite xyz;		// error: cascade must not go from many to one common parent
+				}
+								       
+				entity Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		CODE__CASCADE_DIRECTION_INVALID.severity.assertSame(ERROR)
+		CODE__CASCADE_DIRECTION_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void cascade_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				bean Test {
+					id long id;
+					var long x;
+					var long mynumber;
+					ref cascade Test2[1] mytests opposite xyz;		// error: cascade must not go from many to one common parent
+				}
+								       
+				bean Test2 { 
+					id long id;
+					var long x;
+					var long mynumber;
+					ref Test[*] xyz opposite mytests;
+				}
+			} 
+		'''.parse.validate.toMap[it.code]
+
+		CODE__CASCADE_DIRECTION_INVALID.severity.assertSame(ERROR)
+		CODE__CASCADE_DIRECTION_INVALID.lineNumber.assertEquals(9)
+
+	}
+
+	@Test
+	def void inheritance_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {}
+					id long id;
+					var long x;
+					var long mynumber;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per subclass {}  					// warning: inheritance mismatch
+					var long y;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(13)
+
+	}
+
+	@Test
+	def void inheritance_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per subclass {}
+					id long id;
+					var long x;
+					var long mynumber;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {}  					// warning: inheritance mismatch
+					var long y;
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(13)
+	}
+
+	@Test
+	def void inheritance_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {
+						discriminatorColumn disc;
+						discriminatorType STRING;
+						discriminatorValue MAINTYPE;
+					}
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {
+						discriminatorColumn disc;					// warning: ignored
+					}
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(16)
+	}
+
+	@Test
+	def void inheritance_4() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {
+						discriminatorColumn disc;
+						discriminatorType STRING;
+						discriminatorValue MAINTYPE;
+					}
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {
+						discriminatorType INT;						// warning: ignored
+					}
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.severity.assertSame(WARNING)
+		CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE.lineNumber.assertEquals(16)
+	}
+
+	@Test
+	def void inheritance_5() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					inheritance per class {
+						discriminatorColumn disc;
+						discriminatorType STRING;
+						discriminatorValue MAINTYPE;
+					}
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					inheritance per class {
+						discriminatorValue MAINTYPE;				// error: not unique
+					}
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE.severity.assertSame(ERROR)
+		CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE.lineNumber.assertEquals(15)
+	}
+
+	@Test
+	def void persistence_1() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					tableName testtable;
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					tableName testtable;							// error: table name in use
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PERSISTENCE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PERSISTENCE.lineNumber.assertEquals(11)
+	}
+
+	@Test
+	def void persistence_2() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					tableName testtable;
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					tableName Testtable;							// error: table name equal when using CAPITALS
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__DUPLICATE_PERSISTENCE.severity.assertSame(ERROR)
+		CODE__DUPLICATE_PERSISTENCE.lineNumber.assertEquals(11)
+	}
+
+	@Test
+	def void persistence_3() {
+		result = '''
+			package org.eclipse.osbp.dsl.^entity.xtext.tests {
+			
+			datatype long jvmType Long as primitive;
+				
+				entity Test {
+					tableName testtable;
+					id long id;
+				}
+				
+				entity Test2 extends Test {
+					tableName testTable;							// no error: CamelCase recognized -> TEST_TABLE
+				}
+			}
+		'''.parse.validate.toMap[it.code]
+
+		result.size.assertEquals(0)
+	}
+
+	@Test
+	def void historized_1() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per class{}
+				uuid String id;
+				}
+			
+				historized entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__HISTORIZED_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__HISTORIZED_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void historized_2() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per subclass{}
+				uuid String id;
+				}
+			
+				historized entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__HISTORIZED_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__HISTORIZED_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void timedependent_1() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per class{}
+				uuid String id;
+				}
+			
+				timedependent entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void timedependent_2() {
+		result = '''
+				package org.eclipse.osbp.dsl.entitydsl.histtimevalidation {
+			
+				datatype String jvmType String;
+			
+				entity Test {
+				inheritance per subclass{}
+				uuid String id;
+				}
+			
+				timedependent entity SubTest extends Test {  				// error: no historized entities in inheritance
+			
+				} 
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.severity.assertSame(ERROR)
+		CODE__TIMEDEPENDENT_IN_SUBCLASS.lineNumber.assertEquals(10)
+	}
+
+	@Test
+	def void historized_id() {
+		result = '''
+			package org.eclipse.osbp.entitydsltest.validation {
+			
+				datatype String jvmType String;
+			
+				historized entity MyTest {
+				var String stuff;
+				}
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_ID_FOR_VERSIONED.severity.assertSame(ERROR)
+		CODE__MISSING_ID_FOR_VERSIONED.lineNumber.assertEquals(6)
+	}
+
+	@Test
+	def void timedependent_id() {
+		result = '''
+			package org.eclipse.osbp.entitydsltest.validation {
+			
+				datatype String jvmType String;
+			
+				timedependent entity MyTest {
+				var String stuff;
+				}
+			
+			}
+		'''.parse.validate.toMap[it.code]
+
+		CODE__MISSING_ID_FOR_VERSIONED.severity.assertSame(ERROR)
+		CODE__MISSING_ID_FOR_VERSIONED.lineNumber.assertEquals(6)
+	}
+
+	/**
+ 	* Helper methods 
+ 	*/
+	def int lineNumber(String code) {
+		result.get(code).lineNumber
+	}
+
+	def Severity severity(String code) {
+		result.get(code).severity
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/pom.xml
new file mode 100644
index 0000000..1b5bb66
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/pom.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.entity.xtext.tests</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+						<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Test.class</include>
+						<include>**/*Tests.class</include>
+					</includes>
+					<failIfNoTests>false</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<!-- <argLine>${ui.test.vmargs}</argLine> -->
+					<bundleStartLevel>
+						<bundle>
+							<id>org.eclipse.osgi</id>
+							<level>-1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.common</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.ds</id>
+							<level>2</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.equinox.log</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osgi.services</id>
+							<level>1</level>
+							<autoStart>true</autoStart>
+						</bundle>
+						<bundle>
+							<id>org.eclipse.osbp.dsl.entity.xtext.tests</id>
+							<level>4</level>
+							<autoStart>true</autoStart>
+						</bundle>
+					</bundleStartLevel>
+					<dependencies>
+						<!-- Plugins -->
+						<dependency>
+							<type>eclipse-plugin</type>
+							<artifactId>org.eclipse.equinox.ds</artifactId>
+							<version>0.0.0</version>
+						</dependency>
+						<dependency>
+							<type>eclipse-plugin</type>
+							<artifactId>org.eclipse.equinox.util</artifactId>
+							<version>0.0.0</version>
+						</dependency>
+					</dependencies>
+
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/tests/datatypes/TestsDatatypesTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/tests/datatypes/TestsDatatypesTranslator.java
new file mode 100644
index 0000000..cb07fdb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/tests/datatypes/TestsDatatypesTranslator.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.tests.datatypes;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class TestsDatatypesTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static TestsDatatypesTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static TestsDatatypesTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.tests.datatypes.TestsDatatypesTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.tests.datatypes is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.tests.datatypes already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.tests.datatypes set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/tests/datatypes/dtos/DatatypesDtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/tests/datatypes/dtos/DatatypesDtosTranslator.java
new file mode 100644
index 0000000..80feb2e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/tests/datatypes/dtos/DatatypesDtosTranslator.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.tests.datatypes.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class DatatypesDtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static DatatypesDtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static DatatypesDtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.tests.datatypes.dtos.DatatypesDtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.tests.datatypes.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.tests.datatypes.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.tests.datatypes.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/Foobar.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/Foobar.java
new file mode 100644
index 0000000..3570eca
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/Foobar.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests;
+
+import javax.persistence.Basic;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.Lob;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "FOOBAR")
+@DiscriminatorValue(value = "FOOBAR")
+@SuppressWarnings("all")
+public class Foobar implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  private String id = java.util.UUID.randomUUID().toString();
+  
+  @Column(name = "NAME")
+  private String name;
+  
+  @Column(name = "MYBLOB")
+  @Lob
+  @Basic(fetch = FetchType.LAZY)
+  @Valid
+  private byte[] myblob;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public String getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final String id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    checkDisposed();
+    return this.name;
+  }
+  
+  /**
+   * Sets the name property to this instance.
+   */
+  public void setName(final String name) {
+    checkDisposed();
+    this.name = name;
+  }
+  
+  /**
+   * Returns the myblob property or <code>null</code> if not present.
+   */
+  public byte[] getMyblob() {
+    checkDisposed();
+    return this.myblob;
+  }
+  
+  /**
+   * Sets the myblob property to this instance.
+   */
+  public void setMyblob(final byte[] myblob) {
+    checkDisposed();
+    this.myblob = myblob;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    Foobar other = (Foobar) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/TestsBlobtestsTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/TestsBlobtestsTranslator.java
new file mode 100644
index 0000000..a621572
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/TestsBlobtestsTranslator.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class TestsBlobtestsTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.TestsBlobtestsTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.foobar","foobar");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.id","id");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.myblob","myblob");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.name","name");
+    }};
+  
+  private static String foobar;
+  
+  private static String id;
+  
+  private static String myblob;
+  
+  private static String name;
+  
+  public static org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.TestsBlobtestsTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.TestsBlobtestsTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public String getFoobar() {
+    if (log.isDebugEnabled()) log.debug("getFoobar returns:"+this.foobar);
+    return this.foobar;
+  }
+  
+  public String getId() {
+    if (log.isDebugEnabled()) log.debug("getId returns:"+this.id);
+    return this.id;
+  }
+  
+  public String getMyblob() {
+    if (log.isDebugEnabled()) log.debug("getMyblob returns:"+this.myblob);
+    return this.myblob;
+  }
+  
+  public String getName() {
+    if (log.isDebugEnabled()) log.debug("getName returns:"+this.name);
+    return this.name;
+  }
+  
+  public void setFoobar(final String newFoobar) {
+    if (log.isDebugEnabled()) log.debug("setFoobar called:"+newFoobar);
+    String oldFoobar = this.foobar;
+    this.foobar = newFoobar;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.foobar", newFoobar);
+    this.pcs.firePropertyChange("foobar", oldFoobar, newFoobar);
+  }
+  
+  public void setId(final String newId) {
+    if (log.isDebugEnabled()) log.debug("setId called:"+newId);
+    String oldId = this.id;
+    this.id = newId;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.id", newId);
+    this.pcs.firePropertyChange("id", oldId, newId);
+  }
+  
+  public void setMyblob(final String newMyblob) {
+    if (log.isDebugEnabled()) log.debug("setMyblob called:"+newMyblob);
+    String oldMyblob = this.myblob;
+    this.myblob = newMyblob;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.myblob", newMyblob);
+    this.pcs.firePropertyChange("myblob", oldMyblob, newMyblob);
+  }
+  
+  public void setName(final String newName) {
+    if (log.isDebugEnabled()) log.debug("setName called:"+newName);
+    String oldName = this.name;
+    this.name = newName;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.name", newName);
+    this.pcs.firePropertyChange("name", oldName, newName);
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.blobtests is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.blobtests already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.blobtests set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    	try {
+    		setFoobar(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.foobar"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setId(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.id"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setMyblob(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.myblob"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setName(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.name"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/BlobtestsDtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/BlobtestsDtosTranslator.java
new file mode 100644
index 0000000..4653dc4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/BlobtestsDtosTranslator.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.TestsBlobtestsTranslator;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class BlobtestsDtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static BlobtestsDtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private static TestsBlobtestsTranslator testsBlobtestsTranslator = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static BlobtestsDtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.BlobtestsDtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    testsBlobtestsTranslator.mergeTranslations();
+    translations.putAll(testsBlobtestsTranslator.getTranslations());
+    if (log.isDebugEnabled()) log.debug("merge TestsBlobtestsTranslator in org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos");
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    if (testsBlobtestsTranslator == null) {
+    	testsBlobtestsTranslator = testsBlobtestsTranslator.getInstance(locale);
+    } else {
+    	testsBlobtestsTranslator.changeLocale(locale);
+    }
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/FoobarDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/FoobarDto.java
new file mode 100644
index 0000000..e09d59a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/FoobarDto.java
@@ -0,0 +1,272 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class FoobarDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private String id = java.util.UUID.randomUUID().toString();
+  
+  private String name;
+  
+  @Valid
+  private byte[] myblob;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Foobar} to the dto {@link FoobarDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public String getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final String id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    return this.name;
+  }
+  
+  /**
+   * Sets the <code>name</code> property to this instance.
+   * 
+   * @param name - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setName(final String name) {
+    firePropertyChange("name", this.name, this.name = name );
+  }
+  
+  /**
+   * Returns the myblob property or <code>null</code> if not present.
+   */
+  public byte[] getMyblob() {
+    return this.myblob;
+  }
+  
+  /**
+   * Sets the <code>myblob</code> property to this instance.
+   * 
+   * @param myblob - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setMyblob(final byte[] myblob) {
+    firePropertyChange("myblob", this.myblob, this.myblob = myblob );
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    FoobarDto other = (FoobarDto) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+  
+  public FoobarDto createDto() {
+    return new FoobarDto();
+  }
+  
+  public FoobarDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    FoobarDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final FoobarDto dto, final FoobarDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy name
+    newDto.setName(getName());
+    // copy myblob
+    newDto.setMyblob(getMyblob());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final FoobarDto dto, final FoobarDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/mapper/FoobarDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/mapper/FoobarDtoMapper.java
new file mode 100644
index 0000000..35775b7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/mapper/FoobarDtoMapper.java
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.Foobar;
+import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.FoobarDto;
+
+/**
+ * This class maps the dto {@link FoobarDto} to and from the entity {@link Foobar}.
+ * 
+ */
+@SuppressWarnings("all")
+public class FoobarDtoMapper<DTO extends FoobarDto, ENTITY extends Foobar> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public Foobar createEntity() {
+    return new Foobar();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public FoobarDto createDto() {
+    return new FoobarDto();
+  }
+  
+  /**
+   * Maps the entity {@link Foobar} to the dto {@link FoobarDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final FoobarDto dto, final Foobar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setName(toDto_name(entity, context));
+    dto.setMyblob(toDto_myblob(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link FoobarDto} to the entity {@link Foobar}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final FoobarDto dto, final Foobar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setName(toEntity_name(dto, context));
+    entity.setMyblob(toEntity_myblob(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_id(final Foobar in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_id(final FoobarDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_name(final Foobar in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_name(final FoobarDto in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property myblob from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toDto_myblob(final Foobar in, final MappingContext context) {
+    return in.getMyblob();
+  }
+  
+  /**
+   * Maps the property myblob from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected byte[] toEntity_myblob(final FoobarDto in, final MappingContext context) {
+    return in.getMyblob();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(FoobarDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Foobar.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/services/FoobarService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/services/FoobarService.java
new file mode 100644
index 0000000..0da25f7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/dtos/services/FoobarService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.Foobar;
+import org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.dtos.FoobarDto;
+
+@SuppressWarnings("all")
+public class FoobarService extends AbstractDTOServiceWithMutablePersistence<FoobarDto, Foobar> {
+  public FoobarService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<FoobarDto> getDtoClass() {
+    return FoobarDto.class;
+  }
+  
+  public Class<Foobar> getEntityClass() {
+    return Foobar.class;
+  }
+  
+  public Object getId(final FoobarDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/BaseByClass.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/BaseByClass.java
new file mode 100644
index 0000000..1a940d3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/BaseByClass.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.DiscriminatorType;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
+@DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING)
+@DiscriminatorValue(value = "BASE_BY_CLASS")
+@SuppressWarnings("all")
+public class BaseByClass implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private Long id;
+  
+  @Version
+  private int version;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final Long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the version property or <code>null</code> if not present.
+   */
+  public int getVersion() {
+    checkDisposed();
+    return this.version;
+  }
+  
+  /**
+   * Sets the version property to this instance.
+   */
+  public void setVersion(final int version) {
+    checkDisposed();
+    this.version = version;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    BaseByClass other = (BaseByClass) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/BaseBySubclass.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/BaseBySubclass.java
new file mode 100644
index 0000000..d9ae345
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/BaseBySubclass.java
@@ -0,0 +1,133 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.DiscriminatorType;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.persistence.Version;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "BASE_BY_SUBCLASS")
+@Inheritance(strategy = InheritanceType.JOINED)
+@DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING)
+@DiscriminatorValue(value = "BASE_BY_SUBCLASS")
+@SuppressWarnings("all")
+public class BaseBySubclass implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private Long id;
+  
+  @Version
+  private int version;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final Long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the version property or <code>null</code> if not present.
+   */
+  public int getVersion() {
+    checkDisposed();
+    return this.version;
+  }
+  
+  /**
+   * Sets the version property to this instance.
+   */
+  public void setVersion(final int version) {
+    checkDisposed();
+    this.version = version;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    BaseBySubclass other = (BaseBySubclass) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/OneByClass.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/OneByClass.java
new file mode 100644
index 0000000..cb20c2f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/OneByClass.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClass;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@DiscriminatorValue(value = "ONE_BY_CLASS")
+@SuppressWarnings("all")
+public class OneByClass extends BaseByClass implements IEntity {
+  @Column(name = "NAME")
+  private String name;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    checkDisposed();
+    return this.name;
+  }
+  
+  /**
+   * Sets the name property to this instance.
+   */
+  public void setName(final String name) {
+    checkDisposed();
+    this.name = name;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/OneBySubclass.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/OneBySubclass.java
new file mode 100644
index 0000000..c8925d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/OneBySubclass.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "ONE_BY_SUBCLASS")
+@DiscriminatorValue(value = "ONE_BY_SUBCLASS")
+@SuppressWarnings("all")
+public class OneBySubclass extends BaseBySubclass implements IEntity {
+  @Column(name = "NAME")
+  private String name;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    checkDisposed();
+    return this.name;
+  }
+  
+  /**
+   * Sets the name property to this instance.
+   */
+  public void setName(final String name) {
+    checkDisposed();
+    this.name = name;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TestsClassinheritanceTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TestsClassinheritanceTranslator.java
new file mode 100644
index 0000000..ad6d01c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TestsClassinheritanceTranslator.java
@@ -0,0 +1,289 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class TestsClassinheritanceTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TestsClassinheritanceTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_class","base_by_class");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_subclass","base_by_subclass");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.id","id");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.name","name");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_class","one_by_class");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_subclass","one_by_subclass");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.stuff","stuff");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_class","two_by_class");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_subclass","two_by_subclass");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.version","version");
+    }};
+  
+  private static String base_by_class;
+  
+  private static String base_by_subclass;
+  
+  private static String id;
+  
+  private static String name;
+  
+  private static String one_by_class;
+  
+  private static String one_by_subclass;
+  
+  private static String stuff;
+  
+  private static String two_by_class;
+  
+  private static String two_by_subclass;
+  
+  private static String version;
+  
+  public static org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TestsClassinheritanceTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TestsClassinheritanceTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public String getBase_by_class() {
+    if (log.isDebugEnabled()) log.debug("getBase_by_class returns:"+this.base_by_class);
+    return this.base_by_class;
+  }
+  
+  public String getBase_by_subclass() {
+    if (log.isDebugEnabled()) log.debug("getBase_by_subclass returns:"+this.base_by_subclass);
+    return this.base_by_subclass;
+  }
+  
+  public String getId() {
+    if (log.isDebugEnabled()) log.debug("getId returns:"+this.id);
+    return this.id;
+  }
+  
+  public String getName() {
+    if (log.isDebugEnabled()) log.debug("getName returns:"+this.name);
+    return this.name;
+  }
+  
+  public String getOne_by_class() {
+    if (log.isDebugEnabled()) log.debug("getOne_by_class returns:"+this.one_by_class);
+    return this.one_by_class;
+  }
+  
+  public String getOne_by_subclass() {
+    if (log.isDebugEnabled()) log.debug("getOne_by_subclass returns:"+this.one_by_subclass);
+    return this.one_by_subclass;
+  }
+  
+  public String getStuff() {
+    if (log.isDebugEnabled()) log.debug("getStuff returns:"+this.stuff);
+    return this.stuff;
+  }
+  
+  public String getTwo_by_class() {
+    if (log.isDebugEnabled()) log.debug("getTwo_by_class returns:"+this.two_by_class);
+    return this.two_by_class;
+  }
+  
+  public String getTwo_by_subclass() {
+    if (log.isDebugEnabled()) log.debug("getTwo_by_subclass returns:"+this.two_by_subclass);
+    return this.two_by_subclass;
+  }
+  
+  public String getVersion() {
+    if (log.isDebugEnabled()) log.debug("getVersion returns:"+this.version);
+    return this.version;
+  }
+  
+  public void setBase_by_class(final String newBase_by_class) {
+    if (log.isDebugEnabled()) log.debug("setBase_by_class called:"+newBase_by_class);
+    String oldBase_by_class = this.base_by_class;
+    this.base_by_class = newBase_by_class;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_class", newBase_by_class);
+    this.pcs.firePropertyChange("base_by_class", oldBase_by_class, newBase_by_class);
+  }
+  
+  public void setBase_by_subclass(final String newBase_by_subclass) {
+    if (log.isDebugEnabled()) log.debug("setBase_by_subclass called:"+newBase_by_subclass);
+    String oldBase_by_subclass = this.base_by_subclass;
+    this.base_by_subclass = newBase_by_subclass;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_subclass", newBase_by_subclass);
+    this.pcs.firePropertyChange("base_by_subclass", oldBase_by_subclass, newBase_by_subclass);
+  }
+  
+  public void setId(final String newId) {
+    if (log.isDebugEnabled()) log.debug("setId called:"+newId);
+    String oldId = this.id;
+    this.id = newId;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.id", newId);
+    this.pcs.firePropertyChange("id", oldId, newId);
+  }
+  
+  public void setName(final String newName) {
+    if (log.isDebugEnabled()) log.debug("setName called:"+newName);
+    String oldName = this.name;
+    this.name = newName;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.name", newName);
+    this.pcs.firePropertyChange("name", oldName, newName);
+  }
+  
+  public void setOne_by_class(final String newOne_by_class) {
+    if (log.isDebugEnabled()) log.debug("setOne_by_class called:"+newOne_by_class);
+    String oldOne_by_class = this.one_by_class;
+    this.one_by_class = newOne_by_class;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_class", newOne_by_class);
+    this.pcs.firePropertyChange("one_by_class", oldOne_by_class, newOne_by_class);
+  }
+  
+  public void setOne_by_subclass(final String newOne_by_subclass) {
+    if (log.isDebugEnabled()) log.debug("setOne_by_subclass called:"+newOne_by_subclass);
+    String oldOne_by_subclass = this.one_by_subclass;
+    this.one_by_subclass = newOne_by_subclass;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_subclass", newOne_by_subclass);
+    this.pcs.firePropertyChange("one_by_subclass", oldOne_by_subclass, newOne_by_subclass);
+  }
+  
+  public void setStuff(final String newStuff) {
+    if (log.isDebugEnabled()) log.debug("setStuff called:"+newStuff);
+    String oldStuff = this.stuff;
+    this.stuff = newStuff;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.stuff", newStuff);
+    this.pcs.firePropertyChange("stuff", oldStuff, newStuff);
+  }
+  
+  public void setTwo_by_class(final String newTwo_by_class) {
+    if (log.isDebugEnabled()) log.debug("setTwo_by_class called:"+newTwo_by_class);
+    String oldTwo_by_class = this.two_by_class;
+    this.two_by_class = newTwo_by_class;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_class", newTwo_by_class);
+    this.pcs.firePropertyChange("two_by_class", oldTwo_by_class, newTwo_by_class);
+  }
+  
+  public void setTwo_by_subclass(final String newTwo_by_subclass) {
+    if (log.isDebugEnabled()) log.debug("setTwo_by_subclass called:"+newTwo_by_subclass);
+    String oldTwo_by_subclass = this.two_by_subclass;
+    this.two_by_subclass = newTwo_by_subclass;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_subclass", newTwo_by_subclass);
+    this.pcs.firePropertyChange("two_by_subclass", oldTwo_by_subclass, newTwo_by_subclass);
+  }
+  
+  public void setVersion(final String newVersion) {
+    if (log.isDebugEnabled()) log.debug("setVersion called:"+newVersion);
+    String oldVersion = this.version;
+    this.version = newVersion;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.version", newVersion);
+    this.pcs.firePropertyChange("version", oldVersion, newVersion);
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    	try {
+    		setBase_by_class(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_class"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setBase_by_subclass(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.base_by_subclass"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setId(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.id"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setName(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.name"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setOne_by_class(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_class"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setOne_by_subclass(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.one_by_subclass"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setStuff(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.stuff"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setTwo_by_class(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_class"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setTwo_by_subclass(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.two_by_subclass"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setVersion(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.version"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TwoByClass.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TwoByClass.java
new file mode 100644
index 0000000..c9d27ad
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TwoByClass.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClass;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@DiscriminatorValue(value = "TWO_BY_CLASS")
+@SuppressWarnings("all")
+public class TwoByClass extends OneByClass implements IEntity {
+  @Column(name = "STUFF")
+  private Long stuff;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the stuff property or <code>null</code> if not present.
+   */
+  public Long getStuff() {
+    checkDisposed();
+    return this.stuff;
+  }
+  
+  /**
+   * Sets the stuff property to this instance.
+   */
+  public void setStuff(final Long stuff) {
+    checkDisposed();
+    this.stuff = stuff;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TwoBySubclass.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TwoBySubclass.java
new file mode 100644
index 0000000..ffb1692
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/TwoBySubclass.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclass;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "TWO_BY_SUBCLASS")
+@DiscriminatorValue(value = "TWO_BY_SUBCLASS")
+@SuppressWarnings("all")
+public class TwoBySubclass extends OneBySubclass implements IEntity {
+  @Column(name = "STUFF")
+  private Long stuff;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the stuff property or <code>null</code> if not present.
+   */
+  public Long getStuff() {
+    checkDisposed();
+    return this.stuff;
+  }
+  
+  /**
+   * Sets the stuff property to this instance.
+   */
+  public void setStuff(final Long stuff) {
+    checkDisposed();
+    this.stuff = stuff;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/BaseByClassDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/BaseByClassDto.java
new file mode 100644
index 0000000..6f81312
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/BaseByClassDto.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class BaseByClassDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private Long id;
+  
+  private int version;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link BaseByClass} to the dto {@link BaseByClassDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final Long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the version property or <code>null</code> if not present.
+   */
+  public int getVersion() {
+    return this.version;
+  }
+  
+  /**
+   * Sets the <code>version</code> property to this instance.
+   * 
+   * @param version - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setVersion(final int version) {
+    firePropertyChange("version", this.version, this.version = version );
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    BaseByClassDto other = (BaseByClassDto) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+  
+  public BaseByClassDto createDto() {
+    return new BaseByClassDto();
+  }
+  
+  public BaseByClassDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    BaseByClassDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final BaseByClassDto dto, final BaseByClassDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy version
+    newDto.setVersion(getVersion());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final BaseByClassDto dto, final BaseByClassDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/BaseBySubclassDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/BaseBySubclassDto.java
new file mode 100644
index 0000000..a80eb22
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/BaseBySubclassDto.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class BaseBySubclassDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private Long id;
+  
+  private int version;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link BaseBySubclass} to the dto {@link BaseBySubclassDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final Long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the version property or <code>null</code> if not present.
+   */
+  public int getVersion() {
+    return this.version;
+  }
+  
+  /**
+   * Sets the <code>version</code> property to this instance.
+   * 
+   * @param version - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setVersion(final int version) {
+    firePropertyChange("version", this.version, this.version = version );
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    BaseBySubclassDto other = (BaseBySubclassDto) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+  
+  public BaseBySubclassDto createDto() {
+    return new BaseBySubclassDto();
+  }
+  
+  public BaseBySubclassDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    BaseBySubclassDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final BaseBySubclassDto dto, final BaseBySubclassDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy version
+    newDto.setVersion(getVersion());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final BaseBySubclassDto dto, final BaseBySubclassDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/ClassinheritanceDtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/ClassinheritanceDtosTranslator.java
new file mode 100644
index 0000000..7e12a51
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/ClassinheritanceDtosTranslator.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TestsClassinheritanceTranslator;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class ClassinheritanceDtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static ClassinheritanceDtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private static TestsClassinheritanceTranslator testsClassinheritanceTranslator = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static ClassinheritanceDtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.ClassinheritanceDtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    testsClassinheritanceTranslator.mergeTranslations();
+    translations.putAll(testsClassinheritanceTranslator.getTranslations());
+    if (log.isDebugEnabled()) log.debug("merge TestsClassinheritanceTranslator in org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos");
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    if (testsClassinheritanceTranslator == null) {
+    	testsClassinheritanceTranslator = testsClassinheritanceTranslator.getInstance(locale);
+    } else {
+    	testsClassinheritanceTranslator.changeLocale(locale);
+    }
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/OneByClassDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/OneByClassDto.java
new file mode 100644
index 0000000..47ee104
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/OneByClassDto.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseByClassDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class OneByClassDto extends BaseByClassDto implements IDto, Serializable, PropertyChangeListener {
+  private String name;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link OneByClass} to the dto {@link OneByClassDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    return this.name;
+  }
+  
+  /**
+   * Sets the <code>name</code> property to this instance.
+   * 
+   * @param name - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setName(final String name) {
+    firePropertyChange("name", this.name, this.name = name );
+  }
+  
+  public OneByClassDto createDto() {
+    return new OneByClassDto();
+  }
+  
+  public OneByClassDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    OneByClassDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final OneByClassDto dto, final OneByClassDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy name
+    newDto.setName(getName());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final OneByClassDto dto, final OneByClassDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/OneBySubclassDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/OneBySubclassDto.java
new file mode 100644
index 0000000..3dd0c0d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/OneBySubclassDto.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseBySubclassDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class OneBySubclassDto extends BaseBySubclassDto implements IDto, Serializable, PropertyChangeListener {
+  private String name;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link OneBySubclass} to the dto {@link OneBySubclassDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    return this.name;
+  }
+  
+  /**
+   * Sets the <code>name</code> property to this instance.
+   * 
+   * @param name - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setName(final String name) {
+    firePropertyChange("name", this.name, this.name = name );
+  }
+  
+  public OneBySubclassDto createDto() {
+    return new OneBySubclassDto();
+  }
+  
+  public OneBySubclassDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    OneBySubclassDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final OneBySubclassDto dto, final OneBySubclassDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy name
+    newDto.setName(getName());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final OneBySubclassDto dto, final OneBySubclassDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/TwoByClassDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/TwoByClassDto.java
new file mode 100644
index 0000000..d1fbe85
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/TwoByClassDto.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.OneByClassDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class TwoByClassDto extends OneByClassDto implements IDto, Serializable, PropertyChangeListener {
+  private Long stuff;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link TwoByClass} to the dto {@link TwoByClassDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the stuff property or <code>null</code> if not present.
+   */
+  public Long getStuff() {
+    return this.stuff;
+  }
+  
+  /**
+   * Sets the <code>stuff</code> property to this instance.
+   * 
+   * @param stuff - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setStuff(final Long stuff) {
+    firePropertyChange("stuff", this.stuff, this.stuff = stuff );
+  }
+  
+  public TwoByClassDto createDto() {
+    return new TwoByClassDto();
+  }
+  
+  public TwoByClassDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    TwoByClassDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final TwoByClassDto dto, final TwoByClassDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy stuff
+    newDto.setStuff(getStuff());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final TwoByClassDto dto, final TwoByClassDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/TwoBySubclassDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/TwoBySubclassDto.java
new file mode 100644
index 0000000..f64cabe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/TwoBySubclassDto.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.OneBySubclassDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class TwoBySubclassDto extends OneBySubclassDto implements IDto, Serializable, PropertyChangeListener {
+  private Long stuff;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link TwoBySubclass} to the dto {@link TwoBySubclassDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the stuff property or <code>null</code> if not present.
+   */
+  public Long getStuff() {
+    return this.stuff;
+  }
+  
+  /**
+   * Sets the <code>stuff</code> property to this instance.
+   * 
+   * @param stuff - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setStuff(final Long stuff) {
+    firePropertyChange("stuff", this.stuff, this.stuff = stuff );
+  }
+  
+  public TwoBySubclassDto createDto() {
+    return new TwoBySubclassDto();
+  }
+  
+  public TwoBySubclassDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    TwoBySubclassDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final TwoBySubclassDto dto, final TwoBySubclassDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy stuff
+    newDto.setStuff(getStuff());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final TwoBySubclassDto dto, final TwoBySubclassDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/BaseByClassDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/BaseByClassDtoMapper.java
new file mode 100644
index 0000000..57f1515
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/BaseByClassDtoMapper.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseByClassDto;
+
+/**
+ * This class maps the dto {@link BaseByClassDto} to and from the entity {@link BaseByClass}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BaseByClassDtoMapper<DTO extends BaseByClassDto, ENTITY extends BaseByClass> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public BaseByClass createEntity() {
+    return new BaseByClass();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BaseByClassDto createDto() {
+    return new BaseByClassDto();
+  }
+  
+  /**
+   * Maps the entity {@link BaseByClass} to the dto {@link BaseByClassDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BaseByClassDto dto, final BaseByClass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setVersion(toDto_version(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BaseByClassDto} to the entity {@link BaseByClass}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BaseByClassDto dto, final BaseByClass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setVersion(toEntity_version(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_id(final BaseByClass in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_id(final BaseByClassDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property version from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_version(final BaseByClass in, final MappingContext context) {
+    return in.getVersion();
+  }
+  
+  /**
+   * Maps the property version from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_version(final BaseByClassDto in, final MappingContext context) {
+    return in.getVersion();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseByClassDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseByClass.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/BaseBySubclassDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/BaseBySubclassDtoMapper.java
new file mode 100644
index 0000000..00ef066
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/BaseBySubclassDtoMapper.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseBySubclassDto;
+
+/**
+ * This class maps the dto {@link BaseBySubclassDto} to and from the entity {@link BaseBySubclass}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BaseBySubclassDtoMapper<DTO extends BaseBySubclassDto, ENTITY extends BaseBySubclass> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public BaseBySubclass createEntity() {
+    return new BaseBySubclass();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BaseBySubclassDto createDto() {
+    return new BaseBySubclassDto();
+  }
+  
+  /**
+   * Maps the entity {@link BaseBySubclass} to the dto {@link BaseBySubclassDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BaseBySubclassDto dto, final BaseBySubclass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setVersion(toDto_version(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BaseBySubclassDto} to the entity {@link BaseBySubclass}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BaseBySubclassDto dto, final BaseBySubclass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setVersion(toEntity_version(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_id(final BaseBySubclass in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_id(final BaseBySubclassDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property version from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_version(final BaseBySubclass in, final MappingContext context) {
+    return in.getVersion();
+  }
+  
+  /**
+   * Maps the property version from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_version(final BaseBySubclassDto in, final MappingContext context) {
+    return in.getVersion();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseBySubclassDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseBySubclass.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/OneByClassDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/OneByClassDtoMapper.java
new file mode 100644
index 0000000..0557534
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/OneByClassDtoMapper.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.OneByClassDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper.BaseByClassDtoMapper;
+
+/**
+ * This class maps the dto {@link OneByClassDto} to and from the entity {@link OneByClass}.
+ * 
+ */
+@SuppressWarnings("all")
+public class OneByClassDtoMapper<DTO extends OneByClassDto, ENTITY extends OneByClass> extends BaseByClassDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public OneByClass createEntity() {
+    return new OneByClass();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public OneByClassDto createDto() {
+    return new OneByClassDto();
+  }
+  
+  /**
+   * Maps the entity {@link OneByClass} to the dto {@link OneByClassDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final OneByClassDto dto, final OneByClass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setName(toDto_name(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link OneByClassDto} to the entity {@link OneByClass}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final OneByClassDto dto, final OneByClass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setName(toEntity_name(dto, context));
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_name(final OneByClass in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_name(final OneByClassDto in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(OneByClassDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(OneByClass.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/OneBySubclassDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/OneBySubclassDtoMapper.java
new file mode 100644
index 0000000..21c331b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/OneBySubclassDtoMapper.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.OneBySubclassDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper.BaseBySubclassDtoMapper;
+
+/**
+ * This class maps the dto {@link OneBySubclassDto} to and from the entity {@link OneBySubclass}.
+ * 
+ */
+@SuppressWarnings("all")
+public class OneBySubclassDtoMapper<DTO extends OneBySubclassDto, ENTITY extends OneBySubclass> extends BaseBySubclassDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public OneBySubclass createEntity() {
+    return new OneBySubclass();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public OneBySubclassDto createDto() {
+    return new OneBySubclassDto();
+  }
+  
+  /**
+   * Maps the entity {@link OneBySubclass} to the dto {@link OneBySubclassDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final OneBySubclassDto dto, final OneBySubclass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setName(toDto_name(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link OneBySubclassDto} to the entity {@link OneBySubclass}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final OneBySubclassDto dto, final OneBySubclass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setName(toEntity_name(dto, context));
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_name(final OneBySubclass in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_name(final OneBySubclassDto in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(OneBySubclassDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(OneBySubclass.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/TwoByClassDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/TwoByClassDtoMapper.java
new file mode 100644
index 0000000..714881d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/TwoByClassDtoMapper.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoByClass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.TwoByClassDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper.OneByClassDtoMapper;
+
+/**
+ * This class maps the dto {@link TwoByClassDto} to and from the entity {@link TwoByClass}.
+ * 
+ */
+@SuppressWarnings("all")
+public class TwoByClassDtoMapper<DTO extends TwoByClassDto, ENTITY extends TwoByClass> extends OneByClassDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public TwoByClass createEntity() {
+    return new TwoByClass();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public TwoByClassDto createDto() {
+    return new TwoByClassDto();
+  }
+  
+  /**
+   * Maps the entity {@link TwoByClass} to the dto {@link TwoByClassDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final TwoByClassDto dto, final TwoByClass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setStuff(toDto_stuff(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link TwoByClassDto} to the entity {@link TwoByClass}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final TwoByClassDto dto, final TwoByClass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setStuff(toEntity_stuff(dto, context));
+  }
+  
+  /**
+   * Maps the property stuff from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_stuff(final TwoByClass in, final MappingContext context) {
+    return in.getStuff();
+  }
+  
+  /**
+   * Maps the property stuff from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_stuff(final TwoByClassDto in, final MappingContext context) {
+    return in.getStuff();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(TwoByClassDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(TwoByClass.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/TwoBySubclassDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/TwoBySubclassDtoMapper.java
new file mode 100644
index 0000000..32f2d9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/mapper/TwoBySubclassDtoMapper.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoBySubclass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.TwoBySubclassDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.mapper.OneBySubclassDtoMapper;
+
+/**
+ * This class maps the dto {@link TwoBySubclassDto} to and from the entity {@link TwoBySubclass}.
+ * 
+ */
+@SuppressWarnings("all")
+public class TwoBySubclassDtoMapper<DTO extends TwoBySubclassDto, ENTITY extends TwoBySubclass> extends OneBySubclassDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public TwoBySubclass createEntity() {
+    return new TwoBySubclass();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public TwoBySubclassDto createDto() {
+    return new TwoBySubclassDto();
+  }
+  
+  /**
+   * Maps the entity {@link TwoBySubclass} to the dto {@link TwoBySubclassDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final TwoBySubclassDto dto, final TwoBySubclass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setStuff(toDto_stuff(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link TwoBySubclassDto} to the entity {@link TwoBySubclass}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final TwoBySubclassDto dto, final TwoBySubclass entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setStuff(toEntity_stuff(dto, context));
+  }
+  
+  /**
+   * Maps the property stuff from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_stuff(final TwoBySubclass in, final MappingContext context) {
+    return in.getStuff();
+  }
+  
+  /**
+   * Maps the property stuff from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_stuff(final TwoBySubclassDto in, final MappingContext context) {
+    return in.getStuff();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(TwoBySubclassDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(TwoBySubclass.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/BaseByClassService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/BaseByClassService.java
new file mode 100644
index 0000000..651f175
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/BaseByClassService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseByClassDto;
+
+@SuppressWarnings("all")
+public class BaseByClassService extends AbstractDTOServiceWithMutablePersistence<BaseByClassDto, BaseByClass> {
+  public BaseByClassService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<BaseByClassDto> getDtoClass() {
+    return BaseByClassDto.class;
+  }
+  
+  public Class<BaseByClass> getEntityClass() {
+    return BaseByClass.class;
+  }
+  
+  public Object getId(final BaseByClassDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/BaseBySubclassService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/BaseBySubclassService.java
new file mode 100644
index 0000000..2b850b4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/BaseBySubclassService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.BaseBySubclassDto;
+
+@SuppressWarnings("all")
+public class BaseBySubclassService extends AbstractDTOServiceWithMutablePersistence<BaseBySubclassDto, BaseBySubclass> {
+  public BaseBySubclassService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<BaseBySubclassDto> getDtoClass() {
+    return BaseBySubclassDto.class;
+  }
+  
+  public Class<BaseBySubclass> getEntityClass() {
+    return BaseBySubclass.class;
+  }
+  
+  public Object getId(final BaseBySubclassDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/OneByClassService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/OneByClassService.java
new file mode 100644
index 0000000..efe1d4d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/OneByClassService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.OneByClassDto;
+
+@SuppressWarnings("all")
+public class OneByClassService extends AbstractDTOServiceWithMutablePersistence<OneByClassDto, OneByClass> {
+  public OneByClassService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<OneByClassDto> getDtoClass() {
+    return OneByClassDto.class;
+  }
+  
+  public Class<OneByClass> getEntityClass() {
+    return OneByClass.class;
+  }
+  
+  public Object getId(final OneByClassDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/OneBySubclassService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/OneBySubclassService.java
new file mode 100644
index 0000000..1aed548
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/OneBySubclassService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.OneBySubclassDto;
+
+@SuppressWarnings("all")
+public class OneBySubclassService extends AbstractDTOServiceWithMutablePersistence<OneBySubclassDto, OneBySubclass> {
+  public OneBySubclassService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<OneBySubclassDto> getDtoClass() {
+    return OneBySubclassDto.class;
+  }
+  
+  public Class<OneBySubclass> getEntityClass() {
+    return OneBySubclass.class;
+  }
+  
+  public Object getId(final OneBySubclassDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/TwoByClassService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/TwoByClassService.java
new file mode 100644
index 0000000..fa9e777
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/TwoByClassService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoByClass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.TwoByClassDto;
+
+@SuppressWarnings("all")
+public class TwoByClassService extends AbstractDTOServiceWithMutablePersistence<TwoByClassDto, TwoByClass> {
+  public TwoByClassService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<TwoByClassDto> getDtoClass() {
+    return TwoByClassDto.class;
+  }
+  
+  public Class<TwoByClass> getEntityClass() {
+    return TwoByClass.class;
+  }
+  
+  public Object getId(final TwoByClassDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/TwoBySubclassService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/TwoBySubclassService.java
new file mode 100644
index 0000000..964d71d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/dtos/services/TwoBySubclassService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoBySubclass;
+import org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.dtos.TwoBySubclassDto;
+
+@SuppressWarnings("all")
+public class TwoBySubclassService extends AbstractDTOServiceWithMutablePersistence<TwoBySubclassDto, TwoBySubclass> {
+  public TwoBySubclassService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<TwoBySubclassDto> getDtoClass() {
+    return TwoBySubclassDto.class;
+  }
+  
+  public Class<TwoBySubclass> getEntityClass() {
+    return TwoBySubclass.class;
+  }
+  
+  public Object getId(final TwoBySubclassDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/AddressDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/AddressDto.java
new file mode 100644
index 0000000..95f0833
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/AddressDto.java
@@ -0,0 +1,263 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class AddressDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private String streetname;
+  
+  private int housenumber;
+  
+  private String city;
+  
+  private int zipcode;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Address} to the dto {@link AddressDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the streetname property or <code>null</code> if not present.
+   */
+  public String getStreetname() {
+    return this.streetname;
+  }
+  
+  /**
+   * Sets the <code>streetname</code> property to this instance.
+   * 
+   * @param streetname - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setStreetname(final String streetname) {
+    firePropertyChange("streetname", this.streetname, this.streetname = streetname );
+  }
+  
+  /**
+   * Returns the housenumber property or <code>null</code> if not present.
+   */
+  public int getHousenumber() {
+    return this.housenumber;
+  }
+  
+  /**
+   * Sets the <code>housenumber</code> property to this instance.
+   * 
+   * @param housenumber - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setHousenumber(final int housenumber) {
+    firePropertyChange("housenumber", this.housenumber, this.housenumber = housenumber );
+  }
+  
+  /**
+   * Returns the city property or <code>null</code> if not present.
+   */
+  public String getCity() {
+    return this.city;
+  }
+  
+  /**
+   * Sets the <code>city</code> property to this instance.
+   * 
+   * @param city - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCity(final String city) {
+    firePropertyChange("city", this.city, this.city = city );
+  }
+  
+  /**
+   * Returns the zipcode property or <code>null</code> if not present.
+   */
+  public int getZipcode() {
+    return this.zipcode;
+  }
+  
+  /**
+   * Sets the <code>zipcode</code> property to this instance.
+   * 
+   * @param zipcode - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setZipcode(final int zipcode) {
+    firePropertyChange("zipcode", this.zipcode, this.zipcode = zipcode );
+  }
+  
+  public AddressDto createDto() {
+    return new AddressDto();
+  }
+  
+  public AddressDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    AddressDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final AddressDto dto, final AddressDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy streetname
+    newDto.setStreetname(getStreetname());
+    // copy housenumber
+    newDto.setHousenumber(getHousenumber());
+    // copy city
+    newDto.setCity(getCity());
+    // copy zipcode
+    newDto.setZipcode(getZipcode());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final AddressDto dto, final AddressDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/CarDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/CarDto.java
new file mode 100644
index 0000000..c90c880
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/CarDto.java
@@ -0,0 +1,332 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.util.Date;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.ManufacturerDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class CarDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private long id;
+  
+  private String modelname;
+  
+  @Valid
+  private Date constructiondate;
+  
+  private int price;
+  
+  @DomainReference
+  private ManufacturerDto manufacturer;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Car} to the dto {@link CarDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the modelname property or <code>null</code> if not present.
+   */
+  public String getModelname() {
+    return this.modelname;
+  }
+  
+  /**
+   * Sets the <code>modelname</code> property to this instance.
+   * 
+   * @param modelname - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setModelname(final String modelname) {
+    firePropertyChange("modelname", this.modelname, this.modelname = modelname );
+  }
+  
+  /**
+   * Returns the constructiondate property or <code>null</code> if not present.
+   */
+  public Date getConstructiondate() {
+    return this.constructiondate;
+  }
+  
+  /**
+   * Sets the <code>constructiondate</code> property to this instance.
+   * 
+   * @param constructiondate - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setConstructiondate(final Date constructiondate) {
+    firePropertyChange("constructiondate", this.constructiondate, this.constructiondate = constructiondate );
+  }
+  
+  /**
+   * Returns the price property or <code>null</code> if not present.
+   */
+  public int getPrice() {
+    return this.price;
+  }
+  
+  /**
+   * Sets the <code>price</code> property to this instance.
+   * 
+   * @param price - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setPrice(final int price) {
+    firePropertyChange("price", this.price, this.price = price );
+  }
+  
+  /**
+   * Returns the <em>required</em> manufacturer property.
+   */
+  public ManufacturerDto getManufacturer() {
+    return this.manufacturer;
+  }
+  
+  /**
+   * Sets the <code>manufacturer</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>ManufacturerDto#
+   * cars</code> of the <code>manufacturer</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link ManufacturerDto#setCars(ManufacturerDto)
+   * 
+   * @param manufacturer - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setManufacturer(final ManufacturerDto manufacturer) {
+    checkDisposed();
+    if (this.manufacturer != null) {
+    	this.manufacturer.internalRemoveFromCars(this);
+    }
+    
+    internalSetManufacturer(manufacturer);
+    
+    if (this.manufacturer != null) {
+    	this.manufacturer.internalAddToCars(this);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetManufacturer(final ManufacturerDto manufacturer) {
+    firePropertyChange("manufacturer", this.manufacturer, this.manufacturer = manufacturer);
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    CarDto other = (CarDto) obj;
+    if (other.id != this.id)
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + (int) (this.id ^ (this.id >>> 32));
+    return result;
+  }
+  
+  public CarDto createDto() {
+    return new CarDto();
+  }
+  
+  public CarDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    CarDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final CarDto dto, final CarDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy modelname
+    newDto.setModelname(getModelname());
+    // copy constructiondate
+    newDto.setConstructiondate(getConstructiondate());
+    // copy price
+    newDto.setPrice(getPrice());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final CarDto dto, final CarDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/CustomerDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/CustomerDto.java
new file mode 100644
index 0000000..78ae11a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/CustomerDto.java
@@ -0,0 +1,238 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.PersonDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class CustomerDto extends PersonDto implements IDto, Serializable, PropertyChangeListener {
+  private boolean isseller;
+  
+  private boolean isbuyer;
+  
+  private String phonenumber;
+  
+  private String iban;
+  
+  private int discount;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Customer} to the dto {@link CustomerDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the isseller property or <code>null</code> if not present.
+   */
+  public boolean getIsseller() {
+    return this.isseller;
+  }
+  
+  /**
+   * Sets the <code>isseller</code> property to this instance.
+   * 
+   * @param isseller - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setIsseller(final boolean isseller) {
+    firePropertyChange("isseller", this.isseller, this.isseller = isseller );
+  }
+  
+  /**
+   * Returns the isbuyer property or <code>null</code> if not present.
+   */
+  public boolean getIsbuyer() {
+    return this.isbuyer;
+  }
+  
+  /**
+   * Sets the <code>isbuyer</code> property to this instance.
+   * 
+   * @param isbuyer - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setIsbuyer(final boolean isbuyer) {
+    firePropertyChange("isbuyer", this.isbuyer, this.isbuyer = isbuyer );
+  }
+  
+  /**
+   * Returns the phonenumber property or <code>null</code> if not present.
+   */
+  public String getPhonenumber() {
+    return this.phonenumber;
+  }
+  
+  /**
+   * Sets the <code>phonenumber</code> property to this instance.
+   * 
+   * @param phonenumber - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setPhonenumber(final String phonenumber) {
+    firePropertyChange("phonenumber", this.phonenumber, this.phonenumber = phonenumber );
+  }
+  
+  /**
+   * Returns the iban property or <code>null</code> if not present.
+   */
+  public String getIban() {
+    return this.iban;
+  }
+  
+  /**
+   * Sets the <code>iban</code> property to this instance.
+   * 
+   * @param iban - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setIban(final String iban) {
+    firePropertyChange("iban", this.iban, this.iban = iban );
+  }
+  
+  /**
+   * Returns the discount property or <code>null</code> if not present.
+   */
+  public int getDiscount() {
+    return this.discount;
+  }
+  
+  /**
+   * Sets the <code>discount</code> property to this instance.
+   * 
+   * @param discount - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setDiscount(final int discount) {
+    firePropertyChange("discount", this.discount, this.discount = discount );
+  }
+  
+  public CustomerDto createDto() {
+    return new CustomerDto();
+  }
+  
+  public CustomerDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    CustomerDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final CustomerDto dto, final CustomerDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy isseller
+    newDto.setIsseller(getIsseller());
+    // copy isbuyer
+    newDto.setIsbuyer(getIsbuyer());
+    // copy phonenumber
+    newDto.setPhonenumber(getPhonenumber());
+    // copy iban
+    newDto.setIban(getIban());
+    // copy discount
+    newDto.setDiscount(getDiscount());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final CustomerDto dto, final CustomerDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/EmployeeDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/EmployeeDto.java
new file mode 100644
index 0000000..92ffe2c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/EmployeeDto.java
@@ -0,0 +1,374 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.PersonDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class EmployeeDto extends PersonDto implements IDto, Serializable, PropertyChangeListener {
+  private long employeenumber;
+  
+  @Valid
+  private Date employeesince;
+  
+  private int salary;
+  
+  private String jobdescription;
+  
+  @DomainReference
+  private EmployeeDto boss;
+  
+  @DomainReference
+  @Valid
+  private List<EmployeeDto> subordinates;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.subordinates != null) {
+        for (EmployeeDto employeeDto : this.subordinates) {
+          employeeDto.dispose();
+        }
+        this.subordinates = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Employee} to the dto {@link EmployeeDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+    subordinates = new org.eclipse.osbp.dsl.dto.lib.LazyLoadingDtoList<>(org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(), EmployeeDto.class, new org.eclipse.osbp.dsl.dto.lib.services.Query(
+    new org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Equal("boss.id", getId())));
+  }
+  
+  /**
+   * Returns the employeenumber property or <code>null</code> if not present.
+   */
+  public long getEmployeenumber() {
+    return this.employeenumber;
+  }
+  
+  /**
+   * Sets the <code>employeenumber</code> property to this instance.
+   * 
+   * @param employeenumber - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setEmployeenumber(final long employeenumber) {
+    firePropertyChange("employeenumber", this.employeenumber, this.employeenumber = employeenumber );
+  }
+  
+  /**
+   * Returns the employeesince property or <code>null</code> if not present.
+   */
+  public Date getEmployeesince() {
+    return this.employeesince;
+  }
+  
+  /**
+   * Sets the <code>employeesince</code> property to this instance.
+   * 
+   * @param employeesince - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setEmployeesince(final Date employeesince) {
+    firePropertyChange("employeesince", this.employeesince, this.employeesince = employeesince );
+  }
+  
+  /**
+   * Returns the salary property or <code>null</code> if not present.
+   */
+  public int getSalary() {
+    return this.salary;
+  }
+  
+  /**
+   * Sets the <code>salary</code> property to this instance.
+   * 
+   * @param salary - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setSalary(final int salary) {
+    firePropertyChange("salary", this.salary, this.salary = salary );
+  }
+  
+  /**
+   * Returns the jobdescription property or <code>null</code> if not present.
+   */
+  public String getJobdescription() {
+    return this.jobdescription;
+  }
+  
+  /**
+   * Sets the <code>jobdescription</code> property to this instance.
+   * 
+   * @param jobdescription - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setJobdescription(final String jobdescription) {
+    firePropertyChange("jobdescription", this.jobdescription, this.jobdescription = jobdescription );
+  }
+  
+  /**
+   * Returns the <em>required</em> boss property.
+   */
+  public EmployeeDto getBoss() {
+    return this.boss;
+  }
+  
+  /**
+   * Sets the <code>boss</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>EmployeeDto#
+   * subordinates</code> of the <code>boss</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link EmployeeDto#setSubordinates(EmployeeDto)
+   * 
+   * @param boss - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setBoss(final EmployeeDto boss) {
+    checkDisposed();
+    if (this.boss != null) {
+    	this.boss.internalRemoveFromSubordinates(this);
+    }
+    
+    internalSetBoss(boss);
+    
+    if (this.boss != null) {
+    	this.boss.internalAddToSubordinates(this);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetBoss(final EmployeeDto boss) {
+    firePropertyChange("boss", this.boss, this.boss = boss);
+  }
+  
+  /**
+   * Returns an unmodifiable list of subordinates.
+   */
+  public List<EmployeeDto> getSubordinates() {
+    return Collections.unmodifiableList(internalGetSubordinates());
+  }
+  
+  /**
+   * Returns the list of <code>EmployeeDto</code>s thereby lazy initializing it. For internal use only!
+   * 
+   * @return list - the resulting list
+   * 
+   */
+  private List<EmployeeDto> internalGetSubordinates() {
+    if (this.subordinates == null) {
+      this.subordinates = new java.util.ArrayList<EmployeeDto>();
+    }
+    return this.subordinates;
+  }
+  
+  /**
+   * Adds the given employeeDto to this object. <p>
+   * Since the reference is a composition reference, the opposite reference <code>EmployeeDto#boss</code> of the <code>employeeDto</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+   * See {@link EmployeeDto#setBoss(EmployeeDto)}.
+   * 
+   * @param employeeDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void addToSubordinates(final EmployeeDto employeeDto) {
+    checkDisposed();
+    
+    employeeDto.setBoss(this);
+  }
+  
+  /**
+   * Removes the given employeeDto from this object. <p>
+   * 
+   * @param employeeDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void removeFromSubordinates(final EmployeeDto employeeDto) {
+    checkDisposed();
+    
+    employeeDto.setBoss(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToSubordinates(final EmployeeDto employeeDto) {
+    internalGetSubordinates().add(employeeDto);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromSubordinates(final EmployeeDto employeeDto) {
+    internalGetSubordinates().remove(employeeDto);
+  }
+  
+  /**
+   * Sets the <code>subordinates</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>EmployeeDto#
+   * boss</code> of the <code>subordinates</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link EmployeeDto#setBoss(EmployeeDto)
+   * 
+   * @param subordinates - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setSubordinates(final List<EmployeeDto> subordinates) {
+    checkDisposed();
+    for (EmployeeDto dto : internalGetSubordinates().toArray(new EmployeeDto[this.subordinates.size()])) {
+    	removeFromSubordinates(dto);
+    }
+    
+    if(subordinates == null) {
+    	return;
+    }
+    
+    for (EmployeeDto dto : subordinates) {
+    	addToSubordinates(dto);
+    }
+  }
+  
+  public EmployeeDto createDto() {
+    return new EmployeeDto();
+  }
+  
+  public EmployeeDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    EmployeeDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final EmployeeDto dto, final EmployeeDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy employeenumber
+    newDto.setEmployeenumber(getEmployeenumber());
+    // copy employeesince
+    newDto.setEmployeesince(getEmployeesince());
+    // copy salary
+    newDto.setSalary(getSalary());
+    // copy jobdescription
+    newDto.setJobdescription(getJobdescription());
+    
+    // copy containment references (cascading is true)
+    // copy list of subordinates dtos
+    for(org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.EmployeeDto _dto : getSubordinates()) {
+    	newDto.addToSubordinates(_dto.copy(context));
+    }
+  }
+  
+  public void copyCrossReferences(final EmployeeDto dto, final EmployeeDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/ManufacturerDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/ManufacturerDto.java
new file mode 100644
index 0000000..f5ed723
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/ManufacturerDto.java
@@ -0,0 +1,399 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.AddressDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CarDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class ManufacturerDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private long id;
+  
+  private String name;
+  
+  @Valid
+  private AddressDto address;
+  
+  @DomainReference
+  @Valid
+  private List<CarDto> cars;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.cars != null) {
+        for (CarDto carDto : this.cars) {
+          carDto.dispose();
+        }
+        this.cars = null;
+      }
+      
+    }
+    finally {
+      firePropertyChange("disposed", this.disposed, this.disposed = true);
+    }
+    
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Manufacturer} to the dto {@link ManufacturerDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    cars = new org.eclipse.osbp.dsl.dto.lib.LazyLoadingDtoList<>(org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(), CarDto.class, new org.eclipse.osbp.dsl.dto.lib.services.Query(
+    new org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Equal("manufacturer.id", getId())));
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    return this.name;
+  }
+  
+  /**
+   * Sets the <code>name</code> property to this instance.
+   * 
+   * @param name - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setName(final String name) {
+    firePropertyChange("name", this.name, this.name = name );
+  }
+  
+  /**
+   * Returns the address property.
+   */
+  public AddressDto getAddress() {
+    if(this.address== null){
+      this.address = new AddressDto();
+    }
+    return this.address;
+  }
+  
+  /**
+   * Sets the <code>address</code> property to this instance.
+   * 
+   * @param address - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setAddress(final AddressDto address) {
+    // ensure that embedded beans will notify their parent about changes
+    // so their dirty state can be handled properly
+    if (this.address != null) {
+    	this.address.removePropertyChangeListener(this);
+    }
+    
+    firePropertyChange("address", this.address, this.address = address );
+    
+    if (this.address != null) {
+    	this.address.addPropertyChangeListener(this);
+    }
+  }
+  
+  /**
+   * Returns an unmodifiable list of cars.
+   */
+  public List<CarDto> getCars() {
+    return Collections.unmodifiableList(internalGetCars());
+  }
+  
+  /**
+   * Returns the list of <code>CarDto</code>s thereby lazy initializing it. For internal use only!
+   * 
+   * @return list - the resulting list
+   * 
+   */
+  private List<CarDto> internalGetCars() {
+    if (this.cars == null) {
+      this.cars = new java.util.ArrayList<CarDto>();
+    }
+    return this.cars;
+  }
+  
+  /**
+   * Adds the given carDto to this object. <p>
+   * Since the reference is a composition reference, the opposite reference <code>CarDto#manufacturer</code> of the <code>carDto</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+   * See {@link CarDto#setManufacturer(CarDto)}.
+   * 
+   * @param carDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void addToCars(final CarDto carDto) {
+    checkDisposed();
+    
+    carDto.setManufacturer(this);
+  }
+  
+  /**
+   * Removes the given carDto from this object. <p>
+   * 
+   * @param carDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void removeFromCars(final CarDto carDto) {
+    checkDisposed();
+    
+    carDto.setManufacturer(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToCars(final CarDto carDto) {
+    internalGetCars().add(carDto);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromCars(final CarDto carDto) {
+    internalGetCars().remove(carDto);
+  }
+  
+  /**
+   * Sets the <code>cars</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>CarDto#
+   * manufacturer</code> of the <code>cars</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link CarDto#setManufacturer(CarDto)
+   * 
+   * @param cars - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCars(final List<CarDto> cars) {
+    checkDisposed();
+    for (CarDto dto : internalGetCars().toArray(new CarDto[this.cars.size()])) {
+    	removeFromCars(dto);
+    }
+    
+    if(cars == null) {
+    	return;
+    }
+    
+    for (CarDto dto : cars) {
+    	addToCars(dto);
+    }
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    ManufacturerDto other = (ManufacturerDto) obj;
+    if (other.id != this.id)
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + (int) (this.id ^ (this.id >>> 32));
+    return result;
+  }
+  
+  public ManufacturerDto createDto() {
+    return new ManufacturerDto();
+  }
+  
+  public ManufacturerDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    ManufacturerDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final ManufacturerDto dto, final ManufacturerDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy name
+    newDto.setName(getName());
+    // copy dto address
+    if(getAddress() != null) {
+    	newDto.setAddress(getAddress().copy(context));
+    }
+    
+    // copy containment references (cascading is true)
+    // copy list of cars dtos
+    for(org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CarDto _dto : getCars()) {
+    	newDto.addToCars(_dto.copy(context));
+    }
+  }
+  
+  public void copyCrossReferences(final ManufacturerDto dto, final ManufacturerDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    if(source == address){
+    	firePropertyChange("address" + "_" + event.getPropertyName(), event.getOldValue(), event.getNewValue());
+    } else 
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/PersonDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/PersonDto.java
new file mode 100644
index 0000000..e6fae93
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/PersonDto.java
@@ -0,0 +1,289 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.util.Date;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class PersonDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private long id;
+  
+  private String firstname;
+  
+  private String lastname;
+  
+  @Valid
+  private Date birthdate;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Person} to the dto {@link PersonDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the firstname property or <code>null</code> if not present.
+   */
+  public String getFirstname() {
+    return this.firstname;
+  }
+  
+  /**
+   * Sets the <code>firstname</code> property to this instance.
+   * 
+   * @param firstname - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setFirstname(final String firstname) {
+    firePropertyChange("firstname", this.firstname, this.firstname = firstname );
+  }
+  
+  /**
+   * Returns the lastname property or <code>null</code> if not present.
+   */
+  public String getLastname() {
+    return this.lastname;
+  }
+  
+  /**
+   * Sets the <code>lastname</code> property to this instance.
+   * 
+   * @param lastname - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setLastname(final String lastname) {
+    firePropertyChange("lastname", this.lastname, this.lastname = lastname );
+  }
+  
+  /**
+   * Returns the birthdate property or <code>null</code> if not present.
+   */
+  public Date getBirthdate() {
+    return this.birthdate;
+  }
+  
+  /**
+   * Sets the <code>birthdate</code> property to this instance.
+   * 
+   * @param birthdate - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setBirthdate(final Date birthdate) {
+    firePropertyChange("birthdate", this.birthdate, this.birthdate = birthdate );
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    PersonDto other = (PersonDto) obj;
+    if (other.id != this.id)
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + (int) (this.id ^ (this.id >>> 32));
+    return result;
+  }
+  
+  public PersonDto createDto() {
+    return new PersonDto();
+  }
+  
+  public PersonDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    PersonDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final PersonDto dto, final PersonDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy firstname
+    newDto.setFirstname(getFirstname());
+    // copy lastname
+    newDto.setLastname(getLastname());
+    // copy birthdate
+    newDto.setBirthdate(getBirthdate());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final PersonDto dto, final PersonDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/Testcarstore2DtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/Testcarstore2DtosTranslator.java
new file mode 100644
index 0000000..380317c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/Testcarstore2DtosTranslator.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.ModelTestcarstore2Translator;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class Testcarstore2DtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static Testcarstore2DtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private static ModelTestcarstore2Translator modelTestcarstore2Translator = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static Testcarstore2DtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.Testcarstore2DtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    modelTestcarstore2Translator.mergeTranslations();
+    translations.putAll(modelTestcarstore2Translator.getTranslations());
+    if (log.isDebugEnabled()) log.debug("merge ModelTestcarstore2Translator in org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos");
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    if (modelTestcarstore2Translator == null) {
+    	modelTestcarstore2Translator = modelTestcarstore2Translator.getInstance(locale);
+    } else {
+    	modelTestcarstore2Translator.changeLocale(locale);
+    }
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/UsedCarDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/UsedCarDto.java
new file mode 100644
index 0000000..1fa06ae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/UsedCarDto.java
@@ -0,0 +1,200 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CarDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CustomerDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class UsedCarDto extends CarDto implements IDto, Serializable, PropertyChangeListener {
+  private String state;
+  
+  private int mileage;
+  
+  @DomainReference
+  private CustomerDto seller;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link UsedCar} to the dto {@link UsedCarDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the state property or <code>null</code> if not present.
+   */
+  public String getState() {
+    return this.state;
+  }
+  
+  /**
+   * Sets the <code>state</code> property to this instance.
+   * 
+   * @param state - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setState(final String state) {
+    firePropertyChange("state", this.state, this.state = state );
+  }
+  
+  /**
+   * Returns the mileage property or <code>null</code> if not present.
+   */
+  public int getMileage() {
+    return this.mileage;
+  }
+  
+  /**
+   * Sets the <code>mileage</code> property to this instance.
+   * 
+   * @param mileage - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setMileage(final int mileage) {
+    firePropertyChange("mileage", this.mileage, this.mileage = mileage );
+  }
+  
+  /**
+   * Returns the <em>required</em> seller property.
+   */
+  public CustomerDto getSeller() {
+    return this.seller;
+  }
+  
+  /**
+   * Sets the <code>seller</code> property to this instance.
+   * 
+   * @param seller - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setSeller(final CustomerDto seller) {
+    checkDisposed();
+    firePropertyChange("seller", this.seller, this.seller = seller);
+  }
+  
+  public UsedCarDto createDto() {
+    return new UsedCarDto();
+  }
+  
+  public UsedCarDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    UsedCarDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final UsedCarDto dto, final UsedCarDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy state
+    newDto.setState(getState());
+    // copy mileage
+    newDto.setMileage(getMileage());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final UsedCarDto dto, final UsedCarDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+    // copy dto seller
+    if(getSeller() != null) {
+    	newDto.setSeller(getSeller().copy(context));
+    }
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/AddressDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/AddressDtoMapper.java
new file mode 100644
index 0000000..ba0ac78
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/AddressDtoMapper.java
@@ -0,0 +1,221 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Address;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.AddressDto;
+
+/**
+ * This class maps the dto {@link AddressDto} to and from the entity {@link Address}.
+ * 
+ */
+@SuppressWarnings("all")
+public class AddressDtoMapper<DTO extends AddressDto, ENTITY extends Address> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public Address createEntity() {
+    return new Address();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public AddressDto createDto() {
+    return new AddressDto();
+  }
+  
+  /**
+   * Maps the entity {@link Address} to the dto {@link AddressDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final AddressDto dto, final Address entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    dto.setStreetname(toDto_streetname(entity, context));
+    dto.setHousenumber(toDto_housenumber(entity, context));
+    dto.setCity(toDto_city(entity, context));
+    dto.setZipcode(toDto_zipcode(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link AddressDto} to the entity {@link Address}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final AddressDto dto, final Address entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    
+    entity.setStreetname(toEntity_streetname(dto, context));
+    entity.setHousenumber(toEntity_housenumber(dto, context));
+    entity.setCity(toEntity_city(dto, context));
+    entity.setZipcode(toEntity_zipcode(dto, context));
+  }
+  
+  /**
+   * Maps the property streetname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_streetname(final Address in, final MappingContext context) {
+    return in.getStreetname();
+  }
+  
+  /**
+   * Maps the property streetname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_streetname(final AddressDto in, final MappingContext context) {
+    return in.getStreetname();
+  }
+  
+  /**
+   * Maps the property housenumber from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_housenumber(final Address in, final MappingContext context) {
+    return in.getHousenumber();
+  }
+  
+  /**
+   * Maps the property housenumber from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_housenumber(final AddressDto in, final MappingContext context) {
+    return in.getHousenumber();
+  }
+  
+  /**
+   * Maps the property city from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_city(final Address in, final MappingContext context) {
+    return in.getCity();
+  }
+  
+  /**
+   * Maps the property city from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_city(final AddressDto in, final MappingContext context) {
+    return in.getCity();
+  }
+  
+  /**
+   * Maps the property zipcode from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_zipcode(final Address in, final MappingContext context) {
+    return in.getZipcode();
+  }
+  
+  /**
+   * Maps the property zipcode from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_zipcode(final AddressDto in, final MappingContext context) {
+    return in.getZipcode();
+  }
+  
+  public String createDtoHash(final Object in) {
+    throw new UnsupportedOperationException("No id attribute available");
+  }
+  
+  public String createEntityHash(final Object in) {
+    throw new UnsupportedOperationException("No id attribute available");
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/CarDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/CarDtoMapper.java
new file mode 100644
index 0000000..355a951
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/CarDtoMapper.java
@@ -0,0 +1,299 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import java.util.Date;
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Car;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CarDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.ManufacturerDto;
+
+/**
+ * This class maps the dto {@link CarDto} to and from the entity {@link Car}.
+ * 
+ */
+@SuppressWarnings("all")
+public class CarDtoMapper<DTO extends CarDto, ENTITY extends Car> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public Car createEntity() {
+    return new Car();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public CarDto createDto() {
+    return new CarDto();
+  }
+  
+  /**
+   * Maps the entity {@link Car} to the dto {@link CarDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final CarDto dto, final Car entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setModelname(toDto_modelname(entity, context));
+    dto.setConstructiondate(toDto_constructiondate(entity, context));
+    dto.setPrice(toDto_price(entity, context));
+    if(dto.getManufacturer() == null) {
+    	// manufacturer is container property. So check for null to avoid looping
+    	dto.setManufacturer(toDto_manufacturer(entity, context));
+    }
+  }
+  
+  /**
+   * Maps the dto {@link CarDto} to the entity {@link Car}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final CarDto dto, final Car entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setModelname(toEntity_modelname(dto, context));
+    entity.setConstructiondate(toEntity_constructiondate(dto, context));
+    entity.setPrice(toEntity_price(dto, context));
+    if(entity.getManufacturer() == null) {
+    	// manufacturer is container property. So check for null to avoid looping
+    	entity.setManufacturer(toEntity_manufacturer(dto, context));
+    }
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toDto_id(final Car in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toEntity_id(final CarDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property modelname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_modelname(final Car in, final MappingContext context) {
+    return in.getModelname();
+  }
+  
+  /**
+   * Maps the property modelname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_modelname(final CarDto in, final MappingContext context) {
+    return in.getModelname();
+  }
+  
+  /**
+   * Maps the property constructiondate from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Date toDto_constructiondate(final Car in, final MappingContext context) {
+    return in.getConstructiondate();
+  }
+  
+  /**
+   * Maps the property constructiondate from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Date toEntity_constructiondate(final CarDto in, final MappingContext context) {
+    return in.getConstructiondate();
+  }
+  
+  /**
+   * Maps the property price from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_price(final Car in, final MappingContext context) {
+    return in.getPrice();
+  }
+  
+  /**
+   * Maps the property price from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_price(final CarDto in, final MappingContext context) {
+    return in.getPrice();
+  }
+  
+  /**
+   * Maps the property manufacturer from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected ManufacturerDto toDto_manufacturer(final Car in, final MappingContext context) {
+    if(in.getManufacturer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<ManufacturerDto, Manufacturer> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<ManufacturerDto, Manufacturer>) getToDtoMapper(ManufacturerDto.class, in.getManufacturer().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	ManufacturerDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getManufacturer()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getManufacturer(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getManufacturer(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property manufacturer from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected /* ManufacturerDto */Object toEntity_manufacturer(final CarDto in, final MappingContext context) {
+    if(in.getManufacturer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<ManufacturerDto, Manufacturer> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<ManufacturerDto, Manufacturer>) getToEntityMapper(in.getManufacturer().getClass(), Manufacturer.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	Manufacturer entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getManufacturer()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getManufacturer(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(CarDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Car.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/CustomerDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/CustomerDtoMapper.java
new file mode 100644
index 0000000..551edcb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/CustomerDtoMapper.java
@@ -0,0 +1,209 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Customer;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CustomerDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper.PersonDtoMapper;
+
+/**
+ * This class maps the dto {@link CustomerDto} to and from the entity {@link Customer}.
+ * 
+ */
+@SuppressWarnings("all")
+public class CustomerDtoMapper<DTO extends CustomerDto, ENTITY extends Customer> extends PersonDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public Customer createEntity() {
+    return new Customer();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public CustomerDto createDto() {
+    return new CustomerDto();
+  }
+  
+  /**
+   * Maps the entity {@link Customer} to the dto {@link CustomerDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final CustomerDto dto, final Customer entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setIsseller(toDto_isseller(entity, context));
+    dto.setIsbuyer(toDto_isbuyer(entity, context));
+    dto.setPhonenumber(toDto_phonenumber(entity, context));
+    dto.setIban(toDto_iban(entity, context));
+    dto.setDiscount(toDto_discount(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link CustomerDto} to the entity {@link Customer}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final CustomerDto dto, final Customer entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setIsseller(toEntity_isseller(dto, context));
+    entity.setIsbuyer(toEntity_isbuyer(dto, context));
+    entity.setPhonenumber(toEntity_phonenumber(dto, context));
+    entity.setIban(toEntity_iban(dto, context));
+    entity.setDiscount(toEntity_discount(dto, context));
+  }
+  
+  /**
+   * Maps the property isseller from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected boolean toDto_isseller(final Customer in, final MappingContext context) {
+    return in.getIsseller();
+  }
+  
+  /**
+   * Maps the property isseller from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected boolean toEntity_isseller(final CustomerDto in, final MappingContext context) {
+    return in.getIsseller();
+  }
+  
+  /**
+   * Maps the property isbuyer from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected boolean toDto_isbuyer(final Customer in, final MappingContext context) {
+    return in.getIsbuyer();
+  }
+  
+  /**
+   * Maps the property isbuyer from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected boolean toEntity_isbuyer(final CustomerDto in, final MappingContext context) {
+    return in.getIsbuyer();
+  }
+  
+  /**
+   * Maps the property phonenumber from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_phonenumber(final Customer in, final MappingContext context) {
+    return in.getPhonenumber();
+  }
+  
+  /**
+   * Maps the property phonenumber from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_phonenumber(final CustomerDto in, final MappingContext context) {
+    return in.getPhonenumber();
+  }
+  
+  /**
+   * Maps the property iban from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_iban(final Customer in, final MappingContext context) {
+    return in.getIban();
+  }
+  
+  /**
+   * Maps the property iban from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_iban(final CustomerDto in, final MappingContext context) {
+    return in.getIban();
+  }
+  
+  /**
+   * Maps the property discount from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_discount(final Customer in, final MappingContext context) {
+    return in.getDiscount();
+  }
+  
+  /**
+   * Maps the property discount from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_discount(final CustomerDto in, final MappingContext context) {
+    return in.getDiscount();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(CustomerDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Customer.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/EmployeeDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/EmployeeDtoMapper.java
new file mode 100644
index 0000000..6efb77b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/EmployeeDtoMapper.java
@@ -0,0 +1,326 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import java.util.Date;
+import java.util.List;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Employee;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.EmployeeDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper.PersonDtoMapper;
+
+/**
+ * This class maps the dto {@link EmployeeDto} to and from the entity {@link Employee}.
+ * 
+ */
+@SuppressWarnings("all")
+public class EmployeeDtoMapper<DTO extends EmployeeDto, ENTITY extends Employee> extends PersonDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public Employee createEntity() {
+    return new Employee();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public EmployeeDto createDto() {
+    return new EmployeeDto();
+  }
+  
+  /**
+   * Maps the entity {@link Employee} to the dto {@link EmployeeDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final EmployeeDto dto, final Employee entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setEmployeenumber(toDto_employeenumber(entity, context));
+    dto.setEmployeesince(toDto_employeesince(entity, context));
+    dto.setSalary(toDto_salary(entity, context));
+    dto.setJobdescription(toDto_jobdescription(entity, context));
+    if(dto.getBoss() == null) {
+    	// boss is container property. So check for null to avoid looping
+    	dto.setBoss(toDto_boss(entity, context));
+    }
+  }
+  
+  /**
+   * Maps the dto {@link EmployeeDto} to the entity {@link Employee}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final EmployeeDto dto, final Employee entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setEmployeenumber(toEntity_employeenumber(dto, context));
+    entity.setEmployeesince(toEntity_employeesince(dto, context));
+    entity.setSalary(toEntity_salary(dto, context));
+    entity.setJobdescription(toEntity_jobdescription(dto, context));
+    if(entity.getBoss() == null) {
+    	// boss is container property. So check for null to avoid looping
+    	entity.setBoss(toEntity_boss(dto, context));
+    }
+    if(entity.getSubordinates().isEmpty()) {
+    	List<Employee> subordinates_entities = new java.util.ArrayList<Employee>();
+    	for(Employee _entityValue : toEntity_subordinates(dto, context)) {
+    		subordinates_entities.add(_entityValue);
+    	}
+    	entity.setSubordinates(subordinates_entities);
+    }
+  }
+  
+  /**
+   * Maps the property employeenumber from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toDto_employeenumber(final Employee in, final MappingContext context) {
+    return in.getEmployeenumber();
+  }
+  
+  /**
+   * Maps the property employeenumber from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toEntity_employeenumber(final EmployeeDto in, final MappingContext context) {
+    return in.getEmployeenumber();
+  }
+  
+  /**
+   * Maps the property employeesince from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Date toDto_employeesince(final Employee in, final MappingContext context) {
+    return in.getEmployeesince();
+  }
+  
+  /**
+   * Maps the property employeesince from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Date toEntity_employeesince(final EmployeeDto in, final MappingContext context) {
+    return in.getEmployeesince();
+  }
+  
+  /**
+   * Maps the property salary from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_salary(final Employee in, final MappingContext context) {
+    return in.getSalary();
+  }
+  
+  /**
+   * Maps the property salary from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_salary(final EmployeeDto in, final MappingContext context) {
+    return in.getSalary();
+  }
+  
+  /**
+   * Maps the property jobdescription from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_jobdescription(final Employee in, final MappingContext context) {
+    return in.getJobdescription();
+  }
+  
+  /**
+   * Maps the property jobdescription from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_jobdescription(final EmployeeDto in, final MappingContext context) {
+    return in.getJobdescription();
+  }
+  
+  /**
+   * Maps the property boss from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected EmployeeDto toDto_boss(final Employee in, final MappingContext context) {
+    if(in.getBoss() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<EmployeeDto, Employee> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<EmployeeDto, Employee>) getToDtoMapper(EmployeeDto.class, in.getBoss().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	EmployeeDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getBoss()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getBoss(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getBoss(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property boss from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected /* employeesince */Object toEntity_boss(final EmployeeDto in, final MappingContext context) {
+    if(in.getBoss() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<EmployeeDto, Employee> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<EmployeeDto, Employee>) getToEntityMapper(in.getBoss().getClass(), Employee.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	Employee entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getBoss()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getBoss(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  /**
+   * Maps the property subordinates from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<EmployeeDto> toDto_subordinates(final Employee in, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<EmployeeDto, Employee> mapper = getToDtoMapper(EmployeeDto.class, Employee.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    } 
+    
+    if (context.isDetectRecursion(EmployeeDto.class)) {
+    	return java.util.Collections.emptyList();
+    }
+    
+    context.increaseLevel();
+    List<EmployeeDto> results = new java.util.ArrayList<EmployeeDto>();
+    for (Employee _entity : in.getSubordinates()) {
+    	EmployeeDto _dto = context.get(mapper.createDtoHash(_entity));
+    	if (_dto == null) {
+    		_dto = mapper.createDto();
+    		mapper.mapToDTO(_dto, _entity, context);
+    	} else {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(_dto, _entity, context);
+    		}
+    	}
+    	results.add(_dto);
+    }
+    context.decreaseLevel();
+    return results;
+  }
+  
+  /**
+   * Maps the property subordinates from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected /* List<jobdescription> */Object toEntity_subordinates(final EmployeeDto in, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<EmployeeDto, Employee> mapper = getToEntityMapper(EmployeeDto.class, Employee.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    List<Employee> results = new java.util.ArrayList<Employee>();
+    for (EmployeeDto _dto : in.getSubordinates()) {
+    	Employee _entity = context.get(mapper.createEntityHash(_dto));
+    	if(_entity == null) {
+    		_entity = mapper.createEntity();
+    		mapper.mapToEntity(_dto, _entity, context);
+    	}
+    	results.add(_entity);
+    }
+    return results;
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(EmployeeDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Employee.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/ManufacturerDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/ManufacturerDtoMapper.java
new file mode 100644
index 0000000..e361246
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/ManufacturerDtoMapper.java
@@ -0,0 +1,299 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import java.util.List;
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Address;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Manufacturer;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.AddressDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CarDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.ManufacturerDto;
+
+/**
+ * This class maps the dto {@link ManufacturerDto} to and from the entity {@link Manufacturer}.
+ * 
+ */
+@SuppressWarnings("all")
+public class ManufacturerDtoMapper<DTO extends ManufacturerDto, ENTITY extends Manufacturer> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public Manufacturer createEntity() {
+    return new Manufacturer();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public ManufacturerDto createDto() {
+    return new ManufacturerDto();
+  }
+  
+  /**
+   * Maps the entity {@link Manufacturer} to the dto {@link ManufacturerDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final ManufacturerDto dto, final Manufacturer entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setName(toDto_name(entity, context));
+    dto.setAddress(toDto_address(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link ManufacturerDto} to the entity {@link Manufacturer}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final ManufacturerDto dto, final Manufacturer entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setName(toEntity_name(dto, context));
+    entity.setAddress(toEntity_address(dto, context));
+    if(entity.getCars().isEmpty()) {
+    	List<Car> cars_entities = new java.util.ArrayList<Car>();
+    	for(Car _entityValue : toEntity_cars(dto, context)) {
+    		cars_entities.add(_entityValue);
+    	}
+    	entity.setCars(cars_entities);
+    }
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toDto_id(final Manufacturer in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toEntity_id(final ManufacturerDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_name(final Manufacturer in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_name(final ManufacturerDto in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property address from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected AddressDto toDto_address(final Manufacturer in, final MappingContext context) {
+    if(in.getAddress() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<AddressDto, Address> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<AddressDto, Address>) getToDtoMapper(AddressDto.class, in.getAddress().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	AddressDto dto = null;
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getAddress(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property address from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Address toEntity_address(final ManufacturerDto in, final MappingContext context) {
+    if(in.getAddress() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<AddressDto, Address> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<AddressDto, Address>) getToEntityMapper(in.getAddress().getClass(), Address.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	Address entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getAddress(), entity, context);
+    	return entity;							
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property cars from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<CarDto> toDto_cars(final Manufacturer in, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car> mapper = getToDtoMapper(CarDto.class, Car.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    } 
+    
+    if (context.isDetectRecursion(CarDto.class)) {
+    	return java.util.Collections.emptyList();
+    }
+    
+    context.increaseLevel();
+    List<CarDto> results = new java.util.ArrayList<CarDto>();
+    for (Car _entity : in.getCars()) {
+    	CarDto _dto = context.get(mapper.createDtoHash(_entity));
+    	if (_dto == null) {
+    		_dto = mapper.createDto();
+    		mapper.mapToDTO(_dto, _entity, context);
+    	} else {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(_dto, _entity, context);
+    		}
+    	}
+    	results.add(_dto);
+    }
+    context.decreaseLevel();
+    return results;
+  }
+  
+  /**
+   * Maps the property cars from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected /* List<Car> */Object toEntity_cars(final ManufacturerDto in, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car> mapper = getToEntityMapper(CarDto.class, Car.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    List<Car> results = new java.util.ArrayList<Car>();
+    for (CarDto _dto : in.getCars()) {
+    	Car _entity = context.get(mapper.createEntityHash(_dto));
+    	if(_entity == null) {
+    		_entity = mapper.createEntity();
+    		mapper.mapToEntity(_dto, _entity, context);
+    	}
+    	results.add(_entity);
+    }
+    return results;
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ManufacturerDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Manufacturer.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/PersonDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/PersonDtoMapper.java
new file mode 100644
index 0000000..0ed8c93
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/PersonDtoMapper.java
@@ -0,0 +1,226 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import java.util.Date;
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Person;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.PersonDto;
+
+/**
+ * This class maps the dto {@link PersonDto} to and from the entity {@link Person}.
+ * 
+ */
+@SuppressWarnings("all")
+public class PersonDtoMapper<DTO extends PersonDto, ENTITY extends Person> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public Person createEntity() {
+    return new Person();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public PersonDto createDto() {
+    return new PersonDto();
+  }
+  
+  /**
+   * Maps the entity {@link Person} to the dto {@link PersonDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final PersonDto dto, final Person entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setFirstname(toDto_firstname(entity, context));
+    dto.setLastname(toDto_lastname(entity, context));
+    dto.setBirthdate(toDto_birthdate(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link PersonDto} to the entity {@link Person}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final PersonDto dto, final Person entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setFirstname(toEntity_firstname(dto, context));
+    entity.setLastname(toEntity_lastname(dto, context));
+    entity.setBirthdate(toEntity_birthdate(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toDto_id(final Person in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toEntity_id(final PersonDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property firstname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_firstname(final Person in, final MappingContext context) {
+    return in.getFirstname();
+  }
+  
+  /**
+   * Maps the property firstname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_firstname(final PersonDto in, final MappingContext context) {
+    return in.getFirstname();
+  }
+  
+  /**
+   * Maps the property lastname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_lastname(final Person in, final MappingContext context) {
+    return in.getLastname();
+  }
+  
+  /**
+   * Maps the property lastname from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_lastname(final PersonDto in, final MappingContext context) {
+    return in.getLastname();
+  }
+  
+  /**
+   * Maps the property birthdate from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Date toDto_birthdate(final Person in, final MappingContext context) {
+    return in.getBirthdate();
+  }
+  
+  /**
+   * Maps the property birthdate from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Date toEntity_birthdate(final PersonDto in, final MappingContext context) {
+    return in.getBirthdate();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(PersonDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Person.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/UsedCarDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/UsedCarDtoMapper.java
new file mode 100644
index 0000000..3f00e5f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/mapper/UsedCarDtoMapper.java
@@ -0,0 +1,198 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.UsedCar;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CustomerDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.UsedCarDto;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.mapper.CarDtoMapper;
+
+/**
+ * This class maps the dto {@link UsedCarDto} to and from the entity {@link UsedCar}.
+ * 
+ */
+@SuppressWarnings("all")
+public class UsedCarDtoMapper<DTO extends UsedCarDto, ENTITY extends UsedCar> extends CarDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public UsedCar createEntity() {
+    return new UsedCar();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public UsedCarDto createDto() {
+    return new UsedCarDto();
+  }
+  
+  /**
+   * Maps the entity {@link UsedCar} to the dto {@link UsedCarDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final UsedCarDto dto, final UsedCar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setState(toDto_state(entity, context));
+    dto.setMileage(toDto_mileage(entity, context));
+    dto.setSeller(toDto_seller(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link UsedCarDto} to the entity {@link UsedCar}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final UsedCarDto dto, final UsedCar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setState(toEntity_state(dto, context));
+    entity.setMileage(toEntity_mileage(dto, context));
+    entity.setSeller(toEntity_seller(dto, context));
+  }
+  
+  /**
+   * Maps the property state from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_state(final UsedCar in, final MappingContext context) {
+    return in.getState();
+  }
+  
+  /**
+   * Maps the property state from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_state(final UsedCarDto in, final MappingContext context) {
+    return in.getState();
+  }
+  
+  /**
+   * Maps the property mileage from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_mileage(final UsedCar in, final MappingContext context) {
+    return in.getMileage();
+  }
+  
+  /**
+   * Maps the property mileage from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_mileage(final UsedCarDto in, final MappingContext context) {
+    return in.getMileage();
+  }
+  
+  /**
+   * Maps the property seller from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected CustomerDto toDto_seller(final UsedCar in, final MappingContext context) {
+    if(in.getSeller() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<CustomerDto, Customer> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<CustomerDto, Customer>) getToDtoMapper(CustomerDto.class, in.getSeller().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	CustomerDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getSeller()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getSeller(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getSeller(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property seller from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected /* EmployeeDto */Object toEntity_seller(final UsedCarDto in, final MappingContext context) {
+    if(in.getSeller() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<CustomerDto, Customer> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<CustomerDto, Customer>) getToEntityMapper(in.getSeller().getClass(), Customer.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	Customer entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getSeller()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getSeller(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(UsedCarDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(UsedCar.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/CarService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/CarService.java
new file mode 100644
index 0000000..8bdd940
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/CarService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Car;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CarDto;
+
+@SuppressWarnings("all")
+public class CarService extends AbstractDTOServiceWithMutablePersistence<CarDto, Car> {
+  public CarService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<CarDto> getDtoClass() {
+    return CarDto.class;
+  }
+  
+  public Class<Car> getEntityClass() {
+    return Car.class;
+  }
+  
+  public Object getId(final CarDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/CustomerService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/CustomerService.java
new file mode 100644
index 0000000..32e2a70
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/CustomerService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Customer;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.CustomerDto;
+
+@SuppressWarnings("all")
+public class CustomerService extends AbstractDTOServiceWithMutablePersistence<CustomerDto, Customer> {
+  public CustomerService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<CustomerDto> getDtoClass() {
+    return CustomerDto.class;
+  }
+  
+  public Class<Customer> getEntityClass() {
+    return Customer.class;
+  }
+  
+  public Object getId(final CustomerDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/EmployeeService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/EmployeeService.java
new file mode 100644
index 0000000..215d70c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/EmployeeService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Employee;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.EmployeeDto;
+
+@SuppressWarnings("all")
+public class EmployeeService extends AbstractDTOServiceWithMutablePersistence<EmployeeDto, Employee> {
+  public EmployeeService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<EmployeeDto> getDtoClass() {
+    return EmployeeDto.class;
+  }
+  
+  public Class<Employee> getEntityClass() {
+    return Employee.class;
+  }
+  
+  public Object getId(final EmployeeDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/ManufacturerService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/ManufacturerService.java
new file mode 100644
index 0000000..802947d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/ManufacturerService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Manufacturer;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.ManufacturerDto;
+
+@SuppressWarnings("all")
+public class ManufacturerService extends AbstractDTOServiceWithMutablePersistence<ManufacturerDto, Manufacturer> {
+  public ManufacturerService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<ManufacturerDto> getDtoClass() {
+    return ManufacturerDto.class;
+  }
+  
+  public Class<Manufacturer> getEntityClass() {
+    return Manufacturer.class;
+  }
+  
+  public Object getId(final ManufacturerDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/PersonService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/PersonService.java
new file mode 100644
index 0000000..aa19fcd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/PersonService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Person;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.PersonDto;
+
+@SuppressWarnings("all")
+public class PersonService extends AbstractDTOServiceWithMutablePersistence<PersonDto, Person> {
+  public PersonService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<PersonDto> getDtoClass() {
+    return PersonDto.class;
+  }
+  
+  public Class<Person> getEntityClass() {
+    return Person.class;
+  }
+  
+  public Object getId(final PersonDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/UsedCarService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/UsedCarService.java
new file mode 100644
index 0000000..a477444
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/dtos/services/UsedCarService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.UsedCar;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.dtos.UsedCarDto;
+
+@SuppressWarnings("all")
+public class UsedCarService extends AbstractDTOServiceWithMutablePersistence<UsedCarDto, UsedCar> {
+  public UsedCarService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<UsedCarDto> getDtoClass() {
+    return UsedCarDto.class;
+  }
+  
+  public Class<UsedCar> getEntityClass() {
+    return UsedCar.class;
+  }
+  
+  public Object getId(final UsedCarDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/TestsSelfreferenceTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/TestsSelfreferenceTranslator.java
new file mode 100644
index 0000000..0c42b68
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/TestsSelfreferenceTranslator.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class TestsSelfreferenceTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TestsSelfreferenceTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.boss","boss");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.id","id");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.name","name");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.subordinates","subordinates");
+    		put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.tree_employee","tree_employee");
+    }};
+  
+  private static String boss;
+  
+  private static String id;
+  
+  private static String name;
+  
+  private static String subordinates;
+  
+  private static String tree_employee;
+  
+  public static org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TestsSelfreferenceTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TestsSelfreferenceTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public String getBoss() {
+    if (log.isDebugEnabled()) log.debug("getBoss returns:"+this.boss);
+    return this.boss;
+  }
+  
+  public String getId() {
+    if (log.isDebugEnabled()) log.debug("getId returns:"+this.id);
+    return this.id;
+  }
+  
+  public String getName() {
+    if (log.isDebugEnabled()) log.debug("getName returns:"+this.name);
+    return this.name;
+  }
+  
+  public String getSubordinates() {
+    if (log.isDebugEnabled()) log.debug("getSubordinates returns:"+this.subordinates);
+    return this.subordinates;
+  }
+  
+  public String getTree_employee() {
+    if (log.isDebugEnabled()) log.debug("getTree_employee returns:"+this.tree_employee);
+    return this.tree_employee;
+  }
+  
+  public void setBoss(final String newBoss) {
+    if (log.isDebugEnabled()) log.debug("setBoss called:"+newBoss);
+    String oldBoss = this.boss;
+    this.boss = newBoss;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.boss", newBoss);
+    this.pcs.firePropertyChange("boss", oldBoss, newBoss);
+  }
+  
+  public void setId(final String newId) {
+    if (log.isDebugEnabled()) log.debug("setId called:"+newId);
+    String oldId = this.id;
+    this.id = newId;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.id", newId);
+    this.pcs.firePropertyChange("id", oldId, newId);
+  }
+  
+  public void setName(final String newName) {
+    if (log.isDebugEnabled()) log.debug("setName called:"+newName);
+    String oldName = this.name;
+    this.name = newName;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.name", newName);
+    this.pcs.firePropertyChange("name", oldName, newName);
+  }
+  
+  public void setSubordinates(final String newSubordinates) {
+    if (log.isDebugEnabled()) log.debug("setSubordinates called:"+newSubordinates);
+    String oldSubordinates = this.subordinates;
+    this.subordinates = newSubordinates;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.subordinates", newSubordinates);
+    this.pcs.firePropertyChange("subordinates", oldSubordinates, newSubordinates);
+  }
+  
+  public void setTree_employee(final String newTree_employee) {
+    if (log.isDebugEnabled()) log.debug("setTree_employee called:"+newTree_employee);
+    String oldTree_employee = this.tree_employee;
+    this.tree_employee = newTree_employee;
+    translations.put("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.tree_employee", newTree_employee);
+    this.pcs.firePropertyChange("tree_employee", oldTree_employee, newTree_employee);
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.selfreference is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.selfreference already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.selfreference set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    	try {
+    		setBoss(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.boss"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setId(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.id"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setName(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.name"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setSubordinates(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.subordinates"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setTree_employee(resource.getString("org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.tree_employee"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/TreeEmployee.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/TreeEmployee.java
new file mode 100644
index 0000000..212aa35
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/TreeEmployee.java
@@ -0,0 +1,260 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "TREE_EMPLOYEE")
+@DiscriminatorValue(value = "TREE_EMPLOYEE")
+@SuppressWarnings("all")
+public class TreeEmployee implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private long id;
+  
+  @Column(name = "NAME")
+  private String Name;
+  
+  /**
+   * Reference to children
+   */
+  @JoinColumn(name = "SUBORDINATES_ID")
+  @OneToMany(mappedBy = "boss", cascade = CascadeType.ALL, orphanRemoval = true)
+  @Valid
+  private List<TreeEmployee> subordinates;
+  
+  /**
+   * Reference to parent
+   */
+  @ManyToOne(optional = false, fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
+  @JoinColumn(name = "BOSS_ID", nullable = false)
+  private TreeEmployee boss;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.subordinates != null) {
+        for (TreeEmployee treeEmployee : this.subordinates) {
+          treeEmployee.dispose();
+        }
+        this.subordinates = null;
+      }
+      
+    }
+    finally {
+      disposed = true;
+    }
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the Name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    checkDisposed();
+    return this.Name;
+  }
+  
+  /**
+   * Sets the Name property to this instance.
+   */
+  public void setName(final String Name) {
+    checkDisposed();
+    this.Name = Name;
+  }
+  
+  /**
+   * Returns an unmodifiable list of subordinates.
+   */
+  public List<TreeEmployee> getSubordinates() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetSubordinates());
+  }
+  
+  /**
+   * Sets the given subordinates to the object. Currently contained subordinates instances will be removed.
+   * 
+   * @param subordinates the list of new instances
+   */
+  public void setSubordinates(final List<TreeEmployee> subordinates) {
+    // remove the old treeEmployee
+    for(TreeEmployee oldElement : new ArrayList<TreeEmployee>(this.internalGetSubordinates())){
+      removeFromSubordinates(oldElement);
+    }
+    
+    // add the new treeEmployee
+    for(TreeEmployee newElement : subordinates){
+      addToSubordinates(newElement);
+    }
+  }
+  
+  /**
+   * Returns the list of <code>TreeEmployee</code>s thereby lazy initializing it.
+   */
+  private List<TreeEmployee> internalGetSubordinates() {
+    if (this.subordinates == null) {
+      this.subordinates = new ArrayList<TreeEmployee>();
+    }
+    return this.subordinates;
+  }
+  
+  /**
+   * Adds the given treeEmployee to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (TreeEmployee.boss)
+   * of the treeEmployee will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link TreeEmployee#setBoss(TreeEmployee)}.
+   * 
+   */
+  public void addToSubordinates(final TreeEmployee treeEmployee) {
+    checkDisposed();
+    treeEmployee.setBoss(this);
+  }
+  
+  /**
+   * Removes the given treeEmployee from this object. <p>
+   * Since the reference is a cascading reference, the opposite reference (TreeEmployee.boss)
+   * of the treeEmployee will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link TreeEmployee#setBoss(TreeEmployee)}.
+   * 
+   */
+  public void removeFromSubordinates(final TreeEmployee treeEmployee) {
+    checkDisposed();
+    treeEmployee.setBoss(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  void internalAddToSubordinates(final TreeEmployee treeEmployee) {
+    internalGetSubordinates().add(treeEmployee);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  void internalRemoveFromSubordinates(final TreeEmployee treeEmployee) {
+    internalGetSubordinates().remove(treeEmployee);
+  }
+  
+  /**
+   * Returns the <em>required</em> boss property.
+   */
+  public TreeEmployee getBoss() {
+    checkDisposed();
+    return this.boss;
+  }
+  
+  /**
+   * Sets the boss property to this instance.
+   * Since the reference is a container reference, the opposite reference (TreeEmployee.subordinates)
+   * of the boss will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link TreeEmployee#setSubordinates(TreeEmployee)}.
+   */
+  public void setBoss(final TreeEmployee boss) {
+    checkDisposed();
+    if (this.boss != null) {
+      this.boss.internalRemoveFromSubordinates(this);
+    }
+    this.boss = boss;
+    if (this.boss != null) {
+      this.boss.internalAddToSubordinates(this);
+    }
+    
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    TreeEmployee other = (TreeEmployee) obj;
+    if (other.id != this.id)
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + (int) (this.id ^ (this.id >>> 32));
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/SelfreferenceDtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/SelfreferenceDtosTranslator.java
new file mode 100644
index 0000000..15cf64c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/SelfreferenceDtosTranslator.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TestsSelfreferenceTranslator;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class SelfreferenceDtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static SelfreferenceDtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private static TestsSelfreferenceTranslator testsSelfreferenceTranslator = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static SelfreferenceDtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.SelfreferenceDtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    testsSelfreferenceTranslator.mergeTranslations();
+    translations.putAll(testsSelfreferenceTranslator.getTranslations());
+    if (log.isDebugEnabled()) log.debug("merge TestsSelfreferenceTranslator in org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos");
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    if (testsSelfreferenceTranslator == null) {
+    	testsSelfreferenceTranslator = testsSelfreferenceTranslator.getInstance(locale);
+    } else {
+    	testsSelfreferenceTranslator.changeLocale(locale);
+    }
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/TreeEmployeeDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/TreeEmployeeDto.java
new file mode 100644
index 0000000..0ab5a3a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/TreeEmployeeDto.java
@@ -0,0 +1,382 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class TreeEmployeeDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private long id;
+  
+  private String Name;
+  
+  @DomainReference
+  @Valid
+  private List<TreeEmployeeDto> subordinates;
+  
+  @DomainReference
+  private TreeEmployeeDto boss;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.subordinates != null) {
+        for (TreeEmployeeDto treeEmployeeDto : this.subordinates) {
+          treeEmployeeDto.dispose();
+        }
+        this.subordinates = null;
+      }
+      
+    }
+    finally {
+      firePropertyChange("disposed", this.disposed, this.disposed = true);
+    }
+    
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link TreeEmployee} to the dto {@link TreeEmployeeDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    subordinates = new org.eclipse.osbp.dsl.dto.lib.LazyLoadingDtoList<>(org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(), TreeEmployeeDto.class, new org.eclipse.osbp.dsl.dto.lib.services.Query(
+    new org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare.Equal("boss.id", getId())));
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the Name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    return this.Name;
+  }
+  
+  /**
+   * Sets the <code>Name</code> property to this instance.
+   * 
+   * @param Name - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setName(final String Name) {
+    firePropertyChange("Name", this.Name, this.Name = Name );
+  }
+  
+  /**
+   * Returns an unmodifiable list of subordinates.
+   */
+  public List<TreeEmployeeDto> getSubordinates() {
+    return Collections.unmodifiableList(internalGetSubordinates());
+  }
+  
+  /**
+   * Returns the list of <code>TreeEmployeeDto</code>s thereby lazy initializing it. For internal use only!
+   * 
+   * @return list - the resulting list
+   * 
+   */
+  private List<TreeEmployeeDto> internalGetSubordinates() {
+    if (this.subordinates == null) {
+      this.subordinates = new java.util.ArrayList<TreeEmployeeDto>();
+    }
+    return this.subordinates;
+  }
+  
+  /**
+   * Adds the given treeEmployeeDto to this object. <p>
+   * Since the reference is a composition reference, the opposite reference <code>TreeEmployeeDto#boss</code> of the <code>treeEmployeeDto</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+   * See {@link TreeEmployeeDto#setBoss(TreeEmployeeDto)}.
+   * 
+   * @param treeEmployeeDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void addToSubordinates(final TreeEmployeeDto treeEmployeeDto) {
+    checkDisposed();
+    
+    treeEmployeeDto.setBoss(this);
+  }
+  
+  /**
+   * Removes the given treeEmployeeDto from this object. <p>
+   * 
+   * @param treeEmployeeDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void removeFromSubordinates(final TreeEmployeeDto treeEmployeeDto) {
+    checkDisposed();
+    
+    treeEmployeeDto.setBoss(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToSubordinates(final TreeEmployeeDto treeEmployeeDto) {
+    internalGetSubordinates().add(treeEmployeeDto);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromSubordinates(final TreeEmployeeDto treeEmployeeDto) {
+    internalGetSubordinates().remove(treeEmployeeDto);
+  }
+  
+  /**
+   * Sets the <code>subordinates</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>TreeEmployeeDto#
+   * boss</code> of the <code>subordinates</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link TreeEmployeeDto#setBoss(TreeEmployeeDto)
+   * 
+   * @param subordinates - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setSubordinates(final List<TreeEmployeeDto> subordinates) {
+    checkDisposed();
+    for (TreeEmployeeDto dto : internalGetSubordinates().toArray(new TreeEmployeeDto[this.subordinates.size()])) {
+    	removeFromSubordinates(dto);
+    }
+    
+    if(subordinates == null) {
+    	return;
+    }
+    
+    for (TreeEmployeeDto dto : subordinates) {
+    	addToSubordinates(dto);
+    }
+  }
+  
+  /**
+   * Returns the <em>required</em> boss property.
+   */
+  public TreeEmployeeDto getBoss() {
+    return this.boss;
+  }
+  
+  /**
+   * Sets the <code>boss</code> property to this instance.
+   * 
+   * @param boss - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setBoss(final TreeEmployeeDto boss) {
+    checkDisposed();
+    firePropertyChange("boss", this.boss, this.boss = boss);
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    TreeEmployeeDto other = (TreeEmployeeDto) obj;
+    if (other.id != this.id)
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + (int) (this.id ^ (this.id >>> 32));
+    return result;
+  }
+  
+  public TreeEmployeeDto createDto() {
+    return new TreeEmployeeDto();
+  }
+  
+  public TreeEmployeeDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    TreeEmployeeDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final TreeEmployeeDto dto, final TreeEmployeeDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy Name
+    newDto.setName(getName());
+    
+    // copy containment references (cascading is true)
+    // copy list of subordinates dtos
+    for(org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.TreeEmployeeDto _dto : getSubordinates()) {
+    	newDto.addToSubordinates(_dto.copy(context));
+    }
+  }
+  
+  public void copyCrossReferences(final TreeEmployeeDto dto, final TreeEmployeeDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+    // copy dto boss
+    if(getBoss() != null) {
+    	newDto.setBoss(getBoss().copy(context));
+    }
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/mapper/TreeEmployeeDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/mapper/TreeEmployeeDtoMapper.java
new file mode 100644
index 0000000..ef793ef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/mapper/TreeEmployeeDtoMapper.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.mapper;
+
+import java.util.List;
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TreeEmployee;
+import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.TreeEmployeeDto;
+
+/**
+ * This class maps the dto {@link TreeEmployeeDto} to and from the entity {@link TreeEmployee}.
+ * 
+ */
+@SuppressWarnings("all")
+public class TreeEmployeeDtoMapper<DTO extends TreeEmployeeDto, ENTITY extends TreeEmployee> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public TreeEmployee createEntity() {
+    return new TreeEmployee();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public TreeEmployeeDto createDto() {
+    return new TreeEmployeeDto();
+  }
+  
+  /**
+   * Maps the entity {@link TreeEmployee} to the dto {@link TreeEmployeeDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final TreeEmployeeDto dto, final TreeEmployee entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setName(toDto_Name(entity, context));
+    dto.setBoss(toDto_boss(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link TreeEmployeeDto} to the entity {@link TreeEmployee}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final TreeEmployeeDto dto, final TreeEmployee entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setName(toEntity_Name(dto, context));
+    if(entity.getSubordinates().isEmpty()) {
+    	List<TreeEmployee> subordinates_entities = new java.util.ArrayList<TreeEmployee>();
+    	for(TreeEmployee _entityValue : toEntity_subordinates(dto, context)) {
+    		subordinates_entities.add(_entityValue);
+    	}
+    	entity.setSubordinates(subordinates_entities);
+    }
+    entity.setBoss(toEntity_boss(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toDto_id(final TreeEmployee in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected long toEntity_id(final TreeEmployeeDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property Name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_Name(final TreeEmployee in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property Name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_Name(final TreeEmployeeDto in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property subordinates from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<TreeEmployeeDto> toDto_subordinates(final TreeEmployee in, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<TreeEmployeeDto, TreeEmployee> mapper = getToDtoMapper(TreeEmployeeDto.class, TreeEmployee.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    } 
+    
+    if (context.isDetectRecursion(TreeEmployeeDto.class)) {
+    	return java.util.Collections.emptyList();
+    }
+    
+    context.increaseLevel();
+    List<TreeEmployeeDto> results = new java.util.ArrayList<TreeEmployeeDto>();
+    for (TreeEmployee _entity : in.getSubordinates()) {
+    	TreeEmployeeDto _dto = context.get(mapper.createDtoHash(_entity));
+    	if (_dto == null) {
+    		_dto = mapper.createDto();
+    		mapper.mapToDTO(_dto, _entity, context);
+    	} else {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(_dto, _entity, context);
+    		}
+    	}
+    	results.add(_dto);
+    }
+    context.decreaseLevel();
+    return results;
+  }
+  
+  /**
+   * Maps the property subordinates from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected List<TreeEmployee> toEntity_subordinates(final TreeEmployeeDto in, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<TreeEmployeeDto, TreeEmployee> mapper = getToEntityMapper(TreeEmployeeDto.class, TreeEmployee.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    List<TreeEmployee> results = new java.util.ArrayList<TreeEmployee>();
+    for (TreeEmployeeDto _dto : in.getSubordinates()) {
+    	TreeEmployee _entity = context.get(mapper.createEntityHash(_dto));
+    	if(_entity == null) {
+    		_entity = mapper.createEntity();
+    		mapper.mapToEntity(_dto, _entity, context);
+    	}
+    	results.add(_entity);
+    }
+    return results;
+  }
+  
+  /**
+   * Maps the property boss from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected TreeEmployeeDto toDto_boss(final TreeEmployee in, final MappingContext context) {
+    if(in.getBoss() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<TreeEmployeeDto, TreeEmployee> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<TreeEmployeeDto, TreeEmployee>) getToDtoMapper(TreeEmployeeDto.class, in.getBoss().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	TreeEmployeeDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getBoss()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getBoss(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getBoss(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property boss from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected TreeEmployee toEntity_boss(final TreeEmployeeDto in, final MappingContext context) {
+    if(in.getBoss() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<TreeEmployeeDto, TreeEmployee> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<TreeEmployeeDto, TreeEmployee>) getToEntityMapper(in.getBoss().getClass(), TreeEmployee.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	TreeEmployee entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getBoss()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getBoss(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(TreeEmployeeDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(TreeEmployee.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/services/TreeEmployeeService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/services/TreeEmployeeService.java
new file mode 100644
index 0000000..ee1a7d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/dtos/services/TreeEmployeeService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TreeEmployee;
+import org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.dtos.TreeEmployeeDto;
+
+@SuppressWarnings("all")
+public class TreeEmployeeService extends AbstractDTOServiceWithMutablePersistence<TreeEmployeeDto, TreeEmployee> {
+  public TreeEmployeeService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<TreeEmployeeDto> getDtoClass() {
+    return TreeEmployeeDto.class;
+  }
+  
+  public Class<TreeEmployee> getEntityClass() {
+    return TreeEmployee.class;
+  }
+  
+  public Object getId(final TreeEmployeeDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/ABar.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/ABar.java
new file mode 100644
index 0000000..2a8e4eb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/ABar.java
@@ -0,0 +1,107 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.common;
+
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "A_BAR")
+@DiscriminatorValue(value = "A_BAR")
+@SuppressWarnings("all")
+public class ABar implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private Long id;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final Long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    ABar other = (ABar) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/DocumentationCommonTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/DocumentationCommonTranslator.java
new file mode 100644
index 0000000..0fe72d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/DocumentationCommonTranslator.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.common;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class DocumentationCommonTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static org.eclipse.osbp.entitydsl.documentation.common.DocumentationCommonTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    		put("org.eclipse.osbp.entitydsl.documentation.common.abar","abar");
+    		put("org.eclipse.osbp.entitydsl.documentation.common.id","id");
+    }};
+  
+  private static String abar;
+  
+  private static String id;
+  
+  public static org.eclipse.osbp.entitydsl.documentation.common.DocumentationCommonTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.entitydsl.documentation.common.DocumentationCommonTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public String getAbar() {
+    if (log.isDebugEnabled()) log.debug("getAbar returns:"+this.abar);
+    return this.abar;
+  }
+  
+  public String getId() {
+    if (log.isDebugEnabled()) log.debug("getId returns:"+this.id);
+    return this.id;
+  }
+  
+  public void setAbar(final String newAbar) {
+    if (log.isDebugEnabled()) log.debug("setAbar called:"+newAbar);
+    String oldAbar = this.abar;
+    this.abar = newAbar;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.common.abar", newAbar);
+    this.pcs.firePropertyChange("abar", oldAbar, newAbar);
+  }
+  
+  public void setId(final String newId) {
+    if (log.isDebugEnabled()) log.debug("setId called:"+newId);
+    String oldId = this.id;
+    this.id = newId;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.common.id", newId);
+    this.pcs.firePropertyChange("id", oldId, newId);
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.common is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.common already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.common set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    	try {
+    		setAbar(resource.getString("org.eclipse.osbp.entitydsl.documentation.common.abar"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setId(resource.getString("org.eclipse.osbp.entitydsl.documentation.common.id"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/ABarDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/ABarDto.java
new file mode 100644
index 0000000..286d10c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/ABarDto.java
@@ -0,0 +1,223 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.common.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class ABarDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private Long id;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link ABar} to the dto {@link ABarDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final Long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    ABarDto other = (ABarDto) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+  
+  public ABarDto createDto() {
+    return new ABarDto();
+  }
+  
+  public ABarDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    ABarDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final ABarDto dto, final ABarDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final ABarDto dto, final ABarDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/CommonDtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/CommonDtosTranslator.java
new file mode 100644
index 0000000..647cfce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/CommonDtosTranslator.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.common.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.entitydsl.documentation.common.DocumentationCommonTranslator;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class CommonDtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static CommonDtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private static DocumentationCommonTranslator documentationCommonTranslator = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static CommonDtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.entitydsl.documentation.common.dtos.CommonDtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    documentationCommonTranslator.mergeTranslations();
+    translations.putAll(documentationCommonTranslator.getTranslations());
+    if (log.isDebugEnabled()) log.debug("merge DocumentationCommonTranslator in org.eclipse.osbp.entitydsl.documentation.common.dtos");
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.common.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.common.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.common.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    if (documentationCommonTranslator == null) {
+    	documentationCommonTranslator = documentationCommonTranslator.getInstance(locale);
+    } else {
+    	documentationCommonTranslator.changeLocale(locale);
+    }
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/mapper/ABarDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/mapper/ABarDtoMapper.java
new file mode 100644
index 0000000..2d0467f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/mapper/ABarDtoMapper.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.common.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.entitydsl.documentation.common.ABar;
+import org.eclipse.osbp.entitydsl.documentation.common.dtos.ABarDto;
+
+/**
+ * This class maps the dto {@link ABarDto} to and from the entity {@link ABar}.
+ * 
+ */
+@SuppressWarnings("all")
+public class ABarDtoMapper<DTO extends ABarDto, ENTITY extends ABar> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public ABar createEntity() {
+    return new ABar();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public ABarDto createDto() {
+    return new ABarDto();
+  }
+  
+  /**
+   * Maps the entity {@link ABar} to the dto {@link ABarDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final ABarDto dto, final ABar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link ABarDto} to the entity {@link ABar}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final ABarDto dto, final ABar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_id(final ABar in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_id(final ABarDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ABarDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ABar.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/services/ABarService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/services/ABarService.java
new file mode 100644
index 0000000..5d213b9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/common/dtos/services/ABarService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.common.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.entitydsl.documentation.common.ABar;
+import org.eclipse.osbp.entitydsl.documentation.common.dtos.ABarDto;
+
+@SuppressWarnings("all")
+public class ABarService extends AbstractDTOServiceWithMutablePersistence<ABarDto, ABar> {
+  public ABarService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<ABarDto> getDtoClass() {
+    return ABarDto.class;
+  }
+  
+  public Class<ABar> getEntityClass() {
+    return ABar.class;
+  }
+  
+  public Object getId(final ABarDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/Bar.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/Bar.java
new file mode 100644
index 0000000..4b278c3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/Bar.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.entitydsl.documentation.demo.Foo;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@DiscriminatorValue(value = "BAR")
+@SuppressWarnings("all")
+public class Bar extends Foo implements IEntity {
+  @Column(name = "NUMBER")
+  private Long number;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the number property or <code>null</code> if not present.
+   */
+  public Long getNumber() {
+    checkDisposed();
+    return this.number;
+  }
+  
+  /**
+   * Sets the number property to this instance.
+   */
+  public void setNumber(final Long number) {
+    checkDisposed();
+    this.number = number;
+  }
+  
+  public String getnumberasstring() {
+    return Long.toString((this.number).longValue());
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/DocumentationDemoTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/DocumentationDemoTranslator.java
new file mode 100644
index 0000000..2a8d435
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/DocumentationDemoTranslator.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class DocumentationDemoTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static org.eclipse.osbp.entitydsl.documentation.demo.DocumentationDemoTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    		put("org.eclipse.osbp.entitydsl.documentation.demo.bar","bar");
+    		put("org.eclipse.osbp.entitydsl.documentation.demo.foo","foo");
+    		put("org.eclipse.osbp.entitydsl.documentation.demo.getnumberasstring","getnumberasstring");
+    		put("org.eclipse.osbp.entitydsl.documentation.demo.id","id");
+    		put("org.eclipse.osbp.entitydsl.documentation.demo.name","name");
+    		put("org.eclipse.osbp.entitydsl.documentation.demo.number","number");
+    }};
+  
+  private static String bar;
+  
+  private static String foo;
+  
+  private static String getnumberasstring;
+  
+  private static String id;
+  
+  private static String name;
+  
+  private static String number;
+  
+  public static org.eclipse.osbp.entitydsl.documentation.demo.DocumentationDemoTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.entitydsl.documentation.demo.DocumentationDemoTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public String getBar() {
+    if (log.isDebugEnabled()) log.debug("getBar returns:"+this.bar);
+    return this.bar;
+  }
+  
+  public String getFoo() {
+    if (log.isDebugEnabled()) log.debug("getFoo returns:"+this.foo);
+    return this.foo;
+  }
+  
+  public String getGetnumberasstring() {
+    if (log.isDebugEnabled()) log.debug("getGetnumberasstring returns:"+this.getnumberasstring);
+    return this.getnumberasstring;
+  }
+  
+  public String getId() {
+    if (log.isDebugEnabled()) log.debug("getId returns:"+this.id);
+    return this.id;
+  }
+  
+  public String getName() {
+    if (log.isDebugEnabled()) log.debug("getName returns:"+this.name);
+    return this.name;
+  }
+  
+  public String getNumber() {
+    if (log.isDebugEnabled()) log.debug("getNumber returns:"+this.number);
+    return this.number;
+  }
+  
+  public void setBar(final String newBar) {
+    if (log.isDebugEnabled()) log.debug("setBar called:"+newBar);
+    String oldBar = this.bar;
+    this.bar = newBar;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.demo.bar", newBar);
+    this.pcs.firePropertyChange("bar", oldBar, newBar);
+  }
+  
+  public void setFoo(final String newFoo) {
+    if (log.isDebugEnabled()) log.debug("setFoo called:"+newFoo);
+    String oldFoo = this.foo;
+    this.foo = newFoo;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.demo.foo", newFoo);
+    this.pcs.firePropertyChange("foo", oldFoo, newFoo);
+  }
+  
+  public void setGetnumberasstring(final String newGetnumberasstring) {
+    if (log.isDebugEnabled()) log.debug("setGetnumberasstring called:"+newGetnumberasstring);
+    String oldGetnumberasstring = this.getnumberasstring;
+    this.getnumberasstring = newGetnumberasstring;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.demo.getnumberasstring", newGetnumberasstring);
+    this.pcs.firePropertyChange("getnumberasstring", oldGetnumberasstring, newGetnumberasstring);
+  }
+  
+  public void setId(final String newId) {
+    if (log.isDebugEnabled()) log.debug("setId called:"+newId);
+    String oldId = this.id;
+    this.id = newId;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.demo.id", newId);
+    this.pcs.firePropertyChange("id", oldId, newId);
+  }
+  
+  public void setName(final String newName) {
+    if (log.isDebugEnabled()) log.debug("setName called:"+newName);
+    String oldName = this.name;
+    this.name = newName;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.demo.name", newName);
+    this.pcs.firePropertyChange("name", oldName, newName);
+  }
+  
+  public void setNumber(final String newNumber) {
+    if (log.isDebugEnabled()) log.debug("setNumber called:"+newNumber);
+    String oldNumber = this.number;
+    this.number = newNumber;
+    translations.put("org.eclipse.osbp.entitydsl.documentation.demo.number", newNumber);
+    this.pcs.firePropertyChange("number", oldNumber, newNumber);
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.demo is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.demo already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.demo set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    	try {
+    		setBar(resource.getString("org.eclipse.osbp.entitydsl.documentation.demo.bar"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setFoo(resource.getString("org.eclipse.osbp.entitydsl.documentation.demo.foo"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setGetnumberasstring(resource.getString("org.eclipse.osbp.entitydsl.documentation.demo.getnumberasstring"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setId(resource.getString("org.eclipse.osbp.entitydsl.documentation.demo.id"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setName(resource.getString("org.eclipse.osbp.entitydsl.documentation.demo.name"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    	try {
+    		setNumber(resource.getString("org.eclipse.osbp.entitydsl.documentation.demo.number"));
+    	} catch (Exception e) {
+    		log.error(getClass().getCanonicalName()+" - "+e.getLocalizedMessage());
+    	}
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/Foo.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/Foo.java
new file mode 100644
index 0000000..417ffba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/Foo.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.DiscriminatorType;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Transient;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
+@DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING)
+@DiscriminatorValue(value = "FOO")
+@SuppressWarnings("all")
+public class Foo implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private Long id;
+  
+  @Column(name = "NAME")
+  private String name;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final Long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    checkDisposed();
+    return this.name;
+  }
+  
+  /**
+   * Sets the name property to this instance.
+   */
+  public void setName(final String name) {
+    checkDisposed();
+    this.name = name;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    Foo other = (Foo) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/BarDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/BarDto.java
new file mode 100644
index 0000000..641f05d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/BarDto.java
@@ -0,0 +1,150 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.entitydsl.documentation.demo.dtos.FooDto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class BarDto extends FooDto implements IDto, Serializable, PropertyChangeListener {
+  private Long number;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Bar} to the dto {@link BarDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Returns the number property or <code>null</code> if not present.
+   */
+  public Long getNumber() {
+    return this.number;
+  }
+  
+  /**
+   * Sets the <code>number</code> property to this instance.
+   * 
+   * @param number - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setNumber(final Long number) {
+    firePropertyChange("number", this.number, this.number = number );
+  }
+  
+  public BarDto createDto() {
+    return new BarDto();
+  }
+  
+  public BarDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    BarDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final BarDto dto, final BarDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy number
+    newDto.setNumber(getNumber());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final BarDto dto, final BarDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/DemoDtosTranslator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/DemoDtosTranslator.java
new file mode 100644
index 0000000..3e99ef7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/DemoDtosTranslator.java
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.HashMap;
+import java.util.Locale;
+import org.eclipse.osbp.entitydsl.documentation.demo.DocumentationDemoTranslator;
+import org.eclipse.osbp.runtime.common.i18n.ITranslator;
+import org.slf4j.Logger;
+
+@SuppressWarnings("all")
+public class DemoDtosTranslator implements ITranslator {
+  private static Logger log = org.slf4j.LoggerFactory.getLogger("translations by translator");
+  
+  private static DemoDtosTranslator instance = null;
+  
+  private static Locale lastLocale = null;
+  
+  private static DocumentationDemoTranslator documentationDemoTranslator = null;
+  
+  private PropertyChangeSupport pcs = new java.beans.PropertyChangeSupport(this);
+  
+  private HashMap<String, String> translations = new HashMap<String,String>() {{
+    }};
+  
+  public static DemoDtosTranslator getInstance(final Locale locale) {
+    if(instance == null) {
+    	instance = new org.eclipse.osbp.entitydsl.documentation.demo.dtos.DemoDtosTranslator();
+    	if (lastLocale == null) {
+    		instance.changeLocale(locale);
+    	}
+    }
+    return instance;
+  }
+  
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.addPropertyChangeListener(listener);
+  }
+  
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    this.pcs.removePropertyChangeListener(listener);
+  }
+  
+  public void mergeTranslations() {
+    documentationDemoTranslator.mergeTranslations();
+    translations.putAll(documentationDemoTranslator.getTranslations());
+    if (log.isDebugEnabled()) log.debug("merge DocumentationDemoTranslator in org.eclipse.osbp.entitydsl.documentation.demo.dtos");
+    
+  }
+  
+  public HashMap<String, String> getTranslations() {
+    return translations;
+  }
+  
+  public void changeLocale(final Locale locale) {
+    // avoid unnecessary settings
+    if (locale == null) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.demo.dtos is null.");
+    	return;
+    }
+    if (locale.equals(lastLocale)) {
+    	if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.demo.dtos already set to "+locale.getDisplayLanguage());
+    	return;
+    }
+    if (log.isDebugEnabled()) log.debug("locale for org.eclipse.osbp.entitydsl.documentation.demo.dtos set to "+locale.getDisplayLanguage());
+    lastLocale = locale;
+    // call the imported translators change locale method
+    if (documentationDemoTranslator == null) {
+    	documentationDemoTranslator = documentationDemoTranslator.getInstance(locale);
+    } else {
+    	documentationDemoTranslator.changeLocale(locale);
+    }
+    try {
+    	java.util.ResourceBundle resource = java.util.ResourceBundle.getBundle("i18n.I18N", locale, getClass().getClassLoader());
+    } catch (java.util.MissingResourceException mre) {
+    	System.err.println(getClass().getCanonicalName()+" - "+mre.getLocalizedMessage());
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/FooDto.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/FooDto.java
new file mode 100644
index 0000000..68a8eea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/FooDto.java
@@ -0,0 +1,245 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@SuppressWarnings("all")
+public class FooDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private Long id;
+  
+  private String name;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link Foo} to the dto {@link FooDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public Long getId() {
+    return this.id;
+  }
+  
+  /**
+   * Sets the <code>id</code> property to this instance.
+   * 
+   * @param id - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setId(final Long id) {
+    firePropertyChange("id", this.id, this.id = id );
+    				installLazyCollections();
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    return this.name;
+  }
+  
+  /**
+   * Sets the <code>name</code> property to this instance.
+   * 
+   * @param name - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setName(final String name) {
+    firePropertyChange("name", this.name, this.name = name );
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    FooDto other = (FooDto) obj;
+    if (this.id == null) {
+      if (other.id != null)
+        return false;
+    } else if (!this.id.equals(other.id))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.id== null) ? 0 : this.id.hashCode());
+    return result;
+  }
+  
+  public FooDto createDto() {
+    return new FooDto();
+  }
+  
+  public FooDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    FooDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final FooDto dto, final FooDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy id
+    newDto.setId(getId());
+    // copy name
+    newDto.setName(getName());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final FooDto dto, final FooDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/mapper/BarDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/mapper/BarDtoMapper.java
new file mode 100644
index 0000000..12a983c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/mapper/BarDtoMapper.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.entitydsl.documentation.demo.Bar;
+import org.eclipse.osbp.entitydsl.documentation.demo.dtos.BarDto;
+import org.eclipse.osbp.entitydsl.documentation.demo.dtos.mapper.FooDtoMapper;
+
+/**
+ * This class maps the dto {@link BarDto} to and from the entity {@link Bar}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BarDtoMapper<DTO extends BarDto, ENTITY extends Bar> extends FooDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public Bar createEntity() {
+    return new Bar();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BarDto createDto() {
+    return new BarDto();
+  }
+  
+  /**
+   * Maps the entity {@link Bar} to the dto {@link BarDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BarDto dto, final Bar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setNumber(toDto_number(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BarDto} to the entity {@link Bar}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BarDto dto, final Bar entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setNumber(toEntity_number(dto, context));
+  }
+  
+  /**
+   * Maps the property number from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_number(final Bar in, final MappingContext context) {
+    return in.getNumber();
+  }
+  
+  /**
+   * Maps the property number from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_number(final BarDto in, final MappingContext context) {
+    return in.getNumber();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BarDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Bar.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/mapper/FooDtoMapper.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/mapper/FooDtoMapper.java
new file mode 100644
index 0000000..6ab437b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/mapper/FooDtoMapper.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.entitydsl.documentation.demo.Foo;
+import org.eclipse.osbp.entitydsl.documentation.demo.dtos.FooDto;
+
+/**
+ * This class maps the dto {@link FooDto} to and from the entity {@link Foo}.
+ * 
+ */
+@SuppressWarnings("all")
+public class FooDtoMapper<DTO extends FooDto, ENTITY extends Foo> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public Foo createEntity() {
+    return new Foo();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public FooDto createDto() {
+    return new FooDto();
+  }
+  
+  /**
+   * Maps the entity {@link Foo} to the dto {@link FooDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final FooDto dto, final Foo entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+    dto.setName(toDto_name(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link FooDto} to the entity {@link Foo}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final FooDto dto, final Foo entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, context));
+    entity.setName(toEntity_name(dto, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toDto_id(final Foo in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected Long toEntity_id(final FooDto in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_name(final Foo in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  /**
+   * Maps the property name from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_name(final FooDto in, final MappingContext context) {
+    return in.getName();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(FooDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(Foo.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/services/BarService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/services/BarService.java
new file mode 100644
index 0000000..c39d7fa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/services/BarService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.entitydsl.documentation.demo.Bar;
+import org.eclipse.osbp.entitydsl.documentation.demo.dtos.BarDto;
+
+@SuppressWarnings("all")
+public class BarService extends AbstractDTOServiceWithMutablePersistence<BarDto, Bar> {
+  public BarService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<BarDto> getDtoClass() {
+    return BarDto.class;
+  }
+  
+  public Class<Bar> getEntityClass() {
+    return Bar.class;
+  }
+  
+  public Object getId(final BarDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/services/FooService.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/services/FooService.java
new file mode 100644
index 0000000..560c2db
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src-gen/org/eclipse/osbp/entitydsl/documentation/demo/dtos/services/FooService.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.entitydsl.documentation.demo.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.entitydsl.documentation.demo.Foo;
+import org.eclipse.osbp.entitydsl.documentation.demo.dtos.FooDto;
+
+@SuppressWarnings("all")
+public class FooService extends AbstractDTOServiceWithMutablePersistence<FooDto, Foo> {
+  public FooService() {
+    // set the default persistence ID
+    setPersistenceId("TBD");
+  }
+  
+  public Class<FooDto> getDtoClass() {
+    return FooDto.class;
+  }
+  
+  public Class<Foo> getEntityClass() {
+    return Foo.class;
+  }
+  
+  public Object getId(final FooDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/META-INF/persistence.xml b/org.eclipse.osbp.dsl.entity.xtext.tests/src/META-INF/persistence.xml
new file mode 100644
index 0000000..039ac7b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/META-INF/persistence.xml
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
+	
+	<persistence-unit name="testcarstore"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Address</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Car</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Customer</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Employee</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Manufacturer</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Person</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.UsedCar</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+	<persistence-unit name="carstore2test"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Address</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Car</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Customer</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Employee</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Manufacturer</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.Person</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2.UsedCar</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+	<persistence-unit name="model1" transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model1.BaseEntity</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model1.House</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+	<persistence-unit name="model2" transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model2.BaseEntity</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model2.House</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model2.Hotel</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model2.BigHotel</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model2.SmallHotel</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+	<persistence-unit name="testcarstore3"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore3.Car</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore3.Manufacturer</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+
+	<persistence-unit name="classinheritance"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseByClass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneByClass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoByClass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.BaseBySubclass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.OneBySubclass</class>
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance.TwoBySubclass</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+	<persistence-unit name="blobtests"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.blobtests.Foobar</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+		<persistence-unit name="selfreftests"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.eclipse.osbp.dsl.entity.xtext.tests.selfreference.TreeEmployee</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+		</properties>
+	</persistence-unit>
+	
+</persistence> 
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/AbstractJPATest.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/AbstractJPATest.java
new file mode 100644
index 0000000..d3632cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/AbstractJPATest.java
@@ -0,0 +1,46 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.spi.PersistenceProvider;
+import javax.persistence.spi.PersistenceProviderResolver;
+import javax.persistence.spi.PersistenceProviderResolverHolder;
+
+import org.eclipse.persistence.config.PersistenceUnitProperties;
+
+public class AbstractJPATest {
+
+	protected Map<String, Object> properties = new HashMap<String, Object>();
+
+	public void setUp() throws Exception {
+		PersistenceProviderResolverHolder
+				.setPersistenceProviderResolver(new PersistenceProviderResolver() {
+					private List<PersistenceProvider> providers = new ArrayList<PersistenceProvider>();
+
+					@Override
+					public List<PersistenceProvider> getPersistenceProviders() {
+						org.eclipse.persistence.jpa.PersistenceProvider provider = new org.eclipse.persistence.jpa.PersistenceProvider();
+						providers.add(provider);
+						return providers;
+					}
+
+					@Override
+					public void clearCachedProviders() {
+						providers.clear();
+					}
+				});
+		properties.put(PersistenceUnitProperties.CLASSLOADER, getClass()
+				.getClassLoader());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/Activator.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/Activator.java
new file mode 100644
index 0000000..545fc75
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/Activator.java
@@ -0,0 +1,58 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+public class Activator implements BundleActivator {
+
+	public BundleContext context;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		this.context = context;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		this.context = null;
+	}
+
+	/**
+	 * Returns the entity manager factory or <code>null</code>.
+	 * 
+	 * @return
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public static EntityManagerFactory getEMF() {
+		BundleContext context = FrameworkUtil.getBundle(Activator.class)
+				.getBundleContext();
+		ServiceReference[] refs;
+		try {
+			refs = context.getServiceReferences(
+					EntityManagerFactory.class.getName(),
+					"(osgi.unit.name=dbDerby)");
+			if (refs != null) {
+				return (EntityManagerFactory) context.getService(refs[0]);
+			}
+		} catch (InvalidSyntaxException e) {
+			throw new RuntimeException(e);
+		}
+
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/BlobTests.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/BlobTests.java
new file mode 100644
index 0000000..7d5ca2a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/blobtests/BlobTests.java
@@ -0,0 +1,194 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Klemens Edler - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.blobtests;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
+
+public class BlobTests extends AbstractJPATest {
+
+	private static final String PERSISTENCE_UNIT_NAME = "blobtests";
+	private static EntityManagerFactory emf;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+		
+		emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
+
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+
+		Foobar foobar1 = new Foobar();
+		Foobar foobar2 = new Foobar();
+		Foobar foobar3 = new Foobar();
+
+		foobar1.setMyblob("asdfasdf".getBytes());
+		foobar2.setMyblob("qwerqwerq".getBytes());
+		foobar3.setMyblob("yxcvyxcvyx".getBytes());
+		
+
+		foobar1.setName("Aaa");
+		foobar2.setName("Bbb");
+		foobar3.setName("Ccc");
+
+		txn.begin();
+		em.persist(foobar1);
+		em.persist(foobar2);
+		em.persist(foobar3);
+		txn.commit();
+
+	}
+
+	
+	/**
+	 * Check that UUIDS are strings and unique
+	 */
+	@Test
+	public void test01() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		
+		Foobar aaaFoobar = new Foobar();
+		Foobar bbbFoobar = new Foobar();
+		Foobar cccFoobar = new Foobar();
+
+		
+		txn.begin();
+
+		Query q = em.createQuery("select x from Foobar x where x.name='Aaa'");
+		List<Foobar> list = q.getResultList();
+		assertEquals(1, list.size());
+		for (Foobar f : list) {
+			if (f.getName().equals("Aaa")){
+				aaaFoobar = f;
+				assertTrue(f.getId() instanceof String);
+			}
+		}
+		q = em.createQuery("select x from Foobar x where x.name='Bbb'");
+		list = q.getResultList();
+		assertEquals(1, list.size());
+		for (Foobar f : list) {
+			if (f.getName().equals("Bbb")){
+				bbbFoobar = f;
+				assertTrue(f.getId() instanceof String);
+			}
+		}
+		q = em.createQuery("select x from Foobar x where x.name='Bbb'");
+		list = q.getResultList();
+		assertEquals(1, list.size());
+		for (Foobar f : list) {
+			if (f.getName().equals("Ccc")){
+				bbbFoobar = f;
+				assertTrue(f.getId() instanceof String);
+				
+			}
+		}
+		
+		String aaaUuid = aaaFoobar.getId();
+		String bbbUuid = bbbFoobar.getId();
+		String cccUuid = cccFoobar.getId();
+		assertNotEquals(aaaUuid, bbbUuid);
+		assertNotEquals(aaaUuid, cccUuid);
+		assertNotEquals(cccUuid, bbbUuid);
+
+		txn.commit();
+	}
+
+	/**
+	 * Check that all entities have been persisted in a single table
+	 */
+	@Test
+	public void test02() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select x from Foobar x");
+		List<Foobar> list = q.getResultList();
+		assertEquals(3, list.size());
+
+		txn.commit();
+	}
+	
+	/**
+	 * Check that blob length has been preserved
+	 */
+	@Test
+	public void test03() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select x from Foobar x");
+		List<Foobar> list = q.getResultList();
+		for(Foobar f: list) {
+			if(f.getName().equals("Aaa")){
+				assertEquals(8, f.getMyblob().length);
+			}
+			if(f.getName().equals("Bbb")){
+				assertEquals(9, f.getMyblob().length);
+			}
+			if(f.getName().equals("Ccc")){
+				assertEquals(10, f.getMyblob().length);
+			}
+		}
+
+		txn.commit();
+	}
+	
+	/**
+	 * Check that blobs can be read correctly from database
+	 */
+	@Test
+	public void test04() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select x from Foobar x");
+		List<Foobar> list = q.getResultList();
+		for(Foobar f: list) {
+			if(f.getName().equals("Aaa")){
+				assertArrayEquals("asdfasdf".getBytes(), f.getMyblob());
+			}
+			if(f.getName().equals("Bbb")){
+				assertArrayEquals("qwerqwerq".getBytes(), f.getMyblob());
+			}
+			if(f.getName().equals("Ccc")){
+				assertArrayEquals("yxcvyxcvyx".getBytes(), f.getMyblob());
+			}
+		}
+
+		txn.commit();
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		emf.close();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/InheritanceTests.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/InheritanceTests.java
new file mode 100644
index 0000000..134487d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/classinheritance/InheritanceTests.java
@@ -0,0 +1,86 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Klemens Edler - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.classinheritance;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
+
+public class InheritanceTests extends AbstractJPATest {
+
+	private static final String PERSISTENCE_UNIT_NAME = "classinheritance";
+	private static EntityManagerFactory emf;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+		
+		emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME, properties);
+
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		
+		BaseByClass bbc = new BaseByClass();
+		BaseBySubclass bbs = new BaseBySubclass();
+		OneByClass obc = new OneByClass();
+		OneBySubclass obs = new OneBySubclass();
+		TwoByClass tbc = new TwoByClass();
+		TwoBySubclass tbs = new TwoBySubclass();
+		
+		txn.begin();
+		em.persist(bbc);
+		em.persist(bbs);
+		em.persist(obc);
+		em.persist(obs);
+		em.persist(tbc);
+		em.persist(tbs);
+		txn.commit();
+	
+	}
+	
+	@Test
+	public void test01() {
+	EntityManager em = emf.createEntityManager();
+	EntityTransaction txn = em.getTransaction();
+	txn.begin();
+
+	Query q = em.createQuery("select x from TwoByClass x");
+	List<TwoByClass> list = q.getResultList();
+	assertEquals(1, list.size());
+	
+	q = em.createQuery("select x from TwoBySubclass x");
+	list = q.getResultList();
+	assertEquals(1, list.size());
+	
+	txn.commit();
+	}
+
+	
+
+	@After
+	public void tearDown() throws Exception {
+		emf.close();
+	}
+	
+
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Address.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Address.java
new file mode 100644
index 0000000..29308d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Address.java
@@ -0,0 +1,132 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1;
+
+import javax.persistence.Basic;
+import javax.persistence.Embeddable;
+
+@Embeddable
+@SuppressWarnings("all")
+public class Address {
+  private boolean disposed;
+  
+  @Basic
+  private String streetname;
+  
+  @Basic
+  private int housenumber;
+  
+  @Basic
+  private String city;
+  
+  @Basic
+  private int zipcode;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the streetname property or <code>null</code> if not present.
+   */
+  public String getStreetname() {
+    checkDisposed();
+    return this.streetname;
+  }
+  
+  /**
+   * Sets the streetname property to this instance.
+   */
+  public void setStreetname(final String streetname) {
+    checkDisposed();
+    this.streetname = streetname;
+  }
+  
+  /**
+   * Returns the housenumber property or <code>null</code> if not present.
+   */
+  public int getHousenumber() {
+    checkDisposed();
+    return this.housenumber;
+  }
+  
+  /**
+   * Sets the housenumber property to this instance.
+   */
+  public void setHousenumber(final int housenumber) {
+    checkDisposed();
+    this.housenumber = housenumber;
+  }
+  
+  /**
+   * Returns the city property or <code>null</code> if not present.
+   */
+  public String getCity() {
+    checkDisposed();
+    return this.city;
+  }
+  
+  /**
+   * Sets the city property to this instance.
+   */
+  public void setCity(final String city) {
+    checkDisposed();
+    this.city = city;
+  }
+  
+  /**
+   * Returns the zipcode property or <code>null</code> if not present.
+   */
+  public int getZipcode() {
+    checkDisposed();
+    return this.zipcode;
+  }
+  
+  /**
+   * Sets the zipcode property to this instance.
+   */
+  public void setZipcode(final int zipcode) {
+    checkDisposed();
+    this.zipcode = zipcode;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Car.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Car.java
new file mode 100644
index 0000000..f85d5fb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Car.java
@@ -0,0 +1,200 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore1;
+
+import java.util.Date;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.DiscriminatorType;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Manufacturer;
+
+@Entity
+@Table(name = "CAR")
+@Inheritance(strategy = InheritanceType.JOINED)
+@DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING)
+@DiscriminatorValue(value = "CAR")
+@SuppressWarnings("all")
+public class Car {
+  @Transient
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private long id;
+  
+  @Column(name = "MODELNAME")
+  private String modelname;
+  
+  @Column(name = "CONSTRUCTIONDATE")
+  @Temporal(value = TemporalType.TIMESTAMP)
+  private Date constructiondate;
+  
+  @Column(name = "PRICE")
+  private int price;
+  
+  @ManyToOne(optional = false, fetch = FetchType.LAZY)
+  @JoinColumn(name = "MANUFACTURER", nullable = false)
+  private Manufacturer manufacturer;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.manufacturer != null) {
+        this.manufacturer.dispose();
+        this.manufacturer = null;
+      }
+      
+    }
+    finally {
+      disposed = true;
+    }
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the modelname property or <code>null</code> if not present.
+   */
+  public String getModelname() {
+    checkDisposed();
+    return this.modelname;
+  }
+  
+  /**
+   * Sets the modelname property to this instance.
+   */
+  public void setModelname(final String modelname) {
+    checkDisposed();
+    this.modelname = modelname;
+  }
+  
+  /**
+   * Returns the constructiondate property or <code>null</code> if not present.
+   */
+  public Date getConstructiondate() {
+    checkDisposed();
+    return this.constructiondate;
+  }
+  
+  /**
+   * Sets the constructiondate property to this instance.
+   */
+  public void setConstructiondate(final Date constructiondate) {
+    checkDisposed();
+    this.constructiondate = constructiondate;
+  }
+  
+  /**
+   * Returns the price property or <code>null</code> if not present.
+   */
+  public int getPrice() {
+    checkDisposed();
+    return this.price;
+  }
+  
+  /**
+   * Sets the price property to this instance.
+   */
+  public void setPrice(final int price) {
+    checkDisposed();
+    this.price = price;
+  }
+  
+  /**
+   * Returns the <em>required</em> manufacturer property.
+   */
+  public Manufacturer getManufacturer() {
+    checkDisposed();
+    return this.manufacturer;
+  }
+  
+  /**
+   * Sets the manufacturer property to this instance.
+   * Since the reference is a container reference, the opposite reference (Manufacturer.cars)
+   * of the manufacturer will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link Manufacturer#setCars(Manufacturer)}.
+   */
+  public void setManufacturer(final Manufacturer manufacturer) {
+    checkDisposed();
+    if (this.manufacturer != null) {
+      this.manufacturer.internalRemoveFromCars(this);
+    }
+    this.manufacturer = manufacturer;
+    if (this.manufacturer != null) {
+      this.manufacturer.internalAddToCars(this);
+    }
+    
+  }
+  
+  void internalSetManufacturer(final Manufacturer manufacturer) {
+    this.manufacturer = manufacturer;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Customer.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Customer.java
new file mode 100644
index 0000000..fbb8eae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Customer.java
@@ -0,0 +1,145 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore1;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Person;
+
+@Entity
+@Table(name = "CUSTOMER")
+@DiscriminatorValue(value = "CUSTOMER")
+@SuppressWarnings("all")
+public class Customer extends Person {
+  @Column(name = "ISSELLER")
+  private boolean isseller;
+  
+  @Column(name = "ISBUYER")
+  private boolean isbuyer;
+  
+  @Column(name = "PHONENUMBER")
+  private String phonenumber;
+  
+  @Column(name = "IBAN")
+  private String iban;
+  
+  @Column(name = "DISCOUNT")
+  private int discount;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the isseller property or <code>null</code> if not present.
+   */
+  public boolean getIsseller() {
+    checkDisposed();
+    return this.isseller;
+  }
+  
+  /**
+   * Sets the isseller property to this instance.
+   */
+  public void setIsseller(final boolean isseller) {
+    checkDisposed();
+    this.isseller = isseller;
+  }
+  
+  /**
+   * Returns the isbuyer property or <code>null</code> if not present.
+   */
+  public boolean getIsbuyer() {
+    checkDisposed();
+    return this.isbuyer;
+  }
+  
+  /**
+   * Sets the isbuyer property to this instance.
+   */
+  public void setIsbuyer(final boolean isbuyer) {
+    checkDisposed();
+    this.isbuyer = isbuyer;
+  }
+  
+  /**
+   * Returns the phonenumber property or <code>null</code> if not present.
+   */
+  public String getPhonenumber() {
+    checkDisposed();
+    return this.phonenumber;
+  }
+  
+  /**
+   * Sets the phonenumber property to this instance.
+   */
+  public void setPhonenumber(final String phonenumber) {
+    checkDisposed();
+    this.phonenumber = phonenumber;
+  }
+  
+  /**
+   * Returns the iban property or <code>null</code> if not present.
+   */
+  public String getIban() {
+    checkDisposed();
+    return this.iban;
+  }
+  
+  /**
+   * Sets the iban property to this instance.
+   */
+  public void setIban(final String iban) {
+    checkDisposed();
+    this.iban = iban;
+  }
+  
+  /**
+   * Returns the discount property or <code>null</code> if not present.
+   */
+  public int getDiscount() {
+    checkDisposed();
+    return this.discount;
+  }
+  
+  /**
+   * Sets the discount property to this instance.
+   */
+  public void setDiscount(final int discount) {
+    checkDisposed();
+    this.discount = discount;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Employee.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Employee.java
new file mode 100644
index 0000000..a56eb7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Employee.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                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Person;
+
+@Entity
+@Table(name = "EMPLOYEE")
+@DiscriminatorValue(value = "EMPLOYEE")
+@SuppressWarnings("all")
+public class Employee extends Person {
+  @Column(name = "EMPLOYEENUMBER")
+  private long employeenumber;
+  
+  @Column(name = "EMPLOYEESINCE")
+  @Temporal(value = TemporalType.TIME)
+  private Date employeesince;
+  
+  @Column(name = "SALARY")
+  private int salary;
+  
+  @Column(name = "JOBDESCRIPTION")
+  private String jobdescription;
+  
+  @ManyToOne(optional = false, fetch = FetchType.LAZY)
+  @JoinColumn(name = "BOSS", nullable = false)
+  private Employee boss;
+  
+  @JoinColumn(name = "SUBORDINATES")
+  @OneToMany(mappedBy = "boss")
+  private List<Employee> subordinates;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the employeenumber property or <code>null</code> if not present.
+   */
+  public long getEmployeenumber() {
+    checkDisposed();
+    return this.employeenumber;
+  }
+  
+  /**
+   * Sets the employeenumber property to this instance.
+   */
+  public void setEmployeenumber(final long employeenumber) {
+    checkDisposed();
+    this.employeenumber = employeenumber;
+  }
+  
+  /**
+   * Returns the employeesince property or <code>null</code> if not present.
+   */
+  public Date getEmployeesince() {
+    checkDisposed();
+    return this.employeesince;
+  }
+  
+  /**
+   * Sets the employeesince property to this instance.
+   */
+  public void setEmployeesince(final Date employeesince) {
+    checkDisposed();
+    this.employeesince = employeesince;
+  }
+  
+  /**
+   * Returns the salary property or <code>null</code> if not present.
+   */
+  public int getSalary() {
+    checkDisposed();
+    return this.salary;
+  }
+  
+  /**
+   * Sets the salary property to this instance.
+   */
+  public void setSalary(final int salary) {
+    checkDisposed();
+    this.salary = salary;
+  }
+  
+  /**
+   * Returns the jobdescription property or <code>null</code> if not present.
+   */
+  public String getJobdescription() {
+    checkDisposed();
+    return this.jobdescription;
+  }
+  
+  /**
+   * Sets the jobdescription property to this instance.
+   */
+  public void setJobdescription(final String jobdescription) {
+    checkDisposed();
+    this.jobdescription = jobdescription;
+  }
+  
+  /**
+   * Returns the <em>required</em> boss property.
+   */
+  public Employee getBoss() {
+    checkDisposed();
+    return this.boss;
+  }
+  
+  /**
+   * Sets the boss property to this instance.
+   * Since the reference is a container reference, the opposite reference (Employee.subordinates)
+   * of the boss will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link Employee#setSubordinates(Employee)}.
+   */
+  public void setBoss(final Employee boss) {
+    checkDisposed();
+    if (this.boss != null) {
+      this.boss.internalRemoveFromSubordinates(this);
+    }
+    this.boss = boss;
+    if (this.boss != null) {
+      this.boss.internalAddToSubordinates(this);
+    }
+    
+  }
+  
+  /**
+   * Returns an unmodifiable list of subordinates.
+   */
+  public List<Employee> getSubordinates() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetSubordinates());
+  }
+  
+  /**
+   * Returns the list of <code>Employee</code>s thereby lazy initializing it.
+   */
+  private List<Employee> internalGetSubordinates() {
+    if (this.subordinates == null) {
+      this.subordinates = new ArrayList<Employee>();
+    }
+    return this.subordinates;
+  }
+  
+  /**
+   * Adds the given employee to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (Employee.boss)
+   * of the employee will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link Employee#setBoss(Employee)}.
+   * 
+   */
+  public void addToSubordinates(final Employee employee) {
+    checkDisposed();
+    employee.setBoss(this);
+  }
+  
+  /**
+   * Removes the given employee from this object. <p>
+   * 
+   */
+  public void removeFromSubordinates(final Employee employee) {
+    checkDisposed();
+    employee.setBoss(null);
+  }
+  
+  void internalAddToSubordinates(final Employee employee) {
+    internalGetSubordinates().add(employee);
+  }
+  
+  void internalRemoveFromSubordinates(final Employee employee) {
+    internalGetSubordinates().remove(employee);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Manufacturer.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Manufacturer.java
new file mode 100644
index 0000000..137fdc7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Manufacturer.java
@@ -0,0 +1,203 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore1;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+import org.eclipse.persistence.annotations.CascadeOnDelete;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Address;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Car;
+
+@Entity
+@Table(name = "MANUFACTURER")
+@DiscriminatorValue(value = "MANUFACTURER")
+@SuppressWarnings("all")
+@CascadeOnDelete
+public class Manufacturer {
+  @Transient
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private long id;
+  
+  @Column(name = "NAME")
+  private String name;
+  
+  @Embedded
+  @Column(name = "ADDRESS")
+  private Address address;
+  
+  @JoinColumn(name = "CARS")
+  @OneToMany(mappedBy = "manufacturer", targetEntity = Car.class, cascade = CascadeType.ALL, orphanRemoval = true)
+  private List<Car> cars;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.cars != null) {
+        for (Car car : this.cars) {
+          car.dispose();
+        }
+        this.cars = null;
+      }
+      
+    }
+    finally {
+      disposed = true;
+    }
+    
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the name property or <code>null</code> if not present.
+   */
+  public String getName() {
+    checkDisposed();
+    return this.name;
+  }
+  
+  /**
+   * Sets the name property to this instance.
+   */
+  public void setName(final String name) {
+    checkDisposed();
+    this.name = name;
+  }
+  
+  /**
+   * Returns the address property or <code>null</code> if not present.
+   */
+  public Address getAddress() {
+    checkDisposed();
+    return this.address;
+  }
+  
+  /**
+   * Sets the address property to this instance.
+   */
+  public void setAddress(final Address address) {
+    checkDisposed();
+    this.address = address;
+  }
+  
+  /**
+   * Returns an unmodifiable list of cars.
+   */
+  public List<Car> getCars() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetCars());
+  }
+  
+  /**
+   * Returns the list of <code>Car</code>s thereby lazy initializing it.
+   */
+  private List<Car> internalGetCars() {
+    if (this.cars == null) {
+      this.cars = new ArrayList<Car>();
+    }
+    return this.cars;
+  }
+  
+  /**
+   * Adds the given car to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (Car.manufacturer)
+   * of the car will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link Car#setManufacturer(Car)}.
+   * 
+   */
+  public void addToCars(final Car car) {
+    checkDisposed();
+    car.setManufacturer(this);
+  }
+  
+  /**
+   * Removes the given car from this object. <p>
+   * Since the reference is a cascading reference, the opposite reference (Car.manufacturer)
+   * of the car will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link Car#setManufacturer(Car)}.
+   * 
+   */
+  public void removeFromCars(final Car car) {
+    checkDisposed();
+    car.setManufacturer(null);
+  }
+  
+  void internalAddToCars(final Car car) {
+    internalGetCars().add(car);
+  }
+  
+  void internalRemoveFromCars(final Car car) {
+    internalGetCars().remove(car);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/ModelTestcarstoreTests.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/ModelTestcarstoreTests.java
new file mode 100644
index 0000000..eea4c90
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/ModelTestcarstoreTests.java
@@ -0,0 +1,370 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
+
+public class ModelTestcarstoreTests extends AbstractJPATest {
+
+	private static final String PERSISTENCE_UNIT_NAME = "testcarstore";
+	private static EntityManagerFactory emf;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+
+		emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME,
+				properties);
+
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+
+		Customer buyer = new Customer();
+		Customer seller = new Customer();
+		Employee boss = new Employee();
+		Employee employee = new Employee();
+		Address buyeraddr = new Address();
+		Address manufactureraddr = new Address();
+		Manufacturer manufacturer = new Manufacturer();
+		Manufacturer manufacturer2 = new Manufacturer();
+		Car car = new Car();
+		Car car2 = new Car();
+		Car car3 = new Car();
+
+		buyer.setFirstname("Bertie");
+		buyer.setLastname("Bowser");
+		buyer.setBirthdate(new Date(1980, 1, 1));
+		seller.setFirstname("Sammy");
+		seller.setLastname("Stevenson");
+		seller.setBirthdate(new Date(1960, 1, 1));
+		employee.setFirstname("Emily");
+		employee.setLastname("Ericsson");
+		employee.setBirthdate(new Date(1990, 1, 1));
+		employee.setBoss(boss);
+		boss.setFirstname("Charles");
+		boss.setLastname("Chiefer");
+		boss.setBirthdate(new Date(1955, 5, 5));
+		boss.setBoss(boss);
+		buyeraddr.setCity("Wien");
+		buyeraddr.setZipcode(1010);
+		buyeraddr.setStreetname("Walfischgasse");
+		buyeraddr.setHousenumber(12);
+		manufacturer.setName("OSBP Racecars");
+		// manufacturer.setAddress(manufactureraddr);
+		manufacturer2.setName("Crashcars");
+		manufactureraddr.setCity("Torino");
+		manufactureraddr.setZipcode(23456);
+		manufactureraddr.setStreetname("Tivoli");
+		manufactureraddr.setHousenumber(34);
+		// buyer.addToAddress(buyeraddr);
+		// manufacturer.setAddress(manufactureraddr);
+		car.setConstructiondate(new Date(2012, 4, 4));
+		car.setModelname("Beta Romeo");
+		car.setManufacturer(manufacturer);
+		car2.setModelname("Wreckcar");
+		car2.setManufacturer(manufacturer2);
+		car3.setModelname("Crashcar");
+		car3.setManufacturer(manufacturer2);
+
+		txn.begin();
+		em.persist(buyer);
+		em.persist(seller);
+		em.persist(boss);
+		em.persist(employee);
+		em.persist(manufacturer);
+		em.persist(manufacturer2);
+		txn.commit();
+
+		assertEquals(1, buyer.getId());
+		assertEquals(2, seller.getId());
+		assertEquals(3, boss.getId());
+		assertEquals(4, employee.getId());
+		assertEquals(5, manufacturer.getId());
+		assertEquals(7, manufacturer2.getId());
+		assertEquals("Bertie", buyer.getFirstname());
+		assertEquals("Bowser", buyer.getLastname());
+		assertEquals("Bertie", buyer.getFirstname());
+
+		List<Employee> elist = em.createQuery(
+				"select e from Employee e where e.id = 4").getResultList();
+		assertEquals(1, elist.size());
+
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		emf.close();
+	}
+
+	/**
+	 * Read from database
+	 */
+	@Test
+	public void test02() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select e from Employee e");
+		List<Employee> elist = q.getResultList();
+		assertEquals(2, elist.size());
+		txn.commit();
+	}
+
+	/**
+	 * Select specific object from db
+	 */
+	@Test
+	public void test03() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select e from Employee e where e.id = 4");
+		List<Employee> elist = q.getResultList();
+		assertEquals(1, elist.size());
+		txn.commit();
+	}
+
+	/**
+	 * Check some values stored in db
+	 */
+	@Test
+	public void test04() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select e from Employee e");
+		List<Employee> elist = q.getResultList();
+		assertEquals(2, elist.size());
+		for (Employee e : elist) {
+			if (e.getId() == 3) {
+				assertEquals("Charles", e.getFirstname());
+				assertEquals("Chiefer", e.getLastname());
+				assertEquals(1955, e.getBirthdate().getYear());
+				List<Employee> elist2 = e.getSubordinates();
+				assertEquals(2, elist2.size());
+				for (Employee e2 : elist2) {
+					assertEquals(e2.getBoss(), e); // check bidirectional
+													// reference
+				}
+			}
+			if (e.getId() == 4) {
+				assertEquals("Emily", e.getFirstname());
+				assertEquals("Ericsson", e.getLastname());
+				assertEquals(1990, e.getBirthdate().getYear());
+				assertEquals("Charles", e.getBoss().getFirstname());
+			}
+		}
+		txn.commit();
+	}
+
+	/**
+	 * Check different object
+	 */
+	@Test
+	public void test05() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select c from Car c");
+		List<Car> clist = q.getResultList();
+		assertEquals(3, clist.size());
+		for (Car c : clist) {
+			if (c.getId() == 7) {
+				assertEquals("Beta Romeo", c.getModelname());
+				assertEquals(2012, c.getConstructiondate().getYear());
+				assertEquals("OSBP Racecars", c.getManufacturer().getName());
+			}
+		}
+		txn.commit();
+	}
+
+	/**
+	 * Add value to db and read it back
+	 */
+	@Test
+	public void test06() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select c from Customer c");
+		List<Customer> list = q.getResultList();
+		assertEquals(2, list.size());
+		for (Customer c : list) {
+			if (c.getId() == 1) {
+				assertEquals("Bertie", c.getFirstname());
+				c.setIban("AT12345678901234567890");
+				em.persist(c);
+				txn.commit();
+			}
+		}
+		q = em.createQuery("select c from Customer c where c.id = 1");
+		list = q.getResultList();
+		assertEquals(1, list.size());
+		for (Customer c : list) {
+			if (c.getId() == 1) {
+				assertEquals("AT12345678901234567890", c.getIban());
+			}
+		}
+	}
+
+	/**
+	 * Change value in db and read it back
+	 */
+	@Test
+	public void test07() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select c from Customer c");
+		List<Customer> list = q.getResultList();
+		assertEquals(2, list.size());
+		for (Customer c : list) {
+			if (c.getId() == 1) {
+				assertEquals("Bertie", c.getFirstname());
+				c.setIban("DE0987654321");
+				em.persist(c);
+				txn.commit();
+			}
+		}
+		q = em.createQuery("select c from Customer c where c.id = 1");
+		list = q.getResultList();
+		assertEquals(1, list.size());
+		for (Customer c : list) {
+			if (c.getId() == 1) {
+				assertEquals("DE0987654321", c.getIban());
+			}
+		}
+	}
+
+	/**
+	 * Load supertype from db
+	 */
+	@Test
+	public void test08() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select p from Person p");
+		List<Person> list = q.getResultList();
+		assertEquals(4, list.size());
+		txn.commit();
+	}
+
+	/**
+	 * Access a type via query for supertype (with strategy joined)
+	 */
+	@Test
+	public void test09() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select p from Person p");
+		List<Person> list = q.getResultList();
+		assertEquals(4, list.size());
+		for (Person p : list) {
+			if (p instanceof Employee) {
+				assertNotNull(((Employee) p).getBoss());
+			}
+			;
+		}
+		txn.commit();
+	}
+
+	/**
+	 * Delete operation
+	 */
+	@Test
+	public void test10() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em
+				.createQuery("delete from Person p where p.firstname = 'Bertie'");
+		int deletedCount = q.executeUpdate();
+		assertEquals(1, deletedCount);
+		txn.commit();
+		q = em.createQuery("select p from Person p");
+		List<Person> list = q.getResultList();
+		assertEquals(3, list.size());
+	}
+
+	/**
+	 * Check bidirectional one-to-many
+	 */
+	@Test
+	public void test11() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em
+				.createQuery("select c from Car c where c.manufacturer.id = 7");
+		List<Car> list = q.getResultList();
+		for (Car c : list) {
+			System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+					+ c.getManufacturer().getId());
+		}
+		assertEquals(2, list.size());
+		txn.commit();
+	}
+
+	/**
+	 * Delete cascade operation
+	 */
+	@Test
+	public void test12() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select c from Car c");
+		List<Car> list = q.getResultList();
+		assertEquals(3, list.size());
+		for (Car c : list) {
+			System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+					+ c.getManufacturer().getId());
+		}
+
+		Manufacturer m = em.find(Manufacturer.class, 7L);
+		em.remove(m);
+		txn.commit();
+
+		q = em.createQuery("select c from Car c");
+		list = q.getResultList();
+		assertEquals(1, list.size());
+		for (Car c : list) {
+			System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+					+ c.getManufacturer().getId());
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Person.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Person.java
new file mode 100644
index 0000000..5f08ac6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/Person.java
@@ -0,0 +1,199 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore1;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorColumn;
+import javax.persistence.DiscriminatorType;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Address;
+
+@Entity
+@Table(name = "PERSON")
+@Inheritance(strategy = InheritanceType.JOINED)
+@DiscriminatorColumn(name = "DISC", discriminatorType = DiscriminatorType.STRING)
+@DiscriminatorValue(value = "PERSON")
+@SuppressWarnings("all")
+public class Person {
+  @Transient
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private long id;
+  
+  @Column(name = "FIRSTNAME")
+  private String firstname;
+  
+  @Column(name = "LASTNAME")
+  private String lastname;
+  
+  @Column(name = "BIRTHDATE")
+  @Temporal(value = TemporalType.DATE)
+  private Date birthdate;
+  
+  @ElementCollection
+  @Column(name = "ADDRESS", nullable = false)
+  private List<Address> address;
+  
+  /**
+   * Returns true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * Returns the id property or <code>null</code> if not present.
+   */
+  public long getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final long id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  /**
+   * Returns the firstname property or <code>null</code> if not present.
+   */
+  public String getFirstname() {
+    checkDisposed();
+    return this.firstname;
+  }
+  
+  /**
+   * Sets the firstname property to this instance.
+   */
+  public void setFirstname(final String firstname) {
+    checkDisposed();
+    this.firstname = firstname;
+  }
+  
+  /**
+   * Returns the lastname property or <code>null</code> if not present.
+   */
+  public String getLastname() {
+    checkDisposed();
+    return this.lastname;
+  }
+  
+  /**
+   * Sets the lastname property to this instance.
+   */
+  public void setLastname(final String lastname) {
+    checkDisposed();
+    this.lastname = lastname;
+  }
+  
+  /**
+   * Returns the birthdate property or <code>null</code> if not present.
+   */
+  public Date getBirthdate() {
+    checkDisposed();
+    return this.birthdate;
+  }
+  
+  /**
+   * Sets the birthdate property to this instance.
+   */
+  public void setBirthdate(final Date birthdate) {
+    checkDisposed();
+    this.birthdate = birthdate;
+  }
+  
+  /**
+   * Returns an unmodifiable list of address.
+   */
+  public List<Address> getAddress() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetAddress());
+  }
+  
+  /**
+   * Returns the list of <code>Address</code>s thereby lazy initializing it.
+   */
+  private List<Address> internalGetAddress() {
+    if (this.address == null) {
+      this.address = new ArrayList<Address>();
+    }
+    return this.address;
+  }
+  
+  /**
+   * Adds the given address to this object. <p>
+   * ATTENTION:<br>
+   * The reference is a composition reference, but no opposite is available.
+   * So the opposite will NOT be handled. Therefore you have to ensure that the parent of the reference
+   * is set properly.
+   * 
+   */
+  public void addToAddress(final Address address) {
+    checkDisposed();
+    if (!getAddress().contains(address)){
+      getAddress().add(address);
+    }
+    
+  }
+  
+  public void removeFromAddress(final Address address) {
+    checkDisposed();
+    getAddress().remove(address);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/UsedCar.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/UsedCar.java
new file mode 100644
index 0000000..dccd5cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore1/UsedCar.java
@@ -0,0 +1,112 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore1;
+
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Car;
+import org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore1.Customer;
+
+@Entity
+@Table(name = "USED_CAR")
+@DiscriminatorValue(value = "USED_CAR")
+@SuppressWarnings("all")
+public class UsedCar extends Car {
+  @Column(name = "STATE")
+  private String state;
+  
+  @Column(name = "MILEAGE")
+  private int mileage;
+  
+  @ManyToOne(optional = false, fetch = FetchType.LAZY)
+  @JoinColumn(name = "SELLER", nullable = false)
+  private Customer seller;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the state property or <code>null</code> if not present.
+   */
+  public String getState() {
+    checkDisposed();
+    return this.state;
+  }
+  
+  /**
+   * Sets the state property to this instance.
+   */
+  public void setState(final String state) {
+    checkDisposed();
+    this.state = state;
+  }
+  
+  /**
+   * Returns the mileage property or <code>null</code> if not present.
+   */
+  public int getMileage() {
+    checkDisposed();
+    return this.mileage;
+  }
+  
+  /**
+   * Sets the mileage property to this instance.
+   */
+  public void setMileage(final int mileage) {
+    checkDisposed();
+    this.mileage = mileage;
+  }
+  
+  /**
+   * Returns the <em>required</em> seller property.
+   */
+  public Customer getSeller() {
+    checkDisposed();
+    return this.seller;
+  }
+  
+  /**
+   * Sets the seller property to this instance.
+   */
+  public void setSeller(final Customer seller) {
+    checkDisposed();
+    this.seller = seller;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/Carstore2Tests.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/Carstore2Tests.java
new file mode 100644
index 0000000..c58c441
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore2/Carstore2Tests.java
@@ -0,0 +1,485 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore2;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
+
+public class Carstore2Tests extends AbstractJPATest {
+
+	private static final String PERSISTENCE_UNIT_NAME = "carstore2test";
+	private static EntityManagerFactory emf;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+
+		emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME,
+				properties);
+
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+
+		Customer buyer = new Customer();
+		Customer seller = new Customer();
+		Employee boss = new Employee();
+		Employee employee = new Employee();
+		Address buyeraddr = new Address();
+		Address manufactureraddr = new Address();
+		Manufacturer manufacturer = new Manufacturer();
+		Manufacturer manufacturer2 = new Manufacturer();
+		Car car = new Car();
+		Car car2 = new Car();
+		Car car3 = new Car();
+
+		buyer.setFirstname("Bertie");
+		buyer.setLastname("Bowser");
+		buyer.setBirthdate(new Date(1980, 1, 1));
+		seller.setFirstname("Sammy");
+		seller.setLastname("Stevenson");
+		seller.setBirthdate(new Date(1960, 1, 1));
+		employee.setFirstname("Emily");
+		employee.setLastname("Ericsson");
+		employee.setBirthdate(new Date(1990, 1, 1));
+		employee.setBoss(boss);
+		boss.setFirstname("Charles");
+		boss.setLastname("Chiefer");
+		boss.setBirthdate(new Date(1955, 5, 5));
+		boss.setBoss(boss);
+		buyeraddr.setCity("Wien");
+		buyeraddr.setZipcode(1010);
+		buyeraddr.setStreetname("Walfischgasse");
+		buyeraddr.setHousenumber(12);
+		manufacturer.setName("OSBP Racecars");
+		// manufacturer.setAddress(manufactureraddr);
+		manufacturer2.setName("Crashcars");
+		manufactureraddr.setCity("Torino");
+		manufactureraddr.setZipcode(23456);
+		manufactureraddr.setStreetname("Tivoli");
+		manufactureraddr.setHousenumber(34);
+		// buyer.addToAddress(buyeraddr);
+		// manufacturer.setAddress(manufactureraddr);
+		car.setConstructiondate(new Date(2012, 4, 4));
+		car.setModelname("Beta Romeo");
+		car.setManufacturer(manufacturer);
+		car2.setModelname("Wreckcar");
+		car2.setManufacturer(manufacturer2);
+		car3.setModelname("Crashcar");
+		car3.setManufacturer(manufacturer2);
+
+		try {
+			txn.begin();
+			em.persist(buyer);
+			em.persist(seller);
+			em.persist(boss);
+			em.persist(employee);
+			em.persist(manufacturer);
+			em.persist(manufacturer2);
+			em.flush();
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		em.close();
+
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+		Query q = em.createNativeQuery(""); // appears to be necessary to force EntityManager to drop tables
+		em.flush();
+		txn.commit();
+		em.clear();
+		em.close();
+
+		emf.close();
+	}
+
+	/**
+	 * Read from database
+	 */
+	@Test
+	public void test02() {
+		System.out.println("Test 02");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+			Query q = em.createQuery("select e from Employee e");
+			List<Employee> elist = q.getResultList();
+			assertEquals(2, elist.size());
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Select specific object from db
+	 */
+	@Test
+	public void test03() {
+		System.out.println("Test 03");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select e from Employee e where e.id = 4");
+			List<Employee> elist = q.getResultList();
+			assertEquals(1, elist.size());
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Check some values stored in db
+	 */
+	@Test
+	public void test04() {
+		System.out.println("Test 04");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select e from Employee e");
+			List<Employee> elist = q.getResultList();
+			assertEquals(2, elist.size());
+			for (Employee e : elist) {
+				if (e.getId() == 3) {
+					assertEquals("Charles", e.getFirstname());
+					assertEquals("Chiefer", e.getLastname());
+					assertEquals(1955, e.getBirthdate().getYear());
+					List<Employee> elist2 = e.getSubordinates();
+					assertEquals(2, elist2.size());
+					for (Employee e2 : elist2) {
+						assertEquals(e2.getBoss(), e); // check bidirectional
+														// reference
+					}
+				}
+				if (e.getId() == 4) {
+					assertEquals("Emily", e.getFirstname());
+					assertEquals("Ericsson", e.getLastname());
+					assertEquals(1990, e.getBirthdate().getYear());
+					assertEquals("Charles", e.getBoss().getFirstname());
+				}
+			}
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Check different object
+	 */
+	@Test
+	public void test05() {
+		System.out.println("Test 05");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select c from Car c");
+			List<Car> clist = q.getResultList();
+			assertEquals(3, clist.size());
+			for (Car c : clist) {
+				if (c.getId() == 7) {
+					assertEquals("Beta Romeo", c.getModelname());
+					assertEquals(2012, c.getConstructiondate().getYear());
+					assertEquals("OSBP Racecars", c.getManufacturer().getName());
+				}
+			}
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Add value to db and read it back
+	 */
+	@Test
+	public void test06() {
+		System.out.println("Test 06");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select c from Customer c");
+			List<Customer> list = q.getResultList();
+			assertEquals(2, list.size());
+			for (Customer c : list) {
+				if (c.getId() == 1) {
+					assertEquals("Bertie", c.getFirstname());
+					c.setIban("AT12345678901234567890");
+					em.persist(c);
+					txn.commit();
+				}
+			}
+			txn.begin();
+			q = em.createQuery("select c from Customer c where c.id = 1");
+			list = q.getResultList();
+			assertEquals(1, list.size());
+			for (Customer c : list) {
+				if (c.getId() == 1) {
+					assertEquals("AT12345678901234567890", c.getIban());
+				}
+			}
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Change value in db and read it back
+	 */
+	@Test
+	public void test07() {
+		System.out.println("Test 07");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select c from Customer c");
+			List<Customer> list = q.getResultList();
+			assertEquals(2, list.size());
+			for (Customer c : list) {
+				if (c.getId() == 1) {
+					assertEquals("Bertie", c.getFirstname());
+					c.setIban("DE0987654321");
+					em.persist(c);
+					txn.commit();
+				}
+			}
+			txn.begin();
+			q = em.createQuery("select c from Customer c where c.id = 1");
+			list = q.getResultList();
+			assertEquals(1, list.size());
+			for (Customer c : list) {
+				if (c.getId() == 1) {
+					assertEquals("DE0987654321", c.getIban());
+				}
+			}
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Load supertype from db
+	 */
+	@Test
+	public void test08() {
+		System.out.println("Test 08");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select p from Person p");
+			List<Person> list = q.getResultList();
+			assertEquals(4, list.size());
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Access a type via query for supertype (with strategy joined)
+	 */
+	@Test
+	public void test09() {
+		System.out.println("Test 09");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em.createQuery("select p from Person p");
+			List<Person> list = q.getResultList();
+			assertEquals(4, list.size());
+			for (Person p : list) {
+				if (p instanceof Employee) {
+					assertNotNull(((Employee) p).getBoss());
+				}
+				;
+			}
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Delete operation
+	 */
+	@Test
+	public void test10() {
+		System.out.println("Test 10");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em
+					.createQuery("delete from Person p where p.firstname = 'Bertie'");
+			int deletedCount = q.executeUpdate();
+			assertEquals(1, deletedCount);
+			txn.commit();
+			txn.begin();
+			q = em.createQuery("select p from Person p");
+			List<Person> list = q.getResultList();
+			assertEquals(3, list.size());
+			txn.commit();
+		} catch (Exception e) {
+			System.out.println("Whoopsie!");
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Check bidirectional one-to-many
+	 */
+	@Test
+	public void test11() {
+		System.out.println("Test 11");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		try {
+			txn.begin();
+
+			Query q = em
+					.createQuery("select c from Car c where c.manufacturer.id = 7");
+			List<Car> list = q.getResultList();
+			for (Car c : list) {
+				System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+						+ c.getManufacturer().getId());
+			}
+			assertEquals(2, list.size());
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+
+	/**
+	 * Delete cascade operation
+	 */
+	@Test
+	public void test12() {
+		System.out.println("Test 12");
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		Query q;
+		List<Car> list;
+		try {
+			txn.begin();
+
+			q = em.createQuery("select c from Car c");
+			list = q.getResultList();
+			assertEquals(3, list.size());
+			for (Car c : list) {
+				System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+						+ c.getManufacturer().getId());
+			}
+
+			Manufacturer m = em.find(Manufacturer.class, 7L);
+			em.remove(m);
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		try {
+			txn.begin();
+			q = em.createQuery("select c from Car c");
+			list = q.getResultList();
+			assertEquals(1, list.size());
+			for (Car c : list) {
+				System.out.println("Car " + c.getModelname() + ", Manufacturer: "
+						+ c.getManufacturer().getId());
+			}
+			txn.commit();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		System.out.println("Done.");
+		em.clear();
+		em.close();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/Car.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/Car.java
new file mode 100644
index 0000000..555f1c4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/Car.java
@@ -0,0 +1,199 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore3;
+
+import java.util.Date;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.persistence.Transient;
+
+@Entity
+@Table(schema = "SCHEMA3", name = "CAR")
+@DiscriminatorValue(value = "CAR")
+@SuppressWarnings("all")
+public class Car {
+	@Transient
+	private boolean disposed;
+
+	@Id
+	@GeneratedValue
+	private long id;
+
+	@Column(name = "MODELNAME")
+	private String modelname;
+
+	@Column(name = "CONSTRUCTIONDATE")
+	@Temporal(value = TemporalType.TIMESTAMP)
+	private Date constructiondate;
+
+	@Column(name = "PRICE")
+	private int price;
+
+	@ManyToOne(targetEntity = Manufacturer.class, fetch = FetchType.LAZY)
+	@JoinColumn(name = "MANUFACTURER", nullable = false)
+	private Manufacturer manufacturer;
+
+	/**
+	 * Returns true, if the object is disposed. Disposed means, that it is
+	 * prepared for garbage collection and may not be used anymore. Accessing
+	 * objects that are already disposed will cause runtime exceptions.
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.<br/>
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		try {
+			// Dispose all the composition references.
+			if (this.manufacturer != null) {
+				this.manufacturer.dispose();
+				this.manufacturer = null;
+			}
+
+		} finally {
+			disposed = true;
+		}
+
+	}
+
+	/**
+	 * Returns the id property or <code>null</code> if not present.
+	 */
+	public long getId() {
+		checkDisposed();
+		return this.id;
+	}
+
+	/**
+	 * Sets the id property to this instance.
+	 */
+	public void setId(final long id) {
+		checkDisposed();
+		this.id = id;
+	}
+
+	/**
+	 * Returns the modelname property or <code>null</code> if not present.
+	 */
+	public String getModelname() {
+		checkDisposed();
+		return this.modelname;
+	}
+
+	/**
+	 * Sets the modelname property to this instance.
+	 */
+	public void setModelname(final String modelname) {
+		checkDisposed();
+		this.modelname = modelname;
+	}
+
+	/**
+	 * Returns the constructiondate property or <code>null</code> if not
+	 * present.
+	 */
+	public Date getConstructiondate() {
+		checkDisposed();
+		return this.constructiondate;
+	}
+
+	/**
+	 * Sets the constructiondate property to this instance.
+	 */
+	public void setConstructiondate(final Date constructiondate) {
+		checkDisposed();
+		this.constructiondate = constructiondate;
+	}
+
+	/**
+	 * Returns the price property or <code>null</code> if not present.
+	 */
+	public int getPrice() {
+		checkDisposed();
+		return this.price;
+	}
+
+	/**
+	 * Sets the price property to this instance.
+	 */
+	public void setPrice(final int price) {
+		checkDisposed();
+		this.price = price;
+	}
+
+	/**
+	 * Returns the <em>required</em> manufacturer property.
+	 */
+	public Manufacturer getManufacturer() {
+		checkDisposed();
+		return this.manufacturer;
+	}
+
+	/**
+	 * Sets the manufacturer property to this instance. Since the reference is a
+	 * container reference, the opposite reference (Manufacturer.cars) of the
+	 * manufacturer will be handled automatically and no further coding is
+	 * required to keep them in sync. See
+	 * {@link Manufacturer#setCars(Manufacturer)}.
+	 */
+	public void setManufacturer(final Manufacturer manufacturer) {
+		checkDisposed();
+		if (this.manufacturer != null) {
+			this.manufacturer.internalRemoveFromCars(this);
+		}
+		this.manufacturer = manufacturer;
+		if (this.manufacturer != null) {
+			this.manufacturer.internalAddToCars(this);
+		}
+
+	}
+
+	void internalSetManufacturer(final Manufacturer manufacturer) {
+		this.manufacturer = manufacturer;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/Manufacturer.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/Manufacturer.java
new file mode 100644
index 0000000..778f92a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/Manufacturer.java
@@ -0,0 +1,181 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.entity.xtext.tests.model.testcarstore3;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.DiscriminatorValue;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.persistence.Transient;
+
+@Entity
+@Table(schema = "SCHEMA3", name = "MANUFACTURER")
+@DiscriminatorValue(value = "MANUFACTURER")
+@SuppressWarnings("all")
+public class Manufacturer {
+	@Transient
+	private boolean disposed;
+
+	@Id
+	@GeneratedValue
+	private long id;
+
+	@Column(name = "NAME")
+	private String name;
+
+	@OneToMany(mappedBy = "manufacturer", targetEntity = Car.class, cascade = CascadeType.ALL, orphanRemoval = true)
+	private List<Car> cars;
+
+	/**
+	 * Returns true, if the object is disposed. Disposed means, that it is
+	 * prepared for garbage collection and may not be used anymore. Accessing
+	 * objects that are already disposed will cause runtime exceptions.
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.<br/>
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		try {
+			// Dispose all the composition references.
+			if (this.cars != null) {
+				for (Car car : this.cars) {
+					car.dispose();
+				}
+				this.cars = null;
+			}
+
+		} finally {
+			disposed = true;
+		}
+
+	}
+
+	/**
+	 * Returns the id property or <code>null</code> if not present.
+	 */
+	public long getId() {
+		checkDisposed();
+		return this.id;
+	}
+
+	/**
+	 * Sets the id property to this instance.
+	 */
+	public void setId(final long id) {
+		checkDisposed();
+		this.id = id;
+	}
+
+	/**
+	 * Returns the name property or <code>null</code> if not present.
+	 */
+	public String getName() {
+		checkDisposed();
+		return this.name;
+	}
+
+	/**
+	 * Sets the name property to this instance.
+	 */
+	public void setName(final String name) {
+		checkDisposed();
+		this.name = name;
+	}
+
+	/**
+	 * Returns an unmodifiable list of cars.
+	 */
+	public List<Car> getCars() {
+		checkDisposed();
+		return Collections.unmodifiableList(internalGetCars());
+	}
+
+	/**
+	 * Returns the list of <code>Car</code>s thereby lazy initializing it.
+	 */
+	private List<Car> internalGetCars() {
+		if (this.cars == null) {
+			this.cars = new ArrayList<Car>();
+		}
+		return this.cars;
+	}
+
+	/**
+	 * Adds the given car to this object.
+	 * <p>
+	 * Since the reference is a composition reference, the opposite reference
+	 * (Car.manufacturer) of the car will be handled automatically and no
+	 * further coding is required to keep them in sync. See
+	 * {@link Car#setManufacturer(Car)}.
+	 * 
+	 */
+	public void addToCars(final Car car) {
+		checkDisposed();
+		car.setManufacturer(this);
+	}
+
+	/**
+	 * Removes the given car from this object.
+	 * <p>
+	 * Since the reference is a cascading reference, the opposite reference
+	 * (Car.manufacturer) of the car will be handled automatically and no
+	 * further coding is required to keep them in sync. See
+	 * {@link Car#setManufacturer(Car)}.
+	 * 
+	 */
+	public void removeFromCars(final Car car) {
+		checkDisposed();
+		car.setManufacturer(null);
+	}
+
+	void internalAddToCars(final Car car) {
+		internalGetCars().add(car);
+	}
+
+	void internalRemoveFromCars(final Car car) {
+		internalGetCars().remove(car);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/ModelTestcarstore3Tests.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/ModelTestcarstore3Tests.java
new file mode 100644
index 0000000..30ec035
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/model/testcarstore3/ModelTestcarstore3Tests.java
@@ -0,0 +1,114 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore3;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
+
+public class ModelTestcarstore3Tests extends AbstractJPATest {
+
+	private static final String PERSISTENCE_UNIT_NAME = "testcarstore3";
+	private static EntityManagerFactory emf;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+
+		emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME,
+				properties);
+
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+
+		txn.begin();
+		Car c = em.find(Car.class, 2L);
+		assertNull(c);
+
+		try {
+			Query q = em.createNativeQuery("create schema SCHEMA3");
+			q.executeUpdate();
+			txn.commit();
+		} catch (Exception e) {
+			txn.rollback();
+		}
+
+		txn = em.getTransaction();
+		Manufacturer manufacturer = new Manufacturer();
+		Car car = new Car();
+
+		manufacturer.setName("OSBP Racecars");
+		car.setConstructiondate(new Date(2012, 4, 4));
+		car.setModelname("Beta Romeo");
+		car.setManufacturer(manufacturer);
+
+		txn.begin();
+		em.persist(manufacturer);
+		txn.commit();
+
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		emf.close();
+	}
+
+	/**
+	 * Delete cascade operation
+	 */
+	@Test
+	public void test1() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Manufacturer m = em.find(Manufacturer.class, 1L);
+		Car c = em.find(Car.class, 2L);
+		assertNotNull(c);
+		em.remove(m);
+		txn.commit();
+
+		txn.begin();
+		c = em.find(Car.class, 2L);
+		assertNull(c);
+		txn.rollback();
+	}
+
+	// /**
+	// * Delete cascade operation
+	// */
+	// @Test
+	// public void test2() {
+	// EntityManager em = emf.createEntityManager();
+	// EntityTransaction txn = em.getTransaction();
+	// txn.begin();
+	//
+	// Car c = em.find(Car.class, 2L);
+	// assertNotNull(c);
+	// try {
+	// Query query = em.createQuery("delete from Manufacturer m");
+	// query.executeUpdate();
+	// fail("JPA does not support CASCADE DELETE on database level for default.");
+	// } catch (Exception e) {
+	// }
+	// txn.rollback();
+	// }
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/SelfreferenceTests.java b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/SelfreferenceTests.java
new file mode 100644
index 0000000..323e927
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.tests/src/org/eclipse/osbp/dsl/entity/xtext/tests/selfreference/SelfreferenceTests.java
@@ -0,0 +1,253 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.entity.xtext.tests.selfreference;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.EntityTransaction;
+import javax.persistence.Persistence;
+import javax.persistence.Query;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.entity.xtext.tests.AbstractJPATest;
+
+public class SelfreferenceTests extends AbstractJPATest {
+
+	private static final String PERSISTENCE_UNIT_NAME = "selfreftests";
+	private static EntityManagerFactory emf;
+
+	@Before
+	public void setUp() throws Exception {
+		super.setUp();
+
+		emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME,
+				properties);
+
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+
+		TreeEmployee bigboss = new TreeEmployee();
+		TreeEmployee boss = new TreeEmployee();
+		TreeEmployee employee1 = new TreeEmployee();
+		TreeEmployee employee2 = new TreeEmployee();
+		TreeEmployee tinyhelper = new TreeEmployee();
+
+		tinyhelper.setBoss(employee1);
+		employee1.setBoss(boss);
+		employee2.setBoss(boss);
+		boss.setBoss(bigboss);
+		bigboss.setBoss(bigboss);
+
+		tinyhelper.setName("Mini");
+		employee1.setName("Em1");
+		employee2.setName("Em2");
+		boss.setName("Boss");
+		bigboss.setName("BigBoss");
+
+		txn.begin();
+		em.persist(bigboss);
+		em.persist(boss);
+		em.persist(employee1);
+		em.persist(employee2);
+		em.persist(tinyhelper);
+
+		assertEquals(3L, employee1.getId());
+
+		txn.commit();
+
+	}
+
+	@After
+	public void tearDown() throws Exception {
+		emf.close();
+	}
+
+	/**
+	 * Check if everyone is persisted
+	 */
+	@Test
+	public void test01() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select x from TreeEmployee x");
+		List<TreeEmployee> list = q.getResultList();
+		assertEquals(5, list.size());
+		txn.commit();
+	}
+
+	/**
+	 * Check if everyone's boss is set and persisted correctly
+	 */
+	@Test
+	public void test02() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select x from TreeEmployee x");
+		List<TreeEmployee> list = q.getResultList();
+
+		for (TreeEmployee t : list) {
+			if (t.getName().equals("Mini")) {
+				assertEquals("Em1", t.getBoss().getName());
+			}
+			if (t.getName().equals("Em1")) {
+				assertEquals("Boss", t.getBoss().getName());
+			}
+			if (t.getName().equals("Em2")) {
+				assertEquals("Boss", t.getBoss().getName());
+			}
+			if (t.getName().equals("Boss")) {
+				assertEquals("BigBoss", t.getBoss().getName());
+			}
+			if (t.getName().equals("BigBoss")) {
+				assertEquals("BigBoss", t.getBoss().getName());
+			}
+		}
+		txn.commit();
+	}
+
+	/**
+	 * Check if everyone's subordinates are set and persisted correctly
+	 */
+	@Test
+	public void test03() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		Query q = em.createQuery("select x from TreeEmployee x");
+		List<TreeEmployee> list = q.getResultList();
+		assertEquals(5, list.size());
+
+		for (TreeEmployee t : list) {
+			if (t.getName().equals("Mini")) {
+				assertEquals(0, t.getSubordinates().size());
+			}
+			if (t.getName().equals("Em1")) { 
+				List<TreeEmployee> sublist = t.getSubordinates(); 
+				assertEquals(1, sublist.size());
+				for (TreeEmployee subt : sublist) {
+					assertEquals(subt.getBoss(), t);
+					System.out.println(t.getName() + " is boss of "
+							+ subt.getName());
+				}
+			}
+			if (t.getName().equals("Em2")) {
+				assertEquals(0, t.getSubordinates().size());
+			}
+			if (t.getName().equals("Boss")) {
+				List<TreeEmployee> sublist = t.getSubordinates();
+				assertEquals(2, sublist.size());
+				for (TreeEmployee subt : sublist) {
+					assertEquals(subt.getBoss(), t);
+					System.out.println(t.getName() + " is boss of "
+							+ subt.getName());
+				}
+			}
+			if (t.getName().equals("BigBoss")) {
+				List<TreeEmployee> sublist = t.getSubordinates();
+				assertEquals(2, sublist.size());
+				for (TreeEmployee subt : sublist) {
+					assertEquals(subt.getBoss(), t);
+					System.out.println(t.getName() + " is boss of "
+							+ subt.getName());
+				}
+			}
+		}
+		txn.commit();
+	}
+
+	/**
+	 * Test cascading deletion
+	 */
+	@Test
+	public void test04() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		/**
+		 * Removing employee1 should remove tinyhelper as well
+		 */
+		TreeEmployee employee1 = em.find(TreeEmployee.class, 3L);
+		em.remove(employee1);
+		txn.commit();
+
+		Query q = em.createQuery("select x from TreeEmployee x");
+		List<TreeEmployee> list = q.getResultList();
+		assertEquals(3, list.size());
+	}
+
+	/**
+	 * Test cascading disposal
+	 */
+	@Test
+	public void test05() {
+		EntityManager em = emf.createEntityManager();
+		EntityTransaction txn = em.getTransaction();
+		txn.begin();
+
+		/**
+		 * Load entities from database
+		 */
+
+		TreeEmployee bigboss = new TreeEmployee();
+		TreeEmployee boss = new TreeEmployee();
+		TreeEmployee employee1 = new TreeEmployee();
+		TreeEmployee employee2 = new TreeEmployee();
+		TreeEmployee tinyhelper = new TreeEmployee();
+
+		Query q = em.createQuery("select t from TreeEmployee t");
+		List<TreeEmployee> list = q.getResultList();
+		assertEquals(5, list.size());
+		for (TreeEmployee t : list) {
+			if (t.getName().equals("BigBoss")) {
+				bigboss = t;
+			}
+			if (t.getName().equals("Boss")) {
+				boss = t;
+			}
+			if (t.getName().equals("Em1")) {
+				employee1 = t;
+			}
+			if (t.getName().equals("Em2")) {
+				employee2 = t;
+			}
+			if (t.getName().equals("Mini")) {
+				tinyhelper = t;
+			}
+		}
+
+		/**
+		 * Disposing employee1 should remove tinyhelper as well, but not
+		 * employee2, boss and bigboss.
+		 */
+
+		assertEquals(employee1, tinyhelper.getBoss());
+
+		employee1.dispose();
+
+		assertFalse(bigboss.isDisposed());
+		assertFalse(boss.isDisposed());
+		assertTrue(employee1.isDisposed());
+		assertFalse(employee2.isDisposed());
+		assertTrue(tinyhelper.isDisposed());
+		txn.commit();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/.project b/org.eclipse.osbp.dsl.entity.xtext.ui/.project
new file mode 100644
index 0000000..922d376
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.entity.xtext.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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.entity.xtext.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a66a667
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,46 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.entity.xtext.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.entity.xtext.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors,
+ org.eclipse.ui,
+ org.eclipse.ui.ide,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.text,
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.antlr.runtime;bundle-version="[3.2.0,3.2.1)",
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ org.eclipse.debug.ui;bundle-version="3.5.0",
+ org.eclipse.jdt.core;bundle-version="3.8.1",
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.purexbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;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.ui;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.apache.commons.logging,
+ org.apache.log4j,
+ org.eclipse.jdt.internal.ui,
+ org.eclipse.jdt.internal.ui.viewsupport,
+ org.eclipse.jdt.ui,
+ org.slf4j;version="1.7.2"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.entity.xtext.ui;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.contentassist;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.internal;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.labeling;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.outline;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.quickfix;x-internal:="true";version="0.9.0",
+ org.eclipse.osbp.dsl.entity.xtext.ui.wizards;x-internal:="true";version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.dsl.entity.xtext.ui.internal.EntityGrammarActivator
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/about.html b/org.eclipse.osbp.dsl.entity.xtext.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.ui/about.ini b/org.eclipse.osbp.dsl.entity.xtext.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.ui/about.mappings b/org.eclipse.osbp.dsl.entity.xtext.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.ui/about.properties b/org.eclipse.osbp.dsl.entity.xtext.ui/about.properties
new file mode 100644
index 0000000..6114c45
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.entity.xtext.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/build.properties b/org.eclipse.osbp.dsl.entity.xtext.ui/build.properties
new file mode 100644
index 0000000..955d1dc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/build.properties
@@ -0,0 +1,12 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               epl-v10.html,\
+               license.html,\
+               icons/
+jre.compilation.profile = JavaSE-1.8
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  icons/
+
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/epl-v10.html b/org.eclipse.osbp.dsl.entity.xtext.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.ui/icons/dsl_entity.png b/org.eclipse.osbp.dsl.entity.xtext.ui/icons/dsl_entity.png
new file mode 100644
index 0000000..a063e88
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/icons/dsl_entity.png
Binary files differ
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/license.html b/org.eclipse.osbp.dsl.entity.xtext.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.ui/plugin.xml b/org.eclipse.osbp.dsl.entity.xtext.ui/plugin.xml
new file mode 100644
index 0000000..7e014c5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/plugin.xml
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+              class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+              contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+              default="true"
+              extensions="entity"
+              icon="icons/dsl_entity.png"
+              id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+              name="OSBP Entity Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.Editor.opened">
+            </reference>
+         </activeWhen>
+      </handler>
+    </extension>
+    <extension point="org.eclipse.core.expressions.definitions">
+        <definition id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+              category="org.eclipse.osbp.eclipse.ui.preferences.RootPreferencePage"
+              class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+			  icon="icons/dsl_entity.png"
+              name="OSBP EntityDsl">
+            <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.coloring"
+  		    icon="icons/dsl_entity.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.templates"
+  		    icon="icons/dsl_entity.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+              category="org.eclipse.osbp.eclipse.ui.rootPropertyPage"
+              class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+              icon="icons/dsl_entity.png"
+              id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+              name="OSBP EntityDsl">
+            <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+            <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.dsl.entity.xtext.ui.keyword_Entity"
+            label="Entity"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.validate"
+            name="Validate">
+      </command>
+    </extension>
+    <extension point="org.eclipse.ui.menus">
+        <menuContribution
+            locationURI="popup:#TextEditorContext?after=group.edit">
+             <command
+                 commandId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.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.dsl.entity.xtext.EntityGrammar.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="entity">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="entity">
+        </resourceServiceProvider>
+    </extension>
+
+
+
+   <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.compiler.preferencePage"
+            icon="icons/dsl_entity.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.compiler.propertyPage"
+            icon="icons/dsl_entity.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+            <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.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.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.dsl.entity.xtext.EntityGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+   <!-- quickfix marker resolution generator -->
+   <extension
+         point="org.eclipse.ui.ide.markerResolution">
+      <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator">
+      </markerResolutionGenerator>
+   </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.IRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.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.dsl.entity.xtext.EntityGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+	        class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.refactoring"
+            icon="icons/dsl_entity.png"
+ 	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.dsl.entity.xtext.ui.keyword_Entity"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.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.dsl.entity.xtext.EntityGrammar.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.dsl.entity.xtext.EntityGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.compare.contentViewers"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="entity">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.compare.contentMergeViewers"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="entity" label="Entity Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar.editors.documentProviders"
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="entity">
+    </provider>
+  </extension>
+  <extension
+        point="org.eclipse.ui.newWizards">
+       <wizard
+             category="org.eclipse.osbp.ui.wizards.category"
+             class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.osbp.dsl.entity.xtext.ui.wizards.OSBPNewEntityModelWizard"
+             icon="icons/dsl_entity.png"
+             id="org.eclipse.osbp.dsl.entity.xtext.ui.wizards.entityNewProjectWizard"
+             name="OSBP Entity Model">
+      </wizard>
+      </extension>
+      
+     <extension
+         point="org.eclipse.xtext.builder.participant">
+      <participant
+            class="org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarExecutableExtensionFactory:org.eclipse.osbp.dsl.entity.xtext.ui.builder.PersistenceXMLBuilderParticipant">
+      </participant>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.entity.xtext.ui/pom.xml
new file mode 100644
index 0000000..ba75d2a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	
+	<artifactId>org.eclipse.osbp.dsl.entity.xtext.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/AbstractEntityGrammarUiModule.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/AbstractEntityGrammarUiModule.java
new file mode 100644
index 0000000..12bd827
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/AbstractEntityGrammarUiModule.java
@@ -0,0 +1,371 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractEntityGrammarUiModule extends DefaultUiModule {
+	
+	public AbstractEntityGrammarUiModule(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.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarLexer.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.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.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.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.dsl.entity.xtext.ui.quickfix.EntityGrammarQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider.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.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider.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.dsl.entity.xtext.ui.outline.EntityGrammarOutlineTreeProvider.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.dsl.entity.xtext.ui.outline.EntityGrammarOutlineTreeProvider.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;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.EntityGrammarProposalProvider.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.dsl.entity.xtext.ui.contentassist.antlr.EntityGrammarParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarLexer.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.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarLexer.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.dsl.entity.xtext.ui.contentassist.antlr.PartialEntityGrammarContentAssistParser.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarExecutableExtensionFactory.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarExecutableExtensionFactory.java
new file mode 100644
index 0000000..de2f32a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarExecutableExtensionFactory.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.dsl.entity.xtext.ui.internal.EntityGrammarActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class EntityGrammarExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return EntityGrammarActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return EntityGrammarActivator.getInstance().getInjector(EntityGrammarActivator.ORG_ECLIPSE_OSBP_DSL_ENTITY_XTEXT_ENTITYGRAMMAR);
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/AbstractEntityGrammarProposalProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/AbstractEntityGrammarProposalProvider.java
new file mode 100644
index 0000000..469ab88
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/AbstractEntityGrammarProposalProvider.java
@@ -0,0 +1,262 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractEntityGrammarProposalProvider extends org.eclipse.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider {
+		
+	public void completeEntityModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Abstract(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeClass_Historized(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeClass_Timedependent(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeClass_TimedependentDateType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Cacheable(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_SuperType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_PersistenceInfo(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_InheritanceStrategy(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_PersistenceUnit(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Features(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Indexes(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_MappedSuperclass(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeIndex_Unique(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeIndex_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeIndex_Features(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityPersistenceInfo_SchemaName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityPersistenceInfo_TableName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeColumnPersistenceInfo_ColumnName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Cascading(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		if (assignment.getTerminal() instanceof CrossReference) {
+			lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+		}
+		if (assignment.getTerminal() instanceof RuleCall) {
+			completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+		}
+	}
+	public void completeEntityFeature_Multiplicity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Constraints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_PersistenceInfo(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Opposite(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_ResultFilters(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Transient(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_Derived(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_DomainDescription(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_DerivedGetterExpression(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_Uuid(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_Version(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_DomainKey(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeEntityFeature_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeEntityFeature_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Cascading(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeBeanFeature_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		if (assignment.getTerminal() instanceof CrossReference) {
+			lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+		}
+		if (assignment.getTerminal() instanceof RuleCall) {
+			completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+		}
+	}
+	public void completeBeanFeature_Multiplicity(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Constraints(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Opposite(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Properties(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_ResultFilters(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Transient(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeBeanFeature_Id(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeBeanFeature_Version(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeBeanFeature_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeBeanFeature_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTablePerClassStrategy_DiscriminatorColumn(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTablePerClassStrategy_DiscriminatorType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTablePerClassStrategy_DiscriminatorValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTablePerSubclassStrategy_DiscriminatorColumn(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTablePerSubclassStrategy_DiscriminatorType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeTablePerSubclassStrategy_DiscriminatorValue(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_EntityModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Class(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Index(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EntityPersistenceInfo(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ColumnPersistenceInfo(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EntityFeature(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_BeanFeature(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_EntityInheritanceStrategy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TablePerClassStrategy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TablePerSubclassStrategy(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_DiscriminatorType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_LHistorizedDateType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/EntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/EntityGrammarParser.java
new file mode 100644
index 0000000..84b3177
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/EntityGrammarParser.java
@@ -0,0 +1,896 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+public class EntityGrammarParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private EntityGrammarGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarParser createParser() {
+		org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarParser result = new org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarParser(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.getClassAccess().getAlternatives_2(), "rule__Class__Alternatives_2");
+					put(grammarAccess.getClassAccess().getAlternatives_2_0_1_1(), "rule__Class__Alternatives_2_0_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2(), "rule__EntityFeature__Alternatives_2");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_9(), "rule__EntityFeature__Alternatives_2_0_1_9");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1(), "rule__EntityFeature__Alternatives_2_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1_2_0(), "rule__EntityFeature__Alternatives_2_1_1_2_0");
+					put(grammarAccess.getBeanFeatureAccess().getAlternatives_2(), "rule__BeanFeature__Alternatives_2");
+					put(grammarAccess.getBeanFeatureAccess().getAlternatives_2_0_1_8(), "rule__BeanFeature__Alternatives_2_0_1_8");
+					put(grammarAccess.getBeanFeatureAccess().getAlternatives_2_1_1(), "rule__BeanFeature__Alternatives_2_1_1");
+					put(grammarAccess.getBeanFeatureAccess().getAlternatives_2_1_1_1_0(), "rule__BeanFeature__Alternatives_2_1_1_1_0");
+					put(grammarAccess.getEntityInheritanceStrategyAccess().getAlternatives(), "rule__EntityInheritanceStrategy__Alternatives");
+					put(grammarAccess.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
+					put(grammarAccess.getDataTypeAccess().getAlternatives_2(), "rule__DataType__Alternatives_2");
+					put(grammarAccess.getAllConstraintsAccess().getAlternatives(), "rule__AllConstraints__Alternatives");
+					put(grammarAccess.getDataTypeConstraintAccess().getAlternatives(), "rule__DataTypeConstraint__Alternatives");
+					put(grammarAccess.getDateConstraintAccess().getAlternatives(), "rule__DateConstraint__Alternatives");
+					put(grammarAccess.getBlobTypeConstraintAccess().getAlternatives(), "rule__BlobTypeConstraint__Alternatives");
+					put(grammarAccess.getScalarTypeAccess().getAlternatives(), "rule__ScalarType__Alternatives");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAlternatives_2(), "rule__AttributeMatchingConstraint__Alternatives_2");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives(), "rule__ValidIDWithKeywords__Alternatives");
+					put(grammarAccess.getLIntAccess().getAlternatives_0(), "rule__LInt__Alternatives_0");
+					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.getDiscriminatorTypeAccess().getAlternatives(), "rule__DiscriminatorType__Alternatives");
+					put(grammarAccess.getLHistorizedDateTypeAccess().getAlternatives(), "rule__LHistorizedDateType__Alternatives");
+					put(grammarAccess.getConstraintSeverityAccess().getAlternatives(), "rule__ConstraintSeverity__Alternatives");
+					put(grammarAccess.getDateTypeAccess().getAlternatives(), "rule__DateType__Alternatives");
+					put(grammarAccess.getLVisibilityAccess().getAlternatives(), "rule__LVisibility__Alternatives");
+					put(grammarAccess.getLComparatorTypeAccess().getAlternatives(), "rule__LComparatorType__Alternatives");
+					put(grammarAccess.getLowerBoundAccess().getAlternatives(), "rule__LowerBound__Alternatives");
+					put(grammarAccess.getUpperBoundAccess().getAlternatives(), "rule__UpperBound__Alternatives");
+					put(grammarAccess.getClassAccess().getGroup(), "rule__Class__Group__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0(), "rule__Class__Group_2_0__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0_1_1_1(), "rule__Class__Group_2_0_1_1_1__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0_1_1_1_1(), "rule__Class__Group_2_0_1_1_1_1__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0_4(), "rule__Class__Group_2_0_4__0");
+					put(grammarAccess.getClassAccess().getGroup_2_0_8(), "rule__Class__Group_2_0_8__0");
+					put(grammarAccess.getClassAccess().getGroup_2_1(), "rule__Class__Group_2_1__0");
+					put(grammarAccess.getClassAccess().getGroup_2_1_2(), "rule__Class__Group_2_1_2__0");
+					put(grammarAccess.getClassAccess().getGroup_2_1_5(), "rule__Class__Group_2_1_5__0");
+					put(grammarAccess.getClassAccess().getGroup_2_2(), "rule__Class__Group_2_2__0");
+					put(grammarAccess.getClassAccess().getGroup_2_2_3(), "rule__Class__Group_2_2_3__0");
+					put(grammarAccess.getIndexAccess().getGroup(), "rule__Index__Group__0");
+					put(grammarAccess.getIndexAccess().getGroup_5(), "rule__Index__Group_5__0");
+					put(grammarAccess.getEntityPersistenceInfoAccess().getGroup(), "rule__EntityPersistenceInfo__Group__0");
+					put(grammarAccess.getEntityPersistenceInfoAccess().getGroup_1_0(), "rule__EntityPersistenceInfo__Group_1_0__0");
+					put(grammarAccess.getEntityPersistenceInfoAccess().getGroup_1_1(), "rule__EntityPersistenceInfo__Group_1_1__0");
+					put(grammarAccess.getColumnPersistenceInfoAccess().getGroup(), "rule__ColumnPersistenceInfo__Group__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup(), "rule__EntityFeature__Group__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0(), "rule__EntityFeature__Group_2_0__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1(), "rule__EntityFeature__Group_2_0_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_4(), "rule__EntityFeature__Group_2_0_1_4__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_7(), "rule__EntityFeature__Group_2_0_1_7__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8(), "rule__EntityFeature__Group_2_0_1_8__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8_3(), "rule__EntityFeature__Group_2_0_1_8_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1(), "rule__EntityFeature__Group_2_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0(), "rule__EntityFeature__Group_2_1_1_0__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2(), "rule__EntityFeature__Group_2_1_1_0_2__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4(), "rule__EntityFeature__Group_2_1_1_0_4__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4_3(), "rule__EntityFeature__Group_2_1_1_0_4_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1(), "rule__EntityFeature__Group_2_1_1_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4(), "rule__EntityFeature__Group_2_1_1_1_4__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4_3(), "rule__EntityFeature__Group_2_1_1_1_4_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2(), "rule__EntityFeature__Group_2_1_1_2__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_3(), "rule__EntityFeature__Group_2_1_1_2_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_6(), "rule__EntityFeature__Group_2_1_1_2_6__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_7(), "rule__EntityFeature__Group_2_1_1_2_7__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2_7_3(), "rule__EntityFeature__Group_2_1_1_2_7_3__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2(), "rule__EntityFeature__Group_2_2__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2_1(), "rule__EntityFeature__Group_2_2_1__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2_1_4(), "rule__EntityFeature__Group_2_2_1_4__0");
+					put(grammarAccess.getEntityFeatureAccess().getGroup_2_2_1_4_1(), "rule__EntityFeature__Group_2_2_1_4_1__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup(), "rule__BeanFeature__Group__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0(), "rule__BeanFeature__Group_2_0__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1(), "rule__BeanFeature__Group_2_0_1__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_4(), "rule__BeanFeature__Group_2_0_1_4__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_6(), "rule__BeanFeature__Group_2_0_1_6__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_7(), "rule__BeanFeature__Group_2_0_1_7__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_0_1_7_3(), "rule__BeanFeature__Group_2_0_1_7_3__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1(), "rule__BeanFeature__Group_2_1__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0(), "rule__BeanFeature__Group_2_1_1_0__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_2(), "rule__BeanFeature__Group_2_1_1_0_2__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_4(), "rule__BeanFeature__Group_2_1_1_0_4__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0_4_3(), "rule__BeanFeature__Group_2_1_1_0_4_3__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1(), "rule__BeanFeature__Group_2_1_1_1__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_3(), "rule__BeanFeature__Group_2_1_1_1_3__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_5(), "rule__BeanFeature__Group_2_1_1_1_5__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1_5_3(), "rule__BeanFeature__Group_2_1_1_1_5_3__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_2(), "rule__BeanFeature__Group_2_2__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_2_1(), "rule__BeanFeature__Group_2_2_1__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_2_1_4(), "rule__BeanFeature__Group_2_2_1_4__0");
+					put(grammarAccess.getBeanFeatureAccess().getGroup_2_2_1_4_1(), "rule__BeanFeature__Group_2_2_1_4_1__0");
+					put(grammarAccess.getTablePerClassStrategyAccess().getGroup(), "rule__TablePerClassStrategy__Group__0");
+					put(grammarAccess.getTablePerClassStrategyAccess().getGroup_3_0(), "rule__TablePerClassStrategy__Group_3_0__0");
+					put(grammarAccess.getTablePerClassStrategyAccess().getGroup_3_1(), "rule__TablePerClassStrategy__Group_3_1__0");
+					put(grammarAccess.getTablePerClassStrategyAccess().getGroup_3_2(), "rule__TablePerClassStrategy__Group_3_2__0");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getGroup(), "rule__TablePerSubclassStrategy__Group__0");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getGroup_3_0(), "rule__TablePerSubclassStrategy__Group_3_0__0");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getGroup_3_1(), "rule__TablePerSubclassStrategy__Group_3_1__0");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getGroup_3_2(), "rule__TablePerSubclassStrategy__Group_3_2__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup(), "rule__TypedPackage__Group__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup_3(), "rule__TypedPackage__Group_3__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup(), "rule__DataType__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0(), "rule__DataType__Group_2_0__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4(), "rule__DataType__Group_2_0_4__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3(), "rule__DataType__Group_2_0_4_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1(), "rule__DataType__Group_2_1__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3(), "rule__DataType__Group_2_1_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3(), "rule__DataType__Group_2_1_3_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2(), "rule__DataType__Group_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2(), "rule__DataType__Group_2_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3(), "rule__DataType__Group_2_2_2_3__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup(), "rule__DtCAssertFalse__Group__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0(), "rule__DtCAssertFalse__Group_2_0__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1(), "rule__DtCAssertFalse__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_1(), "rule__DtCAssertFalse__Group_2_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2(), "rule__DtCAssertFalse__Group_2_2__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0(), "rule__DtCAssertFalse__Group_2_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup(), "rule__DtCAssertTrue__Group__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0(), "rule__DtCAssertTrue__Group_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1(), "rule__DtCAssertTrue__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_1(), "rule__DtCAssertTrue__Group_2_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2(), "rule__DtCAssertTrue__Group_2_2__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0(), "rule__DtCAssertTrue__Group_2_2_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup(), "rule__DtCDecimalMax__Group__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0(), "rule__DtCDecimalMax__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1(), "rule__DtCDecimalMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_1(), "rule__DtCDecimalMax__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2(), "rule__DtCDecimalMax__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0(), "rule__DtCDecimalMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup(), "rule__DtCDecimalMin__Group__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0(), "rule__DtCDecimalMin__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1(), "rule__DtCDecimalMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_1(), "rule__DtCDecimalMin__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2(), "rule__DtCDecimalMin__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0(), "rule__DtCDecimalMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup(), "rule__DtCDigits__Group__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0(), "rule__DtCDigits__Group_6_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1(), "rule__DtCDigits__Group_6_0_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_1(), "rule__DtCDigits__Group_6_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2(), "rule__DtCDigits__Group_6_2__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0(), "rule__DtCDigits__Group_6_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup(), "rule__DtCFuture__Group__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0(), "rule__DtCFuture__Group_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0_1(), "rule__DtCFuture__Group_2_0_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_1(), "rule__DtCFuture__Group_2_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2(), "rule__DtCFuture__Group_2_2__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2_0(), "rule__DtCFuture__Group_2_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup(), "rule__DtCPast__Group__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0(), "rule__DtCPast__Group_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0_1(), "rule__DtCPast__Group_2_0_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_1(), "rule__DtCPast__Group_2_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2(), "rule__DtCPast__Group_2_2__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2_0(), "rule__DtCPast__Group_2_2_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup(), "rule__DtCNumericMax__Group__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0(), "rule__DtCNumericMax__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0_1(), "rule__DtCNumericMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_1(), "rule__DtCNumericMax__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2(), "rule__DtCNumericMax__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2_0(), "rule__DtCNumericMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup(), "rule__DtCNumericMin__Group__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0(), "rule__DtCNumericMin__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0_1(), "rule__DtCNumericMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_1(), "rule__DtCNumericMin__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2(), "rule__DtCNumericMin__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2_0(), "rule__DtCNumericMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup(), "rule__DtCNotNull__Group__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0(), "rule__DtCNotNull__Group_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0_1(), "rule__DtCNotNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_1(), "rule__DtCNotNull__Group_2_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2(), "rule__DtCNotNull__Group_2_2__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2_0(), "rule__DtCNotNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup(), "rule__DtCNull__Group__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0(), "rule__DtCNull__Group_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0_1(), "rule__DtCNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_1(), "rule__DtCNull__Group_2_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2(), "rule__DtCNull__Group_2_2__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2_0(), "rule__DtCNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup(), "rule__DtCRegEx__Group__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0(), "rule__DtCRegEx__Group_4_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0_1(), "rule__DtCRegEx__Group_4_0_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_1(), "rule__DtCRegEx__Group_4_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2(), "rule__DtCRegEx__Group_4_2__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2_0(), "rule__DtCRegEx__Group_4_2_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup(), "rule__DtCSize__Group__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0(), "rule__DtCSize__Group_6_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0_1(), "rule__DtCSize__Group_6_0_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_1(), "rule__DtCSize__Group_6_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2(), "rule__DtCSize__Group_6_2__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2_0(), "rule__DtCSize__Group_6_2_0__0");
+					put(grammarAccess.getEnumAccess().getGroup(), "rule__Enum__Group__0");
+					put(grammarAccess.getEnumAccess().getGroup_4(), "rule__Enum__Group_4__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup(), "rule__EnumLiteral__Group__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_0(), "rule__EnumLiteral__Group_1_0__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1(), "rule__EnumLiteral__Group_1_1__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1_2(), "rule__EnumLiteral__Group_1_1_2__0");
+					put(grammarAccess.getAnnotationDefAccess().getGroup(), "rule__AnnotationDef__Group__0");
+					put(grammarAccess.getResultFiltersAccess().getGroup(), "rule__ResultFilters__Group__0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getGroup(), "rule__AttributeMatchingConstraint__Group__0");
+					put(grammarAccess.getKeyAndValueAccess().getGroup(), "rule__KeyAndValue__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup(), "rule__LQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup_1(), "rule__LQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__0");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5(), "rule__ValidIDWithKeywords__Group_5__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup(), "rule__ValidLFQNWithKeywords__Group__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup_1(), "rule__ValidLFQNWithKeywords__Group_1__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup(), "rule__Multiplicity__Group__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup_2(), "rule__Multiplicity__Group_2__0");
+					put(grammarAccess.getLIntAccess().getGroup(), "rule__LInt__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup(), "rule__LDecimal__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup_1(), "rule__LDecimal__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__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.getEntityModelAccess().getPackagesAssignment(), "rule__EntityModel__PackagesAssignment");
+					put(grammarAccess.getClassAccess().getAnnotationsAssignment_1(), "rule__Class__AnnotationsAssignment_1");
+					put(grammarAccess.getClassAccess().getAbstractAssignment_2_0_1_0(), "rule__Class__AbstractAssignment_2_0_1_0");
+					put(grammarAccess.getClassAccess().getHistorizedAssignment_2_0_1_1_0(), "rule__Class__HistorizedAssignment_2_0_1_1_0");
+					put(grammarAccess.getClassAccess().getTimedependentAssignment_2_0_1_1_1_0(), "rule__Class__TimedependentAssignment_2_0_1_1_1_0");
+					put(grammarAccess.getClassAccess().getTimedependentDateTypeAssignment_2_0_1_1_1_1_1(), "rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1");
+					put(grammarAccess.getClassAccess().getCacheableAssignment_2_0_1_2(), "rule__Class__CacheableAssignment_2_0_1_2");
+					put(grammarAccess.getClassAccess().getNameAssignment_2_0_3(), "rule__Class__NameAssignment_2_0_3");
+					put(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1(), "rule__Class__SuperTypeAssignment_2_0_4_1");
+					put(grammarAccess.getClassAccess().getPersistenceInfoAssignment_2_0_6(), "rule__Class__PersistenceInfoAssignment_2_0_6");
+					put(grammarAccess.getClassAccess().getInheritanceStrategyAssignment_2_0_7(), "rule__Class__InheritanceStrategyAssignment_2_0_7");
+					put(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_0_8_1(), "rule__Class__PersistenceUnitAssignment_2_0_8_1");
+					put(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_9(), "rule__Class__FeaturesAssignment_2_0_9");
+					put(grammarAccess.getClassAccess().getIndexesAssignment_2_0_10(), "rule__Class__IndexesAssignment_2_0_10");
+					put(grammarAccess.getClassAccess().getMappedSuperclassAssignment_2_1_1(), "rule__Class__MappedSuperclassAssignment_2_1_1");
+					put(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_2_1(), "rule__Class__SuperTypeAssignment_2_1_2_1");
+					put(grammarAccess.getClassAccess().getNameAssignment_2_1_3(), "rule__Class__NameAssignment_2_1_3");
+					put(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_1_5_1(), "rule__Class__PersistenceUnitAssignment_2_1_5_1");
+					put(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_6(), "rule__Class__FeaturesAssignment_2_1_6");
+					put(grammarAccess.getClassAccess().getNameAssignment_2_2_2(), "rule__Class__NameAssignment_2_2_2");
+					put(grammarAccess.getClassAccess().getSuperTypeAssignment_2_2_3_1(), "rule__Class__SuperTypeAssignment_2_2_3_1");
+					put(grammarAccess.getClassAccess().getFeaturesAssignment_2_2_5(), "rule__Class__FeaturesAssignment_2_2_5");
+					put(grammarAccess.getIndexAccess().getUniqueAssignment_0(), "rule__Index__UniqueAssignment_0");
+					put(grammarAccess.getIndexAccess().getNameAssignment_2(), "rule__Index__NameAssignment_2");
+					put(grammarAccess.getIndexAccess().getFeaturesAssignment_4(), "rule__Index__FeaturesAssignment_4");
+					put(grammarAccess.getIndexAccess().getFeaturesAssignment_5_1(), "rule__Index__FeaturesAssignment_5_1");
+					put(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameAssignment_1_0_1(), "rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1");
+					put(grammarAccess.getEntityPersistenceInfoAccess().getTableNameAssignment_1_1_1(), "rule__EntityPersistenceInfo__TableNameAssignment_1_1_1");
+					put(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameAssignment_2(), "rule__ColumnPersistenceInfo__ColumnNameAssignment_2");
+					put(grammarAccess.getEntityFeatureAccess().getAnnotationsAssignment_1(), "rule__EntityFeature__AnnotationsAssignment_1");
+					put(grammarAccess.getEntityFeatureAccess().getCascadingAssignment_2_0_1_1(), "rule__EntityFeature__CascadingAssignment_2_0_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_0_1_2(), "rule__EntityFeature__TypeAssignment_2_0_1_2");
+					put(grammarAccess.getEntityFeatureAccess().getMultiplicityAssignment_2_0_1_3(), "rule__EntityFeature__MultiplicityAssignment_2_0_1_3");
+					put(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_0_1_4_1(), "rule__EntityFeature__ConstraintsAssignment_2_0_1_4_1");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_0_1_5(), "rule__EntityFeature__NameAssignment_2_0_1_5");
+					put(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_0_1_6(), "rule__EntityFeature__PersistenceInfoAssignment_2_0_1_6");
+					put(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_0_1_7_1(), "rule__EntityFeature__OppositeAssignment_2_0_1_7_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_8_2(), "rule__EntityFeature__PropertiesAssignment_2_0_1_8_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_8_3_1(), "rule__EntityFeature__PropertiesAssignment_2_0_1_8_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_9_0(), "rule__EntityFeature__ResultFiltersAssignment_2_0_1_9_0");
+					put(grammarAccess.getEntityFeatureAccess().getTransientAssignment_2_1_1_0_0(), "rule__EntityFeature__TransientAssignment_2_1_1_0_0");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1(), "rule__EntityFeature__TypeAssignment_2_1_1_0_1");
+					put(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1(), "rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3(), "rule__EntityFeature__NameAssignment_2_1_1_0_3");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getDerivedAssignment_2_1_1_1_0(), "rule__EntityFeature__DerivedAssignment_2_1_1_1_0");
+					put(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_1_1(), "rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2(), "rule__EntityFeature__TypeAssignment_2_1_1_1_2");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3(), "rule__EntityFeature__NameAssignment_2_1_1_1_3");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_5(), "rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5");
+					put(grammarAccess.getEntityFeatureAccess().getIdAssignment_2_1_1_2_0_1(), "rule__EntityFeature__IdAssignment_2_1_1_2_0_1");
+					put(grammarAccess.getEntityFeatureAccess().getUuidAssignment_2_1_1_2_0_2(), "rule__EntityFeature__UuidAssignment_2_1_1_2_0_2");
+					put(grammarAccess.getEntityFeatureAccess().getVersionAssignment_2_1_1_2_0_3(), "rule__EntityFeature__VersionAssignment_2_1_1_2_0_3");
+					put(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_2_0_4(), "rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4");
+					put(grammarAccess.getEntityFeatureAccess().getDomainKeyAssignment_2_1_1_2_0_5(), "rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_2_1(), "rule__EntityFeature__TypeAssignment_2_1_1_2_1");
+					put(grammarAccess.getEntityFeatureAccess().getMultiplicityAssignment_2_1_1_2_2(), "rule__EntityFeature__MultiplicityAssignment_2_1_1_2_2");
+					put(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_2_3_1(), "rule__EntityFeature__ConstraintsAssignment_2_1_1_2_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_2_4(), "rule__EntityFeature__NameAssignment_2_1_1_2_4");
+					put(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_1_1_2_5(), "rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_5");
+					put(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_1_1_2_6_1(), "rule__EntityFeature__OppositeAssignment_2_1_1_2_6_1");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_7_2(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_7_2");
+					put(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_2_7_3_1(), "rule__EntityFeature__PropertiesAssignment_2_1_1_2_7_3_1");
+					put(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_2_1_1(), "rule__EntityFeature__TypeAssignment_2_2_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_2_1_2(), "rule__EntityFeature__NameAssignment_2_2_1_2");
+					put(grammarAccess.getEntityFeatureAccess().getParamsAssignment_2_2_1_4_0(), "rule__EntityFeature__ParamsAssignment_2_2_1_4_0");
+					put(grammarAccess.getEntityFeatureAccess().getParamsAssignment_2_2_1_4_1_1(), "rule__EntityFeature__ParamsAssignment_2_2_1_4_1_1");
+					put(grammarAccess.getEntityFeatureAccess().getBodyAssignment_2_2_1_6(), "rule__EntityFeature__BodyAssignment_2_2_1_6");
+					put(grammarAccess.getBeanFeatureAccess().getAnnotationsAssignment_1(), "rule__BeanFeature__AnnotationsAssignment_1");
+					put(grammarAccess.getBeanFeatureAccess().getCascadingAssignment_2_0_1_1(), "rule__BeanFeature__CascadingAssignment_2_0_1_1");
+					put(grammarAccess.getBeanFeatureAccess().getTypeAssignment_2_0_1_2(), "rule__BeanFeature__TypeAssignment_2_0_1_2");
+					put(grammarAccess.getBeanFeatureAccess().getMultiplicityAssignment_2_0_1_3(), "rule__BeanFeature__MultiplicityAssignment_2_0_1_3");
+					put(grammarAccess.getBeanFeatureAccess().getConstraintsAssignment_2_0_1_4_1(), "rule__BeanFeature__ConstraintsAssignment_2_0_1_4_1");
+					put(grammarAccess.getBeanFeatureAccess().getNameAssignment_2_0_1_5(), "rule__BeanFeature__NameAssignment_2_0_1_5");
+					put(grammarAccess.getBeanFeatureAccess().getOppositeAssignment_2_0_1_6_1(), "rule__BeanFeature__OppositeAssignment_2_0_1_6_1");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_7_2(), "rule__BeanFeature__PropertiesAssignment_2_0_1_7_2");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_0_1_7_3_1(), "rule__BeanFeature__PropertiesAssignment_2_0_1_7_3_1");
+					put(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_8_0(), "rule__BeanFeature__ResultFiltersAssignment_2_0_1_8_0");
+					put(grammarAccess.getBeanFeatureAccess().getTransientAssignment_2_1_1_0_0(), "rule__BeanFeature__TransientAssignment_2_1_1_0_0");
+					put(grammarAccess.getBeanFeatureAccess().getTypeAssignment_2_1_1_0_1(), "rule__BeanFeature__TypeAssignment_2_1_1_0_1");
+					put(grammarAccess.getBeanFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1(), "rule__BeanFeature__ConstraintsAssignment_2_1_1_0_2_1");
+					put(grammarAccess.getBeanFeatureAccess().getNameAssignment_2_1_1_0_3(), "rule__BeanFeature__NameAssignment_2_1_1_0_3");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2(), "rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_2");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1(), "rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_3_1");
+					put(grammarAccess.getBeanFeatureAccess().getIdAssignment_2_1_1_1_0_1(), "rule__BeanFeature__IdAssignment_2_1_1_1_0_1");
+					put(grammarAccess.getBeanFeatureAccess().getVersionAssignment_2_1_1_1_0_2(), "rule__BeanFeature__VersionAssignment_2_1_1_1_0_2");
+					put(grammarAccess.getBeanFeatureAccess().getTypeAssignment_2_1_1_1_1(), "rule__BeanFeature__TypeAssignment_2_1_1_1_1");
+					put(grammarAccess.getBeanFeatureAccess().getMultiplicityAssignment_2_1_1_1_2(), "rule__BeanFeature__MultiplicityAssignment_2_1_1_1_2");
+					put(grammarAccess.getBeanFeatureAccess().getConstraintsAssignment_2_1_1_1_3_1(), "rule__BeanFeature__ConstraintsAssignment_2_1_1_1_3_1");
+					put(grammarAccess.getBeanFeatureAccess().getNameAssignment_2_1_1_1_4(), "rule__BeanFeature__NameAssignment_2_1_1_1_4");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_5_2(), "rule__BeanFeature__PropertiesAssignment_2_1_1_1_5_2");
+					put(grammarAccess.getBeanFeatureAccess().getPropertiesAssignment_2_1_1_1_5_3_1(), "rule__BeanFeature__PropertiesAssignment_2_1_1_1_5_3_1");
+					put(grammarAccess.getBeanFeatureAccess().getTypeAssignment_2_2_1_1(), "rule__BeanFeature__TypeAssignment_2_2_1_1");
+					put(grammarAccess.getBeanFeatureAccess().getNameAssignment_2_2_1_2(), "rule__BeanFeature__NameAssignment_2_2_1_2");
+					put(grammarAccess.getBeanFeatureAccess().getParamsAssignment_2_2_1_4_0(), "rule__BeanFeature__ParamsAssignment_2_2_1_4_0");
+					put(grammarAccess.getBeanFeatureAccess().getParamsAssignment_2_2_1_4_1_1(), "rule__BeanFeature__ParamsAssignment_2_2_1_4_1_1");
+					put(grammarAccess.getBeanFeatureAccess().getBodyAssignment_2_2_1_6(), "rule__BeanFeature__BodyAssignment_2_2_1_6");
+					put(grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorColumnAssignment_3_0_1(), "rule__TablePerClassStrategy__DiscriminatorColumnAssignment_3_0_1");
+					put(grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorTypeAssignment_3_1_1(), "rule__TablePerClassStrategy__DiscriminatorTypeAssignment_3_1_1");
+					put(grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorValueAssignment_3_2_1(), "rule__TablePerClassStrategy__DiscriminatorValueAssignment_3_2_1");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorColumnAssignment_3_0_1(), "rule__TablePerSubclassStrategy__DiscriminatorColumnAssignment_3_0_1");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorTypeAssignment_3_1_1(), "rule__TablePerSubclassStrategy__DiscriminatorTypeAssignment_3_1_1");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorValueAssignment_3_2_1(), "rule__TablePerSubclassStrategy__DiscriminatorValueAssignment_3_2_1");
+					put(grammarAccess.getTypedPackageAccess().getNameAssignment_2(), "rule__TypedPackage__NameAssignment_2");
+					put(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1(), "rule__TypedPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2(), "rule__TypedPackage__TypesAssignment_3_2");
+					put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getNameAssignment_1(), "rule__DataType__NameAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1(), "rule__DataType__JvmTypeReferenceAssignment_2_0_1");
+					put(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2(), "rule__DataType__AsPrimitiveAssignment_2_0_2");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3(), "rule__DataType__ConstraintsAssignment_2_0_3");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2(), "rule__DataType__PropertiesAssignment_2_0_4_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1(), "rule__DataType__PropertiesAssignment_2_0_4_3_1");
+					put(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0(), "rule__DataType__DateAssignment_2_1_0");
+					put(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1(), "rule__DataType__DateTypeAssignment_2_1_1");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2(), "rule__DataType__ConstraintsAssignment_2_1_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2(), "rule__DataType__PropertiesAssignment_2_1_3_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1(), "rule__DataType__PropertiesAssignment_2_1_3_3_1");
+					put(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0(), "rule__DataType__AsBlobAssignment_2_2_0");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1(), "rule__DataType__ConstraintsAssignment_2_2_1");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2(), "rule__DataType__PropertiesAssignment_2_2_2_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1(), "rule__DataType__PropertiesAssignment_2_2_2_3_1");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertFalse__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertTrue__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3(), "rule__DtCDecimalMax__MaxAssignment_3");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3(), "rule__DtCDecimalMin__MinAssignment_3");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3(), "rule__DtCDigits__IntDigitsAssignment_3");
+					put(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5(), "rule__DtCDigits__FractionDigitsAssignment_5");
+					put(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCDigits__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCDigits__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCDigits__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCFuture__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCFuture__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCFutureAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCFuture__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCPastAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCPast__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCPastAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCPast__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCPastAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCPast__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMaxAssignment_3(), "rule__DtCNumericMax__MaxAssignment_3");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMinAssignment_3(), "rule__DtCNumericMin__MinAssignment_3");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNotNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNotNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCRegExAccess().getPatternAssignment_3(), "rule__DtCRegEx__PatternAssignment_3");
+					put(grammarAccess.getDtCRegExAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCRegEx__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCRegExAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCRegExAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCRegEx__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCSizeAccess().getMinAssignment_3(), "rule__DtCSize__MinAssignment_3");
+					put(grammarAccess.getDtCSizeAccess().getMaxAssignment_5(), "rule__DtCSize__MaxAssignment_5");
+					put(grammarAccess.getDtCSizeAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCSize__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCSizeAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCSize__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCSizeAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCSize__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getModifierAccess().getFinalAssignment_0(), "rule__Modifier__FinalAssignment_0");
+					put(grammarAccess.getModifierAccess().getStaticAssignment_1(), "rule__Modifier__StaticAssignment_1");
+					put(grammarAccess.getModifierAccess().getVisibilityAssignment_2(), "rule__Modifier__VisibilityAssignment_2");
+					put(grammarAccess.getEnumAccess().getNameAssignment_1(), "rule__Enum__NameAssignment_1");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_3(), "rule__Enum__LiteralsAssignment_3");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_4_1(), "rule__Enum__LiteralsAssignment_4_1");
+					put(grammarAccess.getEnumLiteralAccess().getNameAssignment_0(), "rule__EnumLiteral__NameAssignment_0");
+					put(grammarAccess.getEnumLiteralAccess().getDefaultAssignment_1_0_1(), "rule__EnumLiteral__DefaultAssignment_1_0_1");
+					put(grammarAccess.getEnumLiteralAccess().getNullAssignment_1_1_0(), "rule__EnumLiteral__NullAssignment_1_1_0");
+					put(grammarAccess.getEnumLiteralAccess().getValueAssignment_1_1_2_1(), "rule__EnumLiteral__ValueAssignment_1_1_2_1");
+					put(grammarAccess.getAnnotationDefAccess().getAnnotationAssignment_0(), "rule__AnnotationDef__AnnotationAssignment_0");
+					put(grammarAccess.getResultFiltersAccess().getResultFiltersAssignment_3(), "rule__ResultFilters__ResultFiltersAssignment_3");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAttributeAssignment_0(), "rule__AttributeMatchingConstraint__AttributeAssignment_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeAssignment_1(), "rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0(), "rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1(), "rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1");
+					put(grammarAccess.getKeyAndValueAccess().getKeyAssignment_2(), "rule__KeyAndValue__KeyAssignment_2");
+					put(grammarAccess.getKeyAndValueAccess().getValueAssignment_5(), "rule__KeyAndValue__ValueAssignment_5");
+					put(grammarAccess.getMultiplicityAccess().getLowerAssignment_1(), "rule__Multiplicity__LowerAssignment_1");
+					put(grammarAccess.getMultiplicityAccess().getUpperAssignment_2_1(), "rule__Multiplicity__UpperAssignment_2_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+					put(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), "rule__Class__UnorderedGroup_2_0_1");
+					put(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), "rule__EntityPersistenceInfo__UnorderedGroup_1");
+					put(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), "rule__TablePerClassStrategy__UnorderedGroup_3");
+					put(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), "rule__TablePerSubclassStrategy__UnorderedGroup_3");
+					put(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), "rule__DtCAssertFalse__UnorderedGroup_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), "rule__DtCAssertTrue__UnorderedGroup_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), "rule__DtCDecimalMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), "rule__DtCDecimalMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), "rule__DtCDigits__UnorderedGroup_6");
+					put(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), "rule__DtCFuture__UnorderedGroup_2");
+					put(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), "rule__DtCPast__UnorderedGroup_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), "rule__DtCNumericMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), "rule__DtCNumericMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), "rule__DtCNotNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), "rule__DtCNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), "rule__DtCRegEx__UnorderedGroup_4");
+					put(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), "rule__DtCSize__UnorderedGroup_6");
+					put(grammarAccess.getModifierAccess().getUnorderedGroup(), "rule__Modifier__UnorderedGroup");
+					put(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), "rule__EnumLiteral__UnorderedGroup_1");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarParser typedParser = (org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.antlr.internal.InternalEntityGrammarParser) parser;
+			typedParser.entryRuleEntityModel();
+			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 EntityGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(EntityGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/PartialEntityGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/PartialEntityGrammarContentAssistParser.java
new file mode 100644
index 0000000..311c2e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/PartialEntityGrammarContentAssistParser.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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 PartialEntityGrammarContentAssistParser extends EntityGrammarParser 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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g
new file mode 100644
index 0000000..f43b6b1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalEntityGrammar;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.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.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private EntityGrammarGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(EntityGrammarGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleEntityModel
+entryRuleEntityModel 
+:
+{ before(grammarAccess.getEntityModelRule()); }
+	 ruleEntityModel
+{ after(grammarAccess.getEntityModelRule()); } 
+	 EOF 
+;
+
+// Rule EntityModel
+ruleEntityModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntityModelAccess().getPackagesAssignment()); }
+(rule__EntityModel__PackagesAssignment)*
+{ after(grammarAccess.getEntityModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass 
+:
+{ before(grammarAccess.getClassRule()); }
+	 ruleClass
+{ after(grammarAccess.getClassRule()); } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassAccess().getGroup()); }
+(rule__Class__Group__0)
+{ after(grammarAccess.getClassAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleIndex
+entryRuleIndex 
+:
+{ before(grammarAccess.getIndexRule()); }
+	 ruleIndex
+{ after(grammarAccess.getIndexRule()); } 
+	 EOF 
+;
+
+// Rule Index
+ruleIndex
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getIndexAccess().getGroup()); }
+(rule__Index__Group__0)
+{ after(grammarAccess.getIndexAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntityPersistenceInfo
+entryRuleEntityPersistenceInfo 
+:
+{ before(grammarAccess.getEntityPersistenceInfoRule()); }
+	 ruleEntityPersistenceInfo
+{ after(grammarAccess.getEntityPersistenceInfoRule()); } 
+	 EOF 
+;
+
+// Rule EntityPersistenceInfo
+ruleEntityPersistenceInfo
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getGroup()); }
+(rule__EntityPersistenceInfo__Group__0)
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleColumnPersistenceInfo
+entryRuleColumnPersistenceInfo 
+:
+{ before(grammarAccess.getColumnPersistenceInfoRule()); }
+	 ruleColumnPersistenceInfo
+{ after(grammarAccess.getColumnPersistenceInfoRule()); } 
+	 EOF 
+;
+
+// Rule ColumnPersistenceInfo
+ruleColumnPersistenceInfo
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getColumnPersistenceInfoAccess().getGroup()); }
+(rule__ColumnPersistenceInfo__Group__0)
+{ after(grammarAccess.getColumnPersistenceInfoAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntityFeature
+entryRuleEntityFeature 
+:
+{ before(grammarAccess.getEntityFeatureRule()); }
+	 ruleEntityFeature
+{ after(grammarAccess.getEntityFeatureRule()); } 
+	 EOF 
+;
+
+// Rule EntityFeature
+ruleEntityFeature
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup()); }
+(rule__EntityFeature__Group__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBeanFeature
+entryRuleBeanFeature 
+:
+{ before(grammarAccess.getBeanFeatureRule()); }
+	 ruleBeanFeature
+{ after(grammarAccess.getBeanFeatureRule()); } 
+	 EOF 
+;
+
+// Rule BeanFeature
+ruleBeanFeature
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBeanFeatureAccess().getGroup()); }
+(rule__BeanFeature__Group__0)
+{ after(grammarAccess.getBeanFeatureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEntityInheritanceStrategy
+entryRuleEntityInheritanceStrategy 
+:
+{ before(grammarAccess.getEntityInheritanceStrategyRule()); }
+	 ruleEntityInheritanceStrategy
+{ after(grammarAccess.getEntityInheritanceStrategyRule()); } 
+	 EOF 
+;
+
+// Rule EntityInheritanceStrategy
+ruleEntityInheritanceStrategy
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEntityInheritanceStrategyAccess().getAlternatives()); }
+(rule__EntityInheritanceStrategy__Alternatives)
+{ after(grammarAccess.getEntityInheritanceStrategyAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTablePerClassStrategy
+entryRuleTablePerClassStrategy 
+:
+{ before(grammarAccess.getTablePerClassStrategyRule()); }
+	 ruleTablePerClassStrategy
+{ after(grammarAccess.getTablePerClassStrategyRule()); } 
+	 EOF 
+;
+
+// Rule TablePerClassStrategy
+ruleTablePerClassStrategy
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTablePerClassStrategyAccess().getGroup()); }
+(rule__TablePerClassStrategy__Group__0)
+{ after(grammarAccess.getTablePerClassStrategyAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTablePerSubclassStrategy
+entryRuleTablePerSubclassStrategy 
+:
+{ before(grammarAccess.getTablePerSubclassStrategyRule()); }
+	 ruleTablePerSubclassStrategy
+{ after(grammarAccess.getTablePerSubclassStrategyRule()); } 
+	 EOF 
+;
+
+// Rule TablePerSubclassStrategy
+ruleTablePerSubclassStrategy
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTablePerSubclassStrategyAccess().getGroup()); }
+(rule__TablePerSubclassStrategy__Group__0)
+{ after(grammarAccess.getTablePerSubclassStrategyAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTRANSLATABLEID
+entryRuleTRANSLATABLEID 
+:
+{ before(grammarAccess.getTRANSLATABLEIDRule()); }
+	 ruleTRANSLATABLEID
+{ after(grammarAccess.getTRANSLATABLEIDRule()); } 
+	 EOF 
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTRANSLATABLEIDAccess().getValidIDWithKeywordsParserRuleCall()); }
+	ruleValidIDWithKeywords
+{ after(grammarAccess.getTRANSLATABLEIDAccess().getValidIDWithKeywordsParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage 
+:
+{ before(grammarAccess.getTypedPackageRule()); }
+	 ruleTypedPackage
+{ after(grammarAccess.getTypedPackageRule()); } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup()); }
+(rule__TypedPackage__Group__0)
+{ after(grammarAccess.getTypedPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleType
+entryRuleType 
+:
+{ before(grammarAccess.getTypeRule()); }
+	 ruleType
+{ after(grammarAccess.getTypeRule()); } 
+	 EOF 
+;
+
+// Rule Type
+ruleType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeAccess().getAlternatives()); }
+(rule__Type__Alternatives)
+{ after(grammarAccess.getTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType 
+:
+{ before(grammarAccess.getDataTypeRule()); }
+	 ruleDataType
+{ after(grammarAccess.getDataTypeRule()); } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup()); }
+(rule__DataType__Group__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAllConstraints
+entryRuleAllConstraints 
+:
+{ before(grammarAccess.getAllConstraintsRule()); }
+	 ruleAllConstraints
+{ after(grammarAccess.getAllConstraintsRule()); } 
+	 EOF 
+;
+
+// Rule AllConstraints
+ruleAllConstraints
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAllConstraintsAccess().getAlternatives()); }
+(rule__AllConstraints__Alternatives)
+{ after(grammarAccess.getAllConstraintsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint 
+:
+{ before(grammarAccess.getDataTypeConstraintRule()); }
+	 ruleDataTypeConstraint
+{ after(grammarAccess.getDataTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+(rule__DataTypeConstraint__Alternatives)
+{ after(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint 
+:
+{ before(grammarAccess.getDateConstraintRule()); }
+	 ruleDateConstraint
+{ after(grammarAccess.getDateConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+(rule__DateConstraint__Alternatives)
+{ after(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint 
+:
+{ before(grammarAccess.getBlobTypeConstraintRule()); }
+	 ruleBlobTypeConstraint
+{ after(grammarAccess.getBlobTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+(rule__BlobTypeConstraint__Alternatives)
+{ after(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse 
+:
+{ before(grammarAccess.getDtCAssertFalseRule()); }
+	 ruleDtCAssertFalse
+{ after(grammarAccess.getDtCAssertFalseRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+(rule__DtCAssertFalse__Group__0)
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue 
+:
+{ before(grammarAccess.getDtCAssertTrueRule()); }
+	 ruleDtCAssertTrue
+{ after(grammarAccess.getDtCAssertTrueRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+(rule__DtCAssertTrue__Group__0)
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax 
+:
+{ before(grammarAccess.getDtCDecimalMaxRule()); }
+	 ruleDtCDecimalMax
+{ after(grammarAccess.getDtCDecimalMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+(rule__DtCDecimalMax__Group__0)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin 
+:
+{ before(grammarAccess.getDtCDecimalMinRule()); }
+	 ruleDtCDecimalMin
+{ after(grammarAccess.getDtCDecimalMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+(rule__DtCDecimalMin__Group__0)
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits 
+:
+{ before(grammarAccess.getDtCDigitsRule()); }
+	 ruleDtCDigits
+{ after(grammarAccess.getDtCDigitsRule()); } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup()); }
+(rule__DtCDigits__Group__0)
+{ after(grammarAccess.getDtCDigitsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture 
+:
+{ before(grammarAccess.getDtCFutureRule()); }
+	 ruleDtCFuture
+{ after(grammarAccess.getDtCFutureRule()); } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup()); }
+(rule__DtCFuture__Group__0)
+{ after(grammarAccess.getDtCFutureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast 
+:
+{ before(grammarAccess.getDtCPastRule()); }
+	 ruleDtCPast
+{ after(grammarAccess.getDtCPastRule()); } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCPastAccess().getGroup()); }
+(rule__DtCPast__Group__0)
+{ after(grammarAccess.getDtCPastAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax 
+:
+{ before(grammarAccess.getDtCNumericMaxRule()); }
+	 ruleDtCNumericMax
+{ after(grammarAccess.getDtCNumericMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+(rule__DtCNumericMax__Group__0)
+{ after(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin 
+:
+{ before(grammarAccess.getDtCNumericMinRule()); }
+	 ruleDtCNumericMin
+{ after(grammarAccess.getDtCNumericMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+(rule__DtCNumericMin__Group__0)
+{ after(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull 
+:
+{ before(grammarAccess.getDtCNotNullRule()); }
+	 ruleDtCNotNull
+{ after(grammarAccess.getDtCNotNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNotNullAccess().getGroup()); }
+(rule__DtCNotNull__Group__0)
+{ after(grammarAccess.getDtCNotNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull 
+:
+{ before(grammarAccess.getDtCNullRule()); }
+	 ruleDtCNull
+{ after(grammarAccess.getDtCNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNullAccess().getGroup()); }
+(rule__DtCNull__Group__0)
+{ after(grammarAccess.getDtCNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx 
+:
+{ before(grammarAccess.getDtCRegExRule()); }
+	 ruleDtCRegEx
+{ after(grammarAccess.getDtCRegExRule()); } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCRegExAccess().getGroup()); }
+(rule__DtCRegEx__Group__0)
+{ after(grammarAccess.getDtCRegExAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize 
+:
+{ before(grammarAccess.getDtCSizeRule()); }
+	 ruleDtCSize
+{ after(grammarAccess.getDtCSizeRule()); } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCSizeAccess().getGroup()); }
+(rule__DtCSize__Group__0)
+{ after(grammarAccess.getDtCSizeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType 
+:
+{ before(grammarAccess.getScalarTypeRule()); }
+	 ruleScalarType
+{ after(grammarAccess.getScalarTypeRule()); } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+(rule__ScalarType__Alternatives)
+{ after(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum 
+:
+{ before(grammarAccess.getEnumRule()); }
+	 ruleEnum
+{ after(grammarAccess.getEnumRule()); } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumAccess().getGroup()); }
+(rule__Enum__Group__0)
+{ after(grammarAccess.getEnumAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral 
+:
+{ before(grammarAccess.getEnumLiteralRule()); }
+	 ruleEnumLiteral
+{ after(grammarAccess.getEnumLiteralRule()); } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumLiteralAccess().getGroup()); }
+(rule__EnumLiteral__Group__0)
+{ after(grammarAccess.getEnumLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef 
+:
+{ before(grammarAccess.getAnnotationDefRule()); }
+	 ruleAnnotationDef
+{ after(grammarAccess.getAnnotationDefRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationDefAccess().getGroup()); }
+(rule__AnnotationDef__Group__0)
+{ after(grammarAccess.getAnnotationDefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleResultFilters
+entryRuleResultFilters 
+:
+{ before(grammarAccess.getResultFiltersRule()); }
+	 ruleResultFilters
+{ after(grammarAccess.getResultFiltersRule()); } 
+	 EOF 
+;
+
+// Rule ResultFilters
+ruleResultFilters
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getResultFiltersAccess().getGroup()); }
+(rule__ResultFilters__Group__0)
+{ after(grammarAccess.getResultFiltersAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter 
+:
+{ before(grammarAccess.getResultFilterRule()); }
+	 ruleResultFilter
+{ after(grammarAccess.getResultFilterRule()); } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+	ruleAttributeMatchingConstraint
+{ after(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint 
+:
+{ before(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 ruleAttributeMatchingConstraint
+{ after(grammarAccess.getAttributeMatchingConstraintRule()); } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+(rule__AttributeMatchingConstraint__Group__0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue 
+:
+{ before(grammarAccess.getKeyAndValueRule()); }
+	 ruleKeyAndValue
+{ after(grammarAccess.getKeyAndValueRule()); } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getKeyAndValueAccess().getGroup()); }
+(rule__KeyAndValue__Group__0)
+{ after(grammarAccess.getKeyAndValueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getLQualifiedNameWithWildCardRule()); }
+	 ruleLQualifiedNameWithWildCard
+{ after(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__LQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN 
+:
+{ before(grammarAccess.getLFQNRule()); }
+	 ruleLFQN
+{ after(grammarAccess.getLFQNRule()); } 
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLFQNAccess().getGroup()); }
+(rule__LFQN__Group__0)
+{ after(grammarAccess.getLFQNAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE 
+:
+{ before(grammarAccess.getTYPE_CROSS_REFERENCERule()); }
+	 ruleTYPE_CROSS_REFERENCE
+{ after(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords 
+:
+{ before(grammarAccess.getValidIDWithKeywordsRule()); }
+	 ruleValidIDWithKeywords
+{ after(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+(rule__ValidIDWithKeywords__Alternatives)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleMultiplicity
+entryRuleMultiplicity 
+:
+{ before(grammarAccess.getMultiplicityRule()); }
+	 ruleMultiplicity
+{ after(grammarAccess.getMultiplicityRule()); } 
+	 EOF 
+;
+
+// Rule Multiplicity
+ruleMultiplicity
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getMultiplicityAccess().getGroup()); }
+(rule__Multiplicity__Group__0)
+{ after(grammarAccess.getMultiplicityAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt 
+:
+{ before(grammarAccess.getLIntRule()); }
+	 ruleLInt
+{ after(grammarAccess.getLIntRule()); } 
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLIntAccess().getGroup()); }
+(rule__LInt__Group__0)
+{ after(grammarAccess.getLIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal 
+:
+{ before(grammarAccess.getLDecimalRule()); }
+	 ruleLDecimal
+{ after(grammarAccess.getLDecimalRule()); } 
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLDecimalAccess().getGroup()); }
+(rule__LDecimal__Group__0)
+{ after(grammarAccess.getLDecimalAccess().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 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 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 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 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 DiscriminatorType
+ruleDiscriminatorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscriminatorTypeAccess().getAlternatives()); }
+(rule__DiscriminatorType__Alternatives)
+{ after(grammarAccess.getDiscriminatorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LHistorizedDateType
+ruleLHistorizedDateType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLHistorizedDateTypeAccess().getAlternatives()); }
+(rule__LHistorizedDateType__Alternatives)
+{ after(grammarAccess.getLHistorizedDateTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+(rule__ConstraintSeverity__Alternatives)
+{ after(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule DateType
+ruleDateType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getAlternatives()); }
+(rule__DateType__Alternatives)
+{ after(grammarAccess.getDateTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LVisibility
+ruleLVisibility
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+(rule__LVisibility__Alternatives)
+{ after(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LComparatorType
+ruleLComparatorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+(rule__LComparatorType__Alternatives)
+{ after(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LowerBound
+ruleLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+(rule__LowerBound__Alternatives)
+{ after(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule UpperBound
+ruleUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+(rule__UpperBound__Alternatives)
+{ after(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Class__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0()); }
+(rule__Class__Group_2_0__0)
+{ after(grammarAccess.getClassAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getClassAccess().getGroup_2_1()); }
+(rule__Class__Group_2_1__0)
+{ after(grammarAccess.getClassAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getClassAccess().getGroup_2_2()); }
+(rule__Class__Group_2_2__0)
+{ after(grammarAccess.getClassAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Alternatives_2_0_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getHistorizedAssignment_2_0_1_1_0()); }
+(rule__Class__HistorizedAssignment_2_0_1_1_0)
+{ after(grammarAccess.getClassAccess().getHistorizedAssignment_2_0_1_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getClassAccess().getGroup_2_0_1_1_1()); }
+(rule__Class__Group_2_0_1_1_1__0)
+{ after(grammarAccess.getClassAccess().getGroup_2_0_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0()); }
+(rule__EntityFeature__Group_2_0__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1()); }
+(rule__EntityFeature__Group_2_1__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_2()); }
+(rule__EntityFeature__Group_2_2__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Alternatives_2_0_1_9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_9_0()); }
+(rule__EntityFeature__ResultFiltersAssignment_2_0_1_9_0)
+{ after(grammarAccess.getEntityFeatureAccess().getResultFiltersAssignment_2_0_1_9_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_0_1_9_1()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_0_1_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Alternatives_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0()); }
+(rule__EntityFeature__Group_2_1_1_0__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1()); }
+(rule__EntityFeature__Group_2_1_1_1__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2()); }
+(rule__EntityFeature__Group_2_1_1_2__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Alternatives_2_1_1_2_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getVarKeyword_2_1_1_2_0_0()); }
+
+	'var' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getVarKeyword_2_1_1_2_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getIdAssignment_2_1_1_2_0_1()); }
+(rule__EntityFeature__IdAssignment_2_1_1_2_0_1)
+{ after(grammarAccess.getEntityFeatureAccess().getIdAssignment_2_1_1_2_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getUuidAssignment_2_1_1_2_0_2()); }
+(rule__EntityFeature__UuidAssignment_2_1_1_2_0_2)
+{ after(grammarAccess.getEntityFeatureAccess().getUuidAssignment_2_1_1_2_0_2()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getVersionAssignment_2_1_1_2_0_3()); }
+(rule__EntityFeature__VersionAssignment_2_1_1_2_0_3)
+{ after(grammarAccess.getEntityFeatureAccess().getVersionAssignment_2_1_1_2_0_3()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_2_0_4()); }
+(rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4)
+{ after(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_2_0_4()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityFeatureAccess().getDomainKeyAssignment_2_1_1_2_0_5()); }
+(rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5)
+{ after(grammarAccess.getEntityFeatureAccess().getDomainKeyAssignment_2_1_1_2_0_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_0()); }
+(rule__BeanFeature__Group_2_0__0)
+{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1()); }
+(rule__BeanFeature__Group_2_1__0)
+{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_2()); }
+(rule__BeanFeature__Group_2_2__0)
+{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Alternatives_2_0_1_8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_8_0()); }
+(rule__BeanFeature__ResultFiltersAssignment_2_0_1_8_0)
+{ after(grammarAccess.getBeanFeatureAccess().getResultFiltersAssignment_2_0_1_8_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_0_1_8_1()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_0_1_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Alternatives_2_1_1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0()); }
+(rule__BeanFeature__Group_2_1_1_0__0)
+{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1()); }
+(rule__BeanFeature__Group_2_1_1_1__0)
+{ after(grammarAccess.getBeanFeatureAccess().getGroup_2_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BeanFeature__Alternatives_2_1_1_1_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBeanFeatureAccess().getVarKeyword_2_1_1_1_0_0()); }
+
+	'var' 
+
+{ after(grammarAccess.getBeanFeatureAccess().getVarKeyword_2_1_1_1_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBeanFeatureAccess().getIdAssignment_2_1_1_1_0_1()); }
+(rule__BeanFeature__IdAssignment_2_1_1_1_0_1)
+{ after(grammarAccess.getBeanFeatureAccess().getIdAssignment_2_1_1_1_0_1()); }
+)
+
+    |(
+{ before(grammarAccess.getBeanFeatureAccess().getVersionAssignment_2_1_1_1_0_2()); }
+(rule__BeanFeature__VersionAssignment_2_1_1_1_0_2)
+{ after(grammarAccess.getBeanFeatureAccess().getVersionAssignment_2_1_1_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityInheritanceStrategy__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerClassStrategyParserRuleCall_0()); }
+	ruleTablePerClassStrategy
+{ after(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerClassStrategyParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerSubclassStrategyParserRuleCall_1()); }
+	ruleTablePerSubclassStrategy
+{ after(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerSubclassStrategyParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Type__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+	ruleScalarType
+{ after(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+	ruleClass
+{ after(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+(rule__DataType__Group_2_0__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+(rule__DataType__Group_2_1__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+(rule__DataType__Group_2_2__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AllConstraints__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); }
+	ruleDtCFuture
+{ after(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); }
+)
+
+    |(
+{ before(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); }
+	ruleDtCPast
+{ after(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+	ruleDtCFuture
+{ after(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+	ruleDtCPast
+{ after(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+	ruleDtCNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BlobTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+	ruleDtCNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ScalarType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+	ruleDataType
+{ after(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+	ruleEnum
+{ after(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeMatchingConstraint__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+(rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+(rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValidIDWithKeywords__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+
+	'cachable' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+
+	'id' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+
+	'uuid' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+
+	'transient' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+
+	'version' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+(rule__ValidIDWithKeywords__Group_5__0)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+
+	'refers' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+
+	'settings' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+
+	'lazy' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+
+	'notnull' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+
+	'dto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+
+	'date' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+
+	'ref' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+
+	'cascade' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+
+	'var' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LInt__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_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__DiscriminatorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDiscriminatorTypeAccess().getINHERITEnumLiteralDeclaration_0()); }
+(	'INHERIT' 
+)
+{ after(grammarAccess.getDiscriminatorTypeAccess().getINHERITEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDiscriminatorTypeAccess().getSTRINGEnumLiteralDeclaration_1()); }
+(	'STRING' 
+)
+{ after(grammarAccess.getDiscriminatorTypeAccess().getSTRINGEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDiscriminatorTypeAccess().getCHAREnumLiteralDeclaration_2()); }
+(	'CHAR' 
+)
+{ after(grammarAccess.getDiscriminatorTypeAccess().getCHAREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDiscriminatorTypeAccess().getINTEGEREnumLiteralDeclaration_3()); }
+(	'INT' 
+)
+{ after(grammarAccess.getDiscriminatorTypeAccess().getINTEGEREnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LHistorizedDateType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLHistorizedDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+(	'DATE' 
+)
+{ after(grammarAccess.getLHistorizedDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLHistorizedDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_1()); }
+(	'TIMESTAMP' 
+)
+{ after(grammarAccess.getLHistorizedDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintSeverity__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+(	'info' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+(	'warn' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+(	'error' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+(	'date' 
+)
+{ after(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+(	'time' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+(	'timestamp' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LVisibility__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+(	'package' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+(	'private' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+(	'protected' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+(	'public' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LComparatorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+(	'==' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+(	'>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+(	'<' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+(	'>=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+(	'<=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+(	'<>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LowerBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+(	'0' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+(	'?' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+(	'+' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+(	'1' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UpperBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+(	'1' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Class__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__0__Impl
+	rule__Class__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLClassAction_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLClassAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__1__Impl
+	rule__Class__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+(rule__Class__AnnotationsAssignment_1)*
+{ after(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAlternatives_2()); }
+(rule__Class__Alternatives_2)
+{ after(grammarAccess.getClassAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Class__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__0__Impl
+	rule__Class__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_0_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__1__Impl
+	rule__Class__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1()); }
+(rule__Class__UnorderedGroup_2_0_1)
+{ after(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__2__Impl
+	rule__Class__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getEntityKeyword_2_0_2()); }
+
+	'entity' 
+
+{ after(grammarAccess.getClassAccess().getEntityKeyword_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__3__Impl
+	rule__Class__Group_2_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getNameAssignment_2_0_3()); }
+(rule__Class__NameAssignment_2_0_3)
+{ after(grammarAccess.getClassAccess().getNameAssignment_2_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__4__Impl
+	rule__Class__Group_2_0__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0_4()); }
+(rule__Class__Group_2_0_4__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_0_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__5__Impl
+	rule__Class__Group_2_0__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_5()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__6__Impl
+	rule__Class__Group_2_0__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceInfoAssignment_2_0_6()); }
+(rule__Class__PersistenceInfoAssignment_2_0_6)
+{ after(grammarAccess.getClassAccess().getPersistenceInfoAssignment_2_0_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__7__Impl
+	rule__Class__Group_2_0__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getInheritanceStrategyAssignment_2_0_7()); }
+(rule__Class__InheritanceStrategyAssignment_2_0_7)?
+{ after(grammarAccess.getClassAccess().getInheritanceStrategyAssignment_2_0_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__8__Impl
+	rule__Class__Group_2_0__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0_8()); }
+(rule__Class__Group_2_0_8__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_0_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__9__Impl
+	rule__Class__Group_2_0__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_9()); }
+(rule__Class__FeaturesAssignment_2_0_9)*
+{ after(grammarAccess.getClassAccess().getFeaturesAssignment_2_0_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__10__Impl
+	rule__Class__Group_2_0__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getIndexesAssignment_2_0_10()); }
+(rule__Class__IndexesAssignment_2_0_10)*
+{ after(grammarAccess.getClassAccess().getIndexesAssignment_2_0_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0__11__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_11()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_2_0_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_1_1_1__0__Impl
+	rule__Class__Group_2_0_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getTimedependentAssignment_2_0_1_1_1_0()); }
+(rule__Class__TimedependentAssignment_2_0_1_1_1_0)
+{ after(grammarAccess.getClassAccess().getTimedependentAssignment_2_0_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_1_1_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_0_1_1_1_1()); }
+(rule__Class__Group_2_0_1_1_1_1__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_0_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Class__Group_2_0_1_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_1_1_1_1__0__Impl
+	rule__Class__Group_2_0_1_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_1_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftParenthesisKeyword_2_0_1_1_1_1_0()); }
+
+	'(' 
+
+{ after(grammarAccess.getClassAccess().getLeftParenthesisKeyword_2_0_1_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_1_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_1_1_1_1__1__Impl
+	rule__Class__Group_2_0_1_1_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_1_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getTimedependentDateTypeAssignment_2_0_1_1_1_1_1()); }
+(rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1)
+{ after(grammarAccess.getClassAccess().getTimedependentDateTypeAssignment_2_0_1_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_1_1_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_1_1_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_1_1_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightParenthesisKeyword_2_0_1_1_1_1_2()); }
+
+	')' 
+
+{ after(grammarAccess.getClassAccess().getRightParenthesisKeyword_2_0_1_1_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Class__Group_2_0_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_4__0__Impl
+	rule__Class__Group_2_0_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1()); }
+(rule__Class__SuperTypeAssignment_2_0_4_1)
+{ after(grammarAccess.getClassAccess().getSuperTypeAssignment_2_0_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Class__Group_2_0_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_8__0__Impl
+	rule__Class__Group_2_0_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_0_8_0()); }
+
+	'persistenceUnit' 
+
+{ after(grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_0_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_8__1__Impl
+	rule__Class__Group_2_0_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_0_8_1()); }
+(rule__Class__PersistenceUnitAssignment_2_0_8_1)
+{ after(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_0_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_0_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_0_8__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_0_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSemicolonKeyword_2_0_8_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getClassAccess().getSemicolonKeyword_2_0_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Class__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__0__Impl
+	rule__Class__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_1_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__1__Impl
+	rule__Class__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getMappedSuperclassAssignment_2_1_1()); }
+(rule__Class__MappedSuperclassAssignment_2_1_1)
+{ after(grammarAccess.getClassAccess().getMappedSuperclassAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__2__Impl
+	rule__Class__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_1_2()); }
+(rule__Class__Group_2_1_2__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__3__Impl
+	rule__Class__Group_2_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getNameAssignment_2_1_3()); }
+(rule__Class__NameAssignment_2_1_3)
+{ after(grammarAccess.getClassAccess().getNameAssignment_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__4__Impl
+	rule__Class__Group_2_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_4()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__5__Impl
+	rule__Class__Group_2_1__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_1_5()); }
+(rule__Class__Group_2_1_5__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__6__Impl
+	rule__Class__Group_2_1__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_6()); }
+(rule__Class__FeaturesAssignment_2_1_6)*
+{ after(grammarAccess.getClassAccess().getFeaturesAssignment_2_1_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_7()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_2_1_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_2__0__Impl
+	rule__Class__Group_2_1_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getExtendsKeyword_2_1_2_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getClassAccess().getExtendsKeyword_2_1_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_2_1()); }
+(rule__Class__SuperTypeAssignment_2_1_2_1)
+{ after(grammarAccess.getClassAccess().getSuperTypeAssignment_2_1_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Class__Group_2_1_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_5__0__Impl
+	rule__Class__Group_2_1_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_1_5_0()); }
+
+	'persistenceUnit' 
+
+{ after(grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_1_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_5__1__Impl
+	rule__Class__Group_2_1_5__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_1_5_1()); }
+(rule__Class__PersistenceUnitAssignment_2_1_5_1)
+{ after(grammarAccess.getClassAccess().getPersistenceUnitAssignment_2_1_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_1_5__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_1_5__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_1_5__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSemicolonKeyword_2_1_5_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getClassAccess().getSemicolonKeyword_2_1_5_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Class__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__0__Impl
+	rule__Class__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLBeanAnnotationInfoAction_2_2_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLBeanAnnotationInfoAction_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__1__Impl
+	rule__Class__Group_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getBeanKeyword_2_2_1()); }
+
+	'bean' 
+
+{ after(grammarAccess.getClassAccess().getBeanKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__2__Impl
+	rule__Class__Group_2_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getNameAssignment_2_2_2()); }
+(rule__Class__NameAssignment_2_2_2)
+{ after(grammarAccess.getClassAccess().getNameAssignment_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__3__Impl
+	rule__Class__Group_2_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_2_2_3()); }
+(rule__Class__Group_2_2_3__0)?
+{ after(grammarAccess.getClassAccess().getGroup_2_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__4__Impl
+	rule__Class__Group_2_2__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_2_4()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__5__Impl
+	rule__Class__Group_2_2__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getFeaturesAssignment_2_2_5()); }
+(rule__Class__FeaturesAssignment_2_2_5)*
+{ after(grammarAccess.getClassAccess().getFeaturesAssignment_2_2_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_2_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_2_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_2_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2_3__0__Impl
+	rule__Class__Group_2_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getExtendsKeyword_2_2_3_0()); }
+
+	'extends' 
+
+{ after(grammarAccess.getClassAccess().getExtendsKeyword_2_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_2_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_2_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_2_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSuperTypeAssignment_2_2_3_1()); }
+(rule__Class__SuperTypeAssignment_2_2_3_1)
+{ after(grammarAccess.getClassAccess().getSuperTypeAssignment_2_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Index__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__0__Impl
+	rule__Index__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getUniqueAssignment_0()); }
+(rule__Index__UniqueAssignment_0)?
+{ after(grammarAccess.getIndexAccess().getUniqueAssignment_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__1__Impl
+	rule__Index__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getIndexKeyword_1()); }
+
+	'index' 
+
+{ after(grammarAccess.getIndexAccess().getIndexKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__2__Impl
+	rule__Index__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getNameAssignment_2()); }
+(rule__Index__NameAssignment_2)
+{ after(grammarAccess.getIndexAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__3__Impl
+	rule__Index__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getLeftCurlyBracketKeyword_3()); }
+
+	'{' 
+
+{ after(grammarAccess.getIndexAccess().getLeftCurlyBracketKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__4__Impl
+	rule__Index__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getFeaturesAssignment_4()); }
+(rule__Index__FeaturesAssignment_4)
+{ after(grammarAccess.getIndexAccess().getFeaturesAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__5__Impl
+	rule__Index__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getGroup_5()); }
+(rule__Index__Group_5__0)*
+{ after(grammarAccess.getIndexAccess().getGroup_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getRightCurlyBracketKeyword_6()); }
+
+	'}' 
+
+{ after(grammarAccess.getIndexAccess().getRightCurlyBracketKeyword_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Index__Group_5__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group_5__0__Impl
+	rule__Index__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group_5__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getCommaSpaceKeyword_5_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getIndexAccess().getCommaSpaceKeyword_5_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Index__Group_5__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Index__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Index__Group_5__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getIndexAccess().getFeaturesAssignment_5_1()); }
+(rule__Index__FeaturesAssignment_5_1)
+{ after(grammarAccess.getIndexAccess().getFeaturesAssignment_5_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityPersistenceInfo__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group__0__Impl
+	rule__EntityPersistenceInfo__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getLEntityPersistenceInfoAction_0()); }
+(
+
+)
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getLEntityPersistenceInfoAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityPersistenceInfo__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1()); }
+(rule__EntityPersistenceInfo__UnorderedGroup_1)
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityPersistenceInfo__Group_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group_1_0__0__Impl
+	rule__EntityPersistenceInfo__Group_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameKeyword_1_0_0()); }
+
+	'schemaName' 
+
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameKeyword_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityPersistenceInfo__Group_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group_1_0__1__Impl
+	rule__EntityPersistenceInfo__Group_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameAssignment_1_0_1()); }
+(rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1)
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameAssignment_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityPersistenceInfo__Group_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group_1_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_0_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EntityPersistenceInfo__Group_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group_1_1__0__Impl
+	rule__EntityPersistenceInfo__Group_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getTableNameKeyword_1_1_0()); }
+
+	'tableName' 
+
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getTableNameKeyword_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityPersistenceInfo__Group_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group_1_1__1__Impl
+	rule__EntityPersistenceInfo__Group_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getTableNameAssignment_1_1_1()); }
+(rule__EntityPersistenceInfo__TableNameAssignment_1_1_1)
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getTableNameAssignment_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityPersistenceInfo__Group_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityPersistenceInfo__Group_1_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityPersistenceInfo__Group_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_1_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__ColumnPersistenceInfo__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ColumnPersistenceInfo__Group__0__Impl
+	rule__ColumnPersistenceInfo__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ColumnPersistenceInfo__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getColumnPersistenceInfoAccess().getLEntityColumnPersistenceInfoAction_0()); }
+(
+
+)
+{ after(grammarAccess.getColumnPersistenceInfoAccess().getLEntityColumnPersistenceInfoAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ColumnPersistenceInfo__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ColumnPersistenceInfo__Group__1__Impl
+	rule__ColumnPersistenceInfo__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ColumnPersistenceInfo__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getColumnPersistenceInfoAccess().getLeftParenthesisKeyword_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getColumnPersistenceInfoAccess().getLeftParenthesisKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ColumnPersistenceInfo__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ColumnPersistenceInfo__Group__2__Impl
+	rule__ColumnPersistenceInfo__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ColumnPersistenceInfo__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameAssignment_2()); }
+(rule__ColumnPersistenceInfo__ColumnNameAssignment_2)
+{ after(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ColumnPersistenceInfo__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ColumnPersistenceInfo__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ColumnPersistenceInfo__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getColumnPersistenceInfoAccess().getRightParenthesisKeyword_3()); }
+
+	')' 
+
+{ after(grammarAccess.getColumnPersistenceInfoAccess().getRightParenthesisKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group__0__Impl
+	rule__EntityFeature__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLEntityFeatureAction_0()); }
+(
+
+)
+{ after(grammarAccess.getEntityFeatureAccess().getLEntityFeatureAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group__1__Impl
+	rule__EntityFeature__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getAnnotationsAssignment_1()); }
+(rule__EntityFeature__AnnotationsAssignment_1)*
+{ after(grammarAccess.getEntityFeatureAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2()); }
+(rule__EntityFeature__Alternatives_2)
+{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0__0__Impl
+	rule__EntityFeature__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLEntityReferenceAnnotationInfoAction_2_0_0()); }
+(
+
+)
+{ after(grammarAccess.getEntityFeatureAccess().getLEntityReferenceAnnotationInfoAction_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1()); }
+(rule__EntityFeature__Group_2_0_1__0)
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityFeature__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__0__Impl
+	rule__EntityFeature__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getRefKeyword_2_0_1_0()); }
+
+	'ref' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getRefKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__1__Impl
+	rule__EntityFeature__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getCascadingAssignment_2_0_1_1()); }
+(rule__EntityFeature__CascadingAssignment_2_0_1_1)?
+{ after(grammarAccess.getEntityFeatureAccess().getCascadingAssignment_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__2__Impl
+	rule__EntityFeature__Group_2_0_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_0_1_2()); }
+(rule__EntityFeature__TypeAssignment_2_0_1_2)
+{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__3__Impl
+	rule__EntityFeature__Group_2_0_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getMultiplicityAssignment_2_0_1_3()); }
+(rule__EntityFeature__MultiplicityAssignment_2_0_1_3)?
+{ after(grammarAccess.getEntityFeatureAccess().getMultiplicityAssignment_2_0_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__4__Impl
+	rule__EntityFeature__Group_2_0_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_4()); }
+(rule__EntityFeature__Group_2_0_1_4__0)?
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__5__Impl
+	rule__EntityFeature__Group_2_0_1__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_0_1_5()); }
+(rule__EntityFeature__NameAssignment_2_0_1_5)
+{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_0_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__6__Impl
+	rule__EntityFeature__Group_2_0_1__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_0_1_6()); }
+(rule__EntityFeature__PersistenceInfoAssignment_2_0_1_6)?
+{ after(grammarAccess.getEntityFeatureAccess().getPersistenceInfoAssignment_2_0_1_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__7__Impl
+	rule__EntityFeature__Group_2_0_1__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_7()); }
+(rule__EntityFeature__Group_2_0_1_7__0)?
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__8__Impl
+	rule__EntityFeature__Group_2_0_1__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8()); }
+(rule__EntityFeature__Group_2_0_1_8__0)?
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1__9__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_9()); }
+(rule__EntityFeature__Alternatives_2_0_1_9)
+{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_0_1_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_0_1_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_4__0__Impl
+	rule__EntityFeature__Group_2_0_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_4__1__Impl
+	rule__EntityFeature__Group_2_0_1_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_0_1_4_1()); }
+(rule__EntityFeature__ConstraintsAssignment_2_0_1_4_1)*
+{ after(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_0_1_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_4__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2()); }
+
+	']' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_0_1_7__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_7__0__Impl
+	rule__EntityFeature__Group_2_0_1_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_7__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getOppositeKeyword_2_0_1_7_0()); }
+
+	'opposite' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getOppositeKeyword_2_0_1_7_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_7__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_7__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_0_1_7_1()); }
+(rule__EntityFeature__OppositeAssignment_2_0_1_7_1)
+{ after(grammarAccess.getEntityFeatureAccess().getOppositeAssignment_2_0_1_7_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityFeature__Group_2_0_1_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8__0__Impl
+	rule__EntityFeature__Group_2_0_1_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_8_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8__1__Impl
+	rule__EntityFeature__Group_2_0_1_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_8_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8__2__Impl
+	rule__EntityFeature__Group_2_0_1_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_8_2()); }
+(rule__EntityFeature__PropertiesAssignment_2_0_1_8_2)
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8__3__Impl
+	rule__EntityFeature__Group_2_0_1_8__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8_3()); }
+(rule__EntityFeature__Group_2_0_1_8_3__0)*
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_0_1_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_8__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_8_4()); }
+
+	')' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_8_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_0_1_8_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8_3__0__Impl
+	rule__EntityFeature__Group_2_0_1_8_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_0_1_8_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_0_1_8_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_0_1_8_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_0_1_8_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_0_1_8_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_8_3_1()); }
+(rule__EntityFeature__PropertiesAssignment_2_0_1_8_3_1)
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_0_1_8_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1__0__Impl
+	rule__EntityFeature__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLEntityAttributeAnnotationInfoAction_2_1_0()); }
+(
+
+)
+{ after(grammarAccess.getEntityFeatureAccess().getLEntityAttributeAnnotationInfoAction_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1()); }
+(rule__EntityFeature__Alternatives_2_1_1)
+{ after(grammarAccess.getEntityFeatureAccess().getAlternatives_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1_1_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0__0__Impl
+	rule__EntityFeature__Group_2_1_1_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getTransientAssignment_2_1_1_0_0()); }
+(rule__EntityFeature__TransientAssignment_2_1_1_0_0)
+{ after(grammarAccess.getEntityFeatureAccess().getTransientAssignment_2_1_1_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0__1__Impl
+	rule__EntityFeature__Group_2_1_1_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1()); }
+(rule__EntityFeature__TypeAssignment_2_1_1_0_1)
+{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0__2__Impl
+	rule__EntityFeature__Group_2_1_1_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2()); }
+(rule__EntityFeature__Group_2_1_1_0_2__0)?
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0__3__Impl
+	rule__EntityFeature__Group_2_1_1_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3()); }
+(rule__EntityFeature__NameAssignment_2_1_1_0_3)
+{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0__4__Impl
+	rule__EntityFeature__Group_2_1_1_0__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4()); }
+(rule__EntityFeature__Group_2_1_1_0_4__0)?
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_0_5()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_0_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1_1_0_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_2__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_2__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1()); }
+(rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1)*
+{ after(grammarAccess.getEntityFeatureAccess().getConstraintsAssignment_2_1_1_0_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()); }
+
+	']' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1_1_0_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4__1__Impl
+	rule__EntityFeature__Group_2_1_1_0_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4__2__Impl
+	rule__EntityFeature__Group_2_1_1_0_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2()); }
+(rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2)
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4__3__Impl
+	rule__EntityFeature__Group_2_1_1_0_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4_3()); }
+(rule__EntityFeature__Group_2_1_1_0_4_3__0)*
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_0_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1_1_0_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl
+	rule__EntityFeature__Group_2_1_1_0_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_1_1_0_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_1_1_0_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_0_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1()); }
+(rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1)
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_0_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1_1_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1__0__Impl
+	rule__EntityFeature__Group_2_1_1_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getDerivedAssignment_2_1_1_1_0()); }
+(rule__EntityFeature__DerivedAssignment_2_1_1_1_0)
+{ after(grammarAccess.getEntityFeatureAccess().getDerivedAssignment_2_1_1_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1__1__Impl
+	rule__EntityFeature__Group_2_1_1_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_1_1()); }
+(rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1)?
+{ after(grammarAccess.getEntityFeatureAccess().getDomainDescriptionAssignment_2_1_1_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1__2__Impl
+	rule__EntityFeature__Group_2_1_1_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2()); }
+(rule__EntityFeature__TypeAssignment_2_1_1_1_2)
+{ after(grammarAccess.getEntityFeatureAccess().getTypeAssignment_2_1_1_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1__3__Impl
+	rule__EntityFeature__Group_2_1_1_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3()); }
+(rule__EntityFeature__NameAssignment_2_1_1_1_3)
+{ after(grammarAccess.getEntityFeatureAccess().getNameAssignment_2_1_1_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1__4__Impl
+	rule__EntityFeature__Group_2_1_1_1__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4()); }
+(rule__EntityFeature__Group_2_1_1_1_4__0)?
+{ after(grammarAccess.getEntityFeatureAccess().getGroup_2_1_1_1_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_5()); }
+(rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5)
+{ after(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionAssignment_2_1_1_1_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__EntityFeature__Group_2_1_1_1_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1_4__0__Impl
+	rule__EntityFeature__Group_2_1_1_1_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1_4__1__Impl
+	rule__EntityFeature__Group_2_1_1_1_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__EntityFeature__Group_2_1_1_1_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__EntityFeature__Group_2_1_1_1_4__2__Impl
+	rule__EntityFeature__Group_2_1_1_1_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__EntityFeature__Group_2_1_1_1_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_2()); }
+(rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2)
+{ after(grammarAccess.getEntityFeatureAccess().getPropertiesAssignment_2_1_1_1_4_2()); }
+)
+
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.tokens b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.tokens
new file mode 100644
index 0000000..691c88e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.tokens
@@ -0,0 +1,327 @@
+'!'=56
+'!='=40
+'!=='=42
+'#'=133
+'%'=55
+'%='=38
+'&&'=15
+'&'=154
+'('=89
+')'=90
+'*'=52
+'**'=53
+'*='=36
+'+'=32
+'++'=57
+'+='=34
+', '=94
+','=102
+'-'=33
+'--'=58
+'-='=35
+'->'=46
+'.'=59
+'..'=48
+'..<'=47
+'/'=54
+'/='=37
+'0'=83
+'1'=85
+':'=139
+'::'=168
+';'=16
+'<'=45
+'<='=82
+'<>'=50
+'='=13
+'=='=39
+'==='=41
+'=>'=49
+'>'=44
+'>='=43
+'?'=84
+'?.'=169
+'?:'=51
+'@'=132
+'CHAR'=69
+'DATE'=71
+'INHERIT'=67
+'INT'=70
+'STRING'=68
+'TIMESTAMP'=72
+'['=97
+']'=98
+'abstract'=155
+'as blob'=165
+'as primitive'=163
+'as'=135
+'asDefault'=166
+'bean'=92
+'cachable'=18
+'cacheable'=158
+'cascade'=31
+'case'=141
+'catch'=153
+'collection'=131
+'constraints'=127
+'datatype'=108
+'date'=28
+'dateType'=164
+'def'=101
+'default'=140
+'derived'=130
+'digits'=117
+'discriminatorColumn'=104
+'discriminatorType'=105
+'discriminatorValue'=106
+'do'=144
+'domainDescription'=161
+'domainKey'=162
+'dto'=27
+'else'=137
+'entity'=86
+'enum'=126
+'error'=75
+'extends'=61
+'extension'=64
+'false'=66
+'finally'=151
+'for'=142
+'forNull'=167
+'historized'=156
+'id'=19
+'if'=136
+'import'=63
+'index'=93
+'info'=73
+'inheritance per class'=103
+'inheritance per subclass'=107
+'instanceof'=134
+'isFalse'=110
+'isFuture'=118
+'isNotNull'=122
+'isNull'=123
+'isPast'=119
+'isTrue'=114
+'jvmType'=109
+'key'=128
+'lazy'=25
+'mapped superclass'=159
+'mapto'=29
+'maxDecimal'=115
+'maxNumber'=120
+'minDecimal'=116
+'minMaxSize'=125
+'minNumber'=121
+'msgCode'=111
+'msgI18nKey'=112
+'new'=145
+'notnull'=26
+'null'=146
+'opposite'=99
+'package'=78
+'persistenceUnit'=91
+'private'=79
+'properties'=100
+'protected'=80
+'public'=81
+'ref'=30
+'refers'=23
+'regex'=124
+'return'=149
+'schemaName'=95
+'settings'=24
+'severity'=113
+'static'=62
+'super'=65
+'switch'=138
+'synchronized'=152
+'tableName'=96
+'throw'=148
+'time'=76
+'timedependent'=157
+'timestamp'=77
+'transient'=21
+'true'=171
+'try'=150
+'typeof'=147
+'unique'=160
+'uuid'=20
+'val'=60
+'value'=129
+'var'=17
+'version'=22
+'warn'=74
+'while'=143
+'{'=87
+'|'=170
+'||'=14
+'}'=88
+RULE_ANY_OTHER=12
+RULE_DECIMAL=7
+RULE_HEX=5
+RULE_ID=4
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=8
+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__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammarLexer.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammarLexer.java
new file mode 100644
index 0000000..cfef010
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammarLexer.java
@@ -0,0 +1,6498 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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 InternalEntityGrammarLexer 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 RULE_HEX=5;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__169=169;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalEntityGrammarLexer() {;} 
+    public InternalEntityGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalEntityGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:14:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:15:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:15:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:16:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:16:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:17:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:17:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:18:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:18:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:19:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:19:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:20:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:20:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:21:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:21:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:22:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:22:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:23:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:23:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:24:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:24:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:25:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:25:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:26:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:26:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:27:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:27:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:28:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:28:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:29:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:29:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:30:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:31:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:32:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:33:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:34:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:35:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:36:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:37:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:38:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:39:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:40:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:41:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:42:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:42:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:43:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:43:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:44:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:45:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:46:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:46:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:48:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:48:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:49:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:49:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:50:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:50:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:51:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:52:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:53:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:54:7: ( '!' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:55:7: ( '++' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:55:9: '++'
+            {
+            match("++"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:56:7: ( '--' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:56:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:57:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:57:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:58:7: ( 'val' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:58:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:59:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:59:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:60:7: ( 'static' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:60:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:61:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:61:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:62:7: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:62:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:63:7: ( 'super' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:63:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:64:7: ( 'false' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:64:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:65:7: ( 'INHERIT' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:65:9: 'INHERIT'
+            {
+            match("INHERIT"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:66:7: ( 'STRING' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:66:9: 'STRING'
+            {
+            match("STRING"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:67:7: ( 'CHAR' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:67:9: 'CHAR'
+            {
+            match("CHAR"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:68:7: ( 'INT' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:68:9: 'INT'
+            {
+            match("INT"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:69:7: ( 'DATE' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:69:9: 'DATE'
+            {
+            match("DATE"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:70:7: ( 'TIMESTAMP' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:70:9: 'TIMESTAMP'
+            {
+            match("TIMESTAMP"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:71:7: ( 'info' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:71:9: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:72:7: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:72:9: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:73:7: ( 'error' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:73:9: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:74:7: ( 'time' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:74:9: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:75:7: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:75:9: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:76:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:76:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:77:7: ( 'private' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:77:9: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:78:7: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:78:9: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:79:7: ( 'public' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:79:9: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:80:7: ( '<=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:80:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:81:7: ( '0' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:81:9: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:82:7: ( '?' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:82:9: '?'
+            {
+            match('?'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:83:7: ( '1' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:83:9: '1'
+            {
+            match('1'); 
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:84:7: ( 'entity' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:84:9: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:85:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:85:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:86:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:86:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:87:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:87:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:88:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:88:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:89:7: ( 'persistenceUnit' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:89:9: 'persistenceUnit'
+            {
+            match("persistenceUnit"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:90:7: ( 'bean' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:90:9: 'bean'
+            {
+            match("bean"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:91:7: ( 'index' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:91:9: 'index'
+            {
+            match("index"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:92:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:92:9: ', '
+            {
+            match(", "); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:93:7: ( 'schemaName' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:93:9: 'schemaName'
+            {
+            match("schemaName"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:94:7: ( 'tableName' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:94:9: 'tableName'
+            {
+            match("tableName"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:95:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:96:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:97:7: ( 'opposite' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:97:9: 'opposite'
+            {
+            match("opposite"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:98:8: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:98:10: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:99:8: ( 'def' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:99:10: 'def'
+            {
+            match("def"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:100:8: ( ',' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:101:8: ( 'inheritance per class' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:101:10: 'inheritance per class'
+            {
+            match("inheritance per class"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:102:8: ( 'discriminatorColumn' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:102:10: 'discriminatorColumn'
+            {
+            match("discriminatorColumn"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:103:8: ( 'discriminatorType' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:103:10: 'discriminatorType'
+            {
+            match("discriminatorType"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:104:8: ( 'discriminatorValue' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:104:10: 'discriminatorValue'
+            {
+            match("discriminatorValue"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:105:8: ( 'inheritance per subclass' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:105:10: 'inheritance per subclass'
+            {
+            match("inheritance per subclass"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:106:8: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:106:10: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:107:8: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:107:10: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:108:8: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:108:10: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:109:8: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:109:10: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:110:8: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:110:10: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:111:8: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:111:10: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:112:8: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:112:10: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:113:8: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:113:10: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:114:8: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:114:10: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:115:8: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:115:10: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:116:8: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:116:10: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:117:8: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:117:10: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:118:8: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:118:10: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:119:8: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:119:10: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:120:8: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:120:10: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:121:8: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:121:10: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:122:8: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:122:10: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:123:8: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:123:10: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:124:8: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:124:10: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:125:8: ( 'constraints' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:125:10: 'constraints'
+            {
+            match("constraints"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:126:8: ( 'key' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:126:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:127:8: ( 'value' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:127:10: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:128:8: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:128:10: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:129:8: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:129:10: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:130:8: ( '@' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:130:10: '@'
+            {
+            match('@'); 
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:131:8: ( '#' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:131:10: '#'
+            {
+            match('#'); 
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:132:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:132:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:133:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:133:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:134:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:134:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:135:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:135:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:136:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:136:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:137:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:138:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:138:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:139:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:139:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:140:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:140:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:141:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:141:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:142:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:142:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:143:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:144:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:144:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:145:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:145:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:146:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:146:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:147:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:147:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:148:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:148:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:149:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:149:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:150:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:150:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:151:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:151:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:152:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:152:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:153:8: ( 'abstract' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:153:10: 'abstract'
+            {
+            match("abstract"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:154:8: ( 'historized' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:154:10: 'historized'
+            {
+            match("historized"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:155:8: ( 'timedependent' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:155:10: 'timedependent'
+            {
+            match("timedependent"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:156:8: ( 'cacheable' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:156:10: 'cacheable'
+            {
+            match("cacheable"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:157:8: ( 'mapped superclass' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:157:10: 'mapped superclass'
+            {
+            match("mapped superclass"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:158:8: ( 'unique' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:158:10: 'unique'
+            {
+            match("unique"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:159:8: ( 'domainDescription' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:159:10: 'domainDescription'
+            {
+            match("domainDescription"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:160:8: ( 'domainKey' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:160:10: 'domainKey'
+            {
+            match("domainKey"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:161:8: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:161:10: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:162:8: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:162:10: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:163:8: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:163:10: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:164:8: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:164:10: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:165:8: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:165:10: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:166:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:166:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:167:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:167:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:168:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:168:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:169:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:169:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47865: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47867:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47867:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47867: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47869: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47871:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47871:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47871:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47871: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47871: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47873: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47875:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47875:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47875: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47875: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47877: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47879:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47879:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47879: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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47881:16: ( . )
+            // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:47881:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=168;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:924: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:931: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:938: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:945: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:952: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:959: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:966: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:973: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:980: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 153 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:987: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 154 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:994: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 155 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1001: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 156 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1008: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 157 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1015: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 158 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1022: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 159 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1029: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 160 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1036: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 161 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1045: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 162 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1054: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 163 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1067: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 164 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1075: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 165 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1087: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 166 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1103: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 167 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1119: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 168 :
+                // ../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g:1:1127: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\76\1\100\1\102\1\uffff\13\106\1\152\1\156\1\161\1\165\1\167\1\171\1\173\1\176\1\u0080\1\u0083\11\106\1\u0097\1\u009a\4\uffff\1\106\1\u00a1\2\uffff\3\106\2\uffff\1\106\1\u00ac\1\106\1\u00ae\1\73\5\uffff\1\u00b2\7\uffff\2\106\1\uffff\2\106\1\u00bb\3\106\1\u00c5\26\106\1\u00e4\3\106\20\uffff\1\u00ea\6\uffff\1\u00ec\4\uffff\22\106\2\uffff\1\u00ae\6\uffff\1\106\4\uffff\3\106\2\uffff\1\u0108\1\106\2\uffff\1\106\5\uffff\1\u010b\1\u010d\6\106\1\uffff\11\106\1\uffff\3\106\1\u0123\5\106\1\u012a\13\106\1\u0136\1\106\1\u0138\1\106\1\u013c\4\106\1\uffff\4\106\4\uffff\6\106\1\u0151\2\106\1\u0154\16\106\1\u0164\1\uffff\1\106\1\uffff\2\106\1\uffff\1\106\1\uffff\3\106\1\u016f\4\106\1\u0174\11\106\1\u017e\2\106\1\uffff\1\u0181\1\u0184\4\106\1\uffff\11\106\1\u0192\1\106\1\uffff\1\u0194\1\uffff\1\u0196\2\106\1\uffff\20\106\1\u01a9\1\u01aa\2\106\1\uffff\2\106\1\uffff\1\106\1\u01b0\1\u01b1\1\106\1\u01b3\7\106\1\u01bb\2\106\3\uffff\3\106\1\u01c1\4\106\1\uffff\1\u01c6\3\106\1\uffff\1\u01ca\10\106\1\uffff\2\106\1\uffff\2\106\1\uffff\2\106\1\u01d9\1\106\1\u01db\4\106\1\u01e0\3\106\1\uffff\1\106\1\uffff\1\106\1\uffff\6\106\1\u01ec\11\106\1\u01f7\1\106\2\uffff\1\u01f9\4\106\2\uffff\1\106\1\uffff\1\u01ff\6\106\1\uffff\5\106\1\uffff\4\106\1\uffff\2\106\1\u0211\1\uffff\4\106\1\u0216\1\u0217\1\106\1\u0219\1\u021a\4\106\1\u021f\1\uffff\1\u0220\1\uffff\1\u0221\2\106\1\u0224\1\uffff\1\106\1\u0226\7\106\1\u022e\1\106\1\uffff\12\106\1\uffff\1\u023b\1\uffff\3\106\1\u023f\1\106\1\uffff\4\106\1\u0245\6\106\1\u024c\2\106\1\u024f\2\106\1\uffff\2\106\1\u0254\1\106\2\uffff\1\106\2\uffff\4\106\3\uffff\2\106\1\uffff\1\106\1\uffff\1\106\1\u025f\2\106\1\u0262\1\u0263\1\106\1\uffff\2\106\1\uffff\2\106\1\u0269\4\106\1\u026e\1\106\1\uffff\1\u0270\1\u0271\1\u0272\1\uffff\1\106\1\u0274\1\u0275\2\106\1\uffff\2\106\1\u027a\3\106\1\uffff\1\u027e\1\106\1\uffff\4\106\1\uffff\1\u0284\5\106\1\u028a\1\u028b\2\106\1\uffff\1\u028e\1\u028f\2\uffff\5\106\1\uffff\4\106\1\uffff\1\106\3\uffff\1\106\2\uffff\3\106\1\u029e\1\uffff\1\106\1\u02a0\1\106\1\uffff\1\u02a2\4\106\1\uffff\1\u02a7\1\u02a8\1\u02a9\1\106\1\u02ab\2\uffff\2\106\2\uffff\2\106\1\u02b0\1\106\1\u02b2\2\106\1\u02b5\1\106\1\u02b7\1\u02b8\1\u02b9\2\106\1\uffff\1\u02bc\1\uffff\1\106\1\uffff\1\106\1\u02bf\1\106\1\u02c1\3\uffff\1\106\1\uffff\1\u02c3\3\106\1\uffff\1\u02c7\1\uffff\1\u02c8\1\u02c9\1\uffff\1\u02ca\3\uffff\1\u02cb\1\106\1\uffff\1\u02cd\1\u02ce\1\uffff\1\106\1\uffff\1\106\1\uffff\3\106\5\uffff\1\106\3\uffff\1\106\1\u02d7\3\106\1\uffff\1\u02dc\1\uffff\3\106\2\uffff\5\106\1\uffff\4\106\1\u02ed\1\uffff\4\106\3\uffff\1\106\1\u02f5\1\106\1\u02f7\1\106\1\uffff\1\u02f9\1\uffff\1\u02fa\2\uffff";
+    static final String DFA21_eofS =
+        "\u02fb\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\uffff\2\141\1\144\1\156\1\141\1\145\1\143\1\141\1\145\2\141\1\53\1\55\2\52\4\75\2\56\1\154\1\141\1\116\1\124\1\110\1\101\1\111\2\141\2\60\4\uffff\1\145\1\40\2\uffff\1\160\1\166\1\145\2\uffff\1\142\1\72\1\151\1\60\1\44\5\uffff\1\75\7\uffff\1\154\1\162\1\uffff\1\143\1\154\1\44\1\160\1\144\1\106\1\44\2\151\1\141\1\155\1\142\1\160\1\162\1\146\1\164\1\141\1\160\1\150\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\146\1\147\1\44\1\160\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\164\1\163\1\154\1\162\1\156\1\110\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\151\1\142\1\162\2\uffff\1\60\6\uffff\1\141\4\uffff\1\160\1\155\1\171\2\uffff\1\40\1\163\2\uffff\1\163\5\uffff\2\44\1\163\1\150\2\143\1\163\1\154\1\uffff\2\157\2\145\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\161\1\156\1\44\2\145\1\154\1\145\1\157\1\44\1\145\1\165\1\164\1\145\1\164\2\145\1\164\1\143\1\171\1\156\1\44\1\154\1\44\1\141\1\44\1\151\1\143\1\151\1\141\1\uffff\1\160\1\104\1\103\1\104\4\uffff\1\145\1\157\1\151\1\155\1\145\1\163\1\44\1\141\1\105\1\44\1\111\1\122\2\105\1\156\1\154\1\153\1\166\1\160\1\154\1\163\1\156\1\157\1\124\1\44\1\142\1\145\1\uffff\2\164\1\uffff\1\145\1\uffff\1\151\2\141\1\44\1\150\1\164\1\145\1\162\1\44\1\170\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\165\1\163\1\uffff\2\44\1\145\1\157\1\167\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\155\1\143\1\150\1\44\1\165\1\uffff\1\44\1\uffff\1\44\1\164\1\165\1\uffff\1\166\1\162\1\164\1\151\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\44\1\145\1\165\1\uffff\1\154\1\122\1\uffff\1\116\2\44\1\123\1\44\1\145\2\141\2\145\2\151\1\44\1\163\1\171\3\uffff\1\146\1\162\1\157\1\44\1\157\1\142\1\141\1\144\1\uffff\1\44\1\162\1\143\1\164\1\uffff\1\44\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\145\1\151\1\uffff\1\164\1\145\1\uffff\1\116\1\146\1\44\1\163\1\44\2\156\1\151\1\143\1\44\1\141\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\154\1\145\1\151\1\163\1\156\1\44\1\144\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\144\1\44\1\171\2\uffff\1\44\2\154\1\111\1\107\2\uffff\1\124\1\uffff\1\44\1\147\1\164\1\143\1\162\1\143\1\163\1\uffff\1\151\1\160\2\141\1\162\1\uffff\1\156\1\154\1\142\1\145\1\uffff\1\141\1\164\1\44\1\uffff\1\164\1\143\1\145\1\162\2\44\1\165\2\44\1\145\1\141\1\160\1\141\1\44\1\uffff\1\44\1\uffff\1\44\1\147\1\164\1\44\1\uffff\1\116\1\44\1\157\1\154\2\160\1\164\1\144\1\155\1\44\1\104\1\uffff\1\40\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\1\uffff\1\44\1\uffff\1\154\1\171\1\124\1\44\1\101\1\uffff\2\145\2\164\1\44\2\164\1\145\1\165\1\143\1\151\1\44\1\145\1\154\1\44\2\151\1\uffff\1\141\1\145\1\44\1\145\2\uffff\1\154\2\uffff\1\156\1\155\1\145\1\155\3\uffff\1\163\1\171\1\uffff\1\141\1\uffff\1\156\1\44\2\145\2\44\1\151\1\uffff\2\145\1\uffff\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\44\1\157\1\uffff\3\44\1\uffff\1\115\2\44\1\145\1\151\1\uffff\2\145\1\44\1\154\1\164\1\172\1\uffff\1\44\1\145\1\uffff\1\156\1\157\1\156\1\157\1\uffff\1\44\1\154\1\164\1\160\1\156\1\145\2\44\1\155\1\151\1\uffff\2\44\2\uffff\1\156\1\163\1\171\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\44\1\uffff\1\164\1\44\1\145\1\uffff\1\44\1\164\1\156\1\143\1\146\1\uffff\3\44\1\144\1\44\2\uffff\1\145\1\172\2\uffff\1\141\1\143\1\44\1\154\1\44\1\171\1\154\1\44\1\145\3\44\1\163\1\143\1\uffff\1\44\1\uffff\1\144\1\uffff\1\163\1\44\1\145\1\44\3\uffff\1\145\1\uffff\1\44\1\145\1\164\1\162\1\uffff\1\44\1\uffff\2\44\1\uffff\1\44\3\uffff\1\44\1\145\1\uffff\2\44\1\uffff\1\40\1\uffff\1\156\1\uffff\1\144\1\157\1\151\5\uffff\1\125\2\uffff\1\160\1\164\1\44\1\162\1\160\1\156\1\145\1\44\1\uffff\1\103\1\164\1\151\1\162\1\uffff\1\157\1\171\1\141\1\151\1\164\1\40\1\154\1\160\1\154\1\157\1\44\1\143\1\165\1\145\1\165\1\156\3\uffff\1\155\1\44\1\145\1\44\1\156\1\uffff\1\44\1\uffff\1\44\2\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\uffff\1\145\1\157\1\163\1\165\1\171\1\145\1\171\1\141\1\165\1\164\1\163\1\75\1\76\5\75\1\76\1\56\1\72\1\170\1\157\1\116\1\124\1\110\1\101\1\111\1\150\1\165\1\170\1\154\4\uffff\1\145\1\40\2\uffff\1\160\1\166\1\145\2\uffff\1\163\1\72\1\151\1\154\1\172\5\uffff\1\75\7\uffff\2\162\1\uffff\1\164\1\156\1\172\1\160\1\163\1\124\1\172\2\151\1\171\1\155\1\142\1\160\1\162\1\164\1\166\1\141\1\160\1\150\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\162\1\163\1\172\1\170\1\147\1\156\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\124\1\122\1\101\1\124\1\115\1\162\1\151\1\143\1\157\1\142\1\162\2\uffff\1\154\6\uffff\1\141\4\uffff\1\160\1\155\1\171\2\uffff\1\172\1\163\2\uffff\1\163\5\uffff\2\172\1\163\1\150\1\145\1\143\1\163\1\154\1\uffff\2\157\2\145\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\161\1\156\1\172\2\145\1\154\1\145\1\157\1\172\1\145\1\165\1\164\1\145\1\164\2\145\1\164\1\143\1\171\1\156\1\172\1\154\1\172\1\145\1\172\1\151\1\143\1\151\1\141\1\uffff\1\164\1\116\1\111\1\116\4\uffff\1\145\1\157\1\151\1\155\1\145\1\163\1\172\1\141\1\105\1\172\1\111\1\122\2\105\1\156\1\154\1\153\1\166\1\164\1\154\1\163\1\156\1\157\1\124\1\172\1\160\1\145\1\uffff\2\164\1\uffff\1\145\1\uffff\1\151\1\145\1\141\1\172\1\150\1\164\1\145\1\162\1\172\1\170\1\162\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\165\1\163\1\uffff\2\172\1\145\1\157\1\167\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\155\1\143\1\150\1\172\1\165\1\uffff\1\172\1\uffff\1\172\1\164\1\165\1\uffff\1\166\1\162\1\164\1\151\1\157\2\145\1\165\1\157\1\61\1\145\1\165\1\141\1\156\1\162\1\164\2\172\1\145\1\165\1\uffff\1\154\1\122\1\uffff\1\116\2\172\1\123\1\172\1\145\2\141\2\145\2\151\1\172\1\163\1\171\3\uffff\1\146\1\162\1\157\1\172\1\157\1\142\1\141\1\144\1\uffff\1\172\1\162\1\143\1\164\1\uffff\1\172\1\151\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\145\1\151\1\uffff\1\164\1\145\1\uffff\1\116\1\146\1\172\1\163\1\172\2\156\1\151\1\143\1\172\1\141\1\150\1\162\1\uffff\1\154\1\uffff\1\171\1\uffff\1\171\1\154\1\145\1\151\1\163\1\156\1\172\1\144\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\163\1\172\1\171\2\uffff\1\172\2\154\1\111\1\107\2\uffff\1\124\1\uffff\1\172\1\147\1\164\1\143\1\162\1\143\1\163\1\uffff\1\151\1\160\2\141\1\162\1\uffff\1\156\1\154\1\142\1\145\1\uffff\1\141\1\164\1\172\1\uffff\1\164\1\143\1\145\1\162\2\172\1\165\2\172\1\145\1\141\1\160\1\141\1\172\1\uffff\1\172\1\uffff\1\172\1\147\1\164\1\172\1\uffff\1\116\1\172\1\157\1\154\2\160\1\164\1\144\1\155\1\172\1\113\1\uffff\1\40\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\163\1\151\1\uffff\1\172\1\uffff\1\154\1\171\1\124\1\172\1\101\1\uffff\2\145\2\164\1\172\2\164\1\145\1\165\1\143\1\151\1\172\1\145\1\154\1\172\2\151\1\uffff\1\141\1\145\1\172\1\145\2\uffff\1\154\2\uffff\1\156\1\155\1\145\1\155\3\uffff\1\163\1\171\1\uffff\1\141\1\uffff\1\156\1\172\2\145\2\172\1\151\1\uffff\2\145\1\uffff\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\172\1\157\1\uffff\3\172\1\uffff\1\115\2\172\1\145\1\151\1\uffff\2\145\1\172\1\154\1\164\1\172\1\uffff\1\172\1\145\1\uffff\1\156\1\157\1\156\1\157\1\uffff\1\172\1\154\1\164\1\160\1\156\1\145\2\172\1\155\1\151\1\uffff\2\172\2\uffff\1\156\1\163\1\171\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\uffff\1\156\3\uffff\1\120\2\uffff\1\144\1\145\1\156\1\172\1\uffff\1\164\1\172\1\145\1\uffff\1\172\1\164\1\156\1\143\1\146\1\uffff\3\172\1\144\1\172\2\uffff\1\145\1\172\2\uffff\1\141\1\143\1\172\1\154\1\172\1\171\1\154\1\172\1\145\3\172\1\163\1\143\1\uffff\1\172\1\uffff\1\144\1\uffff\1\163\1\172\1\145\1\172\3\uffff\1\145\1\uffff\1\172\1\145\1\164\1\162\1\uffff\1\172\1\uffff\2\172\1\uffff\1\172\3\uffff\1\172\1\145\1\uffff\2\172\1\uffff\1\40\1\uffff\1\156\1\uffff\1\144\1\157\1\151\5\uffff\1\125\2\uffff\1\160\1\164\1\172\1\162\1\160\1\156\1\145\1\172\1\uffff\1\126\1\164\1\151\1\162\1\uffff\1\157\1\171\1\141\1\151\1\164\1\40\1\154\1\160\1\154\1\157\1\172\1\163\1\165\1\145\1\165\1\156\3\uffff\1\155\1\172\1\145\1\172\1\156\1\uffff\1\172\1\uffff\1\172\2\uffff";
+    static final String DFA21_acceptS =
+        "\4\uffff\1\4\40\uffff\1\113\1\114\1\115\1\116\2\uffff\1\125\1\126\3\uffff\1\170\1\171\5\uffff\1\u00a3\2\u00a4\1\u00a7\1\u00a8\1\uffff\1\45\1\1\1\2\1\u009e\1\3\1\u008e\1\4\2\uffff\1\u00a3\41\uffff\1\26\1\55\1\24\1\27\1\42\1\56\1\25\1\30\1\51\1\50\1\31\1\u00a5\1\u00a6\1\52\1\32\1\53\1\uffff\1\54\1\37\1\40\1\46\1\106\1\41\1\uffff\1\57\1\47\1\u009d\1\110\22\uffff\1\u00a0\1\107\1\uffff\1\u00a2\1\111\1\113\1\114\1\115\1\116\1\uffff\1\122\1\132\1\125\1\126\3\uffff\1\170\1\171\2\uffff\1\u009c\1\177\1\uffff\1\u00a1\1\u00a4\1\u00a7\1\35\1\33\10\uffff\1\7\11\uffff\1\174\36\uffff\1\u0084\4\uffff\1\36\1\34\1\43\1\44\33\uffff\1\173\2\uffff\1\5\1\uffff\1\60\25\uffff\1\u008a\6\uffff\1\22\13\uffff\1\u0085\1\uffff\1\17\3\uffff\1\131\24\uffff\1\u0082\2\uffff\1\72\17\uffff\1\164\1\u0097\1\u0099\10\uffff\1\u0081\4\uffff\1\75\11\uffff\1\10\2\uffff\1\u009f\2\uffff\1\100\15\uffff\1\15\1\uffff\1\u0086\1\uffff\1\20\22\uffff\1\162\1\175\5\uffff\1\71\1\73\1\uffff\1\76\7\uffff\1\120\5\uffff\1\165\4\uffff\1\u008d\3\uffff\1\121\16\uffff\1\u0088\1\uffff\1\160\4\uffff\1\65\13\uffff\1\21\12\uffff\1\77\1\uffff\1\66\5\uffff\1\u0083\21\uffff\1\63\4\uffff\1\146\1\153\1\uffff\1\157\1\u0094\4\uffff\1\u0087\1\13\1\u0089\2\uffff\1\62\1\uffff\1\176\7\uffff\1\151\2\uffff\1\u0093\11\uffff\1\112\3\uffff\1\70\5\uffff\1\105\6\uffff\1\12\2\uffff\1\23\4\uffff\1\142\12\uffff\1\16\2\uffff\1\u0080\1\166\5\uffff\1\143\4\uffff\1\61\1\uffff\1\u009b\1\u008b\1\67\1\uffff\1\102\1\103\4\uffff\1\141\3\uffff\1\6\5\uffff\1\152\5\uffff\1\14\1\145\2\uffff\1\u0098\1\140\16\uffff\1\127\1\uffff\1\u008f\1\uffff\1\u0092\4\uffff\1\156\1\11\1\101\1\uffff\1\124\4\uffff\1\u0096\1\uffff\1\154\2\uffff\1\155\1\uffff\1\64\1\74\1\104\2\uffff\1\u009a\2\uffff\1\167\1\uffff\1\172\1\uffff\1\123\3\uffff\1\147\1\144\1\150\1\161\1\130\1\uffff\1\u0090\1\163\10\uffff\1\u008c\4\uffff\1\u0091\20\uffff\1\117\1\133\1\137\5\uffff\1\135\1\uffff\1\u0095\1\uffff\1\136\1\134";
+    static final String DFA21_specialS =
+        "\1\0\u02fa\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\73\2\72\2\73\1\72\22\73\1\72\1\25\1\70\1\61\1\67\1\24\1\3\1\71\1\47\1\50\1\22\1\20\1\52\1\21\1\30\1\23\1\43\1\44\10\65\1\63\1\4\1\27\1\1\1\26\1\31\1\60\2\67\1\36\1\37\4\67\1\34\11\67\1\35\1\40\6\67\1\53\1\73\1\54\1\66\1\67\1\73\1\62\1\51\1\6\1\16\1\32\1\33\1\67\1\64\1\7\1\56\1\57\1\14\1\17\1\15\1\55\1\42\1\67\1\12\1\13\1\11\1\10\1\5\1\41\3\67\1\45\1\2\1\46\uff82\73",
+            "\1\74\1\75",
+            "\1\77",
+            "\1\101",
+            "",
+            "\1\104\3\uffff\1\105",
+            "\1\107\15\uffff\1\110",
+            "\1\111\1\uffff\1\115\6\uffff\1\112\1\113\4\uffff\1\114",
+            "\1\117\6\uffff\1\116",
+            "\1\122\6\uffff\1\124\1\121\10\uffff\1\120\6\uffff\1\123",
+            "\1\125",
+            "\1\131\1\uffff\1\126\16\uffff\1\127\1\130\1\uffff\1\132\1\uffff\1\133",
+            "\1\134",
+            "\1\136\11\uffff\1\135\5\uffff\1\137",
+            "\1\141\3\uffff\1\142\3\uffff\1\143\5\uffff\1\144\4\uffff\1\140",
+            "\1\145\7\uffff\1\147\11\uffff\1\146",
+            "\1\151\21\uffff\1\150",
+            "\1\155\17\uffff\1\153\1\154",
+            "\1\160\22\uffff\1\157",
+            "\1\163\4\uffff\1\164\15\uffff\1\162",
+            "\1\166",
+            "\1\170",
+            "\1\172",
+            "\1\175\1\174",
+            "\1\177",
+            "\1\u0082\13\uffff\1\u0081",
+            "\1\u0087\1\uffff\1\u0086\3\uffff\1\u0085\5\uffff\1\u0084",
+            "\1\u0088\7\uffff\1\u008a\5\uffff\1\u0089",
+            "\1\u008b",
+            "\1\u008c",
+            "\1\u008d",
+            "\1\u008e",
+            "\1\u008f",
+            "\1\u0090\6\uffff\1\u0091",
+            "\1\u0092\3\uffff\1\u0095\14\uffff\1\u0093\2\uffff\1\u0094",
+            "\12\u0098\10\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099\13\uffff\1\u0096\6\uffff\1\u0098\2\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099\13\uffff\1\u0096",
+            "\12\u0098\10\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099\22\uffff\1\u0098\2\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009f",
+            "\1\u00a0",
+            "",
+            "",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "",
+            "",
+            "\1\u00aa\20\uffff\1\u00a9",
+            "\1\u00ab",
+            "\1\u00ad",
+            "\12\u0098\10\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099\22\uffff\1\u0098\2\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099",
+            "\1\106\34\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b1",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b4\5\uffff\1\u00b3",
+            "\1\u00b5",
+            "",
+            "\1\u00b6\17\uffff\1\u00b7\1\u00b8",
+            "\1\u00ba\1\uffff\1\u00b9",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00bc",
+            "\1\u00be\1\uffff\1\u00bd\1\uffff\1\u00bf\12\uffff\1\u00c0",
+            "\1\u00c1\7\uffff\1\u00c4\1\uffff\1\u00c3\3\uffff\1\u00c2",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8\23\uffff\1\u00ca\3\uffff\1\u00c9",
+            "\1\u00cb",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf\1\u00d0\14\uffff\1\u00d1",
+            "\1\u00d2\1\uffff\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df\13\uffff\1\u00e0",
+            "\1\u00e2\13\uffff\1\u00e1",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\14\106\1\u00e3\15\106",
+            "\1\u00e5\7\uffff\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e9",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00eb",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef\1\u00f0",
+            "\1\u00f1",
+            "\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5\13\uffff\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe\5\uffff\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "",
+            "",
+            "\12\u0098\10\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099\22\uffff\1\u0098\2\uffff\1\u0099\1\uffff\3\u0099\5\uffff\1\u0099",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0102",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "",
+            "",
+            "\1\u0106\3\uffff\1\106\13\uffff\12\106\7\uffff\3\106\1\u0107\26\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0109",
+            "",
+            "",
+            "\1\u010a",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\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\24\106\1\u010c\5\106",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110\1\uffff\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a\23\uffff\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e\5\uffff\1\u011f",
+            "",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\4\106\1\u0129\25\106",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0137",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u013a\3\uffff\1\u0139",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\1\u013b\31\106",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\u0140",
+            "",
+            "\1\u0142\3\uffff\1\u0141",
+            "\1\u0143\11\uffff\1\u0144",
+            "\1\u0145\5\uffff\1\u0146",
+            "\1\u0147\10\uffff\1\u0149\1\u0148",
+            "",
+            "",
+            "",
+            "",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\106\13\uffff\12\106\7\uffff\15\106\1\u0150\14\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015e\3\uffff\1\u015d",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0166\15\uffff\1\u0165",
+            "\1\u0167",
+            "",
+            "\1\u0168",
+            "\1\u0169",
+            "",
+            "\1\u016a",
+            "",
+            "\1\u016b",
+            "\1\u016c\3\uffff\1\u016d",
+            "\1\u016e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u017f",
+            "\1\u0180",
+            "",
+            "\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\3\106\1\u0183\16\106\1\u0182\7\106",
+            "\1\u0185",
+            "\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\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0193",
+            "",
+            "\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\23\106\1\u0195\6\106\4\uffff\1\106\1\uffff\32\106",
+            "\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\u01a7",
+            "\1\u01a8",
+            "\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\u01ab",
+            "\1\u01ac",
+            "",
+            "\1\u01ad",
+            "\1\u01ae",
+            "",
+            "\1\u01af",
+            "\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\u01b2",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01b4",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01bc",
+            "\1\u01bd",
+            "",
+            "",
+            "",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "",
+            "\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\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "",
+            "\1\u01d3",
+            "\1\u01d4",
+            "",
+            "\1\u01d5",
+            "\1\u01d6",
+            "",
+            "\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\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01dc",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01e1",
+            "\1\u01e2",
+            "\1\u01e3",
+            "",
+            "\1\u01e4",
+            "",
+            "\1\u01e5",
+            "",
+            "\1\u01e6",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5\16\uffff\1\u01f6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01f8",
+            "",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "",
+            "",
+            "\1\u01fe",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\u0205",
+            "",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "\1\u020a",
+            "",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\u020d",
+            "\1\u020e",
+            "",
+            "\1\u020f",
+            "\1\u0210",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0212",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "\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\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\u021b",
+            "\1\u021c",
+            "\1\u021d",
+            "\1\u021e",
+            "\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\u0222",
+            "\1\u0223",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u0225",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\u0229",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\u022d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u022f\6\uffff\1\u0230",
+            "",
+            "\1\u0231",
+            "\1\u0232",
+            "\1\u0233",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\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\u0243",
+            "\1\u0244",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0246",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0250",
+            "\1\u0251",
+            "",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0255",
+            "",
+            "",
+            "\1\u0256",
+            "",
+            "",
+            "\1\u0257",
+            "\1\u0258",
+            "\1\u0259",
+            "\1\u025a",
+            "",
+            "",
+            "",
+            "\1\u025b",
+            "\1\u025c",
+            "",
+            "\1\u025d",
+            "",
+            "\1\u025e",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0260",
+            "\1\u0261",
+            "\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\u0264",
+            "",
+            "\1\u0265",
+            "\1\u0266",
+            "",
+            "\1\u0267",
+            "\1\u0268",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u026a",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\u026d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u026f",
+            "",
+            "\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\u0273",
+            "\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\u0276",
+            "\1\u0277",
+            "",
+            "\1\u0278",
+            "\1\u0279",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u027b",
+            "\1\u027c",
+            "\1\u027d",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u027f",
+            "",
+            "\1\u0280",
+            "\1\u0281",
+            "\1\u0282",
+            "\1\u0283",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u0285",
+            "\1\u0286",
+            "\1\u0287",
+            "\1\u0288",
+            "\1\u0289",
+            "\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\u028c",
+            "\1\u028d",
+            "",
+            "\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\u0290",
+            "\1\u0291",
+            "\1\u0292",
+            "\1\u0293",
+            "\1\u0294",
+            "",
+            "\1\u0295",
+            "\1\u0296",
+            "\1\u0297",
+            "\1\u0298",
+            "",
+            "\1\u0299",
+            "",
+            "",
+            "",
+            "\1\u029a",
+            "",
+            "",
+            "\1\u029b",
+            "\1\u029c",
+            "\1\u029d",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u029f",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02a1",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02a3",
+            "\1\u02a4",
+            "\1\u02a5",
+            "\1\u02a6",
+            "",
+            "\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\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\u02af",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02b1",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02b3",
+            "\1\u02b4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02b6",
+            "\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\u02ba",
+            "\1\u02bb",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u02bd",
+            "",
+            "\1\u02be",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02c0",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "",
+            "",
+            "\1\u02c2",
+            "",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02c4",
+            "\1\u02c5",
+            "\1\u02c6",
+            "",
+            "\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\u02cc",
+            "",
+            "\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\u02cf",
+            "",
+            "\1\u02d0",
+            "",
+            "\1\u02d1",
+            "\1\u02d2",
+            "\1\u02d3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02d4",
+            "",
+            "",
+            "\1\u02d5",
+            "\1\u02d6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02d8",
+            "\1\u02d9",
+            "\1\u02da",
+            "\1\u02db",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "",
+            "\1\u02dd\20\uffff\1\u02de\1\uffff\1\u02df",
+            "\1\u02e0",
+            "\1\u02e1",
+            "\1\u02e2",
+            "",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5",
+            "\1\u02e6",
+            "\1\u02e7",
+            "\1\u02e8",
+            "\1\u02e9",
+            "\1\u02ea",
+            "\1\u02eb",
+            "\1\u02ec",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02ee\17\uffff\1\u02ef",
+            "\1\u02f0",
+            "\1\u02f1",
+            "\1\u02f2",
+            "\1\u02f3",
+            "",
+            "",
+            "",
+            "\1\u02f4",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02f6",
+            "\1\106\13\uffff\12\106\7\uffff\32\106\4\uffff\1\106\1\uffff\32\106",
+            "\1\u02f8",
+            "",
+            "\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",
+            "",
+            ""
+    };
+
+    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 | 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=='v') ) {s = 5;}
+
+                        else if ( (LA21_0=='c') ) {s = 6;}
+
+                        else if ( (LA21_0=='i') ) {s = 7;}
+
+                        else if ( (LA21_0=='u') ) {s = 8;}
+
+                        else if ( (LA21_0=='t') ) {s = 9;}
+
+                        else if ( (LA21_0=='r') ) {s = 10;}
+
+                        else if ( (LA21_0=='s') ) {s = 11;}
+
+                        else if ( (LA21_0=='l') ) {s = 12;}
+
+                        else if ( (LA21_0=='n') ) {s = 13;}
+
+                        else if ( (LA21_0=='d') ) {s = 14;}
+
+                        else if ( (LA21_0=='m') ) {s = 15;}
+
+                        else if ( (LA21_0=='+') ) {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=='<') ) {s = 23;}
+
+                        else if ( (LA21_0=='.') ) {s = 24;}
+
+                        else if ( (LA21_0=='?') ) {s = 25;}
+
+                        else if ( (LA21_0=='e') ) {s = 26;}
+
+                        else if ( (LA21_0=='f') ) {s = 27;}
+
+                        else if ( (LA21_0=='I') ) {s = 28;}
+
+                        else if ( (LA21_0=='S') ) {s = 29;}
+
+                        else if ( (LA21_0=='C') ) {s = 30;}
+
+                        else if ( (LA21_0=='D') ) {s = 31;}
+
+                        else if ( (LA21_0=='T') ) {s = 32;}
+
+                        else if ( (LA21_0=='w') ) {s = 33;}
+
+                        else if ( (LA21_0=='p') ) {s = 34;}
+
+                        else if ( (LA21_0=='0') ) {s = 35;}
+
+                        else if ( (LA21_0=='1') ) {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=='b') ) {s = 41;}
+
+                        else if ( (LA21_0==',') ) {s = 42;}
+
+                        else if ( (LA21_0=='[') ) {s = 43;}
+
+                        else if ( (LA21_0==']') ) {s = 44;}
+
+                        else if ( (LA21_0=='o') ) {s = 45;}
+
+                        else if ( (LA21_0=='j') ) {s = 46;}
+
+                        else if ( (LA21_0=='k') ) {s = 47;}
+
+                        else if ( (LA21_0=='@') ) {s = 48;}
+
+                        else if ( (LA21_0=='#') ) {s = 49;}
+
+                        else if ( (LA21_0=='a') ) {s = 50;}
+
+                        else if ( (LA21_0==':') ) {s = 51;}
+
+                        else if ( (LA21_0=='h') ) {s = 52;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 53;}
+
+                        else if ( (LA21_0=='^') ) {s = 54;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='B')||(LA21_0>='E' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='R')||(LA21_0>='U' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='g'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 55;}
+
+                        else if ( (LA21_0=='\"') ) {s = 56;}
+
+                        else if ( (LA21_0=='\'') ) {s = 57;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 58;}
+
+                        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 = 59;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammarParser.java
new file mode 100644
index 0000000..128e71e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+
+
+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 InternalEntityGrammarParserSignatures {
+     void entryRuleEntityModel() throws RecognitionException;
+     void ruleEntityModel() throws RecognitionException;
+     void entryRuleClass() throws RecognitionException;
+     void ruleClass() throws RecognitionException;
+     void entryRuleIndex() throws RecognitionException;
+     void ruleIndex() throws RecognitionException;
+     void entryRuleEntityPersistenceInfo() throws RecognitionException;
+     void ruleEntityPersistenceInfo() throws RecognitionException;
+     void entryRuleColumnPersistenceInfo() throws RecognitionException;
+     void ruleColumnPersistenceInfo() throws RecognitionException;
+     void entryRuleEntityFeature() throws RecognitionException;
+     void ruleEntityFeature() throws RecognitionException;
+     void entryRuleBeanFeature() throws RecognitionException;
+     void ruleBeanFeature() throws RecognitionException;
+     void entryRuleEntityInheritanceStrategy() throws RecognitionException;
+     void ruleEntityInheritanceStrategy() throws RecognitionException;
+     void entryRuleTablePerClassStrategy() throws RecognitionException;
+     void ruleTablePerClassStrategy() throws RecognitionException;
+     void entryRuleTablePerSubclassStrategy() throws RecognitionException;
+     void ruleTablePerSubclassStrategy() throws RecognitionException;
+     void entryRuleTRANSLATABLEID() throws RecognitionException;
+     void ruleTRANSLATABLEID() throws RecognitionException;
+     void entryRuleTypedPackage() throws RecognitionException;
+     void ruleTypedPackage() throws RecognitionException;
+     void entryRuleType() throws RecognitionException;
+     void ruleType() throws RecognitionException;
+     void entryRuleImport() throws RecognitionException;
+     void ruleImport() throws RecognitionException;
+     void entryRuleDataType() throws RecognitionException;
+     void ruleDataType() throws RecognitionException;
+     void entryRuleAllConstraints() throws RecognitionException;
+     void ruleAllConstraints() throws RecognitionException;
+     void entryRuleDataTypeConstraint() throws RecognitionException;
+     void ruleDataTypeConstraint() throws RecognitionException;
+     void entryRuleDateConstraint() throws RecognitionException;
+     void ruleDateConstraint() throws RecognitionException;
+     void entryRuleBlobTypeConstraint() throws RecognitionException;
+     void ruleBlobTypeConstraint() throws RecognitionException;
+     void entryRuleDtCAssertFalse() throws RecognitionException;
+     void ruleDtCAssertFalse() throws RecognitionException;
+     void entryRuleDtCAssertTrue() throws RecognitionException;
+     void ruleDtCAssertTrue() throws RecognitionException;
+     void entryRuleDtCDecimalMax() throws RecognitionException;
+     void ruleDtCDecimalMax() throws RecognitionException;
+     void entryRuleDtCDecimalMin() throws RecognitionException;
+     void ruleDtCDecimalMin() throws RecognitionException;
+     void entryRuleDtCDigits() throws RecognitionException;
+     void ruleDtCDigits() throws RecognitionException;
+     void entryRuleDtCFuture() throws RecognitionException;
+     void ruleDtCFuture() throws RecognitionException;
+     void entryRuleDtCPast() throws RecognitionException;
+     void ruleDtCPast() throws RecognitionException;
+     void entryRuleDtCNumericMax() throws RecognitionException;
+     void ruleDtCNumericMax() throws RecognitionException;
+     void entryRuleDtCNumericMin() throws RecognitionException;
+     void ruleDtCNumericMin() throws RecognitionException;
+     void entryRuleDtCNotNull() throws RecognitionException;
+     void ruleDtCNotNull() throws RecognitionException;
+     void entryRuleDtCNull() throws RecognitionException;
+     void ruleDtCNull() throws RecognitionException;
+     void entryRuleDtCRegEx() throws RecognitionException;
+     void ruleDtCRegEx() throws RecognitionException;
+     void entryRuleDtCSize() throws RecognitionException;
+     void ruleDtCSize() throws RecognitionException;
+     void entryRuleScalarType() throws RecognitionException;
+     void ruleScalarType() throws RecognitionException;
+     void entryRuleEnum() throws RecognitionException;
+     void ruleEnum() throws RecognitionException;
+     void entryRuleEnumLiteral() throws RecognitionException;
+     void ruleEnumLiteral() throws RecognitionException;
+     void entryRuleAnnotationDef() throws RecognitionException;
+     void ruleAnnotationDef() throws RecognitionException;
+     void entryRuleResultFilters() throws RecognitionException;
+     void ruleResultFilters() throws RecognitionException;
+     void entryRuleResultFilter() throws RecognitionException;
+     void ruleResultFilter() throws RecognitionException;
+     void entryRuleAttributeMatchingConstraint() throws RecognitionException;
+     void ruleAttributeMatchingConstraint() throws RecognitionException;
+     void entryRuleKeyAndValue() throws RecognitionException;
+     void ruleKeyAndValue() throws RecognitionException;
+     void entryRuleLQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleLQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleLFQN() throws RecognitionException;
+     void ruleLFQN() throws RecognitionException;
+     void entryRuleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     void ruleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     void entryRuleValidIDWithKeywords() throws RecognitionException;
+     void ruleValidIDWithKeywords() throws RecognitionException;
+     void entryRuleMultiplicity() throws RecognitionException;
+     void ruleMultiplicity() throws RecognitionException;
+     void entryRuleLInt() throws RecognitionException;
+     void ruleLInt() throws RecognitionException;
+     void entryRuleLDecimal() throws RecognitionException;
+     void ruleLDecimal() 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 entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() 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 entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleDiscriminatorType() throws RecognitionException;
+     void ruleLHistorizedDateType() throws RecognitionException;
+     void ruleConstraintSeverity() throws RecognitionException;
+     void ruleDateType() throws RecognitionException;
+     void ruleLVisibility() throws RecognitionException;
+     void ruleLComparatorType() throws RecognitionException;
+     void ruleLowerBound() throws RecognitionException;
+     void ruleUpperBound() throws RecognitionException;
+     void rule__Class__Alternatives_2() throws RecognitionException;
+     void rule__Class__Alternatives_2_0_1_1() throws RecognitionException;
+     void rule__EntityFeature__Alternatives_2() throws RecognitionException;
+     void rule__EntityFeature__Alternatives_2_0_1_9() throws RecognitionException;
+     void rule__EntityFeature__Alternatives_2_1_1() throws RecognitionException;
+     void rule__EntityFeature__Alternatives_2_1_1_2_0() throws RecognitionException;
+     void rule__BeanFeature__Alternatives_2() throws RecognitionException;
+     void rule__BeanFeature__Alternatives_2_0_1_8() throws RecognitionException;
+     void rule__BeanFeature__Alternatives_2_1_1() throws RecognitionException;
+     void rule__BeanFeature__Alternatives_2_1_1_1_0() throws RecognitionException;
+     void rule__EntityInheritanceStrategy__Alternatives() throws RecognitionException;
+     void rule__Type__Alternatives() throws RecognitionException;
+     void rule__DataType__Alternatives_2() throws RecognitionException;
+     void rule__AllConstraints__Alternatives() throws RecognitionException;
+     void rule__DataTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__DateConstraint__Alternatives() throws RecognitionException;
+     void rule__BlobTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__ScalarType__Alternatives() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException;
+     void rule__LInt__Alternatives_0() 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__DiscriminatorType__Alternatives() throws RecognitionException;
+     void rule__LHistorizedDateType__Alternatives() throws RecognitionException;
+     void rule__ConstraintSeverity__Alternatives() throws RecognitionException;
+     void rule__DateType__Alternatives() throws RecognitionException;
+     void rule__LVisibility__Alternatives() throws RecognitionException;
+     void rule__LComparatorType__Alternatives() throws RecognitionException;
+     void rule__LowerBound__Alternatives() throws RecognitionException;
+     void rule__UpperBound__Alternatives() throws RecognitionException;
+     void rule__Class__Group__0() throws RecognitionException;
+     void rule__Class__Group__0__Impl() throws RecognitionException;
+     void rule__Class__Group__1() throws RecognitionException;
+     void rule__Class__Group__1__Impl() throws RecognitionException;
+     void rule__Class__Group__2() throws RecognitionException;
+     void rule__Class__Group__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__0() throws RecognitionException;
+     void rule__Class__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__1() throws RecognitionException;
+     void rule__Class__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__2() throws RecognitionException;
+     void rule__Class__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__3() throws RecognitionException;
+     void rule__Class__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__4() throws RecognitionException;
+     void rule__Class__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__5() throws RecognitionException;
+     void rule__Class__Group_2_0__5__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__6() throws RecognitionException;
+     void rule__Class__Group_2_0__6__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__7() throws RecognitionException;
+     void rule__Class__Group_2_0__7__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__8() throws RecognitionException;
+     void rule__Class__Group_2_0__8__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__9() throws RecognitionException;
+     void rule__Class__Group_2_0__9__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__10() throws RecognitionException;
+     void rule__Class__Group_2_0__10__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0__11() throws RecognitionException;
+     void rule__Class__Group_2_0__11__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1__0() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1__1() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1_1__0() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1_1__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1_1__1() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1_1__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1_1__2() throws RecognitionException;
+     void rule__Class__Group_2_0_1_1_1_1__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_4__0() throws RecognitionException;
+     void rule__Class__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_4__1() throws RecognitionException;
+     void rule__Class__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_8__0() throws RecognitionException;
+     void rule__Class__Group_2_0_8__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_8__1() throws RecognitionException;
+     void rule__Class__Group_2_0_8__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_0_8__2() throws RecognitionException;
+     void rule__Class__Group_2_0_8__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__0() throws RecognitionException;
+     void rule__Class__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__1() throws RecognitionException;
+     void rule__Class__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__2() throws RecognitionException;
+     void rule__Class__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__3() throws RecognitionException;
+     void rule__Class__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__4() throws RecognitionException;
+     void rule__Class__Group_2_1__4__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__5() throws RecognitionException;
+     void rule__Class__Group_2_1__5__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__6() throws RecognitionException;
+     void rule__Class__Group_2_1__6__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1__7() throws RecognitionException;
+     void rule__Class__Group_2_1__7__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_2__0() throws RecognitionException;
+     void rule__Class__Group_2_1_2__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_2__1() throws RecognitionException;
+     void rule__Class__Group_2_1_2__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_5__0() throws RecognitionException;
+     void rule__Class__Group_2_1_5__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_5__1() throws RecognitionException;
+     void rule__Class__Group_2_1_5__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_1_5__2() throws RecognitionException;
+     void rule__Class__Group_2_1_5__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__0() throws RecognitionException;
+     void rule__Class__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__1() throws RecognitionException;
+     void rule__Class__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__2() throws RecognitionException;
+     void rule__Class__Group_2_2__2__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__3() throws RecognitionException;
+     void rule__Class__Group_2_2__3__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__4() throws RecognitionException;
+     void rule__Class__Group_2_2__4__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__5() throws RecognitionException;
+     void rule__Class__Group_2_2__5__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2__6() throws RecognitionException;
+     void rule__Class__Group_2_2__6__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2_3__0() throws RecognitionException;
+     void rule__Class__Group_2_2_3__0__Impl() throws RecognitionException;
+     void rule__Class__Group_2_2_3__1() throws RecognitionException;
+     void rule__Class__Group_2_2_3__1__Impl() throws RecognitionException;
+     void rule__Index__Group__0() throws RecognitionException;
+     void rule__Index__Group__0__Impl() throws RecognitionException;
+     void rule__Index__Group__1() throws RecognitionException;
+     void rule__Index__Group__1__Impl() throws RecognitionException;
+     void rule__Index__Group__2() throws RecognitionException;
+     void rule__Index__Group__2__Impl() throws RecognitionException;
+     void rule__Index__Group__3() throws RecognitionException;
+     void rule__Index__Group__3__Impl() throws RecognitionException;
+     void rule__Index__Group__4() throws RecognitionException;
+     void rule__Index__Group__4__Impl() throws RecognitionException;
+     void rule__Index__Group__5() throws RecognitionException;
+     void rule__Index__Group__5__Impl() throws RecognitionException;
+     void rule__Index__Group__6() throws RecognitionException;
+     void rule__Index__Group__6__Impl() throws RecognitionException;
+     void rule__Index__Group_5__0() throws RecognitionException;
+     void rule__Index__Group_5__0__Impl() throws RecognitionException;
+     void rule__Index__Group_5__1() throws RecognitionException;
+     void rule__Index__Group_5__1__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group__0() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group__0__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group__1() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group__1__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_0__0() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_0__1() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_0__2() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_0__2__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_1__0() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_1__1() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_1__2() throws RecognitionException;
+     void rule__EntityPersistenceInfo__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__0() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__0__Impl() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__1() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__1__Impl() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__2() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__2__Impl() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__3() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__Group__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group__0() throws RecognitionException;
+     void rule__EntityFeature__Group__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group__1() throws RecognitionException;
+     void rule__EntityFeature__Group__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group__2() throws RecognitionException;
+     void rule__EntityFeature__Group__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__5() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__5__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__6() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__6__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__7() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__7__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__8() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__8__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__9() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1__9__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_4__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_4__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_4__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_4__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_4__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_4__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_7__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_7__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_7__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_7__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8_3__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8_3__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8_3__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_0_1_8_3__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__5() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0__5__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_2__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_2__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_2__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_2__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_2__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_2__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4_3__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4_3__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4_3__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_0_4_3__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__5() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1__5__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4_3__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4_3__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4_3__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_1_4_3__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__5() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__5__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__6() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__6__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__7() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__7__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__8() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2__8__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_3__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_3__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_3__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_3__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_3__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_3__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_6__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_6__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_6__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_6__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7_3__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7_3__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7_3__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_1_1_2_7_3__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__2() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__2__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__3() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__3__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__4() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__4__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__5() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__5__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__6() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1__6__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4__1__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4_1__0() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4_1__0__Impl() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4_1__1() throws RecognitionException;
+     void rule__EntityFeature__Group_2_2_1_4_1__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group__0() throws RecognitionException;
+     void rule__BeanFeature__Group__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group__1() throws RecognitionException;
+     void rule__BeanFeature__Group__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group__2() throws RecognitionException;
+     void rule__BeanFeature__Group__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__5() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__5__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__6() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__6__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__7() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__7__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__8() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1__8__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_4__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_4__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_4__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_4__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_4__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_4__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_6__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_6__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_6__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_6__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7_3__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7_3__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7_3__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_0_1_7_3__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_2__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_2__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_2__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_2__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_2__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_2__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4_3__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4_3__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4_3__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_0_4_3__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__5() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__5__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__6() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1__6__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_3__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_3__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_3__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_3__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_3__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_3__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5_3__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5_3__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5_3__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_1_1_1_5_3__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__2() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__2__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__3() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__3__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__4() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__4__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__5() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__5__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__6() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1__6__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4__1__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4_1__0() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4_1__0__Impl() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4_1__1() throws RecognitionException;
+     void rule__BeanFeature__Group_2_2_1_4_1__1__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__0() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__0__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__1() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__1__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__2() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__2__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__3() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__3__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__4() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group__4__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_0__0() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_0__1() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_0__2() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_0__2__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_1__0() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_1__1() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_1__2() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_1__2__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_2__0() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_2__0__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_2__1() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_2__1__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_2__2() throws RecognitionException;
+     void rule__TablePerClassStrategy__Group_3_2__2__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__0() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__0__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__1__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__2() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__2__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__3() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__3__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__4() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group__4__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_0__0() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_0__0__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_0__1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_0__1__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_0__2() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_0__2__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_1__0() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_1__0__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_1__1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_1__1__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_1__2() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_1__2__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_2__0() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_2__0__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_2__1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_2__1__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_2__2() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__Group_3_2__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__0() throws RecognitionException;
+     void rule__TypedPackage__Group__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__1() throws RecognitionException;
+     void rule__TypedPackage__Group__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__2() throws RecognitionException;
+     void rule__TypedPackage__Group__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__3() throws RecognitionException;
+     void rule__TypedPackage__Group__3__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__Import__Group__0() throws RecognitionException;
+     void rule__Import__Group__0__Impl() throws RecognitionException;
+     void rule__Import__Group__1() throws RecognitionException;
+     void rule__Import__Group__1__Impl() throws RecognitionException;
+     void rule__Import__Group__2() throws RecognitionException;
+     void rule__Import__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__0() throws RecognitionException;
+     void rule__DataType__Group__0__Impl() throws RecognitionException;
+     void rule__DataType__Group__1() throws RecognitionException;
+     void rule__DataType__Group__1__Impl() throws RecognitionException;
+     void rule__DataType__Group__2() throws RecognitionException;
+     void rule__DataType__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__3() throws RecognitionException;
+     void rule__DataType__Group__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__0() throws RecognitionException;
+     void rule__DataType__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__1() throws RecognitionException;
+     void rule__DataType__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__2() throws RecognitionException;
+     void rule__DataType__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__3() throws RecognitionException;
+     void rule__DataType__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__4() throws RecognitionException;
+     void rule__DataType__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__0() throws RecognitionException;
+     void rule__DataType__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__1() throws RecognitionException;
+     void rule__DataType__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__2() throws RecognitionException;
+     void rule__DataType__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__3() throws RecognitionException;
+     void rule__DataType__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__0() throws RecognitionException;
+     void rule__DtCDigits__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__1() throws RecognitionException;
+     void rule__DtCDigits__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__2() throws RecognitionException;
+     void rule__DtCDigits__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__3() throws RecognitionException;
+     void rule__DtCDigits__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__4() throws RecognitionException;
+     void rule__DtCDigits__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__5() throws RecognitionException;
+     void rule__DtCDigits__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__6() throws RecognitionException;
+     void rule__DtCDigits__Group__6__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__7() throws RecognitionException;
+     void rule__DtCDigits__Group__7__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__0() throws RecognitionException;
+     void rule__DtCFuture__Group__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__1() throws RecognitionException;
+     void rule__DtCFuture__Group__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__2() throws RecognitionException;
+     void rule__DtCFuture__Group__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__0() throws RecognitionException;
+     void rule__DtCPast__Group__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__1() throws RecognitionException;
+     void rule__DtCPast__Group__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__2() throws RecognitionException;
+     void rule__DtCPast__Group__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__0() throws RecognitionException;
+     void rule__DtCNotNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__1() throws RecognitionException;
+     void rule__DtCNotNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__2() throws RecognitionException;
+     void rule__DtCNotNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__0() throws RecognitionException;
+     void rule__DtCNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__1() throws RecognitionException;
+     void rule__DtCNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__2() throws RecognitionException;
+     void rule__DtCNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__0() throws RecognitionException;
+     void rule__DtCRegEx__Group__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__1() throws RecognitionException;
+     void rule__DtCRegEx__Group__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__2() throws RecognitionException;
+     void rule__DtCRegEx__Group__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__3() throws RecognitionException;
+     void rule__DtCRegEx__Group__3__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__4() throws RecognitionException;
+     void rule__DtCRegEx__Group__4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__5() throws RecognitionException;
+     void rule__DtCRegEx__Group__5__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__0() throws RecognitionException;
+     void rule__DtCSize__Group__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__1() throws RecognitionException;
+     void rule__DtCSize__Group__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__2() throws RecognitionException;
+     void rule__DtCSize__Group__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__3() throws RecognitionException;
+     void rule__DtCSize__Group__3__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__4() throws RecognitionException;
+     void rule__DtCSize__Group__4__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__5() throws RecognitionException;
+     void rule__DtCSize__Group__5__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__6() throws RecognitionException;
+     void rule__DtCSize__Group__6__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__7() throws RecognitionException;
+     void rule__DtCSize__Group__7__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__0() throws RecognitionException;
+     void rule__Enum__Group__0__Impl() throws RecognitionException;
+     void rule__Enum__Group__1() throws RecognitionException;
+     void rule__Enum__Group__1__Impl() throws RecognitionException;
+     void rule__Enum__Group__2() throws RecognitionException;
+     void rule__Enum__Group__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__3() throws RecognitionException;
+     void rule__Enum__Group__3__Impl() throws RecognitionException;
+     void rule__Enum__Group__4() throws RecognitionException;
+     void rule__Enum__Group__4__Impl() throws RecognitionException;
+     void rule__Enum__Group__5() throws RecognitionException;
+     void rule__Enum__Group__5__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__0() throws RecognitionException;
+     void rule__Enum__Group_4__0__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__1() throws RecognitionException;
+     void rule__Enum__Group_4__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__0() throws RecognitionException;
+     void rule__EnumLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__1() throws RecognitionException;
+     void rule__EnumLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1__Impl() throws RecognitionException;
+     void rule__AnnotationDef__Group__0() throws RecognitionException;
+     void rule__AnnotationDef__Group__0__Impl() throws RecognitionException;
+     void rule__ResultFilters__Group__0() throws RecognitionException;
+     void rule__ResultFilters__Group__0__Impl() throws RecognitionException;
+     void rule__ResultFilters__Group__1() throws RecognitionException;
+     void rule__ResultFilters__Group__1__Impl() throws RecognitionException;
+     void rule__ResultFilters__Group__2() throws RecognitionException;
+     void rule__ResultFilters__Group__2__Impl() throws RecognitionException;
+     void rule__ResultFilters__Group__3() throws RecognitionException;
+     void rule__ResultFilters__Group__3__Impl() throws RecognitionException;
+     void rule__ResultFilters__Group__4() throws RecognitionException;
+     void rule__ResultFilters__Group__4__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__0() throws RecognitionException;
+     void rule__KeyAndValue__Group__0__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__1() throws RecognitionException;
+     void rule__KeyAndValue__Group__1__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__2() throws RecognitionException;
+     void rule__KeyAndValue__Group__2__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__3() throws RecognitionException;
+     void rule__KeyAndValue__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__4() throws RecognitionException;
+     void rule__KeyAndValue__Group__4__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__5() throws RecognitionException;
+     void rule__KeyAndValue__Group__5__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__LFQN__Group__0() throws RecognitionException;
+     void rule__LFQN__Group__0__Impl() throws RecognitionException;
+     void rule__LFQN__Group__1() throws RecognitionException;
+     void rule__LFQN__Group__1__Impl() throws RecognitionException;
+     void rule__LFQN__Group_1__0() throws RecognitionException;
+     void rule__LFQN__Group_1__0__Impl() throws RecognitionException;
+     void rule__LFQN__Group_1__1() throws RecognitionException;
+     void rule__LFQN__Group_1__1__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__0() throws RecognitionException;
+     void rule__Multiplicity__Group__0__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__1() throws RecognitionException;
+     void rule__Multiplicity__Group__1__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__2() throws RecognitionException;
+     void rule__Multiplicity__Group__2__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group__3() throws RecognitionException;
+     void rule__Multiplicity__Group__3__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group_2__0() throws RecognitionException;
+     void rule__Multiplicity__Group_2__0__Impl() throws RecognitionException;
+     void rule__Multiplicity__Group_2__1() throws RecognitionException;
+     void rule__Multiplicity__Group_2__1__Impl() throws RecognitionException;
+     void rule__LInt__Group__0() throws RecognitionException;
+     void rule__LInt__Group__0__Impl() throws RecognitionException;
+     void rule__LInt__Group__1() throws RecognitionException;
+     void rule__LInt__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__0() throws RecognitionException;
+     void rule__LDecimal__Group__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__1() throws RecognitionException;
+     void rule__LDecimal__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__0() throws RecognitionException;
+     void rule__LDecimal__Group_1__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__1() throws RecognitionException;
+     void rule__LDecimal__Group_1__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__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__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__Class__UnorderedGroup_2_0_1() throws RecognitionException;
+     void rule__Class__UnorderedGroup_2_0_1__Impl() throws RecognitionException;
+     void rule__Class__UnorderedGroup_2_0_1__0() throws RecognitionException;
+     void rule__Class__UnorderedGroup_2_0_1__1() throws RecognitionException;
+     void rule__Class__UnorderedGroup_2_0_1__2() throws RecognitionException;
+     void rule__EntityPersistenceInfo__UnorderedGroup_1() throws RecognitionException;
+     void rule__EntityPersistenceInfo__UnorderedGroup_1__Impl() throws RecognitionException;
+     void rule__EntityPersistenceInfo__UnorderedGroup_1__0() throws RecognitionException;
+     void rule__EntityPersistenceInfo__UnorderedGroup_1__1() throws RecognitionException;
+     void rule__TablePerClassStrategy__UnorderedGroup_3() throws RecognitionException;
+     void rule__TablePerClassStrategy__UnorderedGroup_3__Impl() throws RecognitionException;
+     void rule__TablePerClassStrategy__UnorderedGroup_3__0() throws RecognitionException;
+     void rule__TablePerClassStrategy__UnorderedGroup_3__1() throws RecognitionException;
+     void rule__TablePerClassStrategy__UnorderedGroup_3__2() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__UnorderedGroup_3() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__UnorderedGroup_3__Impl() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__UnorderedGroup_3__0() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__UnorderedGroup_3__1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__UnorderedGroup_3__2() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__0() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__1() throws RecognitionException;
+     void rule__EntityModel__PackagesAssignment() throws RecognitionException;
+     void rule__Class__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__Class__AbstractAssignment_2_0_1_0() throws RecognitionException;
+     void rule__Class__HistorizedAssignment_2_0_1_1_0() throws RecognitionException;
+     void rule__Class__TimedependentAssignment_2_0_1_1_1_0() throws RecognitionException;
+     void rule__Class__TimedependentDateTypeAssignment_2_0_1_1_1_1_1() throws RecognitionException;
+     void rule__Class__CacheableAssignment_2_0_1_2() throws RecognitionException;
+     void rule__Class__NameAssignment_2_0_3() throws RecognitionException;
+     void rule__Class__SuperTypeAssignment_2_0_4_1() throws RecognitionException;
+     void rule__Class__PersistenceInfoAssignment_2_0_6() throws RecognitionException;
+     void rule__Class__InheritanceStrategyAssignment_2_0_7() throws RecognitionException;
+     void rule__Class__PersistenceUnitAssignment_2_0_8_1() throws RecognitionException;
+     void rule__Class__FeaturesAssignment_2_0_9() throws RecognitionException;
+     void rule__Class__IndexesAssignment_2_0_10() throws RecognitionException;
+     void rule__Class__MappedSuperclassAssignment_2_1_1() throws RecognitionException;
+     void rule__Class__SuperTypeAssignment_2_1_2_1() throws RecognitionException;
+     void rule__Class__NameAssignment_2_1_3() throws RecognitionException;
+     void rule__Class__PersistenceUnitAssignment_2_1_5_1() throws RecognitionException;
+     void rule__Class__FeaturesAssignment_2_1_6() throws RecognitionException;
+     void rule__Class__NameAssignment_2_2_2() throws RecognitionException;
+     void rule__Class__SuperTypeAssignment_2_2_3_1() throws RecognitionException;
+     void rule__Class__FeaturesAssignment_2_2_5() throws RecognitionException;
+     void rule__Index__UniqueAssignment_0() throws RecognitionException;
+     void rule__Index__NameAssignment_2() throws RecognitionException;
+     void rule__Index__FeaturesAssignment_4() throws RecognitionException;
+     void rule__Index__FeaturesAssignment_5_1() throws RecognitionException;
+     void rule__EntityPersistenceInfo__SchemaNameAssignment_1_0_1() throws RecognitionException;
+     void rule__EntityPersistenceInfo__TableNameAssignment_1_1_1() throws RecognitionException;
+     void rule__ColumnPersistenceInfo__ColumnNameAssignment_2() throws RecognitionException;
+     void rule__EntityFeature__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__EntityFeature__CascadingAssignment_2_0_1_1() throws RecognitionException;
+     void rule__EntityFeature__TypeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__EntityFeature__MultiplicityAssignment_2_0_1_3() throws RecognitionException;
+     void rule__EntityFeature__ConstraintsAssignment_2_0_1_4_1() throws RecognitionException;
+     void rule__EntityFeature__NameAssignment_2_0_1_5() throws RecognitionException;
+     void rule__EntityFeature__PersistenceInfoAssignment_2_0_1_6() throws RecognitionException;
+     void rule__EntityFeature__OppositeAssignment_2_0_1_7_1() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_0_1_8_2() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_0_1_8_3_1() throws RecognitionException;
+     void rule__EntityFeature__ResultFiltersAssignment_2_0_1_9_0() throws RecognitionException;
+     void rule__EntityFeature__TransientAssignment_2_1_1_0_0() throws RecognitionException;
+     void rule__EntityFeature__TypeAssignment_2_1_1_0_1() throws RecognitionException;
+     void rule__EntityFeature__ConstraintsAssignment_2_1_1_0_2_1() throws RecognitionException;
+     void rule__EntityFeature__NameAssignment_2_1_1_0_3() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_2() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_1_1_0_4_3_1() throws RecognitionException;
+     void rule__EntityFeature__DerivedAssignment_2_1_1_1_0() throws RecognitionException;
+     void rule__EntityFeature__DomainDescriptionAssignment_2_1_1_1_1() throws RecognitionException;
+     void rule__EntityFeature__TypeAssignment_2_1_1_1_2() throws RecognitionException;
+     void rule__EntityFeature__NameAssignment_2_1_1_1_3() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_2() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_1_1_1_4_3_1() throws RecognitionException;
+     void rule__EntityFeature__DerivedGetterExpressionAssignment_2_1_1_1_5() throws RecognitionException;
+     void rule__EntityFeature__IdAssignment_2_1_1_2_0_1() throws RecognitionException;
+     void rule__EntityFeature__UuidAssignment_2_1_1_2_0_2() throws RecognitionException;
+     void rule__EntityFeature__VersionAssignment_2_1_1_2_0_3() throws RecognitionException;
+     void rule__EntityFeature__DomainDescriptionAssignment_2_1_1_2_0_4() throws RecognitionException;
+     void rule__EntityFeature__DomainKeyAssignment_2_1_1_2_0_5() throws RecognitionException;
+     void rule__EntityFeature__TypeAssignment_2_1_1_2_1() throws RecognitionException;
+     void rule__EntityFeature__MultiplicityAssignment_2_1_1_2_2() throws RecognitionException;
+     void rule__EntityFeature__ConstraintsAssignment_2_1_1_2_3_1() throws RecognitionException;
+     void rule__EntityFeature__NameAssignment_2_1_1_2_4() throws RecognitionException;
+     void rule__EntityFeature__PersistenceInfoAssignment_2_1_1_2_5() throws RecognitionException;
+     void rule__EntityFeature__OppositeAssignment_2_1_1_2_6_1() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_1_1_2_7_2() throws RecognitionException;
+     void rule__EntityFeature__PropertiesAssignment_2_1_1_2_7_3_1() throws RecognitionException;
+     void rule__EntityFeature__TypeAssignment_2_2_1_1() throws RecognitionException;
+     void rule__EntityFeature__NameAssignment_2_2_1_2() throws RecognitionException;
+     void rule__EntityFeature__ParamsAssignment_2_2_1_4_0() throws RecognitionException;
+     void rule__EntityFeature__ParamsAssignment_2_2_1_4_1_1() throws RecognitionException;
+     void rule__EntityFeature__BodyAssignment_2_2_1_6() throws RecognitionException;
+     void rule__BeanFeature__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__BeanFeature__CascadingAssignment_2_0_1_1() throws RecognitionException;
+     void rule__BeanFeature__TypeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__BeanFeature__MultiplicityAssignment_2_0_1_3() throws RecognitionException;
+     void rule__BeanFeature__ConstraintsAssignment_2_0_1_4_1() throws RecognitionException;
+     void rule__BeanFeature__NameAssignment_2_0_1_5() throws RecognitionException;
+     void rule__BeanFeature__OppositeAssignment_2_0_1_6_1() throws RecognitionException;
+     void rule__BeanFeature__PropertiesAssignment_2_0_1_7_2() throws RecognitionException;
+     void rule__BeanFeature__PropertiesAssignment_2_0_1_7_3_1() throws RecognitionException;
+     void rule__BeanFeature__ResultFiltersAssignment_2_0_1_8_0() throws RecognitionException;
+     void rule__BeanFeature__TransientAssignment_2_1_1_0_0() throws RecognitionException;
+     void rule__BeanFeature__TypeAssignment_2_1_1_0_1() throws RecognitionException;
+     void rule__BeanFeature__ConstraintsAssignment_2_1_1_0_2_1() throws RecognitionException;
+     void rule__BeanFeature__NameAssignment_2_1_1_0_3() throws RecognitionException;
+     void rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_2() throws RecognitionException;
+     void rule__BeanFeature__PropertiesAssignment_2_1_1_0_4_3_1() throws RecognitionException;
+     void rule__BeanFeature__IdAssignment_2_1_1_1_0_1() throws RecognitionException;
+     void rule__BeanFeature__VersionAssignment_2_1_1_1_0_2() throws RecognitionException;
+     void rule__BeanFeature__TypeAssignment_2_1_1_1_1() throws RecognitionException;
+     void rule__BeanFeature__MultiplicityAssignment_2_1_1_1_2() throws RecognitionException;
+     void rule__BeanFeature__ConstraintsAssignment_2_1_1_1_3_1() throws RecognitionException;
+     void rule__BeanFeature__NameAssignment_2_1_1_1_4() throws RecognitionException;
+     void rule__BeanFeature__PropertiesAssignment_2_1_1_1_5_2() throws RecognitionException;
+     void rule__BeanFeature__PropertiesAssignment_2_1_1_1_5_3_1() throws RecognitionException;
+     void rule__BeanFeature__TypeAssignment_2_2_1_1() throws RecognitionException;
+     void rule__BeanFeature__NameAssignment_2_2_1_2() throws RecognitionException;
+     void rule__BeanFeature__ParamsAssignment_2_2_1_4_0() throws RecognitionException;
+     void rule__BeanFeature__ParamsAssignment_2_2_1_4_1_1() throws RecognitionException;
+     void rule__BeanFeature__BodyAssignment_2_2_1_6() throws RecognitionException;
+     void rule__TablePerClassStrategy__DiscriminatorColumnAssignment_3_0_1() throws RecognitionException;
+     void rule__TablePerClassStrategy__DiscriminatorTypeAssignment_3_1_1() throws RecognitionException;
+     void rule__TablePerClassStrategy__DiscriminatorValueAssignment_3_2_1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__DiscriminatorColumnAssignment_3_0_1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__DiscriminatorTypeAssignment_3_1_1() throws RecognitionException;
+     void rule__TablePerSubclassStrategy__DiscriminatorValueAssignment_3_2_1() throws RecognitionException;
+     void rule__TypedPackage__NameAssignment_2() throws RecognitionException;
+     void rule__TypedPackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__TypedPackage__TypesAssignment_3_2() throws RecognitionException;
+     void rule__Import__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__DataType__NameAssignment_1() throws RecognitionException;
+     void rule__DataType__JvmTypeReferenceAssignment_2_0_1() throws RecognitionException;
+     void rule__DataType__AsPrimitiveAssignment_2_0_2() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_0_3() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_3_1() throws RecognitionException;
+     void rule__DataType__DateAssignment_2_1_0() throws RecognitionException;
+     void rule__DataType__DateTypeAssignment_2_1_1() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_1_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_3_1() throws RecognitionException;
+     void rule__DataType__AsBlobAssignment_2_2_0() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_2_1() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_3_1() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDigits__IntDigitsAssignment_3() throws RecognitionException;
+     void rule__DtCDigits__FractionDigitsAssignment_5() throws RecognitionException;
+     void rule__DtCDigits__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCDigits__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCDigits__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__DtCFuture__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCFuture__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCFuture__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCPast__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCPast__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCPast__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNotNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCRegEx__PatternAssignment_3() throws RecognitionException;
+     void rule__DtCRegEx__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCRegEx__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCSize__MinAssignment_3() throws RecognitionException;
+     void rule__DtCSize__MaxAssignment_5() throws RecognitionException;
+     void rule__DtCSize__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCSize__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCSize__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__Enum__NameAssignment_1() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_3() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_4_1() throws RecognitionException;
+     void rule__EnumLiteral__NameAssignment_0() throws RecognitionException;
+     void rule__EnumLiteral__DefaultAssignment_1_0_1() throws RecognitionException;
+     void rule__EnumLiteral__NullAssignment_1_1_0() throws RecognitionException;
+     void rule__EnumLiteral__ValueAssignment_1_1_2_1() throws RecognitionException;
+     void rule__AnnotationDef__AnnotationAssignment_0() throws RecognitionException;
+     void rule__ResultFilters__ResultFiltersAssignment_3() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__AttributeAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1() throws RecognitionException;
+     void rule__KeyAndValue__KeyAssignment_2() throws RecognitionException;
+     void rule__KeyAndValue__ValueAssignment_5() throws RecognitionException;
+     void rule__Multiplicity__LowerAssignment_1() throws RecognitionException;
+     void rule__Multiplicity__UpperAssignment_2_1() 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 synpred73_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred74_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred75_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred100_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred101_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred114_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred122_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred123_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred136_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred140_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred141_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred147_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred266_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred269_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred272_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred275_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred278_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred281_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred284_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred287_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred290_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred293_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred296_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred299_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred302_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred306_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred326_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred328_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred329_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred330_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred331_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred332_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred333_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred334_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred335_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred336_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred337_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred339_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred340_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred348_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred355_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred358_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred371_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred372_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred376_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred377_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred378_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred383_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred384_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred385_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred386_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred388_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred392_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred394_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred395_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred402_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred403_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred404_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred405_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred406_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred407_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred408_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred409_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred410_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred411_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred412_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred413_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred414_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred415_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred416_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred417_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred418_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred419_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred420_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred421_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred422_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred423_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred424_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred425_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred426_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred427_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred428_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred429_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred430_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred431_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred432_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred433_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred434_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred435_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred436_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred437_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred438_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred439_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred440_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred441_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred442_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred443_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred444_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred445_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred446_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred447_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred448_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred449_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred450_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred451_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred452_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred453_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred454_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred455_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred456_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred457_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred458_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred459_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred460_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred461_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred462_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred463_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred464_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred465_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred466_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred467_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred468_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred469_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred470_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred471_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred472_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred473_InternalEntityGrammar_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalEntityGrammarParser1 extends AbstractInternalContentAssistParser implements InternalEntityGrammarParserSignatures {
+
+        InternalEntityGrammarParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalEntityGrammarParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "';'", "'var'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'INHERIT'", "'STRING'", "'CHAR'", "'INT'", "'DATE'", "'TIMESTAMP'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'entity'", "'{'", "'}'", "'('", "')'", "'persistenceUnit'", "'bean'", "'index'", "', '", "'schemaName'", "'tableName'", "'['", "']'", "'opposite'", "'properties'", "'def'", "','", "'inheritance per class'", "'discriminatorColumn'", "'discriminatorType'", "'discriminatorValue'", "'inheritance per subclass'", "'datatype'", "'jvmType'", "'isFalse'", "'msgCode'", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'constraints'", "'key'", "'value'", "'derived'", "'collection'", "'@'", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'abstract'", "'historized'", "'timedependent'", "'cacheable'", "'mapped superclass'", "'unique'", "'domainDescription'", "'domainKey'", "'as primitive'", "'dateType'", "'as blob'", "'asDefault'", "'forNull'", "'::'", "'?.'", "'|'", "'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 RULE_HEX=5;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__169=169;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+
+    public String[] getTokenNames() { return InternalEntityGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/antlr/internal/InternalEntityGrammar.g"; }
+
+
+     
+     	protected EntityGrammarGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(EntityGrammarGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred432_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred432_InternalEntityGrammar_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 synpred287_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred287_InternalEntityGrammar_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 synpred378_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred378_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred275_InternalEntityGrammar_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 synpred444_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred444_InternalEntityGrammar_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 synpred469_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred469_InternalEntityGrammar_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 synpred74_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred74_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred299_InternalEntityGrammar_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 synpred456_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred456_InternalEntityGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred73_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred73_InternalEntityGrammar_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 synpred433_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred433_InternalEntityGrammar_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 synpred457_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred457_InternalEntityGrammar_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 synpred420_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred420_InternalEntityGrammar_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 synpred445_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred445_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred331_InternalEntityGrammar_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 synpred388_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred388_InternalEntityGrammar_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 synpred434_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred434_InternalEntityGrammar_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 synpred442_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred442_InternalEntityGrammar_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 synpred459_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred459_InternalEntityGrammar_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 synpred355_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred355_InternalEntityGrammar_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 synpred100_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred100_InternalEntityGrammar_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 synpred458_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred458_InternalEntityGrammar_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 synpred340_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred340_InternalEntityGrammar_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 synpred466_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred466_InternalEntityGrammar_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 synpred330_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred330_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred284_InternalEntityGrammar_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 synpred435_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred435_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred278_InternalEntityGrammar_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 synpred332_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred332_InternalEntityGrammar_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 synpred75_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred75_InternalEntityGrammar_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 synpred468_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred468_InternalEntityGrammar_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 synpred443_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred443_InternalEntityGrammar_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 synpred101_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred101_InternalEntityGrammar_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 synpred467_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred467_InternalEntityGrammar_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 synpred410_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred410_InternalEntityGrammar_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 synpred452_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred452_InternalEntityGrammar_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 synpred147_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred147_InternalEntityGrammar_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 synpred448_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred448_InternalEntityGrammar_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 synpred464_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred464_InternalEntityGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred140_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred140_InternalEntityGrammar_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 synpred411_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred411_InternalEntityGrammar_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 synpred436_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred436_InternalEntityGrammar_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 synpred296_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred296_InternalEntityGrammar_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 synpred385_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred385_InternalEntityGrammar_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 synpred441_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred441_InternalEntityGrammar_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 synpred425_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred425_InternalEntityGrammar_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 synpred413_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred413_InternalEntityGrammar_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 synpred409_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred409_InternalEntityGrammar_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 synpred334_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred334_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred281_InternalEntityGrammar_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 synpred438_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred438_InternalEntityGrammar_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 synpred454_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred454_InternalEntityGrammar_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 synpred421_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred421_InternalEntityGrammar_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 synpred446_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred446_InternalEntityGrammar_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 synpred122_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred122_InternalEntityGrammar_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 synpred431_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred431_InternalEntityGrammar_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 synpred114_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred114_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred328_InternalEntityGrammar_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 synpred377_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred377_InternalEntityGrammar_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 synpred415_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred415_InternalEntityGrammar_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 synpred383_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred383_InternalEntityGrammar_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 synpred423_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred423_InternalEntityGrammar_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 synpred462_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred462_InternalEntityGrammar_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 synpred470_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred470_InternalEntityGrammar_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 synpred336_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred336_InternalEntityGrammar_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 synpred407_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred407_InternalEntityGrammar_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 synpred394_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred394_InternalEntityGrammar_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 synpred428_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred428_InternalEntityGrammar_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 synpred473_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred473_InternalEntityGrammar_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 synpred404_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred404_InternalEntityGrammar_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 synpred403_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred403_InternalEntityGrammar_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 synpred461_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred461_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred337_InternalEntityGrammar_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 synpred416_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred416_InternalEntityGrammar_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 synpred395_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred395_InternalEntityGrammar_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 synpred290_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred290_InternalEntityGrammar_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 synpred326_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred326_InternalEntityGrammar_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 synpred429_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred429_InternalEntityGrammar_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 synpred472_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred472_InternalEntityGrammar_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 synpred460_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred460_InternalEntityGrammar_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 synpred405_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred405_InternalEntityGrammar_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 synpred417_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred417_InternalEntityGrammar_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 synpred426_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred426_InternalEntityGrammar_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 synpred418_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred418_InternalEntityGrammar_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 synpred269_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred269_InternalEntityGrammar_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 synpred339_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred339_InternalEntityGrammar_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 synpred372_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred372_InternalEntityGrammar_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 synpred293_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred293_InternalEntityGrammar_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 synpred451_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred451_InternalEntityGrammar_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 synpred427_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred427_InternalEntityGrammar_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 synpred419_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred419_InternalEntityGrammar_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 synpred402_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred402_InternalEntityGrammar_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 synpred371_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred371_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred348_InternalEntityGrammar_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 synpred141_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred141_InternalEntityGrammar_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 synpred450_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred450_InternalEntityGrammar_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 synpred123_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred123_InternalEntityGrammar_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 synpred386_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred386_InternalEntityGrammar_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 synpred333_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred333_InternalEntityGrammar_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 synpred424_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred424_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred329_InternalEntityGrammar_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 synpred266_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred266_InternalEntityGrammar_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 synpred408_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred408_InternalEntityGrammar_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 synpred453_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred453_InternalEntityGrammar_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 synpred449_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred449_InternalEntityGrammar_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 synpred136_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred136_InternalEntityGrammar_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 synpred306_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred306_InternalEntityGrammar_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 synpred358_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred358_InternalEntityGrammar_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 synpred412_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred412_InternalEntityGrammar_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 synpred437_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred437_InternalEntityGrammar_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 synpred465_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred465_InternalEntityGrammar_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 synpred440_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred440_InternalEntityGrammar_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 synpred392_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred392_InternalEntityGrammar_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 synpred422_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred422_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred335_InternalEntityGrammar_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 synpred384_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred384_InternalEntityGrammar_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 synpred414_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred414_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred302_InternalEntityGrammar_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 synpred471_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred471_InternalEntityGrammar_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 synpred406_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred406_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred272_InternalEntityGrammar_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 synpred439_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred439_InternalEntityGrammar_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 synpred463_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred463_InternalEntityGrammar_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 synpred455_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred455_InternalEntityGrammar_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 synpred447_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred447_InternalEntityGrammar_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 synpred376_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred376_InternalEntityGrammar_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 synpred430_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred430_InternalEntityGrammar_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 DFA26 dfa26 = new DFA26(this);
+    protected DFA27 dfa27 = new DFA27(this);
+    protected DFA28 dfa28 = new DFA28(this);
+    protected DFA35 dfa35 = new DFA35(this);
+    protected DFA43 dfa43 = new DFA43(this);
+    protected DFA46 dfa46 = new DFA46(this);
+    protected DFA47 dfa47 = new DFA47(this);
+    protected DFA50 dfa50 = new DFA50(this);
+    protected DFA55 dfa55 = new DFA55(this);
+    protected DFA58 dfa58 = new DFA58(this);
+    protected DFA67 dfa67 = new DFA67(this);
+    protected DFA163 dfa163 = new DFA163(this);
+    protected DFA166 dfa166 = new DFA166(this);
+    protected DFA178 dfa178 = new DFA178(this);
+    protected DFA181 dfa181 = new DFA181(this);
+    protected DFA190 dfa190 = new DFA190(this);
+    protected DFA193 dfa193 = new DFA193(this);
+    protected DFA223 dfa223 = new DFA223(this);
+    protected DFA229 dfa229 = new DFA229(this);
+    protected DFA236 dfa236 = new DFA236(this);
+    protected DFA237 dfa237 = new DFA237(this);
+    protected DFA245 dfa245 = new DFA245(this);
+    protected DFA255 dfa255 = new DFA255(this);
+    protected DFA268 dfa268 = new DFA268(this);
+    protected DFA269 dfa269 = new DFA269(this);
+    protected DFA273 dfa273 = new DFA273(this);
+    protected DFA274 dfa274 = new DFA274(this);
+    protected DFA275 dfa275 = new DFA275(this);
+    protected DFA280 dfa280 = new DFA280(this);
+    protected DFA289 dfa289 = new DFA289(this);
+    protected DFA292 dfa292 = new DFA292(this);
+    protected DFA315 dfa315 = new DFA315(this);
+    protected DFA316 dfa316 = new DFA316(this);
+    protected DFA318 dfa318 = new DFA318(this);
+    protected DFA319 dfa319 = new DFA319(this);
+    protected DFA330 dfa330 = new DFA330(this);
+    protected DFA331 dfa331 = new DFA331(this);
+    protected DFA333 dfa333 = new DFA333(this);
+    protected DFA334 dfa334 = new DFA334(this);
+    protected DFA342 dfa342 = new DFA342(this);
+    protected DFA343 dfa343 = new DFA343(this);
+    protected DFA345 dfa345 = new DFA345(this);
+    protected DFA346 dfa346 = new DFA346(this);
+    static final String DFA26_eotS =
+        "\43\uffff";
+    static final String DFA26_eofS =
+        "\43\uffff";
+    static final String DFA26_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA26_maxS =
+        "\1\u00ab\1\0\41\uffff";
+    static final String DFA26_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA26_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA26_transitionS = {
+            "\1\1\4\2\27\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\24\uffff\1\2\1\uffff\1\2\7\uffff\1\2\42\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\22\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA26_eot = DFA.unpackEncodedString(DFA26_eotS);
+    static final short[] DFA26_eof = DFA.unpackEncodedString(DFA26_eofS);
+    static final char[] DFA26_min = DFA.unpackEncodedStringToUnsignedChars(DFA26_minS);
+    static final char[] DFA26_max = DFA.unpackEncodedStringToUnsignedChars(DFA26_maxS);
+    static final short[] DFA26_accept = DFA.unpackEncodedString(DFA26_acceptS);
+    static final short[] DFA26_special = DFA.unpackEncodedString(DFA26_specialS);
+    static final short[][] DFA26_transition;
+
+    static {
+        int numStates = DFA26_transitionS.length;
+        DFA26_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA26_transition[i] = DFA.unpackEncodedString(DFA26_transitionS[i]);
+        }
+    }
+
+    class DFA26 extends DFA {
+
+        public DFA26(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 26;
+            this.eot = DFA26_eot;
+            this.eof = DFA26_eof;
+            this.min = DFA26_min;
+            this.max = DFA26_max;
+            this.accept = DFA26_accept;
+            this.special = DFA26_special;
+            this.transition = DFA26_transition;
+        }
+        public String getDescription() {
+            return "4588: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 LA26_1 = input.LA(1);
+
+                         
+                        int index26_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred73_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index26_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 26, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA27_eotS =
+        "\43\uffff";
+    static final String DFA27_eofS =
+        "\43\uffff";
+    static final String DFA27_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA27_maxS =
+        "\1\u00ab\1\0\41\uffff";
+    static final String DFA27_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA27_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA27_transitionS = {
+            "\5\2\27\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\24\uffff\1\2\1\uffff\1\2\7\uffff\1\2\42\uffff\1\2\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\22\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA27_eot = DFA.unpackEncodedString(DFA27_eotS);
+    static final short[] DFA27_eof = DFA.unpackEncodedString(DFA27_eofS);
+    static final char[] DFA27_min = DFA.unpackEncodedStringToUnsignedChars(DFA27_minS);
+    static final char[] DFA27_max = DFA.unpackEncodedStringToUnsignedChars(DFA27_maxS);
+    static final short[] DFA27_accept = DFA.unpackEncodedString(DFA27_acceptS);
+    static final short[] DFA27_special = DFA.unpackEncodedString(DFA27_specialS);
+    static final short[][] DFA27_transition;
+
+    static {
+        int numStates = DFA27_transitionS.length;
+        DFA27_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA27_transition[i] = DFA.unpackEncodedString(DFA27_transitionS[i]);
+        }
+    }
+
+    class DFA27 extends DFA {
+
+        public DFA27(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 27;
+            this.eot = DFA27_eot;
+            this.eof = DFA27_eof;
+            this.min = DFA27_min;
+            this.max = DFA27_max;
+            this.accept = DFA27_accept;
+            this.special = DFA27_special;
+            this.transition = DFA27_transition;
+        }
+        public String getDescription() {
+            return "4610: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 LA27_1 = input.LA(1);
+
+                         
+                        int index27_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred74_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index27_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 27, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA28_eotS =
+        "\43\uffff";
+    static final String DFA28_eofS =
+        "\43\uffff";
+    static final String DFA28_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA28_maxS =
+        "\1\u00ab\1\0\41\uffff";
+    static final String DFA28_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA28_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA28_transitionS = {
+            "\5\2\27\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\24\uffff\1\2\1\uffff\1\2\7\uffff\1\2\42\uffff\1\2\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\22\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
+    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
+    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
+    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
+    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
+    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
+    static final short[][] DFA28_transition;
+
+    static {
+        int numStates = DFA28_transitionS.length;
+        DFA28_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
+        }
+    }
+
+    class DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            this.eot = DFA28_eot;
+            this.eof = DFA28_eof;
+            this.min = DFA28_min;
+            this.max = DFA28_max;
+            this.accept = DFA28_accept;
+            this.special = DFA28_special;
+            this.transition = DFA28_transition;
+        }
+        public String getDescription() {
+            return "4632: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 LA28_1 = input.LA(1);
+
+                         
+                        int index28_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred75_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index28_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 28, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA35_eotS =
+        "\13\uffff";
+    static final String DFA35_eofS =
+        "\13\uffff";
+    static final String DFA35_minS =
+        "\1\54\2\uffff\1\54\7\uffff";
+    static final String DFA35_maxS =
+        "\1\63\2\uffff\1\60\7\uffff";
+    static final String DFA35_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 DFA35_specialS =
+        "\13\uffff}>";
+    static final String[] DFA35_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[] DFA35_eot = DFA.unpackEncodedString(DFA35_eotS);
+    static final short[] DFA35_eof = DFA.unpackEncodedString(DFA35_eofS);
+    static final char[] DFA35_min = DFA.unpackEncodedStringToUnsignedChars(DFA35_minS);
+    static final char[] DFA35_max = DFA.unpackEncodedStringToUnsignedChars(DFA35_maxS);
+    static final short[] DFA35_accept = DFA.unpackEncodedString(DFA35_acceptS);
+    static final short[] DFA35_special = DFA.unpackEncodedString(DFA35_specialS);
+    static final short[][] DFA35_transition;
+
+    static {
+        int numStates = DFA35_transitionS.length;
+        DFA35_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA35_transition[i] = DFA.unpackEncodedString(DFA35_transitionS[i]);
+        }
+    }
+
+    class DFA35 extends DFA {
+
+        public DFA35(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 35;
+            this.eot = DFA35_eot;
+            this.eof = DFA35_eof;
+            this.min = DFA35_min;
+            this.max = DFA35_max;
+            this.accept = DFA35_accept;
+            this.special = DFA35_special;
+            this.transition = DFA35_transition;
+        }
+        public String getDescription() {
+            return "4864:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA43_eotS =
+        "\12\uffff";
+    static final String DFA43_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA43_minS =
+        "\1\73\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA43_maxS =
+        "\1\u00a9\2\101\1\uffff\5\u00ab\1\uffff";
+    static final String DFA43_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA43_specialS =
+        "\12\uffff}>";
+    static final String[] DFA43_transitionS = {
+            "\1\1\154\uffff\1\2\1\3",
+            "\1\4\50\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\50\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\4\3\1\uffff\4\3\7\uffff\1\3\1\uffff\43\3\24\uffff\4\3\2\uffff\1\3\3\uffff\2\3\2\uffff\2\3\33\uffff\1\3\1\uffff\26\3\6\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\4\3\1\uffff\4\3\7\uffff\1\3\1\uffff\43\3\24\uffff\4\3\2\uffff\1\3\3\uffff\2\3\2\uffff\2\3\33\uffff\1\3\1\uffff\26\3\6\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\4\3\1\uffff\4\3\7\uffff\1\3\1\uffff\43\3\24\uffff\4\3\2\uffff\1\3\3\uffff\2\3\2\uffff\2\3\33\uffff\1\3\1\uffff\26\3\6\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\4\3\1\uffff\4\3\7\uffff\1\3\1\uffff\43\3\24\uffff\4\3\2\uffff\1\3\3\uffff\2\3\2\uffff\2\3\33\uffff\1\3\1\uffff\26\3\6\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\4\3\1\uffff\4\3\7\uffff\1\3\1\uffff\43\3\24\uffff\4\3\2\uffff\1\3\3\uffff\2\3\2\uffff\2\3\33\uffff\1\3\1\uffff\26\3\6\uffff\3\3\5\uffff\2\3\1\uffff\1\3",
+            ""
+    };
+
+    static final short[] DFA43_eot = DFA.unpackEncodedString(DFA43_eotS);
+    static final short[] DFA43_eof = DFA.unpackEncodedString(DFA43_eofS);
+    static final char[] DFA43_min = DFA.unpackEncodedStringToUnsignedChars(DFA43_minS);
+    static final char[] DFA43_max = DFA.unpackEncodedStringToUnsignedChars(DFA43_maxS);
+    static final short[] DFA43_accept = DFA.unpackEncodedString(DFA43_acceptS);
+    static final short[] DFA43_special = DFA.unpackEncodedString(DFA43_specialS);
+    static final short[][] DFA43_transition;
+
+    static {
+        int numStates = DFA43_transitionS.length;
+        DFA43_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA43_transition[i] = DFA.unpackEncodedString(DFA43_transitionS[i]);
+        }
+    }
+
+    class DFA43 extends DFA {
+
+        public DFA43(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 43;
+            this.eot = DFA43_eot;
+            this.eof = DFA43_eof;
+            this.min = DFA43_min;
+            this.max = DFA43_max;
+            this.accept = DFA43_accept;
+            this.special = DFA43_special;
+            this.transition = DFA43_transition;
+        }
+        public String getDescription() {
+            return "5146:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA46_eotS =
+        "\43\uffff";
+    static final String DFA46_eofS =
+        "\43\uffff";
+    static final String DFA46_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA46_maxS =
+        "\1\u00ab\2\0\40\uffff";
+    static final String DFA46_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA46_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA46_transitionS = {
+            "\1\1\4\5\27\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\24\uffff\1\5\1\uffff\1\2\7\uffff\1\5\43\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\21\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 "5222: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 LA46_1 = input.LA(1);
+
+                         
+                        int index46_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred114_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index46_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA46_2 = input.LA(1);
+
+                         
+                        int index46_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred114_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index46_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 46, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA47_eotS =
+        "\40\uffff";
+    static final String DFA47_eofS =
+        "\40\uffff";
+    static final String DFA47_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA47_maxS =
+        "\1\u00ab\26\uffff\1\0\10\uffff";
+    static final String DFA47_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 DFA47_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA47_transitionS = {
+            "\1\5\4\14\44\uffff\1\5\17\uffff\5\5\1\14\24\uffff\1\2\1\uffff\1\35\7\uffff\1\14\43\uffff\1\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\22\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA47_eot = DFA.unpackEncodedString(DFA47_eotS);
+    static final short[] DFA47_eof = DFA.unpackEncodedString(DFA47_eofS);
+    static final char[] DFA47_min = DFA.unpackEncodedStringToUnsignedChars(DFA47_minS);
+    static final char[] DFA47_max = DFA.unpackEncodedStringToUnsignedChars(DFA47_maxS);
+    static final short[] DFA47_accept = DFA.unpackEncodedString(DFA47_acceptS);
+    static final short[] DFA47_special = DFA.unpackEncodedString(DFA47_specialS);
+    static final short[][] DFA47_transition;
+
+    static {
+        int numStates = DFA47_transitionS.length;
+        DFA47_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA47_transition[i] = DFA.unpackEncodedString(DFA47_transitionS[i]);
+        }
+    }
+
+    class DFA47 extends DFA {
+
+        public DFA47(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 47;
+            this.eot = DFA47_eot;
+            this.eof = DFA47_eof;
+            this.min = DFA47_min;
+            this.max = DFA47_max;
+            this.accept = DFA47_accept;
+            this.special = DFA47_special;
+            this.transition = DFA47_transition;
+        }
+        public String getDescription() {
+            return "5244: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 LA47_23 = input.LA(1);
+
+                         
+                        int index47_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred122_InternalEntityGrammar()) ) {s = 30;}
+
+                        else if ( (synpred123_InternalEntityGrammar()) ) {s = 31;}
+
+                         
+                        input.seek(index47_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 47, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA50_eotS =
+        "\43\uffff";
+    static final String DFA50_eofS =
+        "\43\uffff";
+    static final String DFA50_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA50_maxS =
+        "\1\u00ab\1\0\41\uffff";
+    static final String DFA50_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA50_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA50_transitionS = {
+            "\5\2\27\uffff\2\2\13\uffff\1\2\3\uffff\1\2\6\uffff\1\2\4\uffff\6\2\24\uffff\1\2\1\uffff\1\1\7\uffff\1\2\43\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\22\uffff\1\2",
+            "\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 "5418: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 LA50_1 = input.LA(1);
+
+                         
+                        int index50_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred136_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index50_1);
+                        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 DFA55_eotS =
+        "\43\uffff";
+    static final String DFA55_eofS =
+        "\43\uffff";
+    static final String DFA55_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA55_maxS =
+        "\1\u00ab\2\0\40\uffff";
+    static final String DFA55_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA55_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA55_transitionS = {
+            "\1\1\4\5\27\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\24\uffff\1\5\1\uffff\1\2\7\uffff\1\5\43\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\21\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA55_eot = DFA.unpackEncodedString(DFA55_eotS);
+    static final short[] DFA55_eof = DFA.unpackEncodedString(DFA55_eofS);
+    static final char[] DFA55_min = DFA.unpackEncodedStringToUnsignedChars(DFA55_minS);
+    static final char[] DFA55_max = DFA.unpackEncodedStringToUnsignedChars(DFA55_maxS);
+    static final short[] DFA55_accept = DFA.unpackEncodedString(DFA55_acceptS);
+    static final short[] DFA55_special = DFA.unpackEncodedString(DFA55_specialS);
+    static final short[][] DFA55_transition;
+
+    static {
+        int numStates = DFA55_transitionS.length;
+        DFA55_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA55_transition[i] = DFA.unpackEncodedString(DFA55_transitionS[i]);
+        }
+    }
+
+    class DFA55 extends DFA {
+
+        public DFA55(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 55;
+            this.eot = DFA55_eot;
+            this.eof = DFA55_eof;
+            this.min = DFA55_min;
+            this.max = DFA55_max;
+            this.accept = DFA55_accept;
+            this.special = DFA55_special;
+            this.transition = DFA55_transition;
+        }
+        public String getDescription() {
+            return "5530: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 LA55_1 = input.LA(1);
+
+                         
+                        int index55_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred141_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index55_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA55_2 = input.LA(1);
+
+                         
+                        int index55_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred141_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index55_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 55, _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\u00ab\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\27\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\24\uffff\1\5\1\uffff\1\2\7\uffff\1\5\43\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\21\uffff\1\3\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 "5624: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 LA58_1 = input.LA(1);
+
+                         
+                        int index58_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred147_InternalEntityGrammar()) ) {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 ( (synpred147_InternalEntityGrammar()) ) {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 DFA67_eotS =
+        "\7\uffff";
+    static final String DFA67_eofS =
+        "\2\uffff\1\4\3\uffff\1\4";
+    static final String DFA67_minS =
+        "\1\4\1\uffff\1\20\1\4\2\uffff\1\20";
+    static final String DFA67_maxS =
+        "\1\76\1\uffff\1\73\1\64\2\uffff\1\73";
+    static final String DFA67_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+    static final String DFA67_specialS =
+        "\7\uffff}>";
+    static final String[] DFA67_transitionS = {
+            "\1\2\71\uffff\1\1",
+            "",
+            "\1\4\52\uffff\1\3",
+            "\1\6\57\uffff\1\5",
+            "",
+            "",
+            "\1\4\52\uffff\1\3"
+    };
+
+    static final short[] DFA67_eot = DFA.unpackEncodedString(DFA67_eotS);
+    static final short[] DFA67_eof = DFA.unpackEncodedString(DFA67_eofS);
+    static final char[] DFA67_min = DFA.unpackEncodedStringToUnsignedChars(DFA67_minS);
+    static final char[] DFA67_max = DFA.unpackEncodedStringToUnsignedChars(DFA67_maxS);
+    static final short[] DFA67_accept = DFA.unpackEncodedString(DFA67_acceptS);
+    static final short[] DFA67_special = DFA.unpackEncodedString(DFA67_specialS);
+    static final short[][] DFA67_transition;
+
+    static {
+        int numStates = DFA67_transitionS.length;
+        DFA67_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA67_transition[i] = DFA.unpackEncodedString(DFA67_transitionS[i]);
+        }
+    }
+
+    class DFA67 extends DFA {
+
+        public DFA67(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 67;
+            this.eot = DFA67_eot;
+            this.eof = DFA67_eof;
+            this.min = DFA67_min;
+            this.max = DFA67_max;
+            this.accept = DFA67_accept;
+            this.special = DFA67_special;
+            this.transition = DFA67_transition;
+        }
+        public String getDescription() {
+            return "5824: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 =
+        "\46\uffff";
+    static final String DFA163_eofS =
+        "\1\5\3\uffff\1\6\1\uffff\1\45\37\uffff";
+    static final String DFA163_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\0\37\uffff";
+    static final String DFA163_maxS =
+        "\1\u009f\3\uffff\1\u009f\1\uffff\1\0\37\uffff";
+    static final String DFA163_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\1\uffff\37\1";
+    static final String DFA163_specialS =
+        "\1\0\3\uffff\1\2\1\uffff\1\1\37\uffff}>";
+    static final String[] DFA163_transitionS = {
+            "\1\5\105\uffff\1\5\1\uffff\1\5\3\uffff\1\5\4\uffff\1\1\1\4\1\uffff\1\5\7\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\5\uffff\1\5\26\uffff\5\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\17\5\66\uffff\1\42\1\uffff\1\32\3\uffff\1\44\4\uffff\1\7\1\12\1\uffff\1\30\7\uffff\1\33\1\uffff\1\13\1\uffff\1\10\1\11\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\3\uffff\1\5\1\uffff\1\35\26\uffff\1\36\1\37\1\40\1\41\1\43",
+            "",
+            "\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 "16012:1: ( rule__DtCAssertFalse__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA163_0 = input.LA(1);
+
+                         
+                        int index163_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_0 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA163_0 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA163_0 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA163_0==98) ) {s = 4;}
+
+                        else if ( (LA163_0==EOF||LA163_0==16||LA163_0==86||LA163_0==88||LA163_0==92||LA163_0==100||LA163_0==108||LA163_0==110||(LA163_0>=114 && LA163_0<=126)||LA163_0==132||(LA163_0>=155 && LA163_0<=159)) ) {s = 5;}
+
+                         
+                        input.seek(index163_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA163_6 = input.LA(1);
+
+                         
+                        int index163_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA163_6 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 37;}
+
+                         
+                        input.seek(index163_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA163_4 = input.LA(1);
+
+                         
+                        int index163_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA163_4==RULE_ID||(LA163_4>=17 && LA163_4<=31)||LA163_4==130) ) {s = 5;}
+
+                        else if ( (LA163_4==EOF) ) {s = 6;}
+
+                        else if ( LA163_4 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA163_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA163_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA163_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA163_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA163_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA163_4 ==115 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA163_4 ==116 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA163_4 ==117 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA163_4 ==120 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA163_4 ==121 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA163_4 ==122 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA163_4 ==123 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA163_4 ==124 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA163_4 ==125 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA163_4 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA163_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA163_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA163_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA163_4 ==88 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA163_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA163_4 ==126 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA163_4 ==132 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA163_4 ==155 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA163_4 ==156 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA163_4 ==157 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( LA163_4 ==158 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                        else if ( LA163_4 ==86 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 34;}
+
+                        else if ( LA163_4 ==159 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 35;}
+
+                        else if ( LA163_4 ==92 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {s = 36;}
+
+                         
+                        input.seek(index163_4);
+                        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 DFA166_eotS =
+        "\46\uffff";
+    static final String DFA166_eofS =
+        "\1\5\3\uffff\1\6\1\uffff\1\45\37\uffff";
+    static final String DFA166_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\0\37\uffff";
+    static final String DFA166_maxS =
+        "\1\u009f\3\uffff\1\u009f\1\uffff\1\0\37\uffff";
+    static final String DFA166_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\1\uffff\37\1";
+    static final String DFA166_specialS =
+        "\1\2\3\uffff\1\1\1\uffff\1\0\37\uffff}>";
+    static final String[] DFA166_transitionS = {
+            "\1\5\105\uffff\1\5\1\uffff\1\5\3\uffff\1\5\4\uffff\1\1\1\4\1\uffff\1\5\7\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\5\uffff\1\5\26\uffff\5\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\17\5\66\uffff\1\42\1\uffff\1\32\3\uffff\1\44\4\uffff\1\7\1\12\1\uffff\1\30\7\uffff\1\33\1\uffff\1\13\1\uffff\1\10\1\11\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\3\uffff\1\5\1\uffff\1\35\26\uffff\1\36\1\37\1\40\1\41\1\43",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA166_eot = DFA.unpackEncodedString(DFA166_eotS);
+    static final short[] DFA166_eof = DFA.unpackEncodedString(DFA166_eofS);
+    static final char[] DFA166_min = DFA.unpackEncodedStringToUnsignedChars(DFA166_minS);
+    static final char[] DFA166_max = DFA.unpackEncodedStringToUnsignedChars(DFA166_maxS);
+    static final short[] DFA166_accept = DFA.unpackEncodedString(DFA166_acceptS);
+    static final short[] DFA166_special = DFA.unpackEncodedString(DFA166_specialS);
+    static final short[][] DFA166_transition;
+
+    static {
+        int numStates = DFA166_transitionS.length;
+        DFA166_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA166_transition[i] = DFA.unpackEncodedString(DFA166_transitionS[i]);
+        }
+    }
+
+    class DFA166 extends DFA {
+
+        public DFA166(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 166;
+            this.eot = DFA166_eot;
+            this.eof = DFA166_eof;
+            this.min = DFA166_min;
+            this.max = DFA166_max;
+            this.accept = DFA166_accept;
+            this.special = DFA166_special;
+            this.transition = DFA166_transition;
+        }
+        public String getDescription() {
+            return "16522:1: ( rule__DtCAssertTrue__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA166_6 = input.LA(1);
+
+                         
+                        int index166_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA166_6 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 37;}
+
+                         
+                        input.seek(index166_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA166_4 = input.LA(1);
+
+                         
+                        int index166_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA166_4==RULE_ID||(LA166_4>=17 && LA166_4<=31)||LA166_4==130) ) {s = 5;}
+
+                        else if ( (LA166_4==EOF) ) {s = 6;}
+
+                        else if ( LA166_4 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA166_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA166_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA166_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA166_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA166_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA166_4 ==115 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA166_4 ==116 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA166_4 ==117 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA166_4 ==120 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA166_4 ==121 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA166_4 ==122 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA166_4 ==123 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA166_4 ==124 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA166_4 ==125 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA166_4 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA166_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA166_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA166_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA166_4 ==88 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA166_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA166_4 ==126 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA166_4 ==132 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA166_4 ==155 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA166_4 ==156 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA166_4 ==157 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( LA166_4 ==158 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                        else if ( LA166_4 ==86 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 34;}
+
+                        else if ( LA166_4 ==159 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 35;}
+
+                        else if ( LA166_4 ==92 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 36;}
+
+                         
+                        input.seek(index166_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA166_0 = input.LA(1);
+
+                         
+                        int index166_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA166_0 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA166_0 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA166_0 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA166_0==98) ) {s = 4;}
+
+                        else if ( (LA166_0==EOF||LA166_0==16||LA166_0==86||LA166_0==88||LA166_0==92||LA166_0==100||LA166_0==108||LA166_0==110||(LA166_0>=114 && LA166_0<=126)||LA166_0==132||(LA166_0>=155 && LA166_0<=159)) ) {s = 5;}
+
+                         
+                        input.seek(index166_0);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 166, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA178_eotS =
+        "\46\uffff";
+    static final String DFA178_eofS =
+        "\1\5\3\uffff\1\6\1\uffff\1\45\37\uffff";
+    static final String DFA178_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\0\37\uffff";
+    static final String DFA178_maxS =
+        "\1\u009f\3\uffff\1\u009f\1\uffff\1\0\37\uffff";
+    static final String DFA178_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\1\uffff\37\1";
+    static final String DFA178_specialS =
+        "\1\1\3\uffff\1\2\1\uffff\1\0\37\uffff}>";
+    static final String[] DFA178_transitionS = {
+            "\1\5\105\uffff\1\5\1\uffff\1\5\3\uffff\1\5\4\uffff\1\1\1\4\1\uffff\1\5\7\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\5\uffff\1\5\26\uffff\5\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\17\5\66\uffff\1\42\1\uffff\1\32\3\uffff\1\44\4\uffff\1\7\1\12\1\uffff\1\30\7\uffff\1\33\1\uffff\1\13\1\uffff\1\10\1\11\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\3\uffff\1\5\1\uffff\1\35\26\uffff\1\36\1\37\1\40\1\41\1\43",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA178_eot = DFA.unpackEncodedString(DFA178_eotS);
+    static final short[] DFA178_eof = DFA.unpackEncodedString(DFA178_eofS);
+    static final char[] DFA178_min = DFA.unpackEncodedStringToUnsignedChars(DFA178_minS);
+    static final char[] DFA178_max = DFA.unpackEncodedStringToUnsignedChars(DFA178_maxS);
+    static final short[] DFA178_accept = DFA.unpackEncodedString(DFA178_acceptS);
+    static final short[] DFA178_special = DFA.unpackEncodedString(DFA178_specialS);
+    static final short[][] DFA178_transition;
+
+    static {
+        int numStates = DFA178_transitionS.length;
+        DFA178_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA178_transition[i] = DFA.unpackEncodedString(DFA178_transitionS[i]);
+        }
+    }
+
+    class DFA178 extends DFA {
+
+        public DFA178(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 178;
+            this.eot = DFA178_eot;
+            this.eof = DFA178_eof;
+            this.min = DFA178_min;
+            this.max = DFA178_max;
+            this.accept = DFA178_accept;
+            this.special = DFA178_special;
+            this.transition = DFA178_transition;
+        }
+        public String getDescription() {
+            return "18917:1: ( rule__DtCFuture__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA178_6 = input.LA(1);
+
+                         
+                        int index178_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA178_6 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 37;}
+
+                         
+                        input.seek(index178_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA178_0 = input.LA(1);
+
+                         
+                        int index178_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA178_0 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA178_0 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA178_0 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA178_0==98) ) {s = 4;}
+
+                        else if ( (LA178_0==EOF||LA178_0==16||LA178_0==86||LA178_0==88||LA178_0==92||LA178_0==100||LA178_0==108||LA178_0==110||(LA178_0>=114 && LA178_0<=126)||LA178_0==132||(LA178_0>=155 && LA178_0<=159)) ) {s = 5;}
+
+                         
+                        input.seek(index178_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA178_4 = input.LA(1);
+
+                         
+                        int index178_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA178_4==RULE_ID||(LA178_4>=17 && LA178_4<=31)||LA178_4==130) ) {s = 5;}
+
+                        else if ( (LA178_4==EOF) ) {s = 6;}
+
+                        else if ( LA178_4 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA178_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA178_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA178_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA178_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA178_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA178_4 ==115 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA178_4 ==116 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA178_4 ==117 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA178_4 ==120 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA178_4 ==121 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA178_4 ==122 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA178_4 ==123 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA178_4 ==124 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA178_4 ==125 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA178_4 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA178_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA178_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA178_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA178_4 ==88 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA178_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA178_4 ==126 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA178_4 ==132 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA178_4 ==155 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA178_4 ==156 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA178_4 ==157 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( LA178_4 ==158 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                        else if ( LA178_4 ==86 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 34;}
+
+                        else if ( LA178_4 ==159 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 35;}
+
+                        else if ( LA178_4 ==92 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {s = 36;}
+
+                         
+                        input.seek(index178_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 178, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA181_eotS =
+        "\46\uffff";
+    static final String DFA181_eofS =
+        "\1\5\3\uffff\1\6\1\uffff\1\45\37\uffff";
+    static final String DFA181_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\0\37\uffff";
+    static final String DFA181_maxS =
+        "\1\u009f\3\uffff\1\u009f\1\uffff\1\0\37\uffff";
+    static final String DFA181_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\1\uffff\37\1";
+    static final String DFA181_specialS =
+        "\1\1\3\uffff\1\2\1\uffff\1\0\37\uffff}>";
+    static final String[] DFA181_transitionS = {
+            "\1\5\105\uffff\1\5\1\uffff\1\5\3\uffff\1\5\4\uffff\1\1\1\4\1\uffff\1\5\7\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\5\uffff\1\5\26\uffff\5\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\17\5\66\uffff\1\42\1\uffff\1\32\3\uffff\1\44\4\uffff\1\7\1\12\1\uffff\1\30\7\uffff\1\33\1\uffff\1\13\1\uffff\1\10\1\11\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\3\uffff\1\5\1\uffff\1\35\26\uffff\1\36\1\37\1\40\1\41\1\43",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA181_eot = DFA.unpackEncodedString(DFA181_eotS);
+    static final short[] DFA181_eof = DFA.unpackEncodedString(DFA181_eofS);
+    static final char[] DFA181_min = DFA.unpackEncodedStringToUnsignedChars(DFA181_minS);
+    static final char[] DFA181_max = DFA.unpackEncodedStringToUnsignedChars(DFA181_maxS);
+    static final short[] DFA181_accept = DFA.unpackEncodedString(DFA181_acceptS);
+    static final short[] DFA181_special = DFA.unpackEncodedString(DFA181_specialS);
+    static final short[][] DFA181_transition;
+
+    static {
+        int numStates = DFA181_transitionS.length;
+        DFA181_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA181_transition[i] = DFA.unpackEncodedString(DFA181_transitionS[i]);
+        }
+    }
+
+    class DFA181 extends DFA {
+
+        public DFA181(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 181;
+            this.eot = DFA181_eot;
+            this.eof = DFA181_eof;
+            this.min = DFA181_min;
+            this.max = DFA181_max;
+            this.accept = DFA181_accept;
+            this.special = DFA181_special;
+            this.transition = DFA181_transition;
+        }
+        public String getDescription() {
+            return "19427:1: ( rule__DtCPast__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA181_6 = input.LA(1);
+
+                         
+                        int index181_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA181_6 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 37;}
+
+                         
+                        input.seek(index181_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA181_0 = input.LA(1);
+
+                         
+                        int index181_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA181_0 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA181_0 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA181_0 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA181_0==98) ) {s = 4;}
+
+                        else if ( (LA181_0==EOF||LA181_0==16||LA181_0==86||LA181_0==88||LA181_0==92||LA181_0==100||LA181_0==108||LA181_0==110||(LA181_0>=114 && LA181_0<=126)||LA181_0==132||(LA181_0>=155 && LA181_0<=159)) ) {s = 5;}
+
+                         
+                        input.seek(index181_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA181_4 = input.LA(1);
+
+                         
+                        int index181_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA181_4==RULE_ID||(LA181_4>=17 && LA181_4<=31)||LA181_4==130) ) {s = 5;}
+
+                        else if ( (LA181_4==EOF) ) {s = 6;}
+
+                        else if ( LA181_4 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA181_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA181_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA181_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA181_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA181_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA181_4 ==115 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA181_4 ==116 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA181_4 ==117 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA181_4 ==120 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA181_4 ==121 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA181_4 ==122 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA181_4 ==123 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA181_4 ==124 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA181_4 ==125 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA181_4 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA181_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA181_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA181_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA181_4 ==88 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA181_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA181_4 ==126 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA181_4 ==132 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA181_4 ==155 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA181_4 ==156 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA181_4 ==157 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( LA181_4 ==158 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                        else if ( LA181_4 ==86 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 34;}
+
+                        else if ( LA181_4 ==159 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 35;}
+
+                        else if ( LA181_4 ==92 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {s = 36;}
+
+                         
+                        input.seek(index181_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 181, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA190_eotS =
+        "\46\uffff";
+    static final String DFA190_eofS =
+        "\1\5\3\uffff\1\6\1\uffff\1\45\37\uffff";
+    static final String DFA190_minS =
+        "\1\20\3\uffff\1\4\1\uffff\1\0\37\uffff";
+    static final String DFA190_maxS =
+        "\1\u009f\3\uffff\1\u009f\1\uffff\1\0\37\uffff";
+    static final String DFA190_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\1\uffff\37\1";
+    static final String DFA190_specialS =
+        "\1\2\3\uffff\1\0\1\uffff\1\1\37\uffff}>";
+    static final String[] DFA190_transitionS = {
+            "\1\5\105\uffff\1\5\1\uffff\1\5\3\uffff\1\5\4\uffff\1\1\1\4\1\uffff\1\5\7\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\5\uffff\1\5\26\uffff\5\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\17\5\66\uffff\1\42\1\uffff\1\32\3\uffff\1\44\4\uffff\1\7\1\12\1\uffff\1\30\7\uffff\1\33\1\uffff\1\13\1\uffff\1\10\1\11\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\3\uffff\1\5\1\uffff\1\35\26\uffff\1\36\1\37\1\40\1\41\1\43",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA190_eot = DFA.unpackEncodedString(DFA190_eotS);
+    static final short[] DFA190_eof = DFA.unpackEncodedString(DFA190_eofS);
+    static final char[] DFA190_min = DFA.unpackEncodedStringToUnsignedChars(DFA190_minS);
+    static final char[] DFA190_max = DFA.unpackEncodedStringToUnsignedChars(DFA190_maxS);
+    static final short[] DFA190_accept = DFA.unpackEncodedString(DFA190_acceptS);
+    static final short[] DFA190_special = DFA.unpackEncodedString(DFA190_specialS);
+    static final short[][] DFA190_transition;
+
+    static {
+        int numStates = DFA190_transitionS.length;
+        DFA190_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA190_transition[i] = DFA.unpackEncodedString(DFA190_transitionS[i]);
+        }
+    }
+
+    class DFA190 extends DFA {
+
+        public DFA190(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 190;
+            this.eot = DFA190_eot;
+            this.eof = DFA190_eof;
+            this.min = DFA190_min;
+            this.max = DFA190_max;
+            this.accept = DFA190_accept;
+            this.special = DFA190_special;
+            this.transition = DFA190_transition;
+        }
+        public String getDescription() {
+            return "21151:1: ( rule__DtCNotNull__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA190_4 = input.LA(1);
+
+                         
+                        int index190_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA190_4==RULE_ID||(LA190_4>=17 && LA190_4<=31)||LA190_4==130) ) {s = 5;}
+
+                        else if ( (LA190_4==EOF) ) {s = 6;}
+
+                        else if ( LA190_4 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA190_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA190_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( LA190_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 10;}
+
+                        else if ( LA190_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA190_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA190_4 ==115 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA190_4 ==116 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA190_4 ==117 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA190_4 ==120 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA190_4 ==121 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA190_4 ==122 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA190_4 ==123 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA190_4 ==124 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA190_4 ==125 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA190_4 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA190_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA190_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA190_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA190_4 ==88 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA190_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA190_4 ==126 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA190_4 ==132 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA190_4 ==155 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA190_4 ==156 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA190_4 ==157 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( LA190_4 ==158 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                        else if ( LA190_4 ==86 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 34;}
+
+                        else if ( LA190_4 ==159 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 35;}
+
+                        else if ( LA190_4 ==92 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 36;}
+
+                         
+                        input.seek(index190_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA190_6 = input.LA(1);
+
+                         
+                        int index190_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA190_6 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 37;}
+
+                         
+                        input.seek(index190_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA190_0 = input.LA(1);
+
+                         
+                        int index190_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA190_0 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA190_0 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA190_0 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA190_0==98) ) {s = 4;}
+
+                        else if ( (LA190_0==EOF||LA190_0==16||LA190_0==86||LA190_0==88||LA190_0==92||LA190_0==100||LA190_0==108||LA190_0==110||(LA190_0>=114 && LA190_0<=126)||LA190_0==132||(LA190_0>=155 && LA190_0<=159)) ) {s = 5;}
+
+                         
+                        input.seek(index190_0);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 190, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA193_eotS =
+        "\46\uffff";
+    static final String DFA193_eofS =
+        "\1\5\3\uffff\1\12\5\uffff\1\45\33\uffff";
+    static final String DFA193_minS =
+        "\1\20\3\uffff\1\4\5\uffff\1\0\33\uffff";
+    static final String DFA193_maxS =
+        "\1\u009f\3\uffff\1\u009f\5\uffff\1\0\33\uffff";
+    static final String DFA193_acceptS =
+        "\1\uffff\3\1\1\uffff\1\2\4\1\1\uffff\33\1";
+    static final String DFA193_specialS =
+        "\1\0\3\uffff\1\2\5\uffff\1\1\33\uffff}>";
+    static final String[] DFA193_transitionS = {
+            "\1\5\105\uffff\1\5\1\uffff\1\5\3\uffff\1\5\4\uffff\1\1\1\4\1\uffff\1\5\7\uffff\1\5\1\uffff\1\5\1\uffff\1\2\1\3\15\5\5\uffff\1\5\26\uffff\5\5",
+            "",
+            "",
+            "",
+            "\1\5\13\uffff\1\31\17\5\66\uffff\1\42\1\uffff\1\32\3\uffff\1\44\4\uffff\1\6\1\11\1\uffff\1\30\7\uffff\1\33\1\uffff\1\13\1\uffff\1\7\1\10\1\14\1\15\1\16\1\17\1\26\1\27\1\20\1\21\1\22\1\23\1\24\1\25\1\34\3\uffff\1\5\1\uffff\1\35\26\uffff\1\36\1\37\1\40\1\41\1\43",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA193_eot = DFA.unpackEncodedString(DFA193_eotS);
+    static final short[] DFA193_eof = DFA.unpackEncodedString(DFA193_eofS);
+    static final char[] DFA193_min = DFA.unpackEncodedStringToUnsignedChars(DFA193_minS);
+    static final char[] DFA193_max = DFA.unpackEncodedStringToUnsignedChars(DFA193_maxS);
+    static final short[] DFA193_accept = DFA.unpackEncodedString(DFA193_acceptS);
+    static final short[] DFA193_special = DFA.unpackEncodedString(DFA193_specialS);
+    static final short[][] DFA193_transition;
+
+    static {
+        int numStates = DFA193_transitionS.length;
+        DFA193_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA193_transition[i] = DFA.unpackEncodedString(DFA193_transitionS[i]);
+        }
+    }
+
+    class DFA193 extends DFA {
+
+        public DFA193(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 193;
+            this.eot = DFA193_eot;
+            this.eof = DFA193_eof;
+            this.min = DFA193_min;
+            this.max = DFA193_max;
+            this.accept = DFA193_accept;
+            this.special = DFA193_special;
+            this.transition = DFA193_transition;
+        }
+        public String getDescription() {
+            return "21661:1: ( rule__DtCNull__UnorderedGroup_2 )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA193_0 = input.LA(1);
+
+                         
+                        int index193_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA193_0 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {s = 1;}
+
+                        else if ( LA193_0 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {s = 2;}
+
+                        else if ( LA193_0 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 3;}
+
+                        else if ( (LA193_0==98) ) {s = 4;}
+
+                        else if ( (LA193_0==EOF||LA193_0==16||LA193_0==86||LA193_0==88||LA193_0==92||LA193_0==100||LA193_0==108||LA193_0==110||(LA193_0>=114 && LA193_0<=126)||LA193_0==132||(LA193_0>=155 && LA193_0<=159)) ) {s = 5;}
+
+                         
+                        input.seek(index193_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA193_10 = input.LA(1);
+
+                         
+                        int index193_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA193_10 ==EOF && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 37;}
+
+                         
+                        input.seek(index193_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA193_4 = input.LA(1);
+
+                         
+                        int index193_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( LA193_4 ==97 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 6;}
+
+                        else if ( LA193_4 ==112 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 7;}
+
+                        else if ( LA193_4 ==113 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 8;}
+
+                        else if ( LA193_4 ==98 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 9;}
+
+                        else if ( (LA193_4==EOF) ) {s = 10;}
+
+                        else if ( LA193_4 ==110 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 11;}
+
+                        else if ( LA193_4 ==114 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 12;}
+
+                        else if ( LA193_4 ==115 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 13;}
+
+                        else if ( LA193_4 ==116 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 14;}
+
+                        else if ( LA193_4 ==117 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 15;}
+
+                        else if ( LA193_4 ==120 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 16;}
+
+                        else if ( LA193_4 ==121 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 17;}
+
+                        else if ( LA193_4 ==122 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 18;}
+
+                        else if ( LA193_4 ==123 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 19;}
+
+                        else if ( LA193_4 ==124 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 20;}
+
+                        else if ( LA193_4 ==125 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 21;}
+
+                        else if ( LA193_4 ==118 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 22;}
+
+                        else if ( LA193_4 ==119 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 23;}
+
+                        else if ( LA193_4 ==100 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 24;}
+
+                        else if ( LA193_4 ==16 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 25;}
+
+                        else if ( LA193_4 ==88 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 26;}
+
+                        else if ( LA193_4 ==108 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 27;}
+
+                        else if ( LA193_4 ==126 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 28;}
+
+                        else if ( LA193_4 ==132 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 29;}
+
+                        else if ( LA193_4 ==155 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 30;}
+
+                        else if ( LA193_4 ==156 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 31;}
+
+                        else if ( LA193_4 ==157 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 32;}
+
+                        else if ( LA193_4 ==158 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 33;}
+
+                        else if ( LA193_4 ==86 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 34;}
+
+                        else if ( LA193_4 ==159 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 35;}
+
+                        else if ( LA193_4 ==92 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {s = 36;}
+
+                        else if ( (LA193_4==RULE_ID||(LA193_4>=17 && LA193_4<=31)||LA193_4==130) ) {s = 5;}
+
+                         
+                        input.seek(index193_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 193, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA223_eotS =
+        "\12\uffff";
+    static final String DFA223_eofS =
+        "\1\10\11\uffff";
+    static final String DFA223_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA223_maxS =
+        "\1\u00ab\7\0\2\uffff";
+    static final String DFA223_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA223_specialS =
+        "\1\uffff\1\0\1\6\1\4\1\2\1\1\1\3\1\5\2\uffff}>";
+    static final String[] DFA223_transitionS = {
+            "\5\10\5\uffff\4\10\1\uffff\4\10\7\uffff\1\10\1\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\25\10\24\uffff\4\10\2\uffff\1\10\3\uffff\2\10\2\uffff\2\10\33\uffff\1\10\1\uffff\26\10\6\uffff\3\10\5\uffff\2\10\1\uffff\1\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA223_eot = DFA.unpackEncodedString(DFA223_eotS);
+    static final short[] DFA223_eof = DFA.unpackEncodedString(DFA223_eofS);
+    static final char[] DFA223_min = DFA.unpackEncodedStringToUnsignedChars(DFA223_minS);
+    static final char[] DFA223_max = DFA.unpackEncodedStringToUnsignedChars(DFA223_maxS);
+    static final short[] DFA223_accept = DFA.unpackEncodedString(DFA223_acceptS);
+    static final short[] DFA223_special = DFA.unpackEncodedString(DFA223_specialS);
+    static final short[][] DFA223_transition;
+
+    static {
+        int numStates = DFA223_transitionS.length;
+        DFA223_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA223_transition[i] = DFA.unpackEncodedString(DFA223_transitionS[i]);
+        }
+    }
+
+    class DFA223 extends DFA {
+
+        public DFA223(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 223;
+            this.eot = DFA223_eot;
+            this.eof = DFA223_eof;
+            this.min = DFA223_min;
+            this.max = DFA223_max;
+            this.accept = DFA223_accept;
+            this.special = DFA223_special;
+            this.transition = DFA223_transition;
+        }
+        public String getDescription() {
+            return "26665: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 LA223_1 = input.LA(1);
+
+                         
+                        int index223_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA223_5 = input.LA(1);
+
+                         
+                        int index223_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA223_4 = input.LA(1);
+
+                         
+                        int index223_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA223_6 = input.LA(1);
+
+                         
+                        int index223_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA223_3 = input.LA(1);
+
+                         
+                        int index223_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA223_7 = input.LA(1);
+
+                         
+                        int index223_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA223_2 = input.LA(1);
+
+                         
+                        int index223_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred326_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index223_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 223, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA229_eotS =
+        "\13\uffff";
+    static final String DFA229_eofS =
+        "\1\1\12\uffff";
+    static final String DFA229_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA229_maxS =
+        "\1\u00ab\1\uffff\10\0\1\uffff";
+    static final String DFA229_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA229_specialS =
+        "\2\uffff\1\3\1\0\1\7\1\4\1\2\1\6\1\1\1\5\1\uffff}>";
+    static final String[] DFA229_transitionS = {
+            "\5\1\5\uffff\4\1\1\uffff\4\1\7\uffff\1\1\1\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\17\1\24\uffff\4\1\2\uffff\1\1\3\uffff\2\1\2\uffff\2\1\33\uffff\1\1\1\uffff\26\1\6\uffff\3\1\5\uffff\2\1\1\uffff\1\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA229_eot = DFA.unpackEncodedString(DFA229_eotS);
+    static final short[] DFA229_eof = DFA.unpackEncodedString(DFA229_eofS);
+    static final char[] DFA229_min = DFA.unpackEncodedStringToUnsignedChars(DFA229_minS);
+    static final char[] DFA229_max = DFA.unpackEncodedStringToUnsignedChars(DFA229_maxS);
+    static final short[] DFA229_accept = DFA.unpackEncodedString(DFA229_acceptS);
+    static final short[] DFA229_special = DFA.unpackEncodedString(DFA229_specialS);
+    static final short[][] DFA229_transition;
+
+    static {
+        int numStates = DFA229_transitionS.length;
+        DFA229_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA229_transition[i] = DFA.unpackEncodedString(DFA229_transitionS[i]);
+        }
+    }
+
+    class DFA229 extends DFA {
+
+        public DFA229(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 229;
+            this.eot = DFA229_eot;
+            this.eof = DFA229_eof;
+            this.min = DFA229_min;
+            this.max = DFA229_max;
+            this.accept = DFA229_accept;
+            this.special = DFA229_special;
+            this.transition = DFA229_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 28157: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 LA229_3 = input.LA(1);
+
+                         
+                        int index229_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA229_8 = input.LA(1);
+
+                         
+                        int index229_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA229_6 = input.LA(1);
+
+                         
+                        int index229_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA229_2 = input.LA(1);
+
+                         
+                        int index229_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA229_5 = input.LA(1);
+
+                         
+                        int index229_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA229_9 = input.LA(1);
+
+                         
+                        int index229_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA229_7 = input.LA(1);
+
+                         
+                        int index229_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA229_4 = input.LA(1);
+
+                         
+                        int index229_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred332_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index229_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 229, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA236_eotS =
+        "\132\uffff";
+    static final String DFA236_eofS =
+        "\1\2\131\uffff";
+    static final String DFA236_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA236_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA236_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA236_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA236_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\43\2\24\uffff\2\2\1\1\1\2\2\uffff\1\2\3\uffff\2\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA236_eot = DFA.unpackEncodedString(DFA236_eotS);
+    static final short[] DFA236_eof = DFA.unpackEncodedString(DFA236_eofS);
+    static final char[] DFA236_min = DFA.unpackEncodedStringToUnsignedChars(DFA236_minS);
+    static final char[] DFA236_max = DFA.unpackEncodedStringToUnsignedChars(DFA236_maxS);
+    static final short[] DFA236_accept = DFA.unpackEncodedString(DFA236_acceptS);
+    static final short[] DFA236_special = DFA.unpackEncodedString(DFA236_specialS);
+    static final short[][] DFA236_transition;
+
+    static {
+        int numStates = DFA236_transitionS.length;
+        DFA236_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA236_transition[i] = DFA.unpackEncodedString(DFA236_transitionS[i]);
+        }
+    }
+
+    class DFA236 extends DFA {
+
+        public DFA236(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 236;
+            this.eot = DFA236_eot;
+            this.eof = DFA236_eof;
+            this.min = DFA236_min;
+            this.max = DFA236_max;
+            this.accept = DFA236_accept;
+            this.special = DFA236_special;
+            this.transition = DFA236_transition;
+        }
+        public String getDescription() {
+            return "29984: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 LA236_1 = input.LA(1);
+
+                         
+                        int index236_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred339_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index236_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 236, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA237_eotS =
+        "\132\uffff";
+    static final String DFA237_eofS =
+        "\1\2\131\uffff";
+    static final String DFA237_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA237_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA237_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA237_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA237_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\43\2\24\uffff\4\2\2\uffff\1\2\3\uffff\1\1\1\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA237_eot = DFA.unpackEncodedString(DFA237_eotS);
+    static final short[] DFA237_eof = DFA.unpackEncodedString(DFA237_eofS);
+    static final char[] DFA237_min = DFA.unpackEncodedStringToUnsignedChars(DFA237_minS);
+    static final char[] DFA237_max = DFA.unpackEncodedStringToUnsignedChars(DFA237_maxS);
+    static final short[] DFA237_accept = DFA.unpackEncodedString(DFA237_acceptS);
+    static final short[] DFA237_special = DFA.unpackEncodedString(DFA237_specialS);
+    static final short[][] DFA237_transition;
+
+    static {
+        int numStates = DFA237_transitionS.length;
+        DFA237_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA237_transition[i] = DFA.unpackEncodedString(DFA237_transitionS[i]);
+        }
+    }
+
+    class DFA237 extends DFA {
+
+        public DFA237(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 237;
+            this.eot = DFA237_eot;
+            this.eof = DFA237_eof;
+            this.min = DFA237_min;
+            this.max = DFA237_max;
+            this.accept = DFA237_accept;
+            this.special = DFA237_special;
+            this.transition = DFA237_transition;
+        }
+        public String getDescription() {
+            return "30012: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 LA237_1 = input.LA(1);
+
+                         
+                        int index237_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred340_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index237_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 237, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA245_eotS =
+        "\46\uffff";
+    static final String DFA245_eofS =
+        "\46\uffff";
+    static final String DFA245_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA245_maxS =
+        "\1\u00ab\2\0\43\uffff";
+    static final String DFA245_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA245_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA245_transitionS = {
+            "\1\1\4\5\10\uffff\1\5\16\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\3\uffff\7\5\24\uffff\1\5\1\uffff\1\2\7\uffff\2\5\42\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\21\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA245_eot = DFA.unpackEncodedString(DFA245_eotS);
+    static final short[] DFA245_eof = DFA.unpackEncodedString(DFA245_eofS);
+    static final char[] DFA245_min = DFA.unpackEncodedStringToUnsignedChars(DFA245_minS);
+    static final char[] DFA245_max = DFA.unpackEncodedStringToUnsignedChars(DFA245_maxS);
+    static final short[] DFA245_accept = DFA.unpackEncodedString(DFA245_acceptS);
+    static final short[] DFA245_special = DFA.unpackEncodedString(DFA245_specialS);
+    static final short[][] DFA245_transition;
+
+    static {
+        int numStates = DFA245_transitionS.length;
+        DFA245_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA245_transition[i] = DFA.unpackEncodedString(DFA245_transitionS[i]);
+        }
+    }
+
+    class DFA245 extends DFA {
+
+        public DFA245(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 245;
+            this.eot = DFA245_eot;
+            this.eof = DFA245_eof;
+            this.min = DFA245_min;
+            this.max = DFA245_max;
+            this.accept = DFA245_accept;
+            this.special = DFA245_special;
+            this.transition = DFA245_transition;
+        }
+        public String getDescription() {
+            return "31153: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 LA245_1 = input.LA(1);
+
+                         
+                        int index245_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred348_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index245_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA245_2 = input.LA(1);
+
+                         
+                        int index245_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred348_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index245_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 245, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA255_eotS =
+        "\42\uffff";
+    static final String DFA255_eofS =
+        "\42\uffff";
+    static final String DFA255_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA255_maxS =
+        "\1\u00ab\2\0\37\uffff";
+    static final String DFA255_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA255_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA255_transitionS = {
+            "\1\1\4\4\27\uffff\2\4\13\uffff\1\4\3\uffff\1\3\6\uffff\1\4\4\uffff\6\4\24\uffff\1\4\1\uffff\1\2\7\uffff\1\4\43\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\22\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA255_eot = DFA.unpackEncodedString(DFA255_eotS);
+    static final short[] DFA255_eof = DFA.unpackEncodedString(DFA255_eofS);
+    static final char[] DFA255_min = DFA.unpackEncodedStringToUnsignedChars(DFA255_minS);
+    static final char[] DFA255_max = DFA.unpackEncodedStringToUnsignedChars(DFA255_maxS);
+    static final short[] DFA255_accept = DFA.unpackEncodedString(DFA255_acceptS);
+    static final short[] DFA255_special = DFA.unpackEncodedString(DFA255_specialS);
+    static final short[][] DFA255_transition;
+
+    static {
+        int numStates = DFA255_transitionS.length;
+        DFA255_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA255_transition[i] = DFA.unpackEncodedString(DFA255_transitionS[i]);
+        }
+    }
+
+    class DFA255 extends DFA {
+
+        public DFA255(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 255;
+            this.eot = DFA255_eot;
+            this.eof = DFA255_eof;
+            this.min = DFA255_min;
+            this.max = DFA255_max;
+            this.accept = DFA255_accept;
+            this.special = DFA255_special;
+            this.transition = DFA255_transition;
+        }
+        public String getDescription() {
+            return "32821: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 LA255_1 = input.LA(1);
+
+                         
+                        int index255_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred358_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index255_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA255_2 = input.LA(1);
+
+                         
+                        int index255_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred358_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index255_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 255, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA268_eotS =
+        "\132\uffff";
+    static final String DFA268_eofS =
+        "\1\2\131\uffff";
+    static final String DFA268_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA268_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA268_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA268_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA268_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\43\2\24\uffff\2\2\1\1\1\2\2\uffff\1\2\3\uffff\2\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA268_eot = DFA.unpackEncodedString(DFA268_eotS);
+    static final short[] DFA268_eof = DFA.unpackEncodedString(DFA268_eofS);
+    static final char[] DFA268_min = DFA.unpackEncodedStringToUnsignedChars(DFA268_minS);
+    static final char[] DFA268_max = DFA.unpackEncodedStringToUnsignedChars(DFA268_maxS);
+    static final short[] DFA268_accept = DFA.unpackEncodedString(DFA268_acceptS);
+    static final short[] DFA268_special = DFA.unpackEncodedString(DFA268_specialS);
+    static final short[][] DFA268_transition;
+
+    static {
+        int numStates = DFA268_transitionS.length;
+        DFA268_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA268_transition[i] = DFA.unpackEncodedString(DFA268_transitionS[i]);
+        }
+    }
+
+    class DFA268 extends DFA {
+
+        public DFA268(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 268;
+            this.eot = DFA268_eot;
+            this.eof = DFA268_eof;
+            this.min = DFA268_min;
+            this.max = DFA268_max;
+            this.accept = DFA268_accept;
+            this.special = DFA268_special;
+            this.transition = DFA268_transition;
+        }
+        public String getDescription() {
+            return "35309: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 LA268_1 = input.LA(1);
+
+                         
+                        int index268_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred371_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index268_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 268, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA269_eotS =
+        "\132\uffff";
+    static final String DFA269_eofS =
+        "\1\2\131\uffff";
+    static final String DFA269_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA269_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA269_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA269_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA269_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\43\2\24\uffff\4\2\2\uffff\1\2\3\uffff\1\1\1\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA269_eot = DFA.unpackEncodedString(DFA269_eotS);
+    static final short[] DFA269_eof = DFA.unpackEncodedString(DFA269_eofS);
+    static final char[] DFA269_min = DFA.unpackEncodedStringToUnsignedChars(DFA269_minS);
+    static final char[] DFA269_max = DFA.unpackEncodedStringToUnsignedChars(DFA269_maxS);
+    static final short[] DFA269_accept = DFA.unpackEncodedString(DFA269_acceptS);
+    static final short[] DFA269_special = DFA.unpackEncodedString(DFA269_specialS);
+    static final short[][] DFA269_transition;
+
+    static {
+        int numStates = DFA269_transitionS.length;
+        DFA269_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA269_transition[i] = DFA.unpackEncodedString(DFA269_transitionS[i]);
+        }
+    }
+
+    class DFA269 extends DFA {
+
+        public DFA269(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 269;
+            this.eot = DFA269_eot;
+            this.eof = DFA269_eof;
+            this.min = DFA269_min;
+            this.max = DFA269_max;
+            this.accept = DFA269_accept;
+            this.special = DFA269_special;
+            this.transition = DFA269_transition;
+        }
+        public String getDescription() {
+            return "35337: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 LA269_1 = input.LA(1);
+
+                         
+                        int index269_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred372_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index269_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 269, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA273_eotS =
+        "\132\uffff";
+    static final String DFA273_eofS =
+        "\1\2\131\uffff";
+    static final String DFA273_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA273_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA273_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA273_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA273_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\15\2\1\1\25\2\24\uffff\4\2\2\uffff\1\2\3\uffff\2\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA273_eot = DFA.unpackEncodedString(DFA273_eotS);
+    static final short[] DFA273_eof = DFA.unpackEncodedString(DFA273_eofS);
+    static final char[] DFA273_min = DFA.unpackEncodedStringToUnsignedChars(DFA273_minS);
+    static final char[] DFA273_max = DFA.unpackEncodedStringToUnsignedChars(DFA273_maxS);
+    static final short[] DFA273_accept = DFA.unpackEncodedString(DFA273_acceptS);
+    static final short[] DFA273_special = DFA.unpackEncodedString(DFA273_specialS);
+    static final short[][] DFA273_transition;
+
+    static {
+        int numStates = DFA273_transitionS.length;
+        DFA273_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA273_transition[i] = DFA.unpackEncodedString(DFA273_transitionS[i]);
+        }
+    }
+
+    class DFA273 extends DFA {
+
+        public DFA273(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 273;
+            this.eot = DFA273_eot;
+            this.eof = DFA273_eof;
+            this.min = DFA273_min;
+            this.max = DFA273_max;
+            this.accept = DFA273_accept;
+            this.special = DFA273_special;
+            this.transition = DFA273_transition;
+        }
+        public String getDescription() {
+            return "35875: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 LA273_1 = input.LA(1);
+
+                         
+                        int index273_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred376_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index273_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 273, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA274_eotS =
+        "\132\uffff";
+    static final String DFA274_eofS =
+        "\1\2\131\uffff";
+    static final String DFA274_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA274_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA274_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA274_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA274_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\43\2\24\uffff\2\2\1\1\1\2\2\uffff\1\2\3\uffff\2\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA274_eot = DFA.unpackEncodedString(DFA274_eotS);
+    static final short[] DFA274_eof = DFA.unpackEncodedString(DFA274_eofS);
+    static final char[] DFA274_min = DFA.unpackEncodedStringToUnsignedChars(DFA274_minS);
+    static final char[] DFA274_max = DFA.unpackEncodedStringToUnsignedChars(DFA274_maxS);
+    static final short[] DFA274_accept = DFA.unpackEncodedString(DFA274_acceptS);
+    static final short[] DFA274_special = DFA.unpackEncodedString(DFA274_specialS);
+    static final short[][] DFA274_transition;
+
+    static {
+        int numStates = DFA274_transitionS.length;
+        DFA274_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA274_transition[i] = DFA.unpackEncodedString(DFA274_transitionS[i]);
+        }
+    }
+
+    class DFA274 extends DFA {
+
+        public DFA274(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 274;
+            this.eot = DFA274_eot;
+            this.eof = DFA274_eof;
+            this.min = DFA274_min;
+            this.max = DFA274_max;
+            this.accept = DFA274_accept;
+            this.special = DFA274_special;
+            this.transition = DFA274_transition;
+        }
+        public String getDescription() {
+            return "35904: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 LA274_1 = input.LA(1);
+
+                         
+                        int index274_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred377_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index274_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 274, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA275_eotS =
+        "\132\uffff";
+    static final String DFA275_eofS =
+        "\1\2\131\uffff";
+    static final String DFA275_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA275_maxS =
+        "\1\u00ab\1\0\130\uffff";
+    static final String DFA275_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA275_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA275_transitionS = {
+            "\5\2\5\uffff\4\2\1\uffff\4\2\7\uffff\1\2\1\uffff\43\2\24\uffff\4\2\2\uffff\1\2\3\uffff\1\1\1\2\2\uffff\2\2\33\uffff\1\2\1\uffff\26\2\6\uffff\3\2\5\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA275_eot = DFA.unpackEncodedString(DFA275_eotS);
+    static final short[] DFA275_eof = DFA.unpackEncodedString(DFA275_eofS);
+    static final char[] DFA275_min = DFA.unpackEncodedStringToUnsignedChars(DFA275_minS);
+    static final char[] DFA275_max = DFA.unpackEncodedStringToUnsignedChars(DFA275_maxS);
+    static final short[] DFA275_accept = DFA.unpackEncodedString(DFA275_acceptS);
+    static final short[] DFA275_special = DFA.unpackEncodedString(DFA275_specialS);
+    static final short[][] DFA275_transition;
+
+    static {
+        int numStates = DFA275_transitionS.length;
+        DFA275_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA275_transition[i] = DFA.unpackEncodedString(DFA275_transitionS[i]);
+        }
+    }
+
+    class DFA275 extends DFA {
+
+        public DFA275(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 275;
+            this.eot = DFA275_eot;
+            this.eof = DFA275_eof;
+            this.min = DFA275_min;
+            this.max = DFA275_max;
+            this.accept = DFA275_accept;
+            this.special = DFA275_special;
+            this.transition = DFA275_transition;
+        }
+        public String getDescription() {
+            return "35932: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 LA275_1 = input.LA(1);
+
+                         
+                        int index275_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred378_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index275_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 275, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA280_eotS =
+        "\132\uffff";
+    static final String DFA280_eofS =
+        "\1\41\131\uffff";
+    static final String DFA280_minS =
+        "\1\4\40\0\71\uffff";
+    static final String DFA280_maxS =
+        "\1\u00ab\40\0\71\uffff";
+    static final String DFA280_acceptS =
+        "\41\uffff\1\2\67\uffff\1\1";
+    static final String DFA280_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\71\uffff}>";
+    static final String[] DFA280_transitionS = {
+            "\1\1\1\23\1\24\1\25\1\27\5\uffff\4\41\1\uffff\4\41\7\uffff\1\41\1\uffff\1\10\1\7\13\41\1\15\12\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\24\uffff\1\12\1\41\1\40\1\41\2\uffff\1\41\3\uffff\1\20\1\41\2\uffff\2\41\33\uffff\1\41\1\uffff\1\41\1\17\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\6\uffff\3\41\5\uffff\2\41\1\uffff\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[] DFA280_eot = DFA.unpackEncodedString(DFA280_eotS);
+    static final short[] DFA280_eof = DFA.unpackEncodedString(DFA280_eofS);
+    static final char[] DFA280_min = DFA.unpackEncodedStringToUnsignedChars(DFA280_minS);
+    static final char[] DFA280_max = DFA.unpackEncodedStringToUnsignedChars(DFA280_maxS);
+    static final short[] DFA280_accept = DFA.unpackEncodedString(DFA280_acceptS);
+    static final short[] DFA280_special = DFA.unpackEncodedString(DFA280_specialS);
+    static final short[][] DFA280_transition;
+
+    static {
+        int numStates = DFA280_transitionS.length;
+        DFA280_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA280_transition[i] = DFA.unpackEncodedString(DFA280_transitionS[i]);
+        }
+    }
+
+    class DFA280 extends DFA {
+
+        public DFA280(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 280;
+            this.eot = DFA280_eot;
+            this.eof = DFA280_eof;
+            this.min = DFA280_min;
+            this.max = DFA280_max;
+            this.accept = DFA280_accept;
+            this.special = DFA280_special;
+            this.transition = DFA280_transition;
+        }
+        public String getDescription() {
+            return "36985: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 LA280_1 = input.LA(1);
+
+                         
+                        int index280_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA280_2 = input.LA(1);
+
+                         
+                        int index280_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA280_3 = input.LA(1);
+
+                         
+                        int index280_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA280_4 = input.LA(1);
+
+                         
+                        int index280_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA280_5 = input.LA(1);
+
+                         
+                        int index280_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA280_6 = input.LA(1);
+
+                         
+                        int index280_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA280_7 = input.LA(1);
+
+                         
+                        int index280_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA280_8 = input.LA(1);
+
+                         
+                        int index280_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA280_9 = input.LA(1);
+
+                         
+                        int index280_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA280_10 = input.LA(1);
+
+                         
+                        int index280_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA280_11 = input.LA(1);
+
+                         
+                        int index280_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA280_12 = input.LA(1);
+
+                         
+                        int index280_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA280_13 = input.LA(1);
+
+                         
+                        int index280_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA280_14 = input.LA(1);
+
+                         
+                        int index280_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA280_15 = input.LA(1);
+
+                         
+                        int index280_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA280_16 = input.LA(1);
+
+                         
+                        int index280_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA280_17 = input.LA(1);
+
+                         
+                        int index280_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA280_18 = input.LA(1);
+
+                         
+                        int index280_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA280_19 = input.LA(1);
+
+                         
+                        int index280_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA280_20 = input.LA(1);
+
+                         
+                        int index280_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA280_21 = input.LA(1);
+
+                         
+                        int index280_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA280_22 = input.LA(1);
+
+                         
+                        int index280_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA280_23 = input.LA(1);
+
+                         
+                        int index280_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA280_24 = input.LA(1);
+
+                         
+                        int index280_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA280_25 = input.LA(1);
+
+                         
+                        int index280_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA280_26 = input.LA(1);
+
+                         
+                        int index280_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA280_27 = input.LA(1);
+
+                         
+                        int index280_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA280_28 = input.LA(1);
+
+                         
+                        int index280_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA280_29 = input.LA(1);
+
+                         
+                        int index280_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA280_30 = input.LA(1);
+
+                         
+                        int index280_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA280_31 = input.LA(1);
+
+                         
+                        int index280_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA280_32 = input.LA(1);
+
+                         
+                        int index280_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred383_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index280_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 280, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA289_eotS =
+        "\172\uffff";
+    static final String DFA289_eofS =
+        "\1\2\171\uffff";
+    static final String DFA289_minS =
+        "\1\4\1\0\170\uffff";
+    static final String DFA289_maxS =
+        "\1\u00ab\1\0\170\uffff";
+    static final String DFA289_acceptS =
+        "\2\uffff\1\2\166\uffff\1\1";
+    static final String DFA289_specialS =
+        "\1\uffff\1\0\170\uffff}>";
+    static final String[] DFA289_transitionS = {
+            "\5\2\5\uffff\37\2\1\1\25\2\23\uffff\5\2\1\uffff\2\2\3\uffff\2\2\1\uffff\3\2\5\uffff\1\2\1\uffff\1\2\3\uffff\4\2\2\uffff\7\2\3\uffff\1\2\1\uffff\40\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA289_eot = DFA.unpackEncodedString(DFA289_eotS);
+    static final short[] DFA289_eof = DFA.unpackEncodedString(DFA289_eofS);
+    static final char[] DFA289_min = DFA.unpackEncodedStringToUnsignedChars(DFA289_minS);
+    static final char[] DFA289_max = DFA.unpackEncodedStringToUnsignedChars(DFA289_maxS);
+    static final short[] DFA289_accept = DFA.unpackEncodedString(DFA289_acceptS);
+    static final short[] DFA289_special = DFA.unpackEncodedString(DFA289_specialS);
+    static final short[][] DFA289_transition;
+
+    static {
+        int numStates = DFA289_transitionS.length;
+        DFA289_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA289_transition[i] = DFA.unpackEncodedString(DFA289_transitionS[i]);
+        }
+    }
+
+    class DFA289 extends DFA {
+
+        public DFA289(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 289;
+            this.eot = DFA289_eot;
+            this.eof = DFA289_eof;
+            this.min = DFA289_min;
+            this.max = DFA289_max;
+            this.accept = DFA289_accept;
+            this.special = DFA289_special;
+            this.transition = DFA289_transition;
+        }
+        public String getDescription() {
+            return "38564: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 LA289_1 = input.LA(1);
+
+                         
+                        int index289_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred392_InternalEntityGrammar()) ) {s = 121;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index289_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 289, _s, input);
+            error(nvae);
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/internal/EntityGrammarActivator.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/internal/EntityGrammarActivator.java
new file mode 100644
index 0000000..6d4b8cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src-gen/org/eclipse/osbp/dsl/entity/xtext/ui/internal/EntityGrammarActivator.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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 EntityGrammarActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_DSL_ENTITY_XTEXT_ENTITYGRAMMAR = "org.eclipse.osbp.dsl.entity.xtext.EntityGrammar";
+	
+	private static final Logger logger = Logger.getLogger(EntityGrammarActivator.class);
+	
+	private static EntityGrammarActivator 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 EntityGrammarActivator 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_DSL_ENTITY_XTEXT_ENTITYGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.entity.xtext.EntityGrammarRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_DSL_ENTITY_XTEXT_ENTITYGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.entity.xtext.ui.EntityGrammarUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarHighlightingCalculator.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarHighlightingCalculator.java
new file mode 100644
index 0000000..cdfbe5a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarHighlightingCalculator.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.nodemodel.BidiTreeIterator;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightedPositionAcceptor;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+
+public class EntityGrammarHighlightingCalculator implements
+		ISemanticHighlightingCalculator {
+
+	public void provideHighlightingFor(XtextResource resource,
+			IHighlightedPositionAcceptor acceptor) {
+		if (resource == null || resource.getParseResult() == null)
+			return;
+
+		INode root = resource.getParseResult().getRootNode();
+		BidiTreeIterator<INode> it = root.getAsTreeIterable().iterator();
+		while (it.hasNext()) {
+			INode node = it.next();
+			String text = node.getText();
+			EObject semanticElement = node.getSemanticElement();
+
+			if (semanticElement instanceof LFeature) {
+				if ("id".equals(text) || "transient".equals(text)
+						|| "version".equals(text) || "collection".equals(text)) {
+					if (node.getNextSibling() == null) {
+						if (!"transient".equals(text)) {
+							acceptor.addPosition(node.getOffset(),
+									node.getLength(),
+									EntityHighlightingConfiguration.DEFAULT_ID);
+						}
+					} else {
+						acceptor.addPosition(node.getOffset(),
+								node.getLength(),
+								EntityHighlightingConfiguration.MODIFIER_ID);
+					}
+				}
+			} else if (semanticElement instanceof LClass) {
+				if ("cachable".equals(text) || "embeddable".equals(text)) {
+					acceptor.addPosition(node.getOffset(), node.getLength(),
+							EntityHighlightingConfiguration.MODIFIER_ID);
+				}
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarUiModule.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarUiModule.java
new file mode 100644
index 0000000..f8eef48
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityGrammarUiModule.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.common.types.access.IJvmTypeProvider;
+import org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.ISemanticHighlightingCalculator;
+import org.eclipse.osbp.dsl.entity.xtext.ui.contentassist.EntityGrammarProposalProvider;
+import org.eclipse.osbp.dsl.entity.xtext.ui.labeling.EntityGrammarLabelProvider;
+import org.eclipse.osbp.dsl.entity.xtext.ui.type.EntityJdtTypeProviderFactory;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class EntityGrammarUiModule extends AbstractEntityGrammarUiModule {
+	public EntityGrammarUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+
+	@Override
+	public Class<? extends IContentProposalProvider> bindIContentProposalProvider() {
+		return EntityGrammarProposalProvider.class;
+	}
+
+	public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() {
+		return EntityHighlightingConfiguration.class;
+	}
+
+	public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() {
+		return EntityGrammarHighlightingCalculator.class;
+	}
+
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return EntityGrammarLabelProvider.class;
+	}
+
+	public Class<? extends IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return EntityJdtTypeProviderFactory.class;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityHighlightingConfiguration.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityHighlightingConfiguration.java
new file mode 100644
index 0000000..e137d1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/EntityHighlightingConfiguration.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2014 - Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration;
+import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfigurationAcceptor;
+import org.eclipse.xtext.ui.editor.utils.TextStyle;
+
+public class EntityHighlightingConfiguration implements
+		IHighlightingConfiguration {
+
+	public static final String COMMENT_ID = "comment";
+	public static final String KEYWORD_ID = "keyword";
+	public static final String MODIFIER_ID = "modifier";
+	public static final String STRING_ID = "string";
+	public static final String NUMBER_ID = "number";
+	public static final String DEFAULT_ID = "default";
+	public static final String INVALID_TOKEN_ID = "error";
+
+	public void configure(IHighlightingConfigurationAcceptor acceptor) {
+		acceptor.acceptDefaultHighlighting(DEFAULT_ID, "Default",
+				defaultTextStyle());
+		acceptor.acceptDefaultHighlighting(COMMENT_ID, "Comment",
+				commentTextStyle());
+		acceptor.acceptDefaultHighlighting(KEYWORD_ID, "Keyword",
+				keywordTextStyle());
+		acceptor.acceptDefaultHighlighting(MODIFIER_ID, "Modifier",
+				modifierTextStyle());
+		acceptor.acceptDefaultHighlighting(STRING_ID, "String",
+				stringTextStyle());
+		acceptor.acceptDefaultHighlighting(NUMBER_ID, "Number",
+				numberTextStyle());
+		acceptor.acceptDefaultHighlighting(INVALID_TOKEN_ID, "Invalid Symbol",
+				errorTextStyle());
+	}
+
+	public TextStyle defaultTextStyle() {
+		TextStyle textStyle = new TextStyle();
+		textStyle.setBackgroundColor(new RGB(255, 255, 255));
+		textStyle.setColor(new RGB(0, 0, 0));
+		return textStyle;
+	}
+
+	public TextStyle commentTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(63, 127, 95));
+		return textStyle;
+	}
+
+	public TextStyle keywordTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(127, 0, 85));
+		textStyle.setStyle(SWT.BOLD);
+		return textStyle;
+	}
+
+	public TextStyle modifierTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(127, 0, 85));
+		textStyle.setStyle(SWT.BOLD);
+		return textStyle;
+	}
+
+	public TextStyle stringTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(42, 0, 255));
+		return textStyle;
+	}
+
+	public TextStyle errorTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		
+		return textStyle;
+	}
+
+	public TextStyle numberTextStyle() {
+		TextStyle textStyle = defaultTextStyle().copy();
+		textStyle.setColor(new RGB(125, 125, 125));
+		return textStyle;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/builder/PersistenceXMLBuilderParticipant.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/builder/PersistenceXMLBuilderParticipant.java
new file mode 100644
index 0000000..18dec3c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/builder/PersistenceXMLBuilderParticipant.java
@@ -0,0 +1,192 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.builder;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceVisitor;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.xtext.builder.EclipseResourceFileSystemAccess;
+import org.eclipse.xtext.builder.IXtextBuilderParticipant;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.osbp.dsl.entity.xtext.ui.builder.PersistenceXMLSerializer.PersistenceUnit;
+import org.eclipse.osbp.dsl.entity.xtext.ui.builder.PersistenceXMLSerializer.PersistenceXML;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.ISemanticLoadingResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+@SuppressWarnings("deprecation")
+public class PersistenceXMLBuilderParticipant implements
+		IXtextBuilderParticipant {
+
+	@SuppressWarnings("unused")
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(PersistenceXMLBuilderParticipant.class);
+
+	@Inject
+	private Provider<EclipseResourceFileSystemAccess> fileAccessProvider;
+
+	public void build(IBuildContext context, IProgressMonitor monitor)
+			throws CoreException {
+		final IProject builtProject = context.getBuiltProject();
+		IJavaProject javaProject = JavaCore.create(builtProject);
+		if (!javaProject.exists()) {
+			return;
+		}
+
+		// if persistence.xml exists, then check if any entity resource has
+		// changed
+		if (getPersistenceXML(builtProject).exists()) {
+			boolean changedResource = context
+					.getDeltas()
+					.stream()
+					.anyMatch(
+							d -> {
+								return d.haveEObjectDescriptionsChanged()
+										&& d.getUri().fileExtension()
+												.equals("entity");
+							});
+			if (!changedResource) {
+				return;
+			}
+		}
+
+		// delete the persistence.xml
+		getPersistenceXML(builtProject).delete(true, null);
+
+		// create the xml model
+		PersistenceXML generatorModel = buildPersistenceXML(
+				context.getBuiltProject(), context.getResourceSet());
+
+		if (generatorModel.shouldGenerate()) {
+			// serialize the stuff
+			PersistenceXMLSerializer serializer = new PersistenceXMLSerializer();
+			serializer
+					.doGenerate(
+							generatorModel,
+							getConfiguredFileSystemAccess(getManifestFolder(builtProject)));
+		}
+	}
+
+	protected IFolder getManifestFolder(final IProject builtProject) {
+		return builtProject.getFolder("META-INF");
+	}
+
+	protected IFolder getPersistenceXML(final IProject builtProject) {
+		return builtProject.getFolder("META-INF/persistence.xml");
+	}
+
+	protected IFileSystemAccess getConfiguredFileSystemAccess(
+			IFolder srcGenFolder) {
+		EclipseResourceFileSystemAccess access = fileAccessProvider.get();
+		access.setOutputPath(srcGenFolder.getFullPath().toString());
+		return access;
+	}
+
+	/**
+	 * Builds the persistence xml model.
+	 * 
+	 * @param builtProject
+	 * @param resourceSet
+	 * @return
+	 */
+	private PersistenceXML buildPersistenceXML(IProject builtProject,
+			ResourceSet resourceSet) {
+
+		PersistenceXML persistence = new PersistenceXML();
+
+		List<URI> uris = collectFiles(builtProject);
+		for (URI uri : uris) {
+			ISemanticLoadingResource resource = (ISemanticLoadingResource) resourceSet
+					.getResource(uri, true);
+			LEntityModel m = (LEntityModel) resource.getSemanticElement();
+			if (m == null) {
+				continue;
+			}
+			for (LTypedPackage pkg : m.getPackages()) {
+				for (LType type : pkg.getTypes()) {
+					if (type instanceof LEntity) {
+						LEntity entity = (LEntity) type;
+						PersistenceUnit pu = persistence.getPU(entity
+								.getPersistenceUnit());
+						pu.add(entity);
+					} else if (type instanceof LBean) {
+						persistence.add((LBean) type);
+					} else if (type instanceof LEnum) {
+						persistence.add((LEnum) type);
+					}
+				}
+			}
+		}
+
+		// finish the data collection
+		persistence.finish();
+
+		return persistence;
+	}
+
+	/**
+	 * Collects all "entity" URIs contained in the given project.
+	 * 
+	 * @param project
+	 * @return
+	 */
+	protected List<URI> collectFiles(IProject project) {
+		List<URI> uris = new ArrayList<>();
+		try {
+			project.accept(new IResourceVisitor() {
+				public boolean visit(IResource curr) throws CoreException {
+					if (curr instanceof IContainer) {
+						String folder = curr.getProjectRelativePath()
+								.toString();
+						if (folder.equals("bin")
+								|| folder.equals("target/classes")) {
+							return false;
+						}
+						return true;
+					} else if (curr instanceof IFile) {
+						if ("entity".equals(curr.getProjectRelativePath()
+								.getFileExtension())) {
+							uris.add(URI.createPlatformResourceURI(curr
+									.getFullPath().toString(), true));
+							return false;
+						}
+					}
+					return true;
+				}
+			}, IResource.DEPTH_INFINITE, false);
+		} catch (CoreException e) {
+			e.printStackTrace();
+		}
+		return uris;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/builder/PersistenceXMLSerializer.xtend b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/builder/PersistenceXMLSerializer.xtend
new file mode 100644
index 0000000..07b749c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/builder/PersistenceXMLSerializer.xtend
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+ 
+package org.eclipse.osbp.dsl.entity.xtext.ui.builder
+
+import java.util.List
+import java.util.Map
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+
+class PersistenceXMLSerializer {
+
+	def void doGenerate(PersistenceXML xml, IFileSystemAccess fsa) {
+		fsa.generateFile("persistence.xml", xml.doSerialize)
+	}
+
+	def String doSerialize(PersistenceXML xml) '''
+		<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+			xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+			xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
+			version="1.0">
+			«FOR pu : xml.pus.values»
+				<persistence-unit name="«pu.name»" 
+					transaction-type="RESOURCE_LOCAL">
+					<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+					«FOR entity : pu.entities»
+						<class>«entity.toQualifiedName»</class>
+					«ENDFOR»
+«««					«FOR bean : pu.beans»
+«««						<class>«bean.toQualifiedName»</class>
+«««					«ENDFOR»
+«««					«FOR enumx : pu.enums»
+«««						<class>«enumx.toQualifiedName»</class>
+«««					«ENDFOR»
+				
+					<exclude-unlisted-classes>true</exclude-unlisted-classes>
+				</persistence-unit>
+			«ENDFOR»
+		</persistence>
+	'''
+
+	def toQualifiedName(LType type) {
+		val LTypedPackage pkg = type.eContainer as LTypedPackage
+		return pkg.getName + "." + type.getName
+	}
+
+	public static class PersistenceXML {
+		Map<String, PersistenceUnit> pus = newHashMap
+
+		// cache them temporary
+		List<LBean> beans = newArrayList();
+		List<LEnum> enums = newArrayList();
+
+		def boolean shouldGenerate(){
+			return !pus.empty
+		}
+
+		def PersistenceUnit getPU(String puIn) {
+			
+			var name = puIn
+			if(name.nullOrEmpty) {
+				name = "DEFAULT"
+			}
+			
+			if (!pus.containsKey(name)) {
+				pus.put(name, new PersistenceUnit(name));
+			}
+			return pus.get(name);
+		}
+
+		def void add(LBean bean) {
+			beans.add(bean)
+		}
+
+		def void add(LEnum enumx) {
+			enums.add(enumx)
+		}
+
+		/**
+		 * Adds the beans and enums to all persistence units.
+		 */
+		def void finish() {
+
+			//			val configs = ProductConfiguration.prefs.persistenceUnits.toMap[r|r.name]
+			for (PersistenceUnit pu : pus.values()) {
+				pu.beans.addAll(beans);
+				pu.enums.addAll(enums);
+
+			// TODO - maybe used later. For now there is no need
+			//				val config = configs.get(pu.name)
+			//				pu.addProp("jndiName", config.jndiName)
+			//
+			//				if (!config.batchWriting.isNullOrEmpty) {
+			//					pu.addProp("batchWriting", config.batchWriting)
+			//					pu.addProp("batchWritingSize", String.valueOf(config.batchWritingSize))
+			//				}
+			//				pu.addProp("cacheStatements", String.valueOf(config.cacheStatements))
+			//				pu.addProp("cacheStatementsSize", String.valueOf(config.cacheStatementsSize))
+			//				if (!config.ddlGeneration.isNullOrEmpty) {
+			//					pu.addProp("ddlGeneration", config.ddlGeneration)
+			//				}
+			//				pu.addProp("deployOnStartup", String.valueOf(config.deployOnStartup))
+			//				pu.addProp("persistenceXMLPath", config.persistenceXMLPath)
+			//				pu.addProp("queryCache", String.valueOf(config.queryCache))
+			//				pu.addProp("schemaName", config.schemaName)
+			//				pu.addProp("weaving", config.weaving)
+			}
+		}
+	}
+
+	public static class PersistenceUnit {
+		final String name;
+		List<LEntity> entities = newArrayList();
+		List<LBean> beans = newArrayList();
+		List<LEnum> enums = newArrayList();
+
+		//		List<Pair<String, String>> props = newArrayList()
+		new(String name) {
+			this.name = name;
+		}
+
+		def void add(LEntity entity) {
+			entities.add(entity)
+		}
+
+	//		def addProp(String key, String value) {
+	//			props += new Pair(key, value)
+	//		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/EntityGrammarProposalProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/EntityGrammarProposalProvider.java
new file mode 100644
index 0000000..16670d3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/EntityGrammarProposalProvider.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+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 com.google.inject.Inject;
+
+/**
+ * see
+ * http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on
+ * how to customize content assistant
+ */
+@SuppressWarnings("restriction")
+public class EntityGrammarProposalProvider extends AbstractEntityGrammarProposalProvider {
+
+	@Inject
+	TerminalsProposalProvider provider;
+
+	@Inject
+	private EntityGrammarGrammarAccess xcoreGrammarAccess;
+
+	protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+		return true;
+	}
+
+	// ------------- delegates to TerminalsProposalProvider ------------------
+	public void complete_TRANSLATABLEID(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		provider.complete_ID(model, ruleCall, context, acceptor);
+	}
+
+	public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor) {
+		provider.complete_STRING(model, ruleCall, context, acceptor);
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/OppositeReplacementTextApplier.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/OppositeReplacementTextApplier.java
new file mode 100644
index 0000000..37a16a8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/contentassist/OppositeReplacementTextApplier.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.contentassist;
+
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ReplacementTextApplier;
+
+public class OppositeReplacementTextApplier extends ReplacementTextApplier {
+	
+
+	private ITextViewer viewer;
+
+	private IScope scope;
+
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	private IValueConverter<String> qualifiedNameValueConverter;
+
+	
+
+	@Override
+	public String getActualReplacementString(
+			ConfigurableCompletionProposal proposal) {
+		return proposal.getReplacementString();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarDescriptionLabelProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarDescriptionLabelProvider.java
new file mode 100644
index 0000000..08a5a9f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarDescriptionLabelProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.labeling;
+
+import org.eclipse.xtext.ui.label.DefaultDescriptionLabelProvider;
+
+/**
+ * Provides labels for a IEObjectDescriptions and IResourceDescriptions.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ */
+public class EntityGrammarDescriptionLabelProvider extends DefaultDescriptionLabelProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarImages.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarImages.java
new file mode 100644
index 0000000..6de0531
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarImages.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2011, 2014 - Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the 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 org.eclipse.xtend.ide.labeling.XtendImages
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.labeling;
+
+import org.eclipse.jdt.core.Flags;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.viewsupport.JavaElementImageProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.xbase.ui.labeling.XbaseImages2;
+
+@SuppressWarnings("restriction")
+public class EntityGrammarImages extends XbaseImages2 {
+
+	public ImageDescriptor forFilter() {
+		return JavaPluginImages.DESC_ELCL_FILTER;
+	}
+
+	public ImageDescriptor forImplementsAnnotation() {
+		return JavaPluginImages.DESC_OBJ_IMPLEMENTS;
+	}
+
+	public ImageDescriptor forOverridesAnnotation() {
+		return JavaPluginImages.DESC_OBJ_OVERRIDES;
+	}
+
+	public ImageDescriptor forPackage() {
+		return JavaPluginImages.DESC_OBJS_PACKDECL;
+	}
+
+	public ImageDescriptor forImport() {
+		return null;
+	}
+
+	public ImageDescriptor forField(JvmVisibility visibility, int attachment) {
+		ImageDescriptor descriptor = JavaElementImageProvider
+				.getFieldImageDescriptor(false, toFlags(JvmVisibility.PUBLIC));
+		return attachment >= 0 ? getDecorated(descriptor, attachment)
+				: descriptor;
+	}
+
+	public ImageDescriptor forEnum(JvmVisibility visibility) {
+		int flags = toFlags(visibility);
+		flags |= Flags.AccEnum;
+		return super.forEnum(visibility, flags);
+	}
+
+	public ImageDescriptor forEnumLiteral() {
+		ImageDescriptor descriptor = JavaElementImageProvider
+				.getFieldImageDescriptor(false, toFlags(JvmVisibility.PUBLIC));
+		return descriptor;
+	}
+
+	public ImageDescriptor forProperty() {
+		return super.forField(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor forRefers() {
+		return forField(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor forCascading(JvmVisibility visibility) {
+		return forField(JvmVisibility.PUBLIC, 0);
+	}
+	
+	public ImageDescriptor forDatatype() {
+		return super.forField(JvmVisibility.PRIVATE, 0);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarLabelProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarLabelProvider.java
new file mode 100644
index 0000000..537e6ef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/labeling/EntityGrammarLabelProvider.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the 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 org.eclipse.xtend.ide.labeling.XtendLabelProvider
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.labeling;
+
+import static com.google.common.collect.Iterables.filter;
+
+import java.util.Iterator;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmVisibility;
+import org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+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.dsl.semantic.entity.LOperation;
+
+//git@github.com/osbp/osbp-dsl.git
+import com.google.inject.Inject;
+
+/**
+ * Provides labels for a EObjects.
+ */
+@SuppressWarnings("restriction")
+public class EntityGrammarLabelProvider extends XbaseLabelProvider {
+
+	@Inject
+	private EntityGrammarImages images;
+
+	@Inject
+	public EntityGrammarLabelProvider(AdapterFactoryLabelProvider delegate) {
+		super(delegate);
+	}
+
+	public ImageDescriptor image(LEntity element) {
+		return images.forClass(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor image(LBean element) {
+		return images.forClass(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor image(LEnum element) {
+		return images.forEnum(JvmVisibility.PUBLIC);
+	}
+
+	public ImageDescriptor image(LEnumLiteral element) {
+		return images.forEnumLiteral();
+	}
+
+	public ImageDescriptor image(LOperation element) {
+		return images.forOperation(JvmVisibility.PUBLIC, 0);
+	}
+
+	public ImageDescriptor image(LEntityReference element) {
+		if (!element.isCascading()) {
+			return images.forField(JvmVisibility.PUBLIC, 0);
+		} else {
+			return images.forCascading(JvmVisibility.PUBLIC);
+		}
+	}
+
+	public ImageDescriptor image(LBeanReference element) {
+		if (!element.isCascading()) {
+			return images.forField(JvmVisibility.PUBLIC, 0);
+		} else {
+			return images.forCascading(JvmVisibility.PUBLIC);
+		}
+	}
+
+	public ImageDescriptor image(LEntityAttribute element) {
+		if (!element.isCascading()) {
+			return images.forField(JvmVisibility.PUBLIC, 0);
+		} else {
+			return images.forCascading(JvmVisibility.PUBLIC);
+		}
+	}
+
+	public ImageDescriptor image(LBeanAttribute element) {
+		if (!element.isCascading()) {
+			return images.forField(JvmVisibility.PUBLIC, 0);
+		} else {
+			return images.forCascading(JvmVisibility.PUBLIC);
+		}
+	}
+
+	public ImageDescriptor image(LDataType element) {
+		return images.forDatatype();
+	}
+
+	public ImageDescriptor image(LPackage element) {
+		return images.forPackage();
+	}
+
+	public ImageDescriptor image(LEntityFeature element) {
+		return images.forCascading(JvmVisibility.PUBLIC);
+	}
+
+	public ImageDescriptor image(JvmParameterizedTypeReference typeRef) {
+		return images.forTypeParameter(0);
+	}
+
+	public String text(LAnnotationDef element) {
+		return "@"
+				+ element.getAnnotation().getAnnotationType()
+						.getQualifiedName();
+	}
+
+	public String text(LClass element) {
+		return element.getName();
+	}
+
+	public Object text(LOperation element) {
+		return element.getName();
+	}
+
+	public String text(LFeature element) {
+		return element.getName();
+	}
+
+	public String text(JvmParameterizedTypeReference typeRef) {
+		return typeRef.getType().getSimpleName();
+	}
+
+	protected <T> T getFirstOrNull(Iterable<EObject> elements, Class<T> type) {
+		Iterator<T> iterator = filter(elements, type).iterator();
+		return iterator.hasNext() ? iterator.next() : null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/outline/EntityGrammarOutlineTreeProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/outline/EntityGrammarOutlineTreeProvider.java
new file mode 100644
index 0000000..596f2ba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/outline/EntityGrammarOutlineTreeProvider.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.outline;
+
+import org.eclipse.xtext.ui.editor.model.IXtextDocument;
+import org.eclipse.xtext.ui.editor.outline.IOutlineNode;
+import org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider;
+import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode;
+import org.eclipse.xtext.util.TextRegion;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+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.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.ui.FastDocumentRootNode;
+
+public class EntityGrammarOutlineTreeProvider extends
+		DefaultOutlineTreeProvider {
+
+	public IOutlineNode createRoot(IXtextDocument document) {
+		DocumentRootNode documentNode = new FastDocumentRootNode(
+				labelProvider.getImage(document),
+				labelProvider.getText(document), document, this);
+		documentNode.setTextRegion(new TextRegion(0, document.getLength()));
+		return documentNode;
+	}
+	
+	protected void _createChildren(IOutlineNode parentNode, LTypedPackage modelElement) {
+		for (LType childElement : modelElement.getTypes()) {
+			createNode(parentNode, childElement);
+		}
+	}
+	
+	protected void _createChildren(IOutlineNode parentNode, LEntity modelElement) {
+		for (LAnnotationDef childElement : modelElement.getAnnotations()) {
+			createNode(parentNode, childElement);
+		}
+
+		for (LEntityAttribute childElement : modelElement.getAttributes()) {
+			createNode(parentNode, childElement);
+		}
+		
+		for (LEntityReference childElement : modelElement.getReferences()) {
+			createNode(parentNode, childElement);
+		}
+		
+		for (LOperation childElement : modelElement.getOperations()) {
+			createNode(parentNode, childElement);
+		}
+		
+		for (LIndex childElement : modelElement.getIndexes()) {
+			createNode(parentNode, childElement);
+		}
+	}
+	
+	protected void _createChildren(IOutlineNode parentNode, LBean modelElement) {
+		for (LAnnotationDef childElement : modelElement.getAnnotations()) {
+			createNode(parentNode, childElement);
+		}
+
+		for (LBeanAttribute childElement : modelElement.getAttributes()) {
+			createNode(parentNode, childElement);
+		}
+		
+		for (LBeanReference childElement : modelElement.getReferences()) {
+			createNode(parentNode, childElement);
+		}
+		
+		for (LOperation childElement : modelElement.getOperations()) {
+			createNode(parentNode, childElement);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/quickfix/EntityGrammarQuickfixProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/quickfix/EntityGrammarQuickfixProvider.java
new file mode 100644
index 0000000..9c76d5e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/quickfix/EntityGrammarQuickfixProvider.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.quickfix;
+
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.xtext.ui.editor.model.IXtextDocument;
+import org.eclipse.xtext.ui.editor.model.edit.IModification;
+import org.eclipse.xtext.ui.editor.model.edit.IModificationContext;
+import org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider;
+import org.eclipse.xtext.ui.editor.quickfix.Fix;
+import org.eclipse.xtext.ui.editor.quickfix.IssueResolutionAcceptor;
+import org.eclipse.xtext.validation.Issue;
+import org.eclipse.osbp.dsl.entity.xtext.validation.EntityGrammarJavaValidator;
+
+public class EntityGrammarQuickfixProvider extends DefaultQuickfixProvider {
+
+	@SuppressWarnings("restriction")
+	@Fix(EntityGrammarJavaValidator.CODE__CASCADE_DIRECTION_INVALID)
+	public void capitalizeName(final Issue issue,
+			IssueResolutionAcceptor acceptor) {
+		acceptor.accept(issue, "Remove cascade", "Removes the cascade keyword",
+				null, new IModification() {
+					public void apply(IModificationContext context)
+							throws BadLocationException {
+						IXtextDocument xtextDocument = context
+								.getXtextDocument();
+						xtextDocument.replace(issue.getOffset(), "cascade ".length(),
+								"");
+					}
+				});
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/type/EntityJdtTypeProvider.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/type/EntityJdtTypeProvider.java
new file mode 100644
index 0000000..74be8c1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/type/EntityJdtTypeProvider.java
@@ -0,0 +1,292 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.dsl.entity.xtext.ui.type;
+
+import java.io.IOException;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.core.Signature;
+import org.eclipse.jdt.core.WorkingCopyOwner;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.access.IMirror;
+import org.eclipse.xtext.common.types.access.TypeResource;
+import org.eclipse.xtext.common.types.access.impl.IndexedJvmTypeAccess;
+import org.eclipse.xtext.common.types.access.impl.IndexedJvmTypeAccess.ShadowedTypeException;
+import org.eclipse.xtext.common.types.access.impl.URIHelperConstants;
+import org.eclipse.xtext.common.types.access.jdt.JdtTypeMirror;
+import org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider;
+import org.eclipse.xtext.util.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EntityJdtTypeProvider extends JdtTypeProvider {
+
+	private static final String PRIMITIVES = URIHelperConstants.PRIMITIVES_URI
+			.segment(0);
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(EntityJdtTypeProvider.class);
+
+	public EntityJdtTypeProvider(IJavaProject javaProject,
+			ResourceSet resourceSet, IndexedJvmTypeAccess indexedJvmTypeAccess,
+			WorkingCopyOwner workingCopyOwner) {
+		super(javaProject, resourceSet, indexedJvmTypeAccess, workingCopyOwner);
+	}
+
+	public EntityJdtTypeProvider(IJavaProject javaProject,
+			ResourceSet resourceSet, IndexedJvmTypeAccess indexedJvmTypeAccess) {
+		super(javaProject, resourceSet, indexedJvmTypeAccess);
+	}
+
+	public EntityJdtTypeProvider(IJavaProject javaProject,
+			ResourceSet resourceSet) {
+		super(javaProject, resourceSet);
+	}
+
+	@Override
+	public JvmType findTypeByName(String name) {
+		String signature = getSignature(name);
+		if (signature == null)
+			return null;
+		URI resourceURI = getTypeUriHelper().createResourceURI(signature);
+		if (resourceURI.segment(0) == PRIMITIVES) {
+			return findPrimitiveType(signature, resourceURI);
+		} else {
+			return findObjectType(signature, resourceURI);
+		}
+	}
+
+	/* @Nullable */
+	private String getSignature(String name) {
+		if (Strings.isEmpty(name))
+			throw new IllegalArgumentException("null");
+		String signature = null;
+		try {
+			signature = name.startsWith("[") ? name : Signature
+					.createTypeSignature(name, true);
+		} catch (IllegalArgumentException e) {
+			return null;
+		}
+		return signature;
+	}
+
+	private JvmType findPrimitiveType(/* @NonNull */String signature, /* @NonNull */
+			URI resourceURI) {
+		TypeResource resource = (TypeResource) getResourceForJavaURI(
+				resourceURI, true);
+		JvmType result = findTypeBySignature(signature, resource);
+		return result;
+	}
+
+	/* @Nullable */
+	private JvmType findObjectType(/* @NonNull */String signature, /* @NonNull */
+			URI resourceURI) {
+		TypeResource resource = getLoadedResourceForJavaURI(resourceURI);
+		try {
+			JvmType result = findLoadedOrDerivedObjectType(signature,
+					resourceURI, resource);
+			if (result != null || resource != null) {
+				if (result != null && !canLink(result.getQualifiedName())) {
+					return null;
+				}
+				return result;
+			}
+			try {
+				return findObjectTypeInJavaProject(signature, resourceURI);
+			} catch (JavaModelException e) {
+				return null;
+			} catch (NullPointerException e) { // JDT throws NPEs see
+												// https://bugs.eclipse.org/bugs/show_bug.cgi?id=369391
+				return null;
+			}
+		} catch (ShadowedTypeException e) {
+			return null;
+		}
+	}
+
+	/* @Nullable */
+	private TypeResource getLoadedResourceForJavaURI(
+	/* @NonNull */URI resourceURI) {
+		TypeResource resource = (TypeResource) getResourceForJavaURI(
+				resourceURI, false);
+		return resource;
+	}
+
+	/* @Nullable */
+	private JvmType findLoadedOrDerivedObjectType(/* @NonNull */String signature, /*
+																				 * @
+																				 * NonNull
+																				 */
+			URI resourceURI,
+			/* @Nullable */TypeResource resource) {
+		JvmType result = resource != null ? findTypeBySignature(signature,
+				resource) : null;
+		if (result != null) {
+			return result;
+		}
+		result = findObjectTypeInIndex(signature, resourceURI);
+		if (result != null) {
+			return result;
+		}
+		return null;
+	}
+
+	/* @Nullable */
+	private JvmType findObjectTypeInJavaProject(/* @NonNull */String signature, /*
+																				 * @
+																				 * NonNull
+																				 */
+			URI resourceURI) throws JavaModelException {
+		IType type = findObjectTypeInJavaProject(resourceURI);
+		if (type != null) {
+			try {
+				return createResourceAndFindType(resourceURI, type, signature);
+			} catch (IOException ioe) {
+				return null;
+			} catch (WrappedException wrapped) {
+				if (wrapped.getCause() instanceof IOException) {
+					return null;
+				}
+				throw wrapped;
+			}
+		}
+		return null;
+	}
+
+	private IType findObjectTypeInJavaProject(/* @NonNull */URI resourceURI)
+			throws JavaModelException {
+		String topLevelType = resourceURI
+				.segment(resourceURI.segmentCount() - 1);
+		int lastDot = topLevelType.lastIndexOf('.');
+		String packageName = null;
+		String typeName = topLevelType;
+		if (lastDot != -1) {
+			typeName = typeName.substring(lastDot + 1);
+			packageName = topLevelType.substring(0, lastDot);
+		}
+		IType type = getJavaProject().findType(packageName, typeName /*
+																	 * ,
+																	 * workingCopyOwner
+																	 */);
+		if (type != null && !canLink(type.getFullyQualifiedName())) {
+			return null;
+		}
+		return type;
+	}
+
+	private boolean canLink(String typeName) {
+		if (typeName == null) {
+			return false;
+		}
+		IndexedJvmTypeAccess indexedJvmTypeAccess = this
+				.getIndexedJvmTypeAccess();
+		if (indexedJvmTypeAccess != null
+				&& indexedJvmTypeAccess.isIndexingPhase(getResourceSet())) {
+			// during indexing we don't see project local types.
+			// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=410594
+			try {
+				IType type = getJavaProject().findType(typeName);
+				if (type != null && type.exists()) {
+					String enabled = System.getProperty(
+							"osbp.linker.constraint", "true");
+					if (Boolean.valueOf(enabled)) {
+						IResource underlyingResource = type
+								.getUnderlyingResource();
+						if (underlyingResource == null) {
+							return true;
+						}
+						for (IPackageFragmentRoot root : getJavaProject()
+								.getPackageFragmentRoots()) {
+							if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
+								IResource srcUnderlyingResource = root
+										.getUnderlyingResource();
+								if (srcUnderlyingResource != null
+										&& srcUnderlyingResource
+												.contains(underlyingResource)) {
+									return false;
+								}
+							}
+						}
+					}
+					return true;
+				}
+			} catch (JavaModelException e) {
+				LOGGER.error(e.getMessage(), e);
+			}
+			return false;
+		}
+		return true;
+	}
+
+	/* @Nullable */
+	private JvmType createResourceAndFindType(/* @NonNull */URI resourceURI, /*
+																			 * @
+																			 * NonNull
+																			 */
+			IType type, /* @NonNull */String signature) throws IOException {
+		TypeResource resource = createResource(resourceURI, type);
+		resource.load(null);
+		return findTypeBySignature(signature, resource);
+	}
+
+	private TypeResource createResource(URI resourceURI, IType type) {
+		TypeResource resource = new TypeResource(resourceURI);
+		resource.setIndexedJvmTypeAccess(getIndexedJvmTypeAccess());
+		getResourceSet().getResources().add(resource);
+		if (type.exists()) {
+			IMirror mirror = createMirror(type);
+			resource.setMirror(mirror);
+		}
+		return resource;
+	}
+
+	/* @Nullable */
+	private IMirror createMirror(/* @NonNull */IType type) {
+		String elementName = type.getElementName();
+		if (!elementName.equals(type.getTypeQualifiedName())) {
+			// workaround for bug in jdt with binary type names that start with
+			// a $ dollar sign
+			// e.g. $ImmutableList
+			// it manifests itself in a way that allows to retrieve ITypes but
+			// one cannot obtain bindings for that type
+			return null;
+		}
+		return new JdtTypeMirror(type, getJdtBasedTypeFactory());
+	}
+
+	private JvmType findObjectTypeInIndex(/* @NonNull */String signature, /*
+																		 * @NonNull
+																		 */
+			URI resourceURI) {
+		IndexedJvmTypeAccess indexedJvmTypeAccess = getIndexedJvmTypeAccess();
+		if (indexedJvmTypeAccess != null) {
+			URI proxyURI = resourceURI.appendFragment(getTypeUriHelper()
+					.getFragment(signature));
+			EObject candidate = indexedJvmTypeAccess.getIndexedJvmType(
+					proxyURI, getResourceSet(), true);
+			if (candidate instanceof JvmType) {
+				return (JvmType) candidate;
+			}
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/type/EntityJdtTypeProviderFactory.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/type/EntityJdtTypeProviderFactory.java
new file mode 100644
index 0000000..b20f3ff
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/type/EntityJdtTypeProviderFactory.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+
+package org.eclipse.osbp.dsl.entity.xtext.ui.type;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.internal.core.DefaultWorkingCopyOwner;
+import org.eclipse.xtext.common.types.access.jdt.IJdtTypeProvider;
+import org.eclipse.xtext.common.types.access.jdt.IWorkingCopyOwnerProvider;
+import org.eclipse.xtext.common.types.access.jdt.JdtTypeProviderFactory;
+import org.eclipse.xtext.common.types.access.jdt.NullJdtTypeProvider;
+
+import com.google.inject.Inject;
+
+public class EntityJdtTypeProviderFactory extends JdtTypeProviderFactory {
+
+	@Inject
+	private IWorkingCopyOwnerProvider copyOwnerProvider;
+
+	protected IJdtTypeProvider createJdtTypeProvider(IJavaProject javaProject,
+			ResourceSet resourceSet) {
+		if (javaProject == null)
+			// TODO throw a serious exception instead of returning a non working
+			// implementation
+			return new NullJdtTypeProvider(resourceSet);
+		return new EntityJdtTypeProvider(javaProject, resourceSet,
+				getIndexedJvmTypeAccess(),
+				copyOwnerProvider == null ? DefaultWorkingCopyOwner.PRIMARY
+						: copyOwnerProvider.getWorkingCopyOwner(javaProject,
+								resourceSet));
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/wizards/OSBPNewEntityModelWizard.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/wizards/OSBPNewEntityModelWizard.java
new file mode 100644
index 0000000..65fa0be
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/wizards/OSBPNewEntityModelWizard.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.wizards;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.internal.ide.DialogUtil;
+import org.eclipse.ui.internal.wizards.newresource.ResourceMessages;
+import org.eclipse.ui.wizards.newresource.BasicNewFileResourceWizard;
+
+
+@SuppressWarnings("restriction")
+public class OSBPNewEntityModelWizard extends BasicNewFileResourceWizard {
+	private OSBPNewEntityModelWizardPage mainPage;
+
+	public OSBPNewEntityModelWizard() {
+		super();
+	}
+
+	public void addPages() {
+		mainPage = new OSBPNewEntityModelWizardPage(getSelection());
+		addPage(mainPage);
+	}
+	
+	public boolean canFinish() {
+		boolean result = super.canFinish();
+
+		if (result) {
+			final String containerName = mainPage.getContainerFullPath().toString();
+			final String fileName = mainPage.getFileName();
+
+			IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+			IResource resource = root.findMember(new Path(containerName));
+			if (!resource.exists() || !(resource instanceof IContainer)) {
+				result = false;
+			}
+			IContainer container = (IContainer) resource;
+			final IFile file = container.getFile(new Path(fileName));
+			if (file.exists()) {
+				result = false;
+			}
+		}
+		return result;
+	}
+
+	public boolean performFinish() {
+		IFile file = mainPage.createNewFile();
+		if (file == null) {
+			return false;
+		}
+
+		selectAndReveal(file);
+
+		// Open editor on new file.
+		IWorkbenchWindow dw = getWorkbench().getActiveWorkbenchWindow();
+		try {
+			if (dw != null) {
+				IWorkbenchPage page = dw.getActivePage();
+				if (page != null) {
+					IDE.openEditor(page, file, true);
+				}
+			}
+		} catch (PartInitException e) {
+			DialogUtil.openError(dw.getShell(),
+					ResourceMessages.FileResource_errorMessage, e.getMessage(),
+					e);
+		}
+
+		return true;
+	}
+
+	public void init(IWorkbench workbench, IStructuredSelection currentSelection) {
+		super.init(workbench, currentSelection);
+	}
+
+	protected void initializeDefaultPageImageDescriptor() {
+		super.initializeDefaultPageImageDescriptor();
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/wizards/OSBPNewEntityModelWizardPage.java b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/wizards/OSBPNewEntityModelWizardPage.java
new file mode 100644
index 0000000..0b0f019
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext.ui/src/org/eclipse/osbp/dsl/entity/xtext/ui/wizards/OSBPNewEntityModelWizardPage.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.ui.wizards;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.dialogs.WizardNewFileCreationPage;
+import org.eclipse.osbp.dsl.entity.xtext.ui.internal.EntityGrammarActivator;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The "New" wizard page allows setting the container for the new file as well
+ * as the file name. The page will only accept file name without the extension
+ * OR with the extension that matches the expected one (organization).
+ */
+public class OSBPNewEntityModelWizardPage extends WizardNewFileCreationPage {
+
+	/**
+	 * Constructor for SampleNewWizardPage.
+	 *
+	 * @param selection
+	 *            the selection
+	 */
+	public OSBPNewEntityModelWizardPage(IStructuredSelection selection) {
+		super("OSBP", selection);
+		setTitle("Entity Model File");
+		setFileName("new_entity_model");
+		setFileExtension("entitymodel");
+		setDescription("This wizard creates a new file with *.entityModel extension that can be opened by a multi-page editor.");
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.ui.dialogs.WizardNewFileCreationPage#getInitialContents()
+	 */
+	@Override
+	protected InputStream getInitialContents() {
+		try {
+			return EntityGrammarActivator.getInstance().getBundle()
+					.getEntry("/resources/initialmodel.entitymodel").openStream();
+		} catch (IOException e) {
+			return null; // ignore and create empty comments
+		}
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/.project b/org.eclipse.osbp.dsl.entity.xtext/.project
new file mode 100644
index 0000000..2f48d83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.entity.xtext</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.entity.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.entity.xtext/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/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.dsl.entity.xtext/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.entity.xtext/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0cdbff4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/META-INF/MANIFEST.MF
@@ -0,0 +1,83 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.dsl.entity.xtext;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.apache.log4j;bundle-version="1.2.15";visibility:=reexport,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;bundle-version="2.9.1";resolution:=optional,
+ org.eclipse.emf.mwe.utils;bundle-version="1.3.1";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.7.0,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore;bundle-version="2.9.1";visibility:=reexport,
+ org.eclipse.emf.common;bundle-version="2.9.1",
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore.lib,
+ org.eclipse.emf.ecore.xcore;bundle-version="1.1.1";resolution:=optional,
+ org.eclipse.osbp.dsl.common.xtext;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.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.jdt.core;bundle-version="3.9.1";resolution:=optional,
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.runtime.common;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.apache.xerces;bundle-version="2.9.0",
+ org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.persistence;version="2.1.0",
+ org.apache.commons.logging,
+ org.apache.log4j,
+ org.eclipse.persistence.annotations;version="2.6.1",
+ org.slf4j;version="1.7.2"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.entity.xtext;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.compiler.batch;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.extensions;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.formatting;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.jvmmodel;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.linker;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.xtext.diagnostics,
+   org.eclipse.osbp.dsl.xtext.lazyresolver,
+   org.eclipse.osbp.dsl.semantic.entity",
+ org.eclipse.osbp.dsl.entity.xtext.parser.antlr;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.parser.antlr.internal;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.scope;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.serializer;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.services;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.util;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.validation;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.entity.xtext.valueconverter;version="0.9.0";x-internal:=true,
+ org.eclipse.osbp.dsl.semantic.entity;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.xtext.common.types,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.emf.common.util",
+ org.eclipse.osbp.dsl.semantic.entity.impl;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.ecore.impl,
+   org.eclipse.xtext.xbase,
+   org.eclipse.xtext.common.types,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.emf.common.util,
+   org.eclipse.osbp.dsl.semantic.common.types.impl,
+   org.eclipse.emf.common.notify,
+   org.eclipse.osbp.dsl.semantic.entity",
+ org.eclipse.osbp.dsl.semantic.entity.util;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.emf.common.notify,
+   org.eclipse.emf.common.notify.impl,
+   org.eclipse.osbp.dsl.semantic.entity,
+   org.eclipse.emf.ecore.util"
+
diff --git a/org.eclipse.osbp.dsl.entity.xtext/README.txt b/org.eclipse.osbp.dsl.entity.xtext/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/about.html b/org.eclipse.osbp.dsl.entity.xtext/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/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.dsl.entity.xtext/about.ini b/org.eclipse.osbp.dsl.entity.xtext/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/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.dsl.entity.xtext/about.mappings b/org.eclipse.osbp.dsl.entity.xtext/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/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.dsl.entity.xtext/about.properties b/org.eclipse.osbp.dsl.entity.xtext/about.properties
new file mode 100644
index 0000000..b72d77c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.entity.xtext
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.entity.xtext/build.properties b/org.eclipse.osbp.dsl.entity.xtext/build.properties
new file mode 100644
index 0000000..d7eb864
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/build.properties
@@ -0,0 +1,11 @@
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               plugin.xml,\
+               plugin.properties,\
+               model/
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.entity.xtext/documentation/HowToCompile b/org.eclipse.osbp.dsl.entity.xtext/documentation/HowToCompile
new file mode 100644
index 0000000..256b0a3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/documentation/HowToCompile
@@ -0,0 +1,14 @@
+1)
+Just open org.eclipse.osbp.dsl.entity.xtext.extensions.AnnotationExtensions.xtend
+change a line (add a white space)
+Save
+--> Then the xtend-gen folder should contain a lot of elements
+
+2)
+Then run the "lunifera-P2" maven run configuration
+
+3)
+Refresh all projects
+
+4)
+Open org.eclipse.osbp.p2.target.juno/local.target and set as target platform
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/epl-v10.html b/org.eclipse.osbp.dsl.entity.xtext/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/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.dsl.entity.xtext/license.html b/org.eclipse.osbp.dsl.entity.xtext/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/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.dsl.entity.xtext/model/entity.xcore b/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore
new file mode 100644
index 0000000..0ce37d9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore
@@ -0,0 +1,316 @@
+@GenModel(fileExtensions="entity", modelDirectory= "/org.eclipse.osbp.dsl.entity.xtext/src-gen", editDirectory="/org.eclipse.osbp.dsl.entity.xtext.edit/src", childCreationExtenders="true")
+@GenModel(modelName="Entity")
+@GenModel(prefix="OSBPEntity")
+@GenModel(suppressEMFModelTags="true")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+   
+ Contributors:  
+ 		Florian Pirchner - Initial implementation 
+ ")
+@Ecore(nsURI="http://osbp.eclipse.org/dsl/entity/v1")
+@Ecore(nsPrefix="entity")
+@Ecore(rootPackage="entity")
+package org.eclipse.osbp.dsl.semantic.entity
+
+import java.util.List
+import org.eclipse.emf.ecore.InternalEObject
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LConstraint
+import org.eclipse.osbp.dsl.semantic.common.types.LDateType
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters
+
+class LEntityModel {
+	contains LTypedPackage[] packages
+}
+
+/**
+ * A bean is an embeddable element that may become added to a entity using the @embedd annotation. 
+ */
+class LBean extends LClass, LScalarType, LFeaturesHolder {
+	contains LBeanFeature[] features
+	refers LBean superType opposite subTypes
+	contains transient JvmTypeReference superTypeJvm
+	refers LBean[] subTypes opposite superType
+	/**
+ 	 * Returns all features of type LOperation
+ 	 */
+	op OperationsList getOperations() {
+		features.filter(typeof(LOperation)).toList
+	}
+	/**
+ 	 * Returns all features of type LBeanReference
+ 	 */
+	op BeanReferenceList getReferences() {
+		features.filter(typeof(LBeanReference)).toList
+	}
+	/**
+ 	 * Returns all features of type LBeanAttribute
+ 	 */
+	op BeanAttributeList getAttributes() {
+		features.filter(typeof(LBeanAttribute)).toList
+	}
+	/**
+	 * Returns all features of the holder and from super types
+	 */
+	op BeanFeatureList getAllFeatures() {
+		val List<LBeanFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result
+	}
+	/**
+	 * Returns all attributes of the holder and from super types
+	 */
+	op BeanAttributeList getAllAttributes() {
+		val List<LBeanFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result.filter(typeof(LBeanAttribute)).toList
+	}
+	/**
+	 * Returns all references of the holder and from super types
+	 */
+	op BeanReferenceList getAllReferences() {
+		val List<LBeanFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result.filter(typeof(LBeanReference)).toList
+	}
+	op void collectAllOSBPFeatures(LBean current, BeanFeatureList result) {
+		if (current == null) {
+			return
+		}
+
+		// collect from current feature
+		result.addAll(current.features)
+
+		// call for super class
+		current.superType.collectAllOSBPFeatures(result)
+	}
+}
+
+/**
+ * Represents a JPA entity.
+ */
+class LEntity extends LClass, LFeaturesHolder {
+	boolean cacheable
+	boolean historized
+	boolean timedependent
+	LDateType timedependentDateType
+	boolean mappedSuperclass
+	contains LEntityPersistenceInfo persistenceInfo
+	contains LEntityInheritanceStrategy inheritanceStrategy
+	contains LEntityFeature[] features
+	contains LIndex[] indexes
+	refers LEntity superType opposite subTypes
+	contains transient JvmTypeReference superTypeJvm
+	refers LEntity[] subTypes opposite superType
+	String persistenceUnit
+	/**
+ 	 * Returns all features of type LOperation
+ 	 */
+	op OperationsList getOperations() {
+		features.filter(typeof(LOperation)).toList
+	}
+	/**
+ 	 * Returns all features of type LEntityReference
+ 	 */
+	op EntityReferenceList getReferences() {
+		features.filter(typeof(LEntityReference)).toList
+	}
+	/**
+ 	 * Returns all features of type LEntityAttribute
+ 	 */
+	op EntityAttributeList getAttributes() {
+		features.filter(typeof(LEntityAttribute)).toList
+	}
+	/**
+	 * Returns all features of the holder and from super types
+	 */
+	op EntityFeatureList getAllFeatures() {
+		val List<LEntityFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result
+	}
+	/**
+	 * Returns all attributes of the holder and from super types
+	 */
+	op EntityAttributeList getAllAttributes() {
+		val List<LEntityFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result.filter(typeof(LEntityAttribute)).toList
+	}
+	/**
+	 * Returns all references of the holder and from super types
+	 */
+	op EntityReferenceList getAllReferences() {
+		val List<LEntityFeature> result = newArrayList()
+		collectAllOSBPFeatures(result)
+		return result.filter(typeof(LEntityReference)).toList
+	}
+	op void collectAllOSBPFeatures(LEntity current, EntityFeatureList result) {
+		if (current == null) {
+			return
+		}
+
+		// collect from current feature
+		result.addAll(current.features)
+
+		// call for super class
+		current.superType.collectAllOSBPFeatures(result)
+	}
+}
+
+type InternalEObject wraps InternalEObject
+
+class LEntityPersistenceInfo extends LLazyResolver {
+	String schemaName
+	String tableName
+}
+
+class LEntityColumnPersistenceInfo extends LLazyResolver {
+	String columnName
+}
+
+interface LEntityInheritanceStrategy extends LLazyResolver {
+}
+
+class LTablePerClassStrategy extends LEntityInheritanceStrategy {
+	String discriminatorColumn
+	LDiscriminatorType discriminatorType
+	String discriminatorValue
+}
+
+class LTablePerSubclassStrategy extends LEntityInheritanceStrategy {
+	String discriminatorColumn
+	LDiscriminatorType discriminatorType
+	String discriminatorValue
+}
+
+enum LDiscriminatorType {
+	INHERIT
+	, STRING
+	, CHAR
+	, INTEGER
+}
+
+class LEntityFeature extends LFeature {
+	contains LEntityColumnPersistenceInfo persistenceInfo
+	op LEntity getEntity() {
+		return eContainer as LEntity
+	}
+}
+
+class LEntityAttribute extends LEntityFeature, LAttribute {
+	// in case that a bean has a reference to entity
+	refers LBeanReference ^opposite
+	derived String typedName get {
+		var result = new StringBuilder
+		if (name != null) {
+			result.append = name
+		} else {
+			result.append = "empty"
+		}
+
+		result.append = " : "
+
+		if (^type != null) {
+			result.append = ^type.name
+		} else {
+			result.append = "undefined"
+		}
+
+		return result.toString
+	}
+}
+
+class LEntityReference extends LEntityFeature, LReference {
+	refers LEntity ^type
+	contains transient JvmTypeReference typeJvm
+	refers LEntityReference ^opposite
+	
+	// reference filters may be used by UI to filter unwanted references 
+	contains LResultFilters resultFilters
+}
+
+class LBeanFeature  extends LFeature {
+	op LBean getBean() {
+		return eContainer as LBean
+	}
+}
+
+class LBeanAttribute extends LBeanFeature, LAttribute {
+	derived String typedName get {
+		var result = new StringBuilder
+		if (name != null) {
+			result.append = name
+		} else {
+			result.append = "empty"
+		}
+
+		result.append = " : "
+
+		if (^type != null) {
+			result.append = ^type.name
+		} else {
+			result.append = "undefined"
+		}
+
+		return result.toString
+	}
+}
+
+class LBeanReference extends LBeanFeature, LReference {
+	// can be entity or bean
+	refers LType ^type
+	refers LFeature ^opposite
+	contains transient JvmTypeReference typeJvm
+	// reference filters may be used by UI to filter unwanted references 
+	contains LResultFilters resultFilters
+}
+
+class LIndex {
+	boolean ^unique
+	String name
+	refers LEntityFeature[] features
+}
+
+/**
+ * Overwrites LOperation to add bean and entity feature as supertype
+ */
+class LOperation extends org.eclipse.osbp.dsl.semantic.common.types.LOperation, LBeanFeature, LEntityFeature {
+}
+
+type OperationsList wraps java.util.List<LOperation>
+
+type EntityFeatureList wraps java.util.List<LEntityFeature>
+
+type EntityReferenceList wraps java.util.List<LEntityReference>
+
+type EntityAttributeList wraps java.util.List<LEntityAttribute>
+
+type BeanFeatureList wraps java.util.List<LBeanFeature>
+
+type BeanReferenceList wraps java.util.List<LBeanReference>
+
+type BeanAttributeList wraps java.util.List<LBeanAttribute>
+
+
+
+	
+	
+	
+	
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/modelsbin/types.entitymodel.entities_bin b/org.eclipse.osbp.dsl.entity.xtext/modelsbin/types.entitymodel.entities_bin
new file mode 100644
index 0000000..6dc5f4a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/modelsbin/types.entitymodel.entities_bin
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://www.lunifera.org/dsl/entity/v1" xmlns:types="http://www.lunifera.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.eclipse.osbp.dsl.entity.datatypes">
+    <types xsi:type="types:LDataType" name="int">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="short">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="float">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="double">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="char">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Character#java.lang.Character"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="boolean">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="byte">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Byte#java.lang.Byte"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.entity.xtext/plugin.properties b/org.eclipse.osbp.dsl.entity.xtext/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.entity.xtext/plugin.xml b/org.eclipse.osbp.dsl.entity.xtext/plugin.xml
new file mode 100644
index 0000000..68e69ee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 - 2012, Lunifera GmbH (Gross Enzersdorf, Austria), Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ 
+ Sources generated by Xtext  
+ 
+ Contributors:
+  		Hans Georg Glöckler - Initial implementation
+  		Florian Pirchner - Initial implementation
+-->
+
+<plugin>
+   <extension
+         point="org.eclipse.emf.ecore.factory_override">
+      <factory
+            class="org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom"
+            uri="http://osbp.eclipse.org/dsl/entity/v1">
+      </factory>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated entity -->
+      <package
+            uri="http://osbp.eclipse.org/dsl/entity/v1"
+            class="org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+            genModel="model/entity.xcore"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.entity.xtext/pom.xml b/org.eclipse.osbp.dsl.entity.xtext/pom.xml
new file mode 100644
index 0000000..f936ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.entity.xtext</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/AbstractEntityGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/AbstractEntityGrammarRuntimeModule.java
new file mode 100644
index 0000000..96806b7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/AbstractEntityGrammarRuntimeModule.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+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.dsl.entity.xtext.EntityGrammarRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractEntityGrammarRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/dsl/entity/xtext/EntityGrammar.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.dsl.entity.xtext.EntityGrammar");
+	}
+	
+	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("entity");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.dsl.entity.xtext.serializer.EntityGrammarSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.dsl.entity.xtext.serializer.EntityGrammarSyntacticSequencer.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.dsl.entity.xtext.parser.antlr.EntityGrammarParser.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.dsl.entity.xtext.parser.antlr.EntityGrammarAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarLexer> provideInternalEntityGrammarLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarLexer.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.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarLexer.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.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.dsl.entity.xtext.validation.EntityGrammarJavaValidator> bindEntityGrammarJavaValidator() {
+		return org.eclipse.osbp.dsl.entity.xtext.validation.EntityGrammarJavaValidator.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.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// 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.dsl.entity.xtext.jvmmodel.EntityGrammarJvmModelInferrer.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarStandaloneSetupGenerated.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarStandaloneSetupGenerated.java
new file mode 100644
index 0000000..212f214
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarStandaloneSetupGenerated.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+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 EntityGrammarStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.osbp.dsl.entity.xtext.EntityGrammarRuntimeModule());
+	}
+	
+	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("entity", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("entity", serviceProvider);
+		
+
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/EntityGrammarAntlrTokenFileProvider.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/EntityGrammarAntlrTokenFileProvider.java
new file mode 100644
index 0000000..04b321d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/EntityGrammarAntlrTokenFileProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class EntityGrammarAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/EntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/EntityGrammarParser.java
new file mode 100644
index 0000000..8a17cff
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/EntityGrammarParser.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+public class EntityGrammarParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private EntityGrammarGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.dsl.entity.xtext.parser.antlr.internal.InternalEntityGrammarParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "EntityModel";
+	}
+	
+	public EntityGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(EntityGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/DebugInternalEntityGrammar.g b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/DebugInternalEntityGrammar.g
new file mode 100644
index 0000000..efb64c3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/DebugInternalEntityGrammar.g
@@ -0,0 +1,1642 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar DebugInternalEntityGrammar ;
+
+// Rule EntityModel
+ruleEntityModel :
+	ruleTypedPackage*
+;
+
+// Rule Class
+ruleClass :
+	ruleAnnotationDef* (
+		(
+			'abstract'? |
+			(
+				'historized' |
+				'timedependent' (
+					'(' ruleLHistorizedDateType ')'
+				)?
+			)? |
+			'cacheable'?
+		)* 'entity' ruleTRANSLATABLEID (
+			'extends' ruleTYPE_CROSS_REFERENCE
+		)? '{' ruleEntityPersistenceInfo ruleEntityInheritanceStrategy? (
+			'persistenceUnit' RULE_STRING ';'?
+		)? ruleEntityFeature* ruleIndex* '}' |
+		'mapped superclass' (
+			'extends' ruleTYPE_CROSS_REFERENCE
+		)? ruleValidIDWithKeywords '{' (
+			'persistenceUnit' RULE_STRING ';'?
+		)? ruleEntityFeature* '}' |
+		'bean' ruleTRANSLATABLEID (
+			'extends' ruleTYPE_CROSS_REFERENCE
+		)? '{' ruleBeanFeature* '}'
+	)
+;
+
+// Rule Index
+ruleIndex :
+	'unique'? 'index' RULE_ID '{' RULE_ID (
+		', ' RULE_ID
+	)* '}'
+;
+
+// Rule EntityPersistenceInfo
+ruleEntityPersistenceInfo :
+	(
+		(
+			'schemaName' ruleValidIDWithKeywords ';'?
+		)? |
+		(
+			'tableName' ruleValidIDWithKeywords ';'?
+		)?
+	)*
+;
+
+// Rule ColumnPersistenceInfo
+ruleColumnPersistenceInfo :
+	'(' ruleValidIDWithKeywords ')'
+;
+
+// Rule EntityFeature
+ruleEntityFeature :
+	ruleAnnotationDef* (
+		'ref' 'cascade'? ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+			'[' ruleAllConstraints* ']'
+		)? ruleTRANSLATABLEID ruleColumnPersistenceInfo? (
+			'opposite' ruleLFQN
+		)? (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? (
+			ruleResultFilters |
+			';'?
+		) |
+		(
+			'transient' ruleTYPE_CROSS_REFERENCE (
+				'[' ruleAllConstraints* ']'
+			)? ruleTRANSLATABLEID (
+				'properties' '(' ruleKeyAndValue (
+					', ' ruleKeyAndValue
+				)* ')'
+			)? ';'? |
+			'derived' 'domainDescription'? ruleTYPE_CROSS_REFERENCE ruleTRANSLATABLEID (
+				'properties' '(' ruleKeyAndValue (
+					', ' ruleKeyAndValue
+				)* ')'
+			)? ruleXBlockExpression |
+			(
+				'var' |
+				'id' |
+				'uuid' |
+				'version' |
+				'domainDescription' |
+				'domainKey'
+			) ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+				'[' ruleAllConstraints* ']'
+			)? ruleTRANSLATABLEID ruleColumnPersistenceInfo? (
+				'opposite' ruleLFQN
+			)? (
+				'properties' '(' ruleKeyAndValue (
+					', ' ruleKeyAndValue
+				)* ')'
+			)? ';'?
+		) |
+		'def' ruleJvmTypeReference ruleTRANSLATABLEID '(' (
+			ruleFullJvmFormalParameter (
+				', ' ruleFullJvmFormalParameter
+			)*
+		)? ')' ruleXExpression
+	)
+;
+
+// Rule BeanFeature
+ruleBeanFeature :
+	ruleAnnotationDef* (
+		'ref' 'cascade'? ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+			'[' ruleAllConstraints* ']'
+		)? ruleTRANSLATABLEID (
+			'opposite' ruleLFQN
+		)? (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? (
+			ruleResultFilters |
+			';'?
+		) |
+		(
+			'transient' ruleTYPE_CROSS_REFERENCE (
+				'[' ruleAllConstraints* ']'
+			)? ruleTRANSLATABLEID (
+				'properties' '(' ruleKeyAndValue (
+					', ' ruleKeyAndValue
+				)* ')'
+			)? |
+			(
+				'var' |
+				'id' |
+				'version'
+			) ruleTYPE_CROSS_REFERENCE ruleMultiplicity? (
+				'[' ruleAllConstraints* ']'
+			)? ruleTRANSLATABLEID (
+				'properties' '(' ruleKeyAndValue (
+					', ' ruleKeyAndValue
+				)* ')'
+			)? ';'?
+		) |
+		'def' ruleJvmTypeReference ruleTRANSLATABLEID '(' (
+			ruleFullJvmFormalParameter (
+				',' ruleFullJvmFormalParameter
+			)*
+		)? ')' ruleXExpression
+	)
+;
+
+// Rule EntityInheritanceStrategy
+ruleEntityInheritanceStrategy :
+	ruleTablePerClassStrategy |
+	ruleTablePerSubclassStrategy
+;
+
+// Rule TablePerClassStrategy
+ruleTablePerClassStrategy :
+	'inheritance per class' '{' (
+		(
+			'discriminatorColumn' ruleValidIDWithKeywords ';'?
+		)? |
+		(
+			'discriminatorType' ruleDiscriminatorType ';'?
+		)? |
+		(
+			'discriminatorValue' ruleValidIDWithKeywords ';'?
+		)?
+	)* '}'
+;
+
+// Rule TablePerSubclassStrategy
+ruleTablePerSubclassStrategy :
+	'inheritance per subclass' '{' (
+		(
+			'discriminatorColumn' ruleValidIDWithKeywords ';'?
+		)? |
+		(
+			'discriminatorType' ruleDiscriminatorType ';'?
+		)? |
+		(
+			'discriminatorValue' ruleValidIDWithKeywords ';'?
+		)?
+	)* '}'
+;
+
+// Rule TRANSLATABLEID
+ruleTRANSLATABLEID :
+	ruleValidIDWithKeywords
+;
+
+// Rule TypedPackage
+ruleTypedPackage :
+	'package' ruleQualifiedName (
+		'{' ruleImport* ruleType* '}'
+	)?
+;
+
+// Rule Type
+ruleType :
+	ruleScalarType |
+	ruleClass
+;
+
+// Rule Import
+ruleImport :
+	'import' ruleLQualifiedNameWithWildCard ';'?
+;
+
+// Rule DataType
+ruleDataType :
+	'datatype' ruleValidIDWithKeywords (
+		'jvmType' ruleJvmTypeReference 'as primitive'? ruleDataTypeConstraint* (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? |
+		'dateType' ruleDateType ruleDateConstraint* (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)? |
+		'as blob' ruleBlobTypeConstraint* (
+			'properties' '(' ruleKeyAndValue (
+				', ' ruleKeyAndValue
+			)* ')'
+		)?
+	) ';'?
+;
+
+// Rule AllConstraints
+ruleAllConstraints :
+	ruleDtCAssertFalse |
+	ruleDtCAssertTrue |
+	ruleDtCDecimalMax |
+	ruleDtCDecimalMin |
+	ruleDtCDigits |
+	ruleDtCNumericMax |
+	ruleDtCNumericMin |
+	ruleDtCNotNull |
+	ruleDtCNull |
+	ruleDtCRegEx |
+	ruleDtCSize |
+	ruleDtCFuture |
+	ruleDtCPast
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint :
+	ruleDtCAssertFalse |
+	ruleDtCAssertTrue |
+	ruleDtCDecimalMax |
+	ruleDtCDecimalMin |
+	ruleDtCDigits |
+	ruleDtCNumericMax |
+	ruleDtCNumericMin |
+	ruleDtCNotNull |
+	ruleDtCNull |
+	ruleDtCRegEx |
+	ruleDtCSize
+;
+
+// Rule DateConstraint
+ruleDateConstraint :
+	ruleDtCFuture |
+	ruleDtCPast |
+	ruleDtCNotNull |
+	ruleDtCNull
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint :
+	ruleDtCNotNull |
+	ruleDtCNull
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse :
+	'isFalse' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue :
+	'isTrue' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax :
+	'maxDecimal' '(' ruleLDecimal (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin :
+	'minDecimal' '(' ruleLDecimal (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCDigits
+ruleDtCDigits :
+	'digits' '(' RULE_INT ', ' RULE_INT (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCFuture
+ruleDtCFuture :
+	'isFuture' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCPast
+ruleDtCPast :
+	'isPast' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax :
+	'maxNumber' '(' ruleLInt (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin :
+	'minNumber' '(' ruleLInt (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull :
+	'isNotNull' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCNull
+ruleDtCNull :
+	'isNull' (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)?
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx :
+	'regex' '(' RULE_STRING (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule DtCSize
+ruleDtCSize :
+	'minMaxSize' '(' RULE_INT ', ' RULE_INT (
+		(
+			'[' (
+				'msgCode' '=' ruleQualifiedName
+			)? |
+			(
+				'msgI18nKey' '=' ruleQualifiedName
+			)? |
+			(
+				'severity' '=' ruleConstraintSeverity
+			)? ']'
+		)*
+	)? ')'
+;
+
+// Rule ScalarType
+ruleScalarType :
+	ruleDataType |
+	ruleEnum
+;
+
+// Rule Enum
+ruleEnum :
+	'enum' RULE_ID '{' ruleEnumLiteral (
+		', ' ruleEnumLiteral
+	)* '}'
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral :
+	RULE_ID (
+		(
+			'(' 'asDefault'? |
+			'forNull'? ')' (
+				'=' RULE_INT
+			)?
+		)*
+	)?
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef :
+	( (
+	ruleXAnnotation
+	) => ruleXAnnotation )
+;
+
+// Rule ResultFilters
+ruleResultFilters :
+	'constraints' '{' ruleResultFilter* '}'
+;
+
+// Rule ResultFilter
+ruleResultFilter :
+	ruleAttributeMatchingConstraint
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint :
+	RULE_ID ruleLComparatorType (
+		RULE_STRING |
+		( (
+		RULE_ID
+		) => RULE_ID )
+	) ';'?
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue :
+	'key' '=' RULE_STRING 'value' '=' RULE_STRING
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard :
+	ruleQualifiedName (
+		'.' '*'
+	)?
+;
+
+// Rule LFQN
+ruleLFQN :
+	RULE_ID (
+		'.' RULE_ID
+	)*
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE :
+	RULE_ID
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords :
+	'cachable' |
+	'id' |
+	'uuid' |
+	'transient' |
+	'version' |
+	'derived' 'collection' |
+	'refers' |
+	'settings' |
+	'lazy' |
+	'notnull' |
+	'dto' |
+	'date' |
+	'mapto' |
+	'ref' |
+	'cascade' |
+	'var' |
+	RULE_ID
+;
+
+// Rule Multiplicity
+ruleMultiplicity :
+	'[' ruleLowerBound (
+		'..' ruleUpperBound
+	)? ']'
+;
+
+// Rule LInt
+ruleLInt :
+	(
+		'+' |
+		'-'
+	)? RULE_INT
+;
+
+// Rule LDecimal
+ruleLDecimal :
+	ruleLInt (
+		'.' RULE_INT
+	)?
+;
+
+// Rule XAnnotation
+ruleXAnnotation :
+	'@' ruleQualifiedName (
+		( (
+		'('
+		) => '(' ) (
+			( (
+			ruleValidID '='
+			) => ruleXAnnotationElementValuePair ) (
+				',' ( (
+				ruleValidID '='
+				) => ruleXAnnotationElementValuePair )
+			)* |
+			ruleXAnnotationElementValueOrCommaList
+		)? ')'
+	)?
+;
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair :
+	( (
+	ruleValidID '='
+	) => (
+		ruleValidID '='
+	) ) ruleXAnnotationElementValue
+;
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList :
+	( (
+	'#' '['
+	) => (
+		'#' '['
+	) ) (
+		ruleXAnnotationOrExpression (
+			',' ruleXAnnotationOrExpression
+		)*
+	)? ']' |
+	ruleXAnnotationOrExpression (
+		(
+			',' ruleXAnnotationOrExpression
+		)+
+	)?
+;
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue :
+	( (
+	'#' '['
+	) => (
+		'#' '['
+	) ) (
+		ruleXAnnotationOrExpression (
+			',' ruleXAnnotationOrExpression
+		)*
+	)? ']' |
+	ruleXAnnotationOrExpression
+;
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression :
+	ruleXAnnotation |
+	ruleXExpression
+;
+
+// Rule XExpression
+ruleXExpression :
+	ruleXAssignment
+;
+
+// Rule XAssignment
+ruleXAssignment :
+	ruleFeatureCallID ruleOpSingleAssign ruleXAssignment |
+	ruleXOrExpression (
+		( (
+		ruleOpMultiAssign
+		) => ruleOpMultiAssign ) ruleXAssignment
+	)?
+;
+
+// Rule OpSingleAssign
+ruleOpSingleAssign :
+	'='
+;
+
+// Rule OpMultiAssign
+ruleOpMultiAssign :
+	'+=' |
+	'-=' |
+	'*=' |
+	'/=' |
+	'%=' |
+	'<' '<' '=' |
+	'>' '>'? '>='
+;
+
+// Rule XOrExpression
+ruleXOrExpression :
+	ruleXAndExpression (
+		( (
+		ruleOpOr
+		) => ruleOpOr ) ruleXAndExpression
+	)*
+;
+
+// Rule OpOr
+ruleOpOr :
+	'||'
+;
+
+// Rule XAndExpression
+ruleXAndExpression :
+	ruleXEqualityExpression (
+		( (
+		ruleOpAnd
+		) => ruleOpAnd ) ruleXEqualityExpression
+	)*
+;
+
+// Rule OpAnd
+ruleOpAnd :
+	'&&'
+;
+
+// Rule XEqualityExpression
+ruleXEqualityExpression :
+	ruleXRelationalExpression (
+		( (
+		ruleOpEquality
+		) => ruleOpEquality ) ruleXRelationalExpression
+	)*
+;
+
+// Rule OpEquality
+ruleOpEquality :
+	'==' |
+	'!=' |
+	'===' |
+	'!=='
+;
+
+// Rule XRelationalExpression
+ruleXRelationalExpression :
+	ruleXOtherOperatorExpression (
+		( (
+		'instanceof'
+		) => 'instanceof' ) ruleJvmTypeReference |
+		( (
+		ruleOpCompare
+		) => ruleOpCompare ) ruleXOtherOperatorExpression
+	)*
+;
+
+// Rule OpCompare
+ruleOpCompare :
+	'>=' |
+	'<' '=' |
+	'>' |
+	'<'
+;
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression :
+	ruleXAdditiveExpression (
+		( (
+		ruleOpOther
+		) => ruleOpOther ) ruleXAdditiveExpression
+	)*
+;
+
+// Rule OpOther
+ruleOpOther :
+	'->' |
+	'..<' |
+	'>' '..' |
+	'..' |
+	'=>' |
+	'>' (
+		( (
+		'>' '>'
+		) => (
+			'>' '>'
+		) ) |
+		'>'
+	) |
+	'<' (
+		( (
+		'<' '<'
+		) => (
+			'<' '<'
+		) ) |
+		'<' |
+		'=>'
+	) |
+	'<>' |
+	'?:'
+;
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression :
+	ruleXMultiplicativeExpression (
+		( (
+		ruleOpAdd
+		) => ruleOpAdd ) ruleXMultiplicativeExpression
+	)*
+;
+
+// Rule OpAdd
+ruleOpAdd :
+	'+' |
+	'-'
+;
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression :
+	ruleXUnaryOperation (
+		( (
+		ruleOpMulti
+		) => ruleOpMulti ) ruleXUnaryOperation
+	)*
+;
+
+// Rule OpMulti
+ruleOpMulti :
+	'*' |
+	'**' |
+	'/' |
+	'%'
+;
+
+// Rule XUnaryOperation
+ruleXUnaryOperation :
+	ruleOpUnary ruleXUnaryOperation |
+	ruleXCastedExpression
+;
+
+// Rule OpUnary
+ruleOpUnary :
+	'!' |
+	'-' |
+	'+'
+;
+
+// Rule XCastedExpression
+ruleXCastedExpression :
+	ruleXPostfixOperation (
+		( (
+		'as'
+		) => 'as' ) ruleJvmTypeReference
+	)*
+;
+
+// Rule XPostfixOperation
+ruleXPostfixOperation :
+	ruleXMemberFeatureCall ( (
+	ruleOpPostfix
+	) => ruleOpPostfix )?
+;
+
+// Rule OpPostfix
+ruleOpPostfix :
+	'++' |
+	'--'
+;
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall :
+	ruleXPrimaryExpression (
+		( (
+		(
+			'.' |
+			'::'
+		) ruleFeatureCallID ruleOpSingleAssign
+		) => (
+			(
+				'.' |
+				'::'
+			) ruleFeatureCallID ruleOpSingleAssign
+		) ) ruleXAssignment |
+		( (
+		'.' |
+		'?.' |
+		'::'
+		) => (
+			'.' |
+			'?.' |
+			'::'
+		) ) (
+			'<' ruleJvmArgumentTypeReference (
+				',' ruleJvmArgumentTypeReference
+			)* '>'
+		)? ruleIdOrSuper (
+			( (
+			'('
+			) => '(' ) (
+				( (
+				(
+					ruleJvmFormalParameter (
+						',' ruleJvmFormalParameter
+					)*
+				)? '|'
+				) => ruleXShortClosure ) |
+				ruleXExpression (
+					',' ruleXExpression
+				)*
+			)? ')'
+		)? ( (
+		'['
+		) => ruleXClosure )?
+	)*
+;
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression :
+	ruleXConstructorCall |
+	ruleXBlockExpression |
+	ruleXSwitchExpression |
+	( (
+	'synchronized' '('
+	) => ruleXSynchronizedExpression ) |
+	ruleXFeatureCall |
+	ruleXLiteral |
+	ruleXIfExpression |
+	( (
+	'for' '(' ruleJvmFormalParameter ':'
+	) => ruleXForLoopExpression ) |
+	ruleXBasicForLoopExpression |
+	ruleXWhileExpression |
+	ruleXDoWhileExpression |
+	ruleXThrowExpression |
+	ruleXReturnExpression |
+	ruleXTryCatchFinallyExpression |
+	ruleXParenthesizedExpression
+;
+
+// Rule XLiteral
+ruleXLiteral :
+	ruleXCollectionLiteral |
+	( (
+	'['
+	) => ruleXClosure ) |
+	ruleXBooleanLiteral |
+	ruleXNumberLiteral |
+	ruleXNullLiteral |
+	ruleXStringLiteral |
+	ruleXTypeLiteral
+;
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral :
+	ruleXSetLiteral |
+	ruleXListLiteral
+;
+
+// Rule XSetLiteral
+ruleXSetLiteral :
+	'#' '{' (
+		ruleXExpression (
+			',' ruleXExpression
+		)*
+	)? '}'
+;
+
+// Rule XListLiteral
+ruleXListLiteral :
+	'#' '[' (
+		ruleXExpression (
+			',' ruleXExpression
+		)*
+	)? ']'
+;
+
+// Rule XClosure
+ruleXClosure :
+	( (
+	'['
+	) => '[' ) ( (
+	(
+		ruleJvmFormalParameter (
+			',' ruleJvmFormalParameter
+		)*
+	)? '|'
+	) => (
+		(
+			ruleJvmFormalParameter (
+				',' ruleJvmFormalParameter
+			)*
+		)? '|'
+	) )? ruleXExpressionInClosure ']'
+;
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure :
+	(
+		ruleXExpressionOrVarDeclaration ';'?
+	)*
+;
+
+// Rule XShortClosure
+ruleXShortClosure :
+	( (
+	(
+		ruleJvmFormalParameter (
+			',' ruleJvmFormalParameter
+		)*
+	)? '|'
+	) => (
+		(
+			ruleJvmFormalParameter (
+				',' ruleJvmFormalParameter
+			)*
+		)? '|'
+	) ) ruleXExpression
+;
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression :
+	'(' ruleXExpression ')'
+;
+
+// Rule XIfExpression
+ruleXIfExpression :
+	'if' '(' ruleXExpression ')' ruleXExpression (
+		( (
+		'else'
+		) => 'else' ) ruleXExpression
+	)?
+;
+
+// Rule XSwitchExpression
+ruleXSwitchExpression :
+	'switch' (
+		( (
+		'(' ruleJvmFormalParameter ':'
+		) => (
+			'(' ruleJvmFormalParameter ':'
+		) ) ruleXExpression ')' |
+		( (
+		ruleJvmFormalParameter ':'
+		) => (
+			ruleJvmFormalParameter ':'
+		) )? ruleXExpression
+	) '{' ruleXCasePart* (
+		'default' ':' ruleXExpression
+	)? '}'
+;
+
+// Rule XCasePart
+ruleXCasePart :
+	ruleJvmTypeReference? (
+		'case' ruleXExpression
+	)? (
+		':' ruleXExpression |
+		','
+	)
+;
+
+// Rule XForLoopExpression
+ruleXForLoopExpression :
+	( (
+	'for' '(' ruleJvmFormalParameter ':'
+	) => (
+		'for' '(' ruleJvmFormalParameter ':'
+	) ) ruleXExpression ')' ruleXExpression
+;
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression :
+	'for' '(' (
+		ruleXExpressionOrVarDeclaration (
+			',' ruleXExpressionOrVarDeclaration
+		)*
+	)? ';' ruleXExpression? ';' (
+		ruleXExpression (
+			',' ruleXExpression
+		)*
+	)? ')' ruleXExpression
+;
+
+// Rule XWhileExpression
+ruleXWhileExpression :
+	'while' '(' ruleXExpression ')' ruleXExpression
+;
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression :
+	'do' ruleXExpression 'while' '(' ruleXExpression ')'
+;
+
+// Rule XBlockExpression
+ruleXBlockExpression :
+	'{' (
+		ruleXExpressionOrVarDeclaration ';'?
+	)* '}'
+;
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration :
+	ruleXVariableDeclaration |
+	ruleXExpression
+;
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration :
+	(
+		'var' |
+		'val'
+	) (
+		( (
+		ruleJvmTypeReference ruleValidID
+		) => (
+			ruleJvmTypeReference ruleValidID
+		) ) |
+		ruleValidID
+	) (
+		'=' ruleXExpression
+	)?
+;
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter :
+	ruleJvmTypeReference? ruleValidID
+;
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter :
+	ruleJvmTypeReference ruleValidID
+;
+
+// Rule XFeatureCall
+ruleXFeatureCall :
+	(
+		'<' ruleJvmArgumentTypeReference (
+			',' ruleJvmArgumentTypeReference
+		)* '>'
+	)? ruleIdOrSuper (
+		( (
+		'('
+		) => '(' ) (
+			( (
+			(
+				ruleJvmFormalParameter (
+					',' ruleJvmFormalParameter
+				)*
+			)? '|'
+			) => ruleXShortClosure ) |
+			ruleXExpression (
+				',' ruleXExpression
+			)*
+		)? ')'
+	)? ( (
+	'['
+	) => ruleXClosure )?
+;
+
+// Rule FeatureCallID
+ruleFeatureCallID :
+	ruleValidID |
+	'extends' |
+	'static' |
+	'import' |
+	'extension'
+;
+
+// Rule IdOrSuper
+ruleIdOrSuper :
+	ruleFeatureCallID |
+	'super'
+;
+
+// Rule XConstructorCall
+ruleXConstructorCall :
+	'new' ruleQualifiedName (
+		( (
+		'<'
+		) => '<' ) ruleJvmArgumentTypeReference (
+			',' ruleJvmArgumentTypeReference
+		)* '>'
+	)? (
+		( (
+		'('
+		) => '(' ) (
+			( (
+			(
+				ruleJvmFormalParameter (
+					',' ruleJvmFormalParameter
+				)*
+			)? '|'
+			) => ruleXShortClosure ) |
+			ruleXExpression (
+				',' ruleXExpression
+			)*
+		)? ')'
+	)? ( (
+	'['
+	) => ruleXClosure )?
+;
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral :
+	'false' |
+	'true'
+;
+
+// Rule XNullLiteral
+ruleXNullLiteral :
+	'null'
+;
+
+// Rule XNumberLiteral
+ruleXNumberLiteral :
+	ruleNumber
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral :
+	RULE_STRING
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral :
+	'typeof' '(' ruleQualifiedName ruleArrayBrackets* ')'
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression :
+	'throw' ruleXExpression
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression :
+	'return' ( (
+	'extends' |
+	'static' |
+	'import' |
+	'extension' |
+	'!' |
+	'-' |
+	'+' |
+	'new' |
+	'{' |
+	'switch' |
+	'synchronized' |
+	'<' |
+	'super' |
+	'#' |
+	'[' |
+	'false' |
+	'true' |
+	'null' |
+	'typeof' |
+	'if' |
+	'for' |
+	'while' |
+	'do' |
+	'throw' |
+	'return' |
+	'try' |
+	'(' |
+	RULE_ID |
+	RULE_HEX |
+	RULE_INT |
+	RULE_DECIMAL |
+	RULE_STRING
+	) => ruleXExpression )?
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression :
+	'try' ruleXExpression (
+		( (
+		'catch'
+		) => ruleXCatchClause )+ (
+			( (
+			'finally'
+			) => 'finally' ) ruleXExpression
+		)? |
+		'finally' ruleXExpression
+	)
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression :
+	( (
+	'synchronized' '('
+	) => (
+		'synchronized' '('
+	) ) ruleXExpression ')' ruleXExpression
+;
+
+// Rule XCatchClause
+ruleXCatchClause :
+	( (
+	'catch'
+	) => 'catch' ) '(' ruleFullJvmFormalParameter ')' ruleXExpression
+;
+
+// Rule QualifiedName
+ruleQualifiedName :
+	ruleValidID (
+		( (
+		'.'
+		) => '.' ) ruleValidID
+	)*
+;
+
+// Rule Number
+ruleNumber :
+	RULE_HEX |
+	(
+		RULE_INT |
+		RULE_DECIMAL
+	) (
+		'.' (
+			RULE_INT |
+			RULE_DECIMAL
+		)
+	)?
+;
+
+// Rule JvmTypeReference
+ruleJvmTypeReference :
+	ruleJvmParameterizedTypeReference ( (
+	ruleArrayBrackets
+	) => ruleArrayBrackets )* |
+	ruleXFunctionTypeRef
+;
+
+// Rule ArrayBrackets
+ruleArrayBrackets :
+	'[' ']'
+;
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef :
+	(
+		'(' (
+			ruleJvmTypeReference (
+				',' ruleJvmTypeReference
+			)*
+		)? ')'
+	)? '=>' ruleJvmTypeReference
+;
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference :
+	ruleQualifiedName (
+		( (
+		'<'
+		) => '<' ) ruleJvmArgumentTypeReference (
+			',' ruleJvmArgumentTypeReference
+		)* '>' (
+			( (
+			'.'
+			) => '.' ) ruleValidID (
+				( (
+				'<'
+				) => '<' ) ruleJvmArgumentTypeReference (
+					',' ruleJvmArgumentTypeReference
+				)* '>'
+			)?
+		)*
+	)?
+;
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference :
+	ruleJvmTypeReference |
+	ruleJvmWildcardTypeReference
+;
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference :
+	'?' (
+		ruleJvmUpperBound ruleJvmUpperBoundAnded* |
+		ruleJvmLowerBound ruleJvmLowerBoundAnded*
+	)?
+;
+
+// Rule JvmUpperBound
+ruleJvmUpperBound :
+	'extends' ruleJvmTypeReference
+;
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded :
+	'&' ruleJvmTypeReference
+;
+
+// Rule JvmLowerBound
+ruleJvmLowerBound :
+	'super' ruleJvmTypeReference
+;
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded :
+	'&' ruleJvmTypeReference
+;
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard :
+	ruleQualifiedName '.' '*'
+;
+
+// Rule ValidID
+ruleValidID :
+	RULE_ID
+;
+
+// Rule XImportDeclaration
+ruleXImportDeclaration :
+	'import' (
+		'static' 'extension'? ruleQualifiedNameInStaticImport (
+			'*' |
+			ruleValidID
+		) |
+		ruleQualifiedName |
+		ruleQualifiedNameWithWildcard
+	) ';'?
+;
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport :
+	(
+		ruleValidID '.'
+	)+
+;
+
+// Rule DiscriminatorType
+ruleDiscriminatorType :
+	'INHERIT' |
+	'STRING' |
+	'CHAR' |
+	'INT'
+;
+
+// Rule LHistorizedDateType
+ruleLHistorizedDateType :
+	'DATE' |
+	'TIMESTAMP'
+;
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity :
+	'info' |
+	'warn' |
+	'error'
+;
+
+// Rule DateType
+ruleDateType :
+	'date' |
+	'time' |
+	'timestamp'
+;
+
+// Rule LVisibility
+ruleLVisibility :
+	'package' |
+	'private' |
+	'protected' |
+	'public'
+;
+
+// Rule LComparatorType
+ruleLComparatorType :
+	'==' |
+	'>' |
+	'<' |
+	'>=' |
+	'<=' |
+	'<>'
+;
+
+// Rule LowerBound
+ruleLowerBound :
+	'*' |
+	'0' |
+	'?' |
+	'+' |
+	'1'
+;
+
+// Rule UpperBound
+ruleUpperBound :
+	'*' |
+	'1'
+;
+
+RULE_HEX :
+	(
+		'0x' |
+		'0X'
+	) (
+		'0' .. '9' |
+		'a' .. 'f' |
+		'A' .. 'F' |
+		'_'
+	)+ (
+		'#' (
+			(
+				'b' |
+				'B'
+			) (
+				'i' |
+				'I'
+			) |
+			(
+				'l' |
+				'L'
+			)
+		)
+	)?
+;
+
+RULE_INT :
+	'0' .. '9' (
+		'0' .. '9' |
+		'_'
+	)*
+;
+
+RULE_DECIMAL :
+	RULE_INT (
+		(
+			'e' |
+			'E'
+		) (
+			'+' |
+			'-'
+		)? RULE_INT
+	)? (
+		(
+			'b' |
+			'B'
+		) (
+			'i' |
+			'I' |
+			'd' |
+			'D'
+		) |
+		(
+			'l' |
+			'L' |
+			'd' |
+			'D' |
+			'f' |
+			'F'
+		)
+	)?
+;
+
+RULE_ID :
+	'^'? (
+		'a' .. 'z' |
+		'A' .. 'Z' |
+		'$' |
+		'_'
+	) (
+		'a' .. 'z' |
+		'A' .. 'Z' |
+		'$' |
+		'_' |
+		'0' .. '9'
+	)*
+;
+
+RULE_STRING :
+	'"' (
+		'\\' . |
+		~ (
+			'\\' |
+			'"'
+		)
+	)* '"'? |
+	'\'' (
+		'\\' . |
+		~ (
+			'\\' |
+			'\''
+		)
+	)* '\''?
+;
+
+RULE_ML_COMMENT :
+	'/*' (
+		options { greedy = false ; } : .
+	)* '*/' {skip();}
+;
+
+RULE_SL_COMMENT :
+	'//' ~ (
+		'\n' |
+		'\r'
+	)* (
+		'\r'? '\n'
+	)? {skip();}
+;
+
+RULE_WS :
+	(
+		' ' |
+		'\t' |
+		'\r' |
+		'\n'
+	)+ {skip();}
+;
+
+RULE_ANY_OTHER :
+	.
+;
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g
new file mode 100644
index 0000000..d028785
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalEntityGrammar;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.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.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private EntityGrammarGrammarAccess grammarAccess;
+ 	
+    public InternalEntityGrammarParser(TokenStream input, EntityGrammarGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "EntityModel";	
+   	}
+   	
+   	@Override
+   	protected EntityGrammarGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleEntityModel
+entryRuleEntityModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEntityModelRule()); }
+	 iv_ruleEntityModel=ruleEntityModel 
+	 { $current=$iv_ruleEntityModel.current; } 
+	 EOF 
+;
+
+// Rule EntityModel
+ruleEntityModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleTypedPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"TypedPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassRule()); }
+	 iv_ruleClass=ruleClass 
+	 { $current=$iv_ruleClass.current; } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getClassAccess().getLClassAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_0_0(),
+            $current);
+    }
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 0);
+	 				}
+					({true}?=>(
+(
+		lv_abstract_4_0=	'abstract' 
+    {
+        newLeafNode(lv_abstract_4_0, grammarAccess.getClassAccess().getAbstractAbstractKeyword_2_0_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "abstract", true, "abstract");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_historized_5_0=	'historized' 
+    {
+        newLeafNode(lv_historized_5_0, grammarAccess.getClassAccess().getHistorizedHistorizedKeyword_2_0_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "historized", true, "historized");
+	    }
+
+)
+)
+    |((
+(
+		lv_timedependent_6_0=	'timedependent' 
+    {
+        newLeafNode(lv_timedependent_6_0, grammarAccess.getClassAccess().getTimedependentTimedependentKeyword_2_0_1_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "timedependent", true, "timedependent");
+	    }
+
+)
+)(	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getClassAccess().getLeftParenthesisKeyword_2_0_1_1_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getTimedependentDateTypeLHistorizedDateTypeEnumRuleCall_2_0_1_1_1_1_1_0()); 
+	    }
+		lv_timedependentDateType_8_0=ruleLHistorizedDateType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"timedependentDateType",
+        		lv_timedependentDateType_8_0, 
+        		"LHistorizedDateType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_9=')' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getClassAccess().getRightParenthesisKeyword_2_0_1_1_1_1_2());
+    }
+)?)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 2);
+	 				}
+					({true}?=>(
+(
+		lv_cacheable_10_0=	'cacheable' 
+    {
+        newLeafNode(lv_cacheable_10_0, grammarAccess.getClassAccess().getCacheableCacheableKeyword_2_0_1_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "cacheable", true, "cacheable");
+	    }
+
+)
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+	}
+
+)	otherlv_11='entity' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getClassAccess().getEntityKeyword_2_0_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getNameTRANSLATABLEIDParserRuleCall_2_0_3_0()); 
+	    }
+		lv_name_12_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_12_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_13='extends' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLEntityCrossReference_2_0_4_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15='{' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getPersistenceInfoEntityPersistenceInfoParserRuleCall_2_0_6_0()); 
+	    }
+		lv_persistenceInfo_16_0=ruleEntityPersistenceInfo		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"persistenceInfo",
+        		lv_persistenceInfo_16_0, 
+        		"EntityPersistenceInfo");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getInheritanceStrategyEntityInheritanceStrategyParserRuleCall_2_0_7_0()); 
+	    }
+		lv_inheritanceStrategy_17_0=ruleEntityInheritanceStrategy		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"inheritanceStrategy",
+        		lv_inheritanceStrategy_17_0, 
+        		"EntityInheritanceStrategy");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_18='persistenceUnit' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_0_8_0());
+    }
+(
+(
+		lv_persistenceUnit_19_0=RULE_STRING
+		{
+			newLeafNode(lv_persistenceUnit_19_0, grammarAccess.getClassAccess().getPersistenceUnitSTRINGTerminalRuleCall_2_0_8_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"persistenceUnit",
+        		lv_persistenceUnit_19_0, 
+        		"STRING");
+	    }
+
+)
+)(	otherlv_20=';' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getClassAccess().getSemicolonKeyword_2_0_8_2());
+    }
+)?)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesEntityFeatureParserRuleCall_2_0_9_0()); 
+	    }
+		lv_features_21_0=ruleEntityFeature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"features",
+        		lv_features_21_0, 
+        		"EntityFeature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getIndexesIndexParserRuleCall_2_0_10_0()); 
+	    }
+		lv_indexes_22_0=ruleIndex		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"indexes",
+        		lv_indexes_22_0, 
+        		"Index");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_23='}' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_11());
+    }
+)
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_1_0(),
+            $current);
+    }
+)(
+(
+		lv_mappedSuperclass_25_0=	'mapped superclass' 
+    {
+        newLeafNode(lv_mappedSuperclass_25_0, grammarAccess.getClassAccess().getMappedSuperclassMappedSuperclassKeyword_2_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "mappedSuperclass", true, "mapped superclass");
+	    }
+
+)
+)(	otherlv_26='extends' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getClassAccess().getExtendsKeyword_2_1_2_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLEntityCrossReference_2_1_2_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_2_1_3_0()); 
+	    }
+		lv_name_28_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_28_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_29='{' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_4());
+    }
+(	otherlv_30='persistenceUnit' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_1_5_0());
+    }
+(
+(
+		lv_persistenceUnit_31_0=RULE_STRING
+		{
+			newLeafNode(lv_persistenceUnit_31_0, grammarAccess.getClassAccess().getPersistenceUnitSTRINGTerminalRuleCall_2_1_5_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"persistenceUnit",
+        		lv_persistenceUnit_31_0, 
+        		"STRING");
+	    }
+
+)
+)(	otherlv_32=';' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getClassAccess().getSemicolonKeyword_2_1_5_2());
+    }
+)?)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesEntityFeatureParserRuleCall_2_1_6_0()); 
+	    }
+		lv_features_33_0=ruleEntityFeature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"features",
+        		lv_features_33_0, 
+        		"EntityFeature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_34='}' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_7());
+    }
+)
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLBeanAnnotationInfoAction_2_2_0(),
+            $current);
+    }
+)	otherlv_36='bean' 
+    {
+    	newLeafNode(otherlv_36, grammarAccess.getClassAccess().getBeanKeyword_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getNameTRANSLATABLEIDParserRuleCall_2_2_2_0()); 
+	    }
+		lv_name_37_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_37_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_38='extends' 
+    {
+    	newLeafNode(otherlv_38, grammarAccess.getClassAccess().getExtendsKeyword_2_2_3_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLBeanCrossReference_2_2_3_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_40='{' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_2_4());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesBeanFeatureParserRuleCall_2_2_5_0()); 
+	    }
+		lv_features_41_0=ruleBeanFeature		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"features",
+        		lv_features_41_0, 
+        		"BeanFeature");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_42='}' 
+    {
+    	newLeafNode(otherlv_42, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_2_6());
+    }
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleIndex
+entryRuleIndex returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getIndexRule()); }
+	 iv_ruleIndex=ruleIndex 
+	 { $current=$iv_ruleIndex.current; } 
+	 EOF 
+;
+
+// Rule Index
+ruleIndex returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_unique_0_0=	'unique' 
+    {
+        newLeafNode(lv_unique_0_0, grammarAccess.getIndexAccess().getUniqueUniqueKeyword_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getIndexRule());
+	        }
+       		setWithLastConsumed($current, "unique", true, "unique");
+	    }
+
+)
+)?	otherlv_1='index' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getIndexAccess().getIndexKeyword_1());
+    }
+(
+(
+		lv_name_2_0=RULE_ID
+		{
+			newLeafNode(lv_name_2_0, grammarAccess.getIndexAccess().getNameIDTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getIndexRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getIndexAccess().getLeftCurlyBracketKeyword_3());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getIndexRule());
+	        }
+        }
+	otherlv_4=RULE_ID
+	{
+		newLeafNode(otherlv_4, grammarAccess.getIndexAccess().getFeaturesLEntityFeatureCrossReference_4_0()); 
+	}
+
+)
+)(	otherlv_5=', ' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getIndexAccess().getCommaSpaceKeyword_5_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getIndexRule());
+	        }
+        }
+	otherlv_6=RULE_ID
+	{
+		newLeafNode(otherlv_6, grammarAccess.getIndexAccess().getFeaturesLEntityFeatureCrossReference_5_1_0()); 
+	}
+
+)
+))*	otherlv_7='}' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getIndexAccess().getRightCurlyBracketKeyword_6());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEntityPersistenceInfo
+entryRuleEntityPersistenceInfo returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEntityPersistenceInfoRule()); }
+	 iv_ruleEntityPersistenceInfo=ruleEntityPersistenceInfo 
+	 { $current=$iv_ruleEntityPersistenceInfo.current; } 
+	 EOF 
+;
+
+// Rule EntityPersistenceInfo
+ruleEntityPersistenceInfo returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getEntityPersistenceInfoAccess().getLEntityPersistenceInfoAction_0(),
+            $current);
+    }
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 0);
+	 				}
+					({true}?=>(	otherlv_2='schemaName' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameKeyword_1_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameValidIDWithKeywordsParserRuleCall_1_0_1_0()); 
+	    }
+		lv_schemaName_3_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityPersistenceInfoRule());
+	        }
+       		set(
+       			$current, 
+       			"schemaName",
+        		lv_schemaName_3_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_0_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 1);
+	 				}
+					({true}?=>(	otherlv_5='tableName' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEntityPersistenceInfoAccess().getTableNameKeyword_1_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityPersistenceInfoAccess().getTableNameValidIDWithKeywordsParserRuleCall_1_1_1_0()); 
+	    }
+		lv_tableName_6_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityPersistenceInfoRule());
+	        }
+       		set(
+       			$current, 
+       			"tableName",
+        		lv_tableName_6_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=';' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_1_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+	}
+
+))
+;
+
+
+
+
+
+// Entry rule entryRuleColumnPersistenceInfo
+entryRuleColumnPersistenceInfo returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getColumnPersistenceInfoRule()); }
+	 iv_ruleColumnPersistenceInfo=ruleColumnPersistenceInfo 
+	 { $current=$iv_ruleColumnPersistenceInfo.current; } 
+	 EOF 
+;
+
+// Rule ColumnPersistenceInfo
+ruleColumnPersistenceInfo returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getColumnPersistenceInfoAccess().getLEntityColumnPersistenceInfoAction_0(),
+            $current);
+    }
+)	otherlv_1='(' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getColumnPersistenceInfoAccess().getLeftParenthesisKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameValidIDWithKeywordsParserRuleCall_2_0()); 
+	    }
+		lv_columnName_2_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getColumnPersistenceInfoRule());
+	        }
+       		set(
+       			$current, 
+       			"columnName",
+        		lv_columnName_2_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_3=')' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getColumnPersistenceInfoAccess().getRightParenthesisKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEntityFeature
+entryRuleEntityFeature returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEntityFeatureRule()); }
+	 iv_ruleEntityFeature=ruleEntityFeature 
+	 { $current=$iv_ruleEntityFeature.current; } 
+	 EOF 
+;
+
+// Rule EntityFeature
+ruleEntityFeature returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getEntityFeatureAccess().getLEntityFeatureAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getEntityFeatureAccess().getLEntityReferenceAnnotationInfoAction_2_0_0(),
+            $current);
+    }
+)(	otherlv_3='ref' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getEntityFeatureAccess().getRefKeyword_2_0_1_0());
+    }
+(
+(
+		lv_cascading_4_0=	'cascade' 
+    {
+        newLeafNode(lv_cascading_4_0, grammarAccess.getEntityFeatureAccess().getCascadingCascadeKeyword_2_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "cascading", true, "cascade");
+	    }
+
+)
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeLEntityCrossReference_2_0_1_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_0_1_3_0()); 
+	    }
+		lv_multiplicity_6_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_6_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0()); 
+	    }
+		lv_constraints_8_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_8_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_9=']' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0()); 
+	    }
+		lv_name_10_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_10_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPersistenceInfoColumnPersistenceInfoParserRuleCall_2_0_1_6_0()); 
+	    }
+		lv_persistenceInfo_11_0=ruleColumnPersistenceInfo		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"persistenceInfo",
+        		lv_persistenceInfo_11_0, 
+        		"ColumnPersistenceInfo");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_12='opposite' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getEntityFeatureAccess().getOppositeKeyword_2_0_1_7_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getOppositeLEntityReferenceCrossReference_2_0_1_7_1_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_14='properties' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_8_0());
+    }
+	otherlv_15='(' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_8_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0()); 
+	    }
+		lv_properties_16_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_16_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_17=', ' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_0_1_8_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0()); 
+	    }
+		lv_properties_18_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_18_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_19=')' 
+    {
+    	newLeafNode(otherlv_19, grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_8_4());
+    }
+)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_9_0_0()); 
+	    }
+		lv_resultFilters_20_0=ruleResultFilters		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"resultFilters",
+        		lv_resultFilters_20_0, 
+        		"ResultFilters");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_21=';' 
+    {
+    	newLeafNode(otherlv_21, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_0_1_9_1());
+    }
+)?)))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getEntityFeatureAccess().getLEntityAttributeAnnotationInfoAction_2_1_0(),
+            $current);
+    }
+)(((
+(
+		lv_transient_23_0=	'transient' 
+    {
+        newLeafNode(lv_transient_23_0, grammarAccess.getEntityFeatureAccess().getTransientTransientKeyword_2_1_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "transient", true, "transient");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_25='[' 
+    {
+    	newLeafNode(otherlv_25, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0()); 
+	    }
+		lv_constraints_26_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_26_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_27=']' 
+    {
+    	newLeafNode(otherlv_27, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0()); 
+	    }
+		lv_name_28_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_28_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_29='properties' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0());
+    }
+	otherlv_30='(' 
+    {
+    	newLeafNode(otherlv_30, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); 
+	    }
+		lv_properties_31_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_31_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_32=', ' 
+    {
+    	newLeafNode(otherlv_32, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_1_1_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); 
+	    }
+		lv_properties_33_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_33_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_34=')' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4());
+    }
+)?(	otherlv_35=';' 
+    {
+    	newLeafNode(otherlv_35, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_0_5());
+    }
+)?)
+    |((
+(
+		lv_derived_36_0=	'derived' 
+    {
+        newLeafNode(lv_derived_36_0, grammarAccess.getEntityFeatureAccess().getDerivedDerivedKeyword_2_1_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "derived", true, "derived");
+	    }
+
+)
+)(
+(
+		lv_domainDescription_37_0=	'domainDescription' 
+    {
+        newLeafNode(lv_domainDescription_37_0, grammarAccess.getEntityFeatureAccess().getDomainDescriptionDomainDescriptionKeyword_2_1_1_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "domainDescription", true, "domainDescription");
+	    }
+
+)
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_1_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_3_0()); 
+	    }
+		lv_name_39_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_39_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_40='properties' 
+    {
+    	newLeafNode(otherlv_40, grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_1_4_0());
+    }
+	otherlv_41='(' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_2_0()); 
+	    }
+		lv_properties_42_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_42_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_43=', ' 
+    {
+    	newLeafNode(otherlv_43, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_1_1_1_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_3_1_0()); 
+	    }
+		lv_properties_44_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_44_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_45=')' 
+    {
+    	newLeafNode(otherlv_45, grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_1_4_4());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_5_0()); 
+	    }
+		lv_derivedGetterExpression_46_0=ruleXBlockExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"derivedGetterExpression",
+        		lv_derivedGetterExpression_46_0, 
+        		"XBlockExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |((	otherlv_47='var' 
+    {
+    	newLeafNode(otherlv_47, grammarAccess.getEntityFeatureAccess().getVarKeyword_2_1_1_2_0_0());
+    }
+
+    |(
+(
+		lv_id_48_0=	'id' 
+    {
+        newLeafNode(lv_id_48_0, grammarAccess.getEntityFeatureAccess().getIdIdKeyword_2_1_1_2_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "id", true, "id");
+	    }
+
+)
+)
+    |(
+(
+		lv_uuid_49_0=	'uuid' 
+    {
+        newLeafNode(lv_uuid_49_0, grammarAccess.getEntityFeatureAccess().getUuidUuidKeyword_2_1_1_2_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "uuid", true, "uuid");
+	    }
+
+)
+)
+    |(
+(
+		lv_version_50_0=	'version' 
+    {
+        newLeafNode(lv_version_50_0, grammarAccess.getEntityFeatureAccess().getVersionVersionKeyword_2_1_1_2_0_3_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "version", true, "version");
+	    }
+
+)
+)
+    |(
+(
+		lv_domainDescription_51_0=	'domainDescription' 
+    {
+        newLeafNode(lv_domainDescription_51_0, grammarAccess.getEntityFeatureAccess().getDomainDescriptionDomainDescriptionKeyword_2_1_1_2_0_4_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "domainDescription", true, "domainDescription");
+	    }
+
+)
+)
+    |(
+(
+		lv_domainKey_52_0=	'domainKey' 
+    {
+        newLeafNode(lv_domainKey_52_0, grammarAccess.getEntityFeatureAccess().getDomainKeyDomainKeyKeyword_2_1_1_2_0_5_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+       		setWithLastConsumed($current, "domainKey", true, "domainKey");
+	    }
+
+)
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_2_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_1_1_2_2_0()); 
+	    }
+		lv_multiplicity_54_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_54_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_55='[' 
+    {
+    	newLeafNode(otherlv_55, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_2_3_1_0()); 
+	    }
+		lv_constraints_56_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_56_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_57=']' 
+    {
+    	newLeafNode(otherlv_57, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_2_3_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_2_4_0()); 
+	    }
+		lv_name_58_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_58_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPersistenceInfoColumnPersistenceInfoParserRuleCall_2_1_1_2_5_0()); 
+	    }
+		lv_persistenceInfo_59_0=ruleColumnPersistenceInfo		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"persistenceInfo",
+        		lv_persistenceInfo_59_0, 
+        		"ColumnPersistenceInfo");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_60='opposite' 
+    {
+    	newLeafNode(otherlv_60, grammarAccess.getEntityFeatureAccess().getOppositeKeyword_2_1_1_2_6_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEntityFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getOppositeLBeanReferenceCrossReference_2_1_1_2_6_1_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_62='properties' 
+    {
+    	newLeafNode(otherlv_62, grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_2_7_0());
+    }
+	otherlv_63='(' 
+    {
+    	newLeafNode(otherlv_63, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_2_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_2_0()); 
+	    }
+		lv_properties_64_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_64_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_65=', ' 
+    {
+    	newLeafNode(otherlv_65, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_1_1_2_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_3_1_0()); 
+	    }
+		lv_properties_66_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_66_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_67=')' 
+    {
+    	newLeafNode(otherlv_67, grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_1_1_2_7_4());
+    }
+)?(	otherlv_68=';' 
+    {
+    	newLeafNode(otherlv_68, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_2_8());
+    }
+)?)))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getEntityFeatureAccess().getLOperationAnnotationInfoAction_2_2_0(),
+            $current);
+    }
+)(	otherlv_70='def' 
+    {
+    	newLeafNode(otherlv_70, grammarAccess.getEntityFeatureAccess().getDefKeyword_2_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0()); 
+	    }
+		lv_type_71_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_71_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0()); 
+	    }
+		lv_name_72_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_72_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_73='(' 
+    {
+    	newLeafNode(otherlv_73, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_2_1_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0()); 
+	    }
+		lv_params_74_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_74_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_75=', ' 
+    {
+    	newLeafNode(otherlv_75, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_2_1_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0()); 
+	    }
+		lv_params_76_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_76_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_77=')' 
+    {
+    	newLeafNode(otherlv_77, grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_2_1_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getBodyXExpressionParserRuleCall_2_2_1_6_0()); 
+	    }
+		lv_body_78_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_78_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))))
+;
+
+
+
+
+
+// Entry rule entryRuleBeanFeature
+entryRuleBeanFeature returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBeanFeatureRule()); }
+	 iv_ruleBeanFeature=ruleBeanFeature 
+	 { $current=$iv_ruleBeanFeature.current; } 
+	 EOF 
+;
+
+// Rule BeanFeature
+ruleBeanFeature returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getBeanFeatureAccess().getLBeanFeatureAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getBeanFeatureAccess().getLBeanReferenceAnnotationInfoAction_2_0_0(),
+            $current);
+    }
+)(	otherlv_3='ref' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getBeanFeatureAccess().getRefKeyword_2_0_1_0());
+    }
+(
+(
+		lv_cascading_4_0=	'cascade' 
+    {
+        newLeafNode(lv_cascading_4_0, grammarAccess.getBeanFeatureAccess().getCascadingCascadeKeyword_2_0_1_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+       		setWithLastConsumed($current, "cascading", true, "cascade");
+	    }
+
+)
+)?(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getTypeLTypeCrossReference_2_0_1_2_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_0_1_3_0()); 
+	    }
+		lv_multiplicity_6_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_6_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0()); 
+	    }
+		lv_constraints_8_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_8_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_9=']' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0()); 
+	    }
+		lv_name_10_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_10_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11='opposite' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getBeanFeatureAccess().getOppositeKeyword_2_0_1_6_0());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getOppositeLReferenceCrossReference_2_0_1_6_1_0()); 
+	    }
+		ruleLFQN		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?(	otherlv_13='properties' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_0_1_7_0());
+    }
+	otherlv_14='(' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_0_1_7_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_7_2_0()); 
+	    }
+		lv_properties_15_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_15_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_16=', ' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getBeanFeatureAccess().getCommaSpaceKeyword_2_0_1_7_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_7_3_1_0()); 
+	    }
+		lv_properties_17_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_17_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_0_1_7_4());
+    }
+)?((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_8_0_0()); 
+	    }
+		lv_resultFilters_19_0=ruleResultFilters		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"resultFilters",
+        		lv_resultFilters_19_0, 
+        		"ResultFilters");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)
+    |(	otherlv_20=';' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_0_1_8_1());
+    }
+)?)))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getBeanFeatureAccess().getLBeanAttributeAnnotationInfoAction_2_1_0(),
+            $current);
+    }
+)(((
+(
+		lv_transient_22_0=	'transient' 
+    {
+        newLeafNode(lv_transient_22_0, grammarAccess.getBeanFeatureAccess().getTransientTransientKeyword_2_1_1_0_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+       		setWithLastConsumed($current, "transient", true, "transient");
+	    }
+
+)
+)(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_24='[' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0()); 
+	    }
+		lv_constraints_25_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_25_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_26=']' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0()); 
+	    }
+		lv_name_27_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_27_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_28='properties' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0());
+    }
+	otherlv_29='(' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); 
+	    }
+		lv_properties_30_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_30_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_31=', ' 
+    {
+    	newLeafNode(otherlv_31, grammarAccess.getBeanFeatureAccess().getCommaSpaceKeyword_2_1_1_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); 
+	    }
+		lv_properties_32_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_32_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_33=')' 
+    {
+    	newLeafNode(otherlv_33, grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_0_4_4());
+    }
+)?)
+    |((	otherlv_34='var' 
+    {
+    	newLeafNode(otherlv_34, grammarAccess.getBeanFeatureAccess().getVarKeyword_2_1_1_1_0_0());
+    }
+
+    |(
+(
+		lv_id_35_0=	'id' 
+    {
+        newLeafNode(lv_id_35_0, grammarAccess.getBeanFeatureAccess().getIdIdKeyword_2_1_1_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+       		setWithLastConsumed($current, "id", true, "id");
+	    }
+
+)
+)
+    |(
+(
+		lv_version_36_0=	'version' 
+    {
+        newLeafNode(lv_version_36_0, grammarAccess.getBeanFeatureAccess().getVersionVersionKeyword_2_1_1_1_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+       		setWithLastConsumed($current, "version", true, "version");
+	    }
+
+)
+))(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getBeanFeatureRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_1_1_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_1_1_1_2_0()); 
+	    }
+		lv_multiplicity_38_0=ruleMultiplicity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"multiplicity",
+        		lv_multiplicity_38_0, 
+        		"Multiplicity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(	otherlv_39='[' 
+    {
+    	newLeafNode(otherlv_39, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_1_1_1_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_1_3_1_0()); 
+	    }
+		lv_constraints_40_0=ruleAllConstraints		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_40_0, 
+        		"AllConstraints");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_41=']' 
+    {
+    	newLeafNode(otherlv_41, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_1_1_1_3_2());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_0()); 
+	    }
+		lv_name_42_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_42_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_43='properties' 
+    {
+    	newLeafNode(otherlv_43, grammarAccess.getBeanFeatureAccess().getPropertiesKeyword_2_1_1_1_5_0());
+    }
+	otherlv_44='(' 
+    {
+    	newLeafNode(otherlv_44, grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_1_1_1_5_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0()); 
+	    }
+		lv_properties_45_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_45_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_46=', ' 
+    {
+    	newLeafNode(otherlv_46, grammarAccess.getBeanFeatureAccess().getCommaSpaceKeyword_2_1_1_1_5_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0()); 
+	    }
+		lv_properties_47_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_47_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_48=')' 
+    {
+    	newLeafNode(otherlv_48, grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_1_1_1_5_4());
+    }
+)?(	otherlv_49=';' 
+    {
+    	newLeafNode(otherlv_49, grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_1_1_1_6());
+    }
+)?)))
+    |((
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getBeanFeatureAccess().getLOperationAnnotationInfoAction_2_2_0(),
+            $current);
+    }
+)(	otherlv_51='def' 
+    {
+    	newLeafNode(otherlv_51, grammarAccess.getBeanFeatureAccess().getDefKeyword_2_2_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0()); 
+	    }
+		lv_type_52_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_52_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0()); 
+	    }
+		lv_name_53_0=ruleTRANSLATABLEID		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_53_0, 
+        		"TRANSLATABLEID");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_54='(' 
+    {
+    	newLeafNode(otherlv_54, grammarAccess.getBeanFeatureAccess().getLeftParenthesisKeyword_2_2_1_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0()); 
+	    }
+		lv_params_55_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_55_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_56=',' 
+    {
+    	newLeafNode(otherlv_56, grammarAccess.getBeanFeatureAccess().getCommaKeyword_2_2_1_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0()); 
+	    }
+		lv_params_57_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_57_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_58=')' 
+    {
+    	newLeafNode(otherlv_58, grammarAccess.getBeanFeatureAccess().getRightParenthesisKeyword_2_2_1_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getBeanFeatureAccess().getBodyXExpressionParserRuleCall_2_2_1_6_0()); 
+	    }
+		lv_body_59_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getBeanFeatureRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_59_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))))
+;
+
+
+
+
+
+// Entry rule entryRuleEntityInheritanceStrategy
+entryRuleEntityInheritanceStrategy returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEntityInheritanceStrategyRule()); }
+	 iv_ruleEntityInheritanceStrategy=ruleEntityInheritanceStrategy 
+	 { $current=$iv_ruleEntityInheritanceStrategy.current; } 
+	 EOF 
+;
+
+// Rule EntityInheritanceStrategy
+ruleEntityInheritanceStrategy returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerClassStrategyParserRuleCall_0()); 
+    }
+    this_TablePerClassStrategy_0=ruleTablePerClassStrategy
+    { 
+        $current = $this_TablePerClassStrategy_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getEntityInheritanceStrategyAccess().getTablePerSubclassStrategyParserRuleCall_1()); 
+    }
+    this_TablePerSubclassStrategy_1=ruleTablePerSubclassStrategy
+    { 
+        $current = $this_TablePerSubclassStrategy_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTablePerClassStrategy
+entryRuleTablePerClassStrategy returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTablePerClassStrategyRule()); }
+	 iv_ruleTablePerClassStrategy=ruleTablePerClassStrategy 
+	 { $current=$iv_ruleTablePerClassStrategy.current; } 
+	 EOF 
+;
+
+// Rule TablePerClassStrategy
+ruleTablePerClassStrategy returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTablePerClassStrategyAccess().getLTablePerClassStrategyAction_0(),
+            $current);
+    }
+)	otherlv_1='inheritance per class' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTablePerClassStrategyAccess().getInheritancePerClassKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTablePerClassStrategyAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), 0);
+	 				}
+					({true}?=>(	otherlv_4='discriminatorColumn' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorColumnKeyword_3_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0()); 
+	    }
+		lv_discriminatorColumn_5_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTablePerClassStrategyRule());
+	        }
+       		set(
+       			$current, 
+       			"discriminatorColumn",
+        		lv_discriminatorColumn_5_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_0_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), 1);
+	 				}
+					({true}?=>(	otherlv_7='discriminatorType' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorTypeKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0()); 
+	    }
+		lv_discriminatorType_8_0=ruleDiscriminatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTablePerClassStrategyRule());
+	        }
+       		set(
+       			$current, 
+       			"discriminatorType",
+        		lv_discriminatorType_8_0, 
+        		"DiscriminatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=';' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_1_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3(), 2);
+	 				}
+					({true}?=>(	otherlv_10='discriminatorValue' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorValueKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTablePerClassStrategyAccess().getDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0()); 
+	    }
+		lv_discriminatorValue_11_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTablePerClassStrategyRule());
+	        }
+       		set(
+       			$current, 
+       			"discriminatorValue",
+        		lv_discriminatorValue_11_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_12=';' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_2_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getTablePerClassStrategyAccess().getUnorderedGroup_3());
+	}
+
+)	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getTablePerClassStrategyAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleTablePerSubclassStrategy
+entryRuleTablePerSubclassStrategy returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTablePerSubclassStrategyRule()); }
+	 iv_ruleTablePerSubclassStrategy=ruleTablePerSubclassStrategy 
+	 { $current=$iv_ruleTablePerSubclassStrategy.current; } 
+	 EOF 
+;
+
+// Rule TablePerSubclassStrategy
+ruleTablePerSubclassStrategy returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTablePerSubclassStrategyAccess().getLTablePerSubclassStrategyAction_0(),
+            $current);
+    }
+)	otherlv_1='inheritance per subclass' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTablePerSubclassStrategyAccess().getInheritancePerSubclassKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getTablePerSubclassStrategyAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), 0);
+	 				}
+					({true}?=>(	otherlv_4='discriminatorColumn' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorColumnKeyword_3_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0()); 
+	    }
+		lv_discriminatorColumn_5_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTablePerSubclassStrategyRule());
+	        }
+       		set(
+       			$current, 
+       			"discriminatorColumn",
+        		lv_discriminatorColumn_5_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_6=';' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_0_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), 1);
+	 				}
+					({true}?=>(	otherlv_7='discriminatorType' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorTypeKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0()); 
+	    }
+		lv_discriminatorType_8_0=ruleDiscriminatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTablePerSubclassStrategyRule());
+	        }
+       		set(
+       			$current, 
+       			"discriminatorType",
+        		lv_discriminatorType_8_0, 
+        		"DiscriminatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=';' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_1_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3(), 2);
+	 				}
+					({true}?=>(	otherlv_10='discriminatorValue' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorValueKeyword_3_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTablePerSubclassStrategyAccess().getDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0()); 
+	    }
+		lv_discriminatorValue_11_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTablePerSubclassStrategyRule());
+	        }
+       		set(
+       			$current, 
+       			"discriminatorValue",
+        		lv_discriminatorValue_11_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_12=';' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_2_2());
+    }
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3());
+	 				}
+ 				)
+			)  
+
+		)*	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getTablePerSubclassStrategyAccess().getUnorderedGroup_3());
+	}
+
+)	otherlv_13='}' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getTablePerSubclassStrategyAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// 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(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getTRANSLATABLEIDAccess().getValidIDWithKeywordsParserRuleCall()); 
+    }
+    this_ValidIDWithKeywords_0=ruleValidIDWithKeywords    {
+		$current.merge(this_ValidIDWithKeywords_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+
+    ;
+
+
+
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedPackageRule()); }
+	 iv_ruleTypedPackage=ruleTypedPackage 
+	 { $current=$iv_ruleTypedPackage.current; } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"Import");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+	    }
+		lv_types_5_0=ruleType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"types",
+        		lv_types_5_0, 
+        		"Type");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleType
+entryRuleType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRule()); }
+	 iv_ruleType=ruleType 
+	 { $current=$iv_ruleType.current; } 
+	 EOF 
+;
+
+// Rule Type
+ruleType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+    }
+    this_ScalarType_0=ruleScalarType
+    { 
+        $current = $this_ScalarType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+    }
+    this_Class_1=ruleClass
+    { 
+        $current = $this_Class_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportRule()); }
+	 iv_ruleImport=ruleImport 
+	 { $current=$iv_ruleImport.current; } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"LQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeRule()); }
+	 iv_ruleDataType=ruleDataType 
+	 { $current=$iv_ruleDataType.current; } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datatype' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2='jvmType' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+	    }
+		lv_jvmTypeReference_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"jvmTypeReference",
+        		lv_jvmTypeReference_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_asPrimitive_4_0=	'as primitive' 
+    {
+        newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asPrimitive", true, "as primitive");
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+	    }
+		lv_constraints_5_0=ruleDataTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"DataTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_6='properties' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+    }
+	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+	    }
+		lv_properties_8_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_8_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=', ' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+	    }
+		lv_properties_10_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_10_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11=')' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+    }
+)?)
+    |((
+(
+		lv_date_12_0=	'dateType' 
+    {
+        newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "date", true, "dateType");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+	    }
+		lv_dateType_13_0=ruleDateType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateType",
+        		lv_dateType_13_0, 
+        		"DateType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+	    }
+		lv_constraints_14_0=ruleDateConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_14_0, 
+        		"DateConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_15='properties' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+    }
+	otherlv_16='(' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+	    }
+		lv_properties_17_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_17_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_18=', ' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+	    }
+		lv_properties_19_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_19_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_20=')' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+    }
+)?)
+    |((
+(
+		lv_asBlob_21_0=	'as blob' 
+    {
+        newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asBlob", true, "as blob");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+	    }
+		lv_constraints_22_0=ruleBlobTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_22_0, 
+        		"BlobTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_23='properties' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+    }
+	otherlv_24='(' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+	    }
+		lv_properties_25_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_25_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=', ' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+	    }
+		lv_properties_27_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_27_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28=')' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+    }
+)?))(	otherlv_29=';' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAllConstraints
+entryRuleAllConstraints returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAllConstraintsRule()); }
+	 iv_ruleAllConstraints=ruleAllConstraints 
+	 { $current=$iv_ruleAllConstraints.current; } 
+	 EOF 
+;
+
+// Rule AllConstraints
+ruleAllConstraints returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCFutureParserRuleCall_11()); 
+    }
+    this_DtCFuture_11=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_11.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getAllConstraintsAccess().getDtCPastParserRuleCall_12()); 
+    }
+    this_DtCPast_12=ruleDtCPast
+    { 
+        $current = $this_DtCPast_12.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeConstraintRule()); }
+	 iv_ruleDataTypeConstraint=ruleDataTypeConstraint 
+	 { $current=$iv_ruleDataTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDateConstraintRule()); }
+	 iv_ruleDateConstraint=ruleDateConstraint 
+	 { $current=$iv_ruleDateConstraint.current; } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+    }
+    this_DtCFuture_0=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+    }
+    this_DtCPast_1=ruleDtCPast
+    { 
+        $current = $this_DtCPast_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+    }
+    this_DtCNotNull_2=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+    }
+    this_DtCNull_3=ruleDtCNull
+    { 
+        $current = $this_DtCNull_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); }
+	 iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint 
+	 { $current=$iv_ruleBlobTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+    }
+    this_DtCNotNull_0=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+    }
+    this_DtCNull_1=ruleDtCNull
+    { 
+        $current = $this_DtCNull_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertFalseRule()); }
+	 iv_ruleDtCAssertFalse=ruleDtCAssertFalse 
+	 { $current=$iv_ruleDtCAssertFalse.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+            $current);
+    }
+)	otherlv_1='isFalse' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertTrueRule()); }
+	 iv_ruleDtCAssertTrue=ruleDtCAssertTrue 
+	 { $current=$iv_ruleDtCAssertTrue.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+            $current);
+    }
+)	otherlv_1='isTrue' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); }
+	 iv_ruleDtCDecimalMax=ruleDtCDecimalMax 
+	 { $current=$iv_ruleDtCDecimalMax.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMinRule()); }
+	 iv_ruleDtCDecimalMin=ruleDtCDecimalMin 
+	 { $current=$iv_ruleDtCDecimalMin.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDigitsRule()); }
+	 iv_ruleDtCDigits=ruleDtCDigits 
+	 { $current=$iv_ruleDtCDigits.current; } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+            $current);
+    }
+)	otherlv_1='digits' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_intDigits_3_0=RULE_INT
+		{
+			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"intDigits",
+        		lv_intDigits_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_fractionDigits_5_0=RULE_INT
+		{
+			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fractionDigits",
+        		lv_fractionDigits_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCFutureRule()); }
+	 iv_ruleDtCFuture=ruleDtCFuture 
+	 { $current=$iv_ruleDtCFuture.current; } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+            $current);
+    }
+)	otherlv_1='isFuture' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCPastRule()); }
+	 iv_ruleDtCPast=ruleDtCPast 
+	 { $current=$iv_ruleDtCPast.current; } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+            $current);
+    }
+)	otherlv_1='isPast' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMaxRule()); }
+	 iv_ruleDtCNumericMax=ruleDtCNumericMax 
+	 { $current=$iv_ruleDtCNumericMax.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMinRule()); }
+	 iv_ruleDtCNumericMin=ruleDtCNumericMin 
+	 { $current=$iv_ruleDtCNumericMin.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNotNullRule()); }
+	 iv_ruleDtCNotNull=ruleDtCNotNull 
+	 { $current=$iv_ruleDtCNotNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNotNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNullRule()); }
+	 iv_ruleDtCNull=ruleDtCNull 
+	 { $current=$iv_ruleDtCNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCRegExRule()); }
+	 iv_ruleDtCRegEx=ruleDtCRegEx 
+	 { $current=$iv_ruleDtCRegEx.current; } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+            $current);
+    }
+)	otherlv_1='regex' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_pattern_3_0=RULE_STRING
+		{
+			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCRegExRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"pattern",
+        		lv_pattern_3_0, 
+        		"STRING");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCSizeRule()); }
+	 iv_ruleDtCSize=ruleDtCSize 
+	 { $current=$iv_ruleDtCSize.current; } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+            $current);
+    }
+)	otherlv_1='minMaxSize' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_min_3_0=RULE_INT
+		{
+			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_max_5_0=RULE_INT
+		{
+			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"max",
+        		lv_max_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getScalarTypeRule()); }
+	 iv_ruleScalarType=ruleScalarType 
+	 { $current=$iv_ruleScalarType.current; } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+    }
+    this_DataType_0=ruleDataType
+    { 
+        $current = $this_DataType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+    }
+    this_Enum_1=ruleEnum
+    { 
+        $current = $this_Enum_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumRule()); }
+	 iv_ruleEnum=ruleEnum 
+	 { $current=$iv_ruleEnum.current; } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='enum' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+	    }
+		lv_literals_3_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_3_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+	    }
+		lv_literals_5_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_5_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumLiteralRule()); }
+	 iv_ruleEnumLiteral=ruleEnumLiteral 
+	 { $current=$iv_ruleEnumLiteral.current; } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=RULE_ID
+		{
+			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"ID");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+	 				}
+					({true}?=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+    }
+(
+(
+		lv_default_3_0=	'asDefault' 
+    {
+        newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "default", true, "asDefault");
+	    }
+
+)
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_null_4_0=	'forNull' 
+    {
+        newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "null", true, "forNull");
+	    }
+
+)
+)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+    }
+(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumLiteralAccess().getEqualsSignKeyword_1_1_2_0());
+    }
+(
+(
+		lv_value_7_0=RULE_INT
+		{
+			newLeafNode(lv_value_7_0, grammarAccess.getEnumLiteralAccess().getValueINTTerminalRuleCall_1_1_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"INT");
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationDefRule()); }
+	 iv_ruleAnnotationDef=ruleAnnotationDef 
+	 { $current=$iv_ruleAnnotationDef.current; } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationDefAccess().getAnnotationXAnnotationParserRuleCall_0_0()); 
+	    }
+		lv_annotation_0_0=ruleXAnnotation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationDefRule());
+	        }
+       		set(
+       			$current, 
+       			"annotation",
+        		lv_annotation_0_0, 
+        		"XAnnotation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleResultFilters
+entryRuleResultFilters returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResultFiltersRule()); }
+	 iv_ruleResultFilters=ruleResultFilters 
+	 { $current=$iv_ruleResultFilters.current; } 
+	 EOF 
+;
+
+// Rule ResultFilters
+ruleResultFilters returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getResultFiltersAccess().getLResultFiltersAction_0(),
+            $current);
+    }
+)	otherlv_1='constraints' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getResultFiltersAccess().getConstraintsKeyword_1());
+    }
+	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getResultFiltersAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getResultFiltersAccess().getResultFiltersResultFilterParserRuleCall_3_0()); 
+	    }
+		lv_resultFilters_3_0=ruleResultFilter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getResultFiltersRule());
+	        }
+       		add(
+       			$current, 
+       			"resultFilters",
+        		lv_resultFilters_3_0, 
+        		"ResultFilter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_4='}' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getResultFiltersAccess().getRightCurlyBracketKeyword_4());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResultFilterRule()); }
+	 iv_ruleResultFilter=ruleResultFilter 
+	 { $current=$iv_ruleResultFilter.current; } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); 
+    }
+    this_AttributeMatchingConstraint_0=ruleAttributeMatchingConstraint
+    { 
+        $current = $this_AttributeMatchingConstraint_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 iv_ruleAttributeMatchingConstraint=ruleAttributeMatchingConstraint 
+	 { $current=$iv_ruleAttributeMatchingConstraint.current; } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_0=RULE_ID
+	{
+		newLeafNode(otherlv_0, grammarAccess.getAttributeMatchingConstraintAccess().getAttributeLAttributeCrossReference_0_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeLComparatorTypeEnumRuleCall_1_0()); 
+	    }
+		lv_comparatorType_1_0=ruleLComparatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		set(
+       			$current, 
+       			"comparatorType",
+        		lv_comparatorType_1_0, 
+        		"LComparatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_matchingValue_2_0=RULE_STRING
+		{
+			newLeafNode(lv_matchingValue_2_0, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueSTRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"matchingValue",
+        		lv_matchingValue_2_0, 
+        		"STRING");
+	    }
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralLEnumLiteralCrossReference_2_1_0()); 
+	}
+
+)
+))(	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getKeyAndValueRule()); }
+	 iv_ruleKeyAndValue=ruleKeyAndValue 
+	 { $current=$iv_ruleKeyAndValue.current; } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='key' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getKeyAndValueAccess().getKeyKeyword_0());
+    }
+	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+		lv_key_2_0=RULE_STRING
+		{
+			newLeafNode(lv_key_2_0, grammarAccess.getKeyAndValueAccess().getKeySTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_2_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_3='value' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getKeyAndValueAccess().getValueKeyword_3());
+    }
+	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_4());
+    }
+(
+(
+		lv_value_5_0=RULE_STRING
+		{
+			newLeafNode(lv_value_5_0, grammarAccess.getKeyAndValueAccess().getValueSTRINGTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 iv_ruleLQualifiedNameWithWildCard=ruleLQualifiedNameWithWildCard 
+	 { $current=$iv_ruleLQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLFQNRule()); } 
+	 iv_ruleLFQN=ruleLFQN 
+	 { $current=$iv_ruleLFQN.current.getText(); }  
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+    }
+    this_ID_2=RULE_ID    {
+		$current.merge(this_ID_2);
+    }
+
+    { 
+    newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 iv_ruleTYPE_CROSS_REFERENCE=ruleTYPE_CROSS_REFERENCE 
+	 { $current=$iv_ruleTYPE_CROSS_REFERENCE.current.getText(); }  
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 iv_ruleValidIDWithKeywords=ruleValidIDWithKeywords 
+	 { $current=$iv_ruleValidIDWithKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='cachable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
+    }
+
+    |
+	kw='id' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
+    }
+
+    |
+	kw='uuid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
+    }
+
+    |
+	kw='transient' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
+    }
+
+    |
+	kw='version' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
+    }
+
+    |(
+	kw='derived' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5_0()); 
+    }
+
+	kw='collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_5_1()); 
+    }
+)
+    |
+	kw='refers' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); 
+    }
+
+    |
+	kw='settings' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); 
+    }
+
+    |
+	kw='lazy' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); 
+    }
+
+    |
+	kw='notnull' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); 
+    }
+
+    |
+	kw='dto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); 
+    }
+
+    |
+	kw='date' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); 
+    }
+
+    |
+	kw='mapto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); 
+    }
+
+    |
+	kw='ref' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); 
+    }
+
+    |
+	kw='cascade' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); 
+    }
+
+    |
+	kw='var' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); 
+    }
+
+    |    this_ID_17=RULE_ID    {
+		$current.merge(this_ID_17);
+    }
+
+    { 
+    newLeafNode(this_ID_17, grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+// Entry rule entryRuleMultiplicity
+entryRuleMultiplicity returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getMultiplicityRule()); }
+	 iv_ruleMultiplicity=ruleMultiplicity 
+	 { $current=$iv_ruleMultiplicity.current; } 
+	 EOF 
+;
+
+// Rule Multiplicity
+ruleMultiplicity returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='[' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getMultiplicityAccess().getLeftSquareBracketKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityAccess().getLowerLowerBoundEnumRuleCall_1_0()); 
+	    }
+		lv_lower_1_0=ruleLowerBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityRule());
+	        }
+       		set(
+       			$current, 
+       			"lower",
+        		lv_lower_1_0, 
+        		"LowerBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2='..' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getMultiplicityAccess().getFullStopFullStopKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getMultiplicityAccess().getUpperUpperBoundEnumRuleCall_2_1_0()); 
+	    }
+		lv_upper_3_0=ruleUpperBound		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getMultiplicityRule());
+	        }
+       		set(
+       			$current, 
+       			"upper",
+        		lv_upper_3_0, 
+        		"UpperBound");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_4=']' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getMultiplicityAccess().getRightSquareBracketKeyword_3());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLIntRule()); } 
+	 iv_ruleLInt=ruleLInt 
+	 { $current=$iv_ruleLInt.current.getText(); }  
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
+    }
+)?    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLIntAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLDecimalRule()); } 
+	 iv_ruleLDecimal=ruleLDecimal 
+	 { $current=$iv_ruleLDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLDecimalAccess().getLIntParserRuleCall_0()); 
+    }
+    this_LInt_0=ruleLInt    {
+		$current.merge(this_LInt_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLDecimalAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLDecimalAccess().getINTTerminalRuleCall_1_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, "|");
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.tokens b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.tokens
new file mode 100644
index 0000000..9cc35f7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.tokens
@@ -0,0 +1,327 @@
+'!'=122
+'!='=110
+'!=='=112
+'#'=98
+'%'=121
+'%='=103
+'&&'=108
+'&'=154
+'('=16
+')'=17
+'*'=84
+'**'=119
+'*='=101
+'+'=95
+'++'=124
+'+='=99
+', '=29
+','=47
+'-'=96
+'--'=125
+'-='=100
+'->'=114
+'.'=83
+'..'=94
+'..<'=115
+'/'=120
+'/='=102
+'0'=170
+'1'=171
+':'=132
+'::'=126
+';'=23
+'<'=104
+'<='=169
+'<>'=117
+'='=62
+'=='=109
+'==='=111
+'=>'=116
+'>'=105
+'>='=106
+'?'=153
+'?.'=127
+'?:'=118
+'@'=97
+'CHAR'=157
+'DATE'=159
+'INHERIT'=155
+'INT'=158
+'STRING'=156
+'TIMESTAMP'=160
+'['=34
+']'=35
+'abstract'=13
+'as blob'=59
+'as primitive'=57
+'as'=123
+'asDefault'=78
+'bean'=26
+'cachable'=85
+'cacheable'=18
+'cascade'=33
+'case'=134
+'catch'=152
+'collection'=86
+'constraints'=80
+'datatype'=55
+'date'=92
+'dateType'=58
+'def'=46
+'default'=133
+'derived'=39
+'digits'=68
+'discriminatorColumn'=49
+'discriminatorType'=50
+'discriminatorValue'=51
+'do'=137
+'domainDescription'=40
+'domainKey'=45
+'dto'=91
+'else'=130
+'entity'=19
+'enum'=77
+'error'=163
+'extends'=20
+'extension'=140
+'false'=143
+'finally'=150
+'for'=135
+'forNull'=79
+'historized'=14
+'id'=42
+'if'=129
+'import'=54
+'index'=28
+'info'=161
+'inheritance per class'=48
+'inheritance per subclass'=52
+'instanceof'=113
+'isFalse'=60
+'isFuture'=69
+'isNotNull'=73
+'isNull'=74
+'isPast'=70
+'isTrue'=65
+'jvmType'=56
+'key'=81
+'lazy'=89
+'mapped superclass'=25
+'mapto'=93
+'maxDecimal'=66
+'maxNumber'=71
+'minDecimal'=67
+'minMaxSize'=76
+'minNumber'=72
+'msgCode'=61
+'msgI18nKey'=63
+'new'=142
+'notnull'=90
+'null'=145
+'opposite'=36
+'package'=53
+'persistenceUnit'=22
+'private'=166
+'properties'=37
+'protected'=167
+'public'=168
+'ref'=32
+'refers'=87
+'regex'=75
+'return'=148
+'schemaName'=30
+'settings'=88
+'severity'=64
+'static'=139
+'super'=141
+'switch'=131
+'synchronized'=151
+'tableName'=31
+'throw'=147
+'time'=164
+'timedependent'=15
+'timestamp'=165
+'transient'=38
+'true'=144
+'try'=149
+'typeof'=146
+'unique'=27
+'uuid'=43
+'val'=138
+'value'=82
+'var'=41
+'version'=44
+'warn'=162
+'while'=136
+'{'=21
+'|'=128
+'||'=107
+'}'=24
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=5
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=4
+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__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammarLexer.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammarLexer.java
new file mode 100644
index 0000000..6887b5e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammarLexer.java
@@ -0,0 +1,6498 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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 InternalEntityGrammarLexer 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 RULE_HEX=7;
+    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=5;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__169=169;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalEntityGrammarLexer() {;} 
+    public InternalEntityGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalEntityGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:11:7: ( 'abstract' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:11:9: 'abstract'
+            {
+            match("abstract"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:12:7: ( 'historized' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:12:9: 'historized'
+            {
+            match("historized"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13:7: ( 'timedependent' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13:9: 'timedependent'
+            {
+            match("timedependent"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:14:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:15:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:16:7: ( 'cacheable' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:16:9: 'cacheable'
+            {
+            match("cacheable"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:17:7: ( 'entity' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:17:9: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:18:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:18:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:19:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:20:7: ( 'persistenceUnit' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:20:9: 'persistenceUnit'
+            {
+            match("persistenceUnit"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:21:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:22:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:23:7: ( 'mapped superclass' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:23:9: 'mapped superclass'
+            {
+            match("mapped superclass"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:24:7: ( 'bean' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:24:9: 'bean'
+            {
+            match("bean"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:25:7: ( 'unique' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:25:9: 'unique'
+            {
+            match("unique"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:26:7: ( 'index' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:26:9: 'index'
+            {
+            match("index"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:27:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:28:7: ( 'schemaName' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:28:9: 'schemaName'
+            {
+            match("schemaName"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:29:7: ( 'tableName' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:29:9: 'tableName'
+            {
+            match("tableName"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:30:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:30:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:31:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:31:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:32:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:33:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:34:7: ( 'opposite' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:34:9: 'opposite'
+            {
+            match("opposite"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:35:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:35:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:36:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:36:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:37:7: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:37:9: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:38:7: ( 'domainDescription' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:38:9: 'domainDescription'
+            {
+            match("domainDescription"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:39:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:39:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:40:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:40:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:41:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:41:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:42:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:42:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:43:7: ( 'domainKey' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:43:9: 'domainKey'
+            {
+            match("domainKey"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:44:7: ( 'def' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:44:9: 'def'
+            {
+            match("def"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:45:7: ( ',' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:46:7: ( 'inheritance per class' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:46:9: 'inheritance per class'
+            {
+            match("inheritance per class"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:47:7: ( 'discriminatorColumn' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:47:9: 'discriminatorColumn'
+            {
+            match("discriminatorColumn"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:48:7: ( 'discriminatorType' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:48:9: 'discriminatorType'
+            {
+            match("discriminatorType"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:49:7: ( 'discriminatorValue' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:49:9: 'discriminatorValue'
+            {
+            match("discriminatorValue"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:50:7: ( 'inheritance per subclass' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:50:9: 'inheritance per subclass'
+            {
+            match("inheritance per subclass"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:51:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:51:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:52:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:52:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:53:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:53:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:54:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:54:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:55:7: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:55:9: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:56:7: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:56:9: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:57:7: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:57:9: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:58:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:58:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:59:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:59:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:60:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:60:9: '='
+            {
+            match('='); 
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:61:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:61:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:62:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:62:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:63:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:63:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:64:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:64:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:65:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:65:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:66:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:66:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:67:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:67:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:68:7: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:68:9: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:69:7: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:69:9: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:70:7: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:70:9: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:71:7: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:71:9: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:72:7: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:72:9: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:73:7: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:73:9: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:74:7: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:74:9: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:75:7: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:75:9: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:76:7: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:76:9: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:77:7: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:77:9: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:78:7: ( 'constraints' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:78:9: 'constraints'
+            {
+            match("constraints"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:79:7: ( 'key' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:79:9: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:80:7: ( 'value' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:80:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:81:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:81:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:82:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:82:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:83:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:83:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:84:7: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:84:9: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:85:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:85:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:86:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:86:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:87:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:87:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:88:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:88:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:89:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:89:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:90:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:90:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:91:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:91:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:92:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:92:9: '..'
+            {
+            match(".."); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:93:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:94:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:95:7: ( '@' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:96:7: ( '#' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:97:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:98:8: ( '-=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:99:8: ( '*=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:100:8: ( '/=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:101:8: ( '%=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:102:8: ( '<' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:103:8: ( '>' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:104:8: ( '>=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:105:8: ( '||' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:106:8: ( '&&' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:107:8: ( '==' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:108:8: ( '!=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:109:8: ( '===' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:110:8: ( '!==' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:111:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:111:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:112:8: ( '->' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:113:8: ( '..<' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:114:8: ( '=>' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:115:8: ( '<>' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:116:8: ( '?:' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:117:8: ( '**' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:118:8: ( '/' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:119:8: ( '%' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:120:8: ( '!' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:121:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:121:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:122:8: ( '++' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:123:8: ( '--' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:123:10: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:124:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:125:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:126:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:127:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:127:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:128:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:128:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:129:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:129:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:130:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:130:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:131:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:131:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:132:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:132:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:133:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:133:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:134:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:134:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:135:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:135:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:136:8: ( 'val' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:136:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:137:8: ( 'static' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:137:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:138:8: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:138:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:139:8: ( 'super' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:139:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:140:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:140:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:141:8: ( 'false' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:141:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:142:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:142:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:143:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:143:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:145:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:145:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:146:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:146:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:147:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:147:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:148:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:148:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:149:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:149:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:150:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:150:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:151:8: ( '?' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:151:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:152:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:152:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:153:8: ( 'INHERIT' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:153:10: 'INHERIT'
+            {
+            match("INHERIT"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:154:8: ( 'STRING' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:154:10: 'STRING'
+            {
+            match("STRING"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:155:8: ( 'CHAR' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:155:10: 'CHAR'
+            {
+            match("CHAR"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:156:8: ( 'INT' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:156:10: 'INT'
+            {
+            match("INT"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:157:8: ( 'DATE' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:157:10: 'DATE'
+            {
+            match("DATE"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:158:8: ( 'TIMESTAMP' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:158:10: 'TIMESTAMP'
+            {
+            match("TIMESTAMP"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:159:8: ( 'info' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:159:10: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:160:8: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:160:10: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:161:8: ( 'error' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:161:10: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:162:8: ( 'time' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:162:10: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:163:8: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:163:10: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:164:8: ( 'private' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:164:10: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:165:8: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:165:10: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:166:8: ( 'public' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:166:10: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:167:8: ( '<=' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:167:10: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:168:8: ( '0' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:168:10: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:169:8: ( '1' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:169:10: '1'
+            {
+            match('1'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__171"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13813: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13815:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13815:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13815: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13817: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13819:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13819:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13819:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13819: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13819: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13821: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13823:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13823:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13823: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13823: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13825: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13827:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13827:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13827: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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13829:16: ( . )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:13829:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=168;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:917: T__155
+                {
+                mT__155(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:924: T__156
+                {
+                mT__156(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:931: T__157
+                {
+                mT__157(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:938: T__158
+                {
+                mT__158(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:945: T__159
+                {
+                mT__159(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:952: T__160
+                {
+                mT__160(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:959: T__161
+                {
+                mT__161(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:966: T__162
+                {
+                mT__162(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:973: T__163
+                {
+                mT__163(); 
+
+                }
+                break;
+            case 152 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:980: T__164
+                {
+                mT__164(); 
+
+                }
+                break;
+            case 153 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:987: T__165
+                {
+                mT__165(); 
+
+                }
+                break;
+            case 154 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:994: T__166
+                {
+                mT__166(); 
+
+                }
+                break;
+            case 155 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1001: T__167
+                {
+                mT__167(); 
+
+                }
+                break;
+            case 156 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1008: T__168
+                {
+                mT__168(); 
+
+                }
+                break;
+            case 157 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1015: T__169
+                {
+                mT__169(); 
+
+                }
+                break;
+            case 158 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1022: T__170
+                {
+                mT__170(); 
+
+                }
+                break;
+            case 159 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1029: T__171
+                {
+                mT__171(); 
+
+                }
+                break;
+            case 160 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1036: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 161 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1045: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 162 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1054: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 163 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1067: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 164 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1075: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 165 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1087: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 166 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1103: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 167 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1119: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 168 :
+                // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1:1127: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\3\76\2\uffff\2\76\1\uffff\1\76\2\uffff\4\76\1\140\2\76\2\uffff\4\76\1\165\2\76\1\173\1\176\2\76\1\u0085\1\u0089\2\uffff\1\u008f\1\u0091\1\u0094\1\u0096\1\u0098\1\u009a\1\u009c\1\u009f\1\u00a1\6\76\1\u00ab\1\u00ad\1\u00ae\1\73\5\uffff\1\76\1\u00b4\1\uffff\6\76\2\uffff\6\76\1\uffff\4\76\2\uffff\7\76\1\u00d7\2\76\1\u00dd\2\uffff\7\76\2\uffff\2\76\1\u00ec\6\76\1\u00f6\2\uffff\4\76\1\u00fc\4\uffff\4\76\30\uffff\1\u0102\6\uffff\7\76\1\uffff\1\u00ae\6\uffff\1\76\1\uffff\1\76\1\uffff\5\76\1\u0114\34\76\1\uffff\5\76\1\uffff\7\76\1\u0147\4\76\1\u014d\1\76\1\uffff\3\76\1\u0153\1\u0154\1\u0156\2\76\2\uffff\1\u015a\2\76\1\u015d\2\uffff\2\76\1\u0160\1\76\2\uffff\3\76\1\u0165\5\76\2\uffff\2\76\1\u016f\2\76\1\u0172\1\uffff\4\76\1\u0178\4\76\1\u017d\1\76\1\u017f\20\76\1\u0190\1\76\1\u0192\3\76\1\u0196\17\76\1\uffff\5\76\1\uffff\4\76\1\u01b0\2\uffff\1\76\1\uffff\3\76\1\uffff\2\76\1\uffff\1\u01b7\1\76\1\uffff\1\u01b9\1\76\1\u01bb\1\76\1\uffff\1\76\1\u01be\1\u01bf\6\76\1\uffff\2\76\1\uffff\1\76\1\u01c9\3\76\1\uffff\1\u01cd\3\76\1\uffff\1\76\1\uffff\1\u01d3\7\76\1\u01db\7\76\1\uffff\1\76\1\uffff\1\u01e4\2\76\1\uffff\14\76\1\u01f3\2\76\1\u01f6\11\76\1\uffff\1\u0200\3\76\1\u0204\1\76\1\uffff\1\76\1\uffff\1\u0207\1\uffff\2\76\2\uffff\10\76\1\u0212\1\uffff\3\76\1\uffff\2\76\1\u0218\2\76\1\uffff\5\76\1\u0220\1\76\1\uffff\7\76\1\u0229\1\uffff\2\76\1\u022c\2\76\1\u022f\1\u0230\1\76\1\u0232\3\76\1\u0236\1\u0237\1\uffff\1\76\1\u0239\1\uffff\1\u023a\5\76\1\u0241\2\76\1\uffff\3\76\1\uffff\2\76\1\uffff\1\76\1\u024a\10\76\1\uffff\2\76\1\u0255\2\76\1\uffff\1\u0258\4\76\1\u025d\1\u025e\2\uffff\2\76\1\u0261\4\76\1\uffff\2\76\1\uffff\1\u0268\1\76\2\uffff\1\76\1\uffff\3\76\2\uffff\1\76\2\uffff\1\76\1\u0270\1\u0271\3\76\1\uffff\2\76\1\u0277\1\u0278\1\u0279\1\u027a\1\u027b\1\u027c\1\uffff\1\76\1\u027e\7\76\1\u0286\1\uffff\2\76\1\uffff\4\76\2\uffff\2\76\1\uffff\6\76\1\uffff\1\u0295\2\76\1\u0298\1\u0299\1\76\1\u029b\2\uffff\3\76\1\u029f\1\u02a0\6\uffff\1\76\1\uffff\1\u02a2\2\76\1\u02a5\1\u02a6\1\u02a7\1\u02a8\1\uffff\2\76\1\u02ab\2\76\1\u02ae\1\76\1\u02b0\2\76\1\u02b3\3\76\1\uffff\1\u02b7\1\76\2\uffff\1\76\1\uffff\1\76\1\u02bb\1\76\2\uffff\1\u02bd\1\uffff\1\u02be\1\76\4\uffff\1\76\1\u02c1\1\uffff\1\76\1\u02c3\1\uffff\1\u02c4\1\uffff\1\u02c5\1\u02c6\1\uffff\1\u02c7\1\76\1\u02c9\1\uffff\1\u02ca\2\76\1\uffff\1\76\2\uffff\1\76\1\u02cf\1\uffff\1\76\5\uffff\1\76\2\uffff\4\76\1\uffff\1\76\1\uffff\1\u02d8\2\76\1\u02db\1\76\2\uffff\2\76\1\uffff\1\76\1\uffff\4\76\1\u02e8\1\uffff\4\76\2\uffff\4\76\2\uffff\1\u02f4\1\76\1\u02f6\1\76\1\uffff\1\76\1\uffff\1\u02f9\1\u02fa\2\uffff";
+    static final String DFA21_eofS =
+        "\u02fb\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\142\1\151\1\141\2\uffff\1\141\1\154\1\uffff\1\141\2\uffff\1\141\1\145\1\156\1\144\1\40\1\143\1\145\2\uffff\1\160\2\141\1\166\1\75\1\141\1\145\1\56\1\52\1\141\1\145\1\53\1\55\2\uffff\1\52\3\75\1\174\1\46\1\75\1\56\1\72\1\141\1\116\1\124\1\110\1\101\1\111\3\60\1\44\5\uffff\1\163\1\40\1\uffff\1\163\1\155\1\142\1\141\1\160\1\162\2\uffff\1\143\1\154\2\164\1\163\1\162\1\uffff\1\162\1\151\1\143\1\142\2\uffff\1\160\1\147\1\156\1\141\2\151\1\144\1\44\1\160\1\106\1\44\2\uffff\1\150\1\164\1\151\1\141\1\160\1\156\1\146\2\uffff\1\160\1\146\1\44\1\147\1\164\1\157\1\154\1\162\1\155\1\75\2\uffff\1\162\1\154\1\156\1\171\1\74\4\uffff\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\110\1\122\1\101\1\124\1\115\1\uffff\1\60\6\uffff\1\164\1\142\1\145\1\uffff\1\164\1\145\1\154\1\156\1\145\1\44\1\145\1\157\1\150\2\143\1\163\1\154\1\151\1\155\2\145\1\157\1\163\1\160\1\166\1\153\1\154\1\160\1\104\1\103\1\104\1\156\1\161\1\144\2\145\1\164\1\157\1\uffff\1\157\1\141\1\162\1\141\1\157\1\uffff\2\145\3\164\1\145\1\143\1\44\1\145\1\165\1\157\1\151\1\44\1\141\1\uffff\1\143\1\151\1\141\3\44\1\163\1\124\2\uffff\1\44\1\163\1\141\1\44\2\uffff\1\171\1\156\1\44\1\154\2\uffff\1\154\1\156\1\105\1\44\1\111\1\122\2\105\1\162\2\uffff\1\146\1\157\1\44\1\145\1\163\1\44\1\uffff\1\157\1\167\2\141\1\44\1\150\1\164\1\145\1\164\1\44\1\156\1\44\1\162\1\151\2\145\2\141\1\151\1\145\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\44\1\165\1\44\1\170\1\162\1\141\1\44\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\155\1\162\1\151\1\143\1\151\1\162\1\150\1\162\1\uffff\1\170\1\162\1\163\1\166\1\165\1\uffff\1\151\1\162\2\164\1\44\2\uffff\1\145\1\uffff\1\151\1\171\1\165\1\uffff\1\145\1\154\1\uffff\1\44\1\165\1\uffff\1\44\1\145\1\44\1\122\1\uffff\1\116\2\44\1\123\2\141\1\162\1\145\1\164\1\uffff\1\116\1\151\1\uffff\1\146\1\44\1\141\1\142\1\144\1\uffff\1\44\1\162\1\143\1\171\1\uffff\1\144\1\uffff\1\44\1\163\1\162\1\143\1\164\1\147\1\143\1\144\1\44\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\uffff\1\145\1\uffff\1\44\1\151\1\156\1\uffff\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\141\1\151\1\156\1\150\1\143\1\44\1\162\1\163\1\44\1\156\1\151\1\145\1\154\1\156\1\151\1\163\2\171\1\uffff\1\44\1\157\1\160\1\154\1\44\1\154\1\uffff\1\154\1\uffff\1\44\1\uffff\1\111\1\107\2\uffff\1\124\1\143\1\165\1\151\1\160\2\141\1\145\1\44\1\uffff\1\142\1\154\1\145\1\uffff\1\141\1\164\1\44\1\163\1\151\1\uffff\3\164\2\145\1\44\1\40\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\44\1\uffff\1\164\1\143\1\44\1\145\1\162\2\44\1\165\1\44\1\116\1\164\1\147\2\44\1\uffff\1\157\1\44\1\uffff\1\44\1\164\1\144\1\164\1\104\1\155\1\44\2\160\1\uffff\1\156\1\145\1\154\1\uffff\1\171\1\154\1\uffff\1\124\1\44\1\101\1\164\1\154\1\172\1\145\2\155\1\156\1\uffff\1\154\1\145\1\44\2\151\1\uffff\1\44\1\157\1\145\1\151\1\145\2\44\2\uffff\1\155\1\145\1\44\1\113\1\155\1\145\1\151\1\uffff\1\141\1\145\1\uffff\1\44\1\145\2\uffff\1\154\1\uffff\1\141\1\171\1\163\2\uffff\1\156\2\uffff\1\145\2\44\2\145\1\151\1\uffff\2\145\6\44\1\uffff\1\115\1\44\1\164\1\145\1\156\1\160\1\145\1\164\1\145\1\44\1\uffff\1\156\1\157\1\uffff\2\156\1\145\1\144\2\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\156\1\157\1\uffff\1\44\1\154\1\155\2\44\1\151\1\44\2\uffff\1\163\1\171\1\156\2\44\6\uffff\1\120\1\uffff\1\44\2\144\4\44\1\uffff\1\164\1\156\1\44\1\143\1\163\1\44\1\154\1\44\1\171\1\154\1\44\1\145\1\143\1\146\1\uffff\1\44\1\145\2\uffff\1\172\1\uffff\1\143\1\44\1\141\2\uffff\1\44\1\uffff\1\44\1\145\4\uffff\1\163\1\44\1\uffff\1\145\1\44\1\uffff\1\44\1\uffff\2\44\1\uffff\1\44\1\145\1\44\1\uffff\1\44\1\145\1\162\1\uffff\1\164\2\uffff\1\156\1\44\1\uffff\1\125\5\uffff\1\40\2\uffff\1\144\1\151\1\157\1\164\1\uffff\1\156\1\160\1\44\1\160\1\162\1\44\1\151\1\145\1\uffff\1\164\1\103\1\uffff\1\164\1\162\1\151\1\157\1\171\1\141\1\44\1\40\1\157\1\154\1\160\1\154\1\uffff\1\143\1\156\1\165\1\145\1\165\2\uffff\1\44\1\155\1\44\1\145\1\uffff\1\156\1\uffff\2\44\2\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\163\1\151\1\171\2\uffff\1\157\1\170\1\uffff\1\165\2\uffff\1\163\1\145\1\165\1\163\1\40\1\171\1\145\2\uffff\1\160\1\164\1\145\1\166\1\76\1\157\1\145\1\56\1\75\1\141\1\165\1\75\1\76\2\uffff\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\150\1\116\1\124\1\110\1\101\1\111\1\170\2\154\1\172\5\uffff\1\163\1\172\1\uffff\1\163\1\155\1\142\1\171\1\160\1\162\2\uffff\1\164\1\156\1\165\1\164\1\163\1\162\1\uffff\1\162\1\157\1\143\1\142\2\uffff\1\170\1\147\1\156\1\141\2\151\1\163\1\172\1\160\1\124\1\172\2\uffff\1\150\1\166\1\151\1\141\1\160\1\156\1\164\2\uffff\1\160\1\162\1\172\1\163\1\164\1\157\2\162\1\155\1\75\2\uffff\1\162\1\154\1\156\1\171\1\74\4\uffff\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\124\1\122\1\101\1\124\1\115\1\uffff\1\154\6\uffff\1\164\1\160\1\145\1\uffff\1\164\1\145\1\154\1\156\1\145\1\172\1\145\1\157\1\150\1\145\1\143\1\163\1\154\1\151\1\155\2\145\1\157\1\163\1\164\1\166\1\153\1\154\1\164\1\116\1\111\1\116\1\156\1\161\1\144\2\145\1\164\1\157\1\uffff\1\157\1\165\1\162\1\141\1\165\1\uffff\2\145\3\164\1\145\1\143\1\172\1\145\1\165\1\157\1\151\1\172\1\141\1\uffff\1\143\1\151\1\145\3\172\1\163\1\124\2\uffff\1\172\1\163\1\141\1\172\2\uffff\1\171\1\156\1\172\1\154\2\uffff\1\154\1\156\1\105\1\172\1\111\1\122\2\105\1\162\2\uffff\1\146\1\157\1\172\1\145\1\163\1\172\1\uffff\1\157\1\167\1\145\1\141\1\172\1\150\1\164\1\145\1\164\1\172\1\156\1\172\1\162\1\151\2\145\2\141\1\151\1\145\1\157\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\172\1\165\1\172\1\170\1\162\1\141\1\172\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\155\1\162\1\151\1\143\1\151\1\162\1\150\1\162\1\uffff\1\170\1\162\1\163\1\166\1\165\1\uffff\1\151\1\162\2\164\1\172\2\uffff\1\145\1\uffff\1\151\1\171\1\165\1\uffff\1\145\1\154\1\uffff\1\172\1\165\1\uffff\1\172\1\145\1\172\1\122\1\uffff\1\116\2\172\1\123\2\141\1\162\1\145\1\164\1\uffff\1\116\1\151\1\uffff\1\146\1\172\1\141\1\142\1\144\1\uffff\1\172\1\162\1\143\1\171\1\uffff\1\163\1\uffff\1\172\1\163\1\162\1\143\1\164\1\147\1\143\1\144\1\172\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\uffff\1\145\1\uffff\1\172\1\151\1\156\1\uffff\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\141\1\151\1\156\1\150\1\143\1\172\1\162\1\163\1\172\1\156\1\151\1\145\1\154\1\156\1\151\1\163\2\171\1\uffff\1\172\1\157\1\160\1\154\1\172\1\154\1\uffff\1\154\1\uffff\1\172\1\uffff\1\111\1\107\2\uffff\1\124\1\143\1\165\1\151\1\160\2\141\1\145\1\172\1\uffff\1\142\1\154\1\145\1\uffff\1\141\1\164\1\172\1\163\1\151\1\uffff\3\164\2\145\1\172\1\40\1\uffff\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\172\1\uffff\1\164\1\143\1\172\1\145\1\162\2\172\1\165\1\172\1\116\1\164\1\147\2\172\1\uffff\1\157\1\172\1\uffff\1\172\1\164\1\144\1\164\1\113\1\155\1\172\2\160\1\uffff\1\156\1\145\1\154\1\uffff\1\171\1\154\1\uffff\1\124\1\172\1\101\1\164\1\154\1\172\1\145\2\155\1\156\1\uffff\1\154\1\145\1\172\2\151\1\uffff\1\172\1\157\1\145\1\151\1\145\2\172\2\uffff\1\155\1\145\1\172\1\113\1\155\1\145\1\151\1\uffff\1\141\1\145\1\uffff\1\172\1\145\2\uffff\1\154\1\uffff\1\141\1\171\1\163\2\uffff\1\156\2\uffff\1\145\2\172\2\145\1\151\1\uffff\2\145\6\172\1\uffff\1\115\1\172\1\164\1\145\1\156\1\160\1\145\1\164\1\145\1\172\1\uffff\1\156\1\157\1\uffff\2\156\1\145\1\144\2\uffff\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\1\156\1\157\1\uffff\1\172\1\154\1\155\2\172\1\151\1\172\2\uffff\1\163\1\171\1\156\2\172\6\uffff\1\120\1\uffff\1\172\2\144\4\172\1\uffff\1\164\1\156\1\172\1\143\1\163\1\172\1\154\1\172\1\171\1\154\1\172\1\145\1\143\1\146\1\uffff\1\172\1\145\2\uffff\1\172\1\uffff\1\143\1\172\1\141\2\uffff\1\172\1\uffff\1\172\1\145\4\uffff\1\163\1\172\1\uffff\1\145\1\172\1\uffff\1\172\1\uffff\2\172\1\uffff\1\172\1\145\1\172\1\uffff\1\172\1\145\1\162\1\uffff\1\164\2\uffff\1\156\1\172\1\uffff\1\125\5\uffff\1\40\2\uffff\1\144\1\151\1\157\1\164\1\uffff\1\156\1\160\1\172\1\160\1\162\1\172\1\151\1\145\1\uffff\1\164\1\126\1\uffff\1\164\1\162\1\151\1\157\1\171\1\141\1\172\1\40\1\157\1\154\1\160\1\154\1\uffff\1\163\1\156\1\165\1\145\1\165\2\uffff\1\172\1\155\1\172\1\145\1\uffff\1\156\1\uffff\2\172\2\uffff";
+    static final String DFA21_acceptS =
+        "\4\uffff\1\4\1\5\2\uffff\1\11\1\uffff\1\13\1\14\7\uffff\1\26\1\27\15\uffff\1\125\1\126\23\uffff\1\u00a3\2\u00a4\1\u00a7\1\u00a8\2\uffff\1\u00a3\6\uffff\1\4\1\5\6\uffff\1\11\4\uffff\1\13\1\14\13\uffff\1\21\1\43\7\uffff\1\26\1\27\12\uffff\1\150\1\62\5\uffff\1\107\1\131\1\153\1\110\4\uffff\1\127\1\160\1\123\1\130\1\146\1\161\1\124\1\125\1\126\1\132\1\u00a5\1\u00a6\1\154\1\133\1\155\1\151\1\u009d\1\134\1\136\1\135\1\137\1\164\1\140\1\u008e\1\uffff\1\156\1\152\1\163\1\u008d\1\162\1\170\7\uffff\1\u00a0\1\uffff\1\u009e\1\u00a2\1\u009f\1\u00a1\1\u00a4\1\u00a7\3\uffff\1\157\42\uffff\1\36\5\uffff\1\165\16\uffff\1\175\10\uffff\1\143\1\141\4\uffff\1\147\1\122\4\uffff\1\144\1\142\11\uffff\1\55\1\57\6\uffff\1\u0089\62\uffff\1\24\5\uffff\1\42\5\uffff\1\117\1\35\1\uffff\1\176\3\uffff\1\173\2\uffff\1\105\2\uffff\1\u0082\4\uffff\1\u0092\11\uffff\1\u0098\2\uffff\1\u0084\5\uffff\1\172\4\uffff\1\101\1\uffff\1\166\20\uffff\1\16\1\uffff\1\37\3\uffff\1\u0095\31\uffff\1\120\6\uffff\1\115\1\uffff\1\u0085\1\uffff\1\u0096\2\uffff\1\u0091\1\u0093\11\uffff\1\u0087\3\uffff\1\u008c\5\uffff\1\u0097\7\uffff\1\121\10\uffff\1\20\16\uffff\1\u0081\2\uffff\1\77\11\uffff\1\106\3\uffff\1\u0083\2\uffff\1\174\12\uffff\1\u0086\5\uffff\1\7\7\uffff\1\u009c\1\15\7\uffff\1\17\2\uffff\1\52\2\uffff\1\65\1\72\1\uffff\1\76\3\uffff\1\167\1\177\1\uffff\1\113\1\u0088\6\uffff\1\70\10\uffff\1\u0090\12\uffff\1\25\2\uffff\1\10\4\uffff\1\u009a\1\51\2\uffff\1\61\6\uffff\1\60\7\uffff\1\33\1\171\5\uffff\1\40\1\54\1\103\1\u008a\1\116\1\u008f\1\uffff\1\1\7\uffff\1\111\16\uffff\1\71\2\uffff\1\64\1\114\1\uffff\1\30\3\uffff\1\53\1\56\1\uffff\1\102\2\uffff\1\u0099\1\23\1\32\1\6\2\uffff\1\u0080\2\uffff\1\u009b\1\uffff\1\73\2\uffff\1\74\3\uffff\1\75\3\uffff\1\41\1\uffff\1\u0094\1\2\2\uffff\1\112\1\uffff\1\31\1\66\1\63\1\67\1\100\1\uffff\1\145\1\22\4\uffff\1\104\10\uffff\1\u008b\2\uffff\1\3\14\uffff\1\12\5\uffff\1\44\1\50\4\uffff\1\34\1\uffff\1\46\2\uffff\1\47\1\45";
+    static final String DFA21_specialS =
+        "\1\0\u02fa\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\73\2\72\2\73\1\72\22\73\1\72\1\52\1\70\1\43\1\67\1\45\1\51\1\71\1\4\1\5\1\35\1\40\1\20\1\41\1\34\1\44\1\63\1\64\10\65\1\54\1\12\1\46\1\31\1\47\1\53\1\42\2\67\1\60\1\61\4\67\1\56\11\67\1\57\1\62\6\67\1\23\1\73\1\24\1\66\1\67\1\73\1\1\1\15\1\6\1\26\1\7\1\32\1\67\1\2\1\17\1\30\1\33\1\36\1\14\1\37\1\25\1\11\1\67\1\22\1\21\1\3\1\16\1\27\1\55\3\67\1\10\1\50\1\13\uff82\73",
+            "\1\74\20\uffff\1\75",
+            "\1\77",
+            "\1\101\6\uffff\1\104\1\100\10\uffff\1\102\6\uffff\1\103",
+            "",
+            "",
+            "\1\107\15\uffff\1\110",
+            "\1\113\1\uffff\1\111\3\uffff\1\114\5\uffff\1\112",
+            "",
+            "\1\120\3\uffff\1\116\14\uffff\1\117\2\uffff\1\121",
+            "",
+            "",
+            "\1\124\7\uffff\1\126\11\uffff\1\125",
+            "\1\127",
+            "\1\130\6\uffff\1\131",
+            "\1\133\1\uffff\1\136\6\uffff\1\134\1\132\4\uffff\1\135",
+            "\1\137",
+            "\1\141\1\uffff\1\142\16\uffff\1\144\1\145\1\uffff\1\143\1\uffff\1\146",
+            "\1\147",
+            "",
+            "",
+            "\1\152",
+            "\1\156\3\uffff\1\153\3\uffff\1\155\5\uffff\1\154\4\uffff\1\157",
+            "\1\160\3\uffff\1\161",
+            "\1\162",
+            "\1\163\1\164",
+            "\1\167\7\uffff\1\170\5\uffff\1\166",
+            "\1\171",
+            "\1\172",
+            "\1\175\22\uffff\1\174",
+            "\1\177",
+            "\1\u0081\11\uffff\1\u0080\5\uffff\1\u0082",
+            "\1\u0084\21\uffff\1\u0083",
+            "\1\u0088\17\uffff\1\u0086\1\u0087",
+            "",
+            "",
+            "\1\u008d\4\uffff\1\u008e\15\uffff\1\u008c",
+            "\1\u0090",
+            "\1\u0093\1\u0092",
+            "\1\u0095",
+            "\1\u0097",
+            "\1\u0099",
+            "\1\u009b",
+            "\1\u009e\13\uffff\1\u009d",
+            "\1\u00a0",
+            "\1\u00a3\6\uffff\1\u00a2",
+            "\1\u00a4",
+            "\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\1\u00a8",
+            "\12\u00aa\10\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac\13\uffff\1\u00a9\6\uffff\1\u00aa\2\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac\13\uffff\1\u00a9",
+            "\12\u00aa\10\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac\22\uffff\1\u00aa\2\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac",
+            "\12\u00aa\10\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac\22\uffff\1\u00aa\2\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac",
+            "\1\76\34\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00b1",
+            "\1\u00b2\3\uffff\1\76\13\uffff\12\76\7\uffff\3\76\1\u00b3\26\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8\23\uffff\1\u00b9\3\uffff\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "",
+            "",
+            "\1\u00bd\17\uffff\1\u00be\1\u00bf",
+            "\1\u00c1\1\uffff\1\u00c0",
+            "\1\u00c2\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "",
+            "\1\u00c7",
+            "\1\u00c9\5\uffff\1\u00c8",
+            "\1\u00ca",
+            "\1\u00cb",
+            "",
+            "",
+            "\1\u00cc\7\uffff\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3\1\uffff\1\u00d6\1\uffff\1\u00d4\12\uffff\1\u00d5",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u00d8",
+            "\1\u00d9\7\uffff\1\u00dc\1\uffff\1\u00db\3\uffff\1\u00da",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u00de",
+            "\1\u00e0\1\uffff\1\u00df",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5\1\u00e6\14\uffff\1\u00e7",
+            "",
+            "",
+            "\1\u00e8",
+            "\1\u00ea\13\uffff\1\u00e9",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\14\76\1\u00eb\15\76",
+            "\1\u00ee\13\uffff\1\u00ed",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\u00f2\5\uffff\1\u00f1",
+            "\1\u00f3",
+            "\1\u00f4",
+            "\1\u00f5",
+            "",
+            "",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0101",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105\13\uffff\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "",
+            "\12\u00aa\10\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac\22\uffff\1\u00aa\2\uffff\1\u00ac\1\uffff\3\u00ac\5\uffff\1\u00ac",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u010b",
+            "\1\u010d\15\uffff\1\u010c",
+            "\1\u010e",
+            "",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118\1\uffff\1\u0119",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123\3\uffff\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128\3\uffff\1\u0129",
+            "\1\u012a\11\uffff\1\u012b",
+            "\1\u012c\5\uffff\1\u012d",
+            "\1\u012e\10\uffff\1\u0130\1\u012f",
+            "\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "",
+            "\1\u0138",
+            "\1\u0139\23\uffff\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d\5\uffff\1\u013e",
+            "",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\4\76\1\u0146\25\76",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\1\u014c\31\76",
+            "\1\u014e",
+            "",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151\3\uffff\1\u0152",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\24\76\1\u0155\5\76",
+            "\1\u0157",
+            "\1\u0158",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\15\76\1\u0159\14\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0161",
+            "",
+            "",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "",
+            "",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\3\76\1\u016d\16\76\1\u016e\7\76",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0176\3\uffff\1\u0175",
+            "\1\u0177",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u017e",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0191",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\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\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\76\13\uffff\12\76\7\uffff\23\76\1\u01af\6\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u01b1",
+            "",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "",
+            "\1\u01b5",
+            "\1\u01b6",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01b8",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01ba",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01bc",
+            "",
+            "\1\u01bd",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "",
+            "\1\u01c6",
+            "\1\u01c7",
+            "",
+            "\1\u01c8",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "",
+            "\1\u01d1\16\uffff\1\u01d2",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\1\u01da",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01dc",
+            "\1\u01dd",
+            "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0",
+            "\1\u01e1",
+            "\1\u01e2",
+            "",
+            "\1\u01e3",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01e5",
+            "\1\u01e6",
+            "",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\u01ee",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0205",
+            "",
+            "\1\u0206",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0208",
+            "\1\u0209",
+            "",
+            "",
+            "\1\u020a",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\u0210",
+            "\1\u0211",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0213",
+            "\1\u0214",
+            "\1\u0215",
+            "",
+            "\1\u0216",
+            "\1\u0217",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0219",
+            "\1\u021a",
+            "",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\u021d",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0221",
+            "",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "\1\u0227",
+            "\1\u0228",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u022d",
+            "\1\u022e",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0231",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0233",
+            "\1\u0234",
+            "\1\u0235",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0238",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u023b",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e\6\uffff\1\u023f",
+            "\1\u0240",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0242",
+            "\1\u0243",
+            "",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "",
+            "\1\u0247",
+            "\1\u0248",
+            "",
+            "\1\u0249",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u024b",
+            "\1\u024c",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0250",
+            "\1\u0251",
+            "\1\u0252",
+            "",
+            "\1\u0253",
+            "\1\u0254",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0256",
+            "\1\u0257",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0259",
+            "\1\u025a",
+            "\1\u025b",
+            "\1\u025c",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0262",
+            "\1\u0263",
+            "\1\u0264",
+            "\1\u0265",
+            "",
+            "\1\u0266",
+            "\1\u0267",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0269",
+            "",
+            "",
+            "\1\u026a",
+            "",
+            "\1\u026b",
+            "\1\u026c",
+            "\1\u026d",
+            "",
+            "",
+            "\1\u026e",
+            "",
+            "",
+            "\1\u026f",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0272",
+            "\1\u0273",
+            "\1\u0274",
+            "",
+            "\1\u0275",
+            "\1\u0276",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u027d",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u027f",
+            "\1\u0280",
+            "\1\u0281",
+            "\1\u0282",
+            "\1\u0283",
+            "\1\u0284",
+            "\1\u0285",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u0287",
+            "\1\u0288",
+            "",
+            "\1\u0289",
+            "\1\u028a",
+            "\1\u028b",
+            "\1\u028c",
+            "",
+            "",
+            "\1\u028d",
+            "\1\u028e",
+            "",
+            "\1\u028f",
+            "\1\u0290",
+            "\1\u0291",
+            "\1\u0292",
+            "\1\u0293",
+            "\1\u0294",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u0296",
+            "\1\u0297",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u029a",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "\1\u029c",
+            "\1\u029d",
+            "\1\u029e",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02a1",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02a3",
+            "\1\u02a4",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u02a9",
+            "\1\u02aa",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02ac",
+            "\1\u02ad",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02af",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02b1",
+            "\1\u02b2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02b4",
+            "\1\u02b5",
+            "\1\u02b6",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02b8",
+            "",
+            "",
+            "\1\u02b9",
+            "",
+            "\1\u02ba",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02bc",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02bf",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02c0",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u02c2",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02c8",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02cb",
+            "\1\u02cc",
+            "",
+            "\1\u02cd",
+            "",
+            "",
+            "\1\u02ce",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            "\1\u02d0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u02d1",
+            "",
+            "",
+            "\1\u02d2",
+            "\1\u02d3",
+            "\1\u02d4",
+            "\1\u02d5",
+            "",
+            "\1\u02d6",
+            "\1\u02d7",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02d9",
+            "\1\u02da",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02dc",
+            "\1\u02dd",
+            "",
+            "\1\u02de",
+            "\1\u02df\20\uffff\1\u02e0\1\uffff\1\u02e1",
+            "",
+            "\1\u02e2",
+            "\1\u02e3",
+            "\1\u02e4",
+            "\1\u02e5",
+            "\1\u02e6",
+            "\1\u02e7",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02e9",
+            "\1\u02ea",
+            "\1\u02eb",
+            "\1\u02ec",
+            "\1\u02ed",
+            "",
+            "\1\u02ee\17\uffff\1\u02ef",
+            "\1\u02f0",
+            "\1\u02f1",
+            "\1\u02f2",
+            "\1\u02f3",
+            "",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02f5",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\u02f7",
+            "",
+            "\1\u02f8",
+            "",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "\1\76\13\uffff\12\76\7\uffff\32\76\4\uffff\1\76\1\uffff\32\76",
+            "",
+            ""
+    };
+
+    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 | 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=='a') ) {s = 1;}
+
+                        else if ( (LA21_0=='h') ) {s = 2;}
+
+                        else if ( (LA21_0=='t') ) {s = 3;}
+
+                        else if ( (LA21_0=='(') ) {s = 4;}
+
+                        else if ( (LA21_0==')') ) {s = 5;}
+
+                        else if ( (LA21_0=='c') ) {s = 6;}
+
+                        else if ( (LA21_0=='e') ) {s = 7;}
+
+                        else if ( (LA21_0=='{') ) {s = 8;}
+
+                        else if ( (LA21_0=='p') ) {s = 9;}
+
+                        else if ( (LA21_0==';') ) {s = 10;}
+
+                        else if ( (LA21_0=='}') ) {s = 11;}
+
+                        else if ( (LA21_0=='m') ) {s = 12;}
+
+                        else if ( (LA21_0=='b') ) {s = 13;}
+
+                        else if ( (LA21_0=='u') ) {s = 14;}
+
+                        else if ( (LA21_0=='i') ) {s = 15;}
+
+                        else if ( (LA21_0==',') ) {s = 16;}
+
+                        else if ( (LA21_0=='s') ) {s = 17;}
+
+                        else if ( (LA21_0=='r') ) {s = 18;}
+
+                        else if ( (LA21_0=='[') ) {s = 19;}
+
+                        else if ( (LA21_0==']') ) {s = 20;}
+
+                        else if ( (LA21_0=='o') ) {s = 21;}
+
+                        else if ( (LA21_0=='d') ) {s = 22;}
+
+                        else if ( (LA21_0=='v') ) {s = 23;}
+
+                        else if ( (LA21_0=='j') ) {s = 24;}
+
+                        else if ( (LA21_0=='=') ) {s = 25;}
+
+                        else if ( (LA21_0=='f') ) {s = 26;}
+
+                        else if ( (LA21_0=='k') ) {s = 27;}
+
+                        else if ( (LA21_0=='.') ) {s = 28;}
+
+                        else if ( (LA21_0=='*') ) {s = 29;}
+
+                        else if ( (LA21_0=='l') ) {s = 30;}
+
+                        else if ( (LA21_0=='n') ) {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==':') ) {s = 44;}
+
+                        else if ( (LA21_0=='w') ) {s = 45;}
+
+                        else if ( (LA21_0=='I') ) {s = 46;}
+
+                        else if ( (LA21_0=='S') ) {s = 47;}
+
+                        else if ( (LA21_0=='C') ) {s = 48;}
+
+                        else if ( (LA21_0=='D') ) {s = 49;}
+
+                        else if ( (LA21_0=='T') ) {s = 50;}
+
+                        else if ( (LA21_0=='0') ) {s = 51;}
+
+                        else if ( (LA21_0=='1') ) {s = 52;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 53;}
+
+                        else if ( (LA21_0=='^') ) {s = 54;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='B')||(LA21_0>='E' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='R')||(LA21_0>='U' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='g'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 55;}
+
+                        else if ( (LA21_0=='\"') ) {s = 56;}
+
+                        else if ( (LA21_0=='\'') ) {s = 57;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 58;}
+
+                        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 = 59;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammarParser.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammarParser.java
new file mode 100644
index 0000000..4eb17d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+
+
+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 InternalEntityGrammarParserSignatures {
+     EObject entryRuleEntityModel() throws RecognitionException;
+     EObject ruleEntityModel() throws RecognitionException;
+     EObject entryRuleClass() throws RecognitionException;
+     EObject ruleClass() throws RecognitionException;
+     EObject entryRuleIndex() throws RecognitionException;
+     EObject ruleIndex() throws RecognitionException;
+     EObject entryRuleEntityPersistenceInfo() throws RecognitionException;
+     EObject ruleEntityPersistenceInfo() throws RecognitionException;
+     EObject entryRuleColumnPersistenceInfo() throws RecognitionException;
+     EObject ruleColumnPersistenceInfo() throws RecognitionException;
+     EObject entryRuleEntityFeature() throws RecognitionException;
+     EObject ruleEntityFeature() throws RecognitionException;
+     EObject entryRuleBeanFeature() throws RecognitionException;
+     EObject ruleBeanFeature() throws RecognitionException;
+     EObject entryRuleEntityInheritanceStrategy() throws RecognitionException;
+     EObject ruleEntityInheritanceStrategy() throws RecognitionException;
+     EObject entryRuleTablePerClassStrategy() throws RecognitionException;
+     EObject ruleTablePerClassStrategy() throws RecognitionException;
+     EObject entryRuleTablePerSubclassStrategy() throws RecognitionException;
+     EObject ruleTablePerSubclassStrategy() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleTRANSLATABLEID() throws RecognitionException;
+     EObject entryRuleTypedPackage() throws RecognitionException;
+     EObject ruleTypedPackage() throws RecognitionException;
+     EObject entryRuleType() throws RecognitionException;
+     EObject ruleType() throws RecognitionException;
+     EObject entryRuleImport() throws RecognitionException;
+     EObject ruleImport() throws RecognitionException;
+     EObject entryRuleDataType() throws RecognitionException;
+     EObject ruleDataType() throws RecognitionException;
+     EObject entryRuleAllConstraints() throws RecognitionException;
+     EObject ruleAllConstraints() throws RecognitionException;
+     EObject entryRuleDataTypeConstraint() throws RecognitionException;
+     EObject ruleDataTypeConstraint() throws RecognitionException;
+     EObject entryRuleDateConstraint() throws RecognitionException;
+     EObject ruleDateConstraint() throws RecognitionException;
+     EObject entryRuleBlobTypeConstraint() throws RecognitionException;
+     EObject ruleBlobTypeConstraint() throws RecognitionException;
+     EObject entryRuleDtCAssertFalse() throws RecognitionException;
+     EObject ruleDtCAssertFalse() throws RecognitionException;
+     EObject entryRuleDtCAssertTrue() throws RecognitionException;
+     EObject ruleDtCAssertTrue() throws RecognitionException;
+     EObject entryRuleDtCDecimalMax() throws RecognitionException;
+     EObject ruleDtCDecimalMax() throws RecognitionException;
+     EObject entryRuleDtCDecimalMin() throws RecognitionException;
+     EObject ruleDtCDecimalMin() throws RecognitionException;
+     EObject entryRuleDtCDigits() throws RecognitionException;
+     EObject ruleDtCDigits() throws RecognitionException;
+     EObject entryRuleDtCFuture() throws RecognitionException;
+     EObject ruleDtCFuture() throws RecognitionException;
+     EObject entryRuleDtCPast() throws RecognitionException;
+     EObject ruleDtCPast() throws RecognitionException;
+     EObject entryRuleDtCNumericMax() throws RecognitionException;
+     EObject ruleDtCNumericMax() throws RecognitionException;
+     EObject entryRuleDtCNumericMin() throws RecognitionException;
+     EObject ruleDtCNumericMin() throws RecognitionException;
+     EObject entryRuleDtCNotNull() throws RecognitionException;
+     EObject ruleDtCNotNull() throws RecognitionException;
+     EObject entryRuleDtCNull() throws RecognitionException;
+     EObject ruleDtCNull() throws RecognitionException;
+     EObject entryRuleDtCRegEx() throws RecognitionException;
+     EObject ruleDtCRegEx() throws RecognitionException;
+     EObject entryRuleDtCSize() throws RecognitionException;
+     EObject ruleDtCSize() throws RecognitionException;
+     EObject entryRuleScalarType() throws RecognitionException;
+     EObject ruleScalarType() throws RecognitionException;
+     EObject entryRuleEnum() throws RecognitionException;
+     EObject ruleEnum() throws RecognitionException;
+     EObject entryRuleEnumLiteral() throws RecognitionException;
+     EObject ruleEnumLiteral() throws RecognitionException;
+     EObject entryRuleAnnotationDef() throws RecognitionException;
+     EObject ruleAnnotationDef() throws RecognitionException;
+     EObject entryRuleResultFilters() throws RecognitionException;
+     EObject ruleResultFilters() throws RecognitionException;
+     EObject entryRuleResultFilter() throws RecognitionException;
+     EObject ruleResultFilter() throws RecognitionException;
+     EObject entryRuleAttributeMatchingConstraint() throws RecognitionException;
+     EObject ruleAttributeMatchingConstraint() throws RecognitionException;
+     EObject entryRuleKeyAndValue() throws RecognitionException;
+     EObject ruleKeyAndValue() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleLQualifiedNameWithWildCard() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleLFQN() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleValidIDWithKeywords() throws RecognitionException;
+     EObject entryRuleMultiplicity() throws RecognitionException;
+     EObject ruleMultiplicity() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleLInt() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleLDecimal() throws RecognitionException;
+     EObject entryRuleXAnnotation() throws RecognitionException;
+     EObject ruleXAnnotation() throws RecognitionException;
+     EObject entryRuleXAnnotationElementValuePair() throws RecognitionException;
+     EObject ruleXAnnotationElementValuePair() throws RecognitionException;
+     EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException;
+     EObject ruleXAnnotationElementValueOrCommaList() throws RecognitionException;
+     EObject entryRuleXAnnotationElementValue() throws RecognitionException;
+     EObject ruleXAnnotationElementValue() throws RecognitionException;
+     EObject entryRuleXAnnotationOrExpression() throws RecognitionException;
+     EObject ruleXAnnotationOrExpression() throws RecognitionException;
+     EObject entryRuleXExpression() throws RecognitionException;
+     EObject ruleXExpression() throws RecognitionException;
+     EObject entryRuleXAssignment() throws RecognitionException;
+     EObject ruleXAssignment() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException;
+     EObject entryRuleXOrExpression() throws RecognitionException;
+     EObject ruleXOrExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException;
+     EObject entryRuleXAndExpression() throws RecognitionException;
+     EObject ruleXAndExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException;
+     EObject entryRuleXEqualityExpression() throws RecognitionException;
+     EObject ruleXEqualityExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException;
+     EObject entryRuleXRelationalExpression() throws RecognitionException;
+     EObject ruleXRelationalExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException;
+     EObject entryRuleXOtherOperatorExpression() throws RecognitionException;
+     EObject ruleXOtherOperatorExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpOther() throws RecognitionException;
+     EObject entryRuleXAdditiveExpression() throws RecognitionException;
+     EObject ruleXAdditiveExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException;
+     EObject entryRuleXMultiplicativeExpression() throws RecognitionException;
+     EObject ruleXMultiplicativeExpression() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException;
+     EObject entryRuleXUnaryOperation() throws RecognitionException;
+     EObject ruleXUnaryOperation() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException;
+     EObject entryRuleXCastedExpression() throws RecognitionException;
+     EObject ruleXCastedExpression() throws RecognitionException;
+     EObject entryRuleXPostfixOperation() throws RecognitionException;
+     EObject ruleXPostfixOperation() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException;
+     EObject entryRuleXMemberFeatureCall() throws RecognitionException;
+     EObject ruleXMemberFeatureCall() throws RecognitionException;
+     EObject entryRuleXPrimaryExpression() throws RecognitionException;
+     EObject ruleXPrimaryExpression() throws RecognitionException;
+     EObject entryRuleXLiteral() throws RecognitionException;
+     EObject ruleXLiteral() throws RecognitionException;
+     EObject entryRuleXCollectionLiteral() throws RecognitionException;
+     EObject ruleXCollectionLiteral() throws RecognitionException;
+     EObject entryRuleXSetLiteral() throws RecognitionException;
+     EObject ruleXSetLiteral() throws RecognitionException;
+     EObject entryRuleXListLiteral() throws RecognitionException;
+     EObject ruleXListLiteral() throws RecognitionException;
+     EObject entryRuleXClosure() throws RecognitionException;
+     EObject ruleXClosure() throws RecognitionException;
+     EObject entryRuleXExpressionInClosure() throws RecognitionException;
+     EObject ruleXExpressionInClosure() throws RecognitionException;
+     EObject entryRuleXShortClosure() throws RecognitionException;
+     EObject ruleXShortClosure() throws RecognitionException;
+     EObject entryRuleXParenthesizedExpression() throws RecognitionException;
+     EObject ruleXParenthesizedExpression() throws RecognitionException;
+     EObject entryRuleXIfExpression() throws RecognitionException;
+     EObject ruleXIfExpression() throws RecognitionException;
+     EObject entryRuleXSwitchExpression() throws RecognitionException;
+     EObject ruleXSwitchExpression() throws RecognitionException;
+     EObject entryRuleXCasePart() throws RecognitionException;
+     EObject ruleXCasePart() throws RecognitionException;
+     EObject entryRuleXForLoopExpression() throws RecognitionException;
+     EObject ruleXForLoopExpression() throws RecognitionException;
+     EObject entryRuleXBasicForLoopExpression() throws RecognitionException;
+     EObject ruleXBasicForLoopExpression() throws RecognitionException;
+     EObject entryRuleXWhileExpression() throws RecognitionException;
+     EObject ruleXWhileExpression() throws RecognitionException;
+     EObject entryRuleXDoWhileExpression() throws RecognitionException;
+     EObject ruleXDoWhileExpression() throws RecognitionException;
+     EObject entryRuleXBlockExpression() throws RecognitionException;
+     EObject ruleXBlockExpression() throws RecognitionException;
+     EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException;
+     EObject ruleXExpressionOrVarDeclaration() throws RecognitionException;
+     EObject entryRuleXVariableDeclaration() throws RecognitionException;
+     EObject ruleXVariableDeclaration() throws RecognitionException;
+     EObject entryRuleJvmFormalParameter() throws RecognitionException;
+     EObject ruleJvmFormalParameter() throws RecognitionException;
+     EObject entryRuleFullJvmFormalParameter() throws RecognitionException;
+     EObject ruleFullJvmFormalParameter() throws RecognitionException;
+     EObject entryRuleXFeatureCall() throws RecognitionException;
+     EObject ruleXFeatureCall() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleIdOrSuper() throws RecognitionException;
+     EObject entryRuleXConstructorCall() throws RecognitionException;
+     EObject ruleXConstructorCall() throws RecognitionException;
+     EObject entryRuleXBooleanLiteral() throws RecognitionException;
+     EObject ruleXBooleanLiteral() throws RecognitionException;
+     EObject entryRuleXNullLiteral() throws RecognitionException;
+     EObject ruleXNullLiteral() throws RecognitionException;
+     EObject entryRuleXNumberLiteral() throws RecognitionException;
+     EObject ruleXNumberLiteral() throws RecognitionException;
+     EObject entryRuleXStringLiteral() throws RecognitionException;
+     EObject ruleXStringLiteral() throws RecognitionException;
+     EObject entryRuleXTypeLiteral() throws RecognitionException;
+     EObject ruleXTypeLiteral() throws RecognitionException;
+     EObject entryRuleXThrowExpression() throws RecognitionException;
+     EObject ruleXThrowExpression() throws RecognitionException;
+     EObject entryRuleXReturnExpression() throws RecognitionException;
+     EObject ruleXReturnExpression() throws RecognitionException;
+     EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException;
+     EObject ruleXTryCatchFinallyExpression() throws RecognitionException;
+     EObject entryRuleXSynchronizedExpression() throws RecognitionException;
+     EObject ruleXSynchronizedExpression() throws RecognitionException;
+     EObject entryRuleXCatchClause() throws RecognitionException;
+     EObject ruleXCatchClause() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleNumber() throws RecognitionException;
+     EObject entryRuleJvmTypeReference() throws RecognitionException;
+     EObject ruleJvmTypeReference() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException;
+     EObject entryRuleXFunctionTypeRef() throws RecognitionException;
+     EObject ruleXFunctionTypeRef() throws RecognitionException;
+     EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException;
+     EObject ruleJvmParameterizedTypeReference() throws RecognitionException;
+     EObject entryRuleJvmArgumentTypeReference() throws RecognitionException;
+     EObject ruleJvmArgumentTypeReference() throws RecognitionException;
+     EObject entryRuleJvmWildcardTypeReference() throws RecognitionException;
+     EObject ruleJvmWildcardTypeReference() throws RecognitionException;
+     EObject entryRuleJvmUpperBound() throws RecognitionException;
+     EObject ruleJvmUpperBound() throws RecognitionException;
+     EObject entryRuleJvmUpperBoundAnded() throws RecognitionException;
+     EObject ruleJvmUpperBoundAnded() throws RecognitionException;
+     EObject entryRuleJvmLowerBound() throws RecognitionException;
+     EObject ruleJvmLowerBound() throws RecognitionException;
+     EObject entryRuleJvmLowerBoundAnded() throws RecognitionException;
+     EObject ruleJvmLowerBoundAnded() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleQualifiedNameWithWildcard() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleValidID() throws RecognitionException;
+     EObject entryRuleXImportDeclaration() throws RecognitionException;
+     EObject ruleXImportDeclaration() throws RecognitionException;
+     AntlrDatatypeRuleToken ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void synpred2_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred3_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred4_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred7_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred8_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred9_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred10_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred11_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred12_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred13_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred14_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred15_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred16_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred17_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred18_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred19_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred20_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred21_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred22_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred23_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred24_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred25_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred26_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred27_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred28_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred29_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred31_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred33_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred34_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred35_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred37_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred38_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred39_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred40_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred41_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred42_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred43_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred44_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred45_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred46_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred47_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred50_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred51_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred52_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred53_InternalEntityGrammar_fragment() throws RecognitionException;   
+     void synpred54_InternalEntityGrammar_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalEntityGrammarParser1 extends AbstractInternalAntlrParser implements InternalEntityGrammarParserSignatures {
+
+        InternalEntityGrammarParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalEntityGrammarParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'abstract'", "'historized'", "'timedependent'", "'('", "')'", "'cacheable'", "'entity'", "'extends'", "'{'", "'persistenceUnit'", "';'", "'}'", "'mapped superclass'", "'bean'", "'unique'", "'index'", "', '", "'schemaName'", "'tableName'", "'ref'", "'cascade'", "'['", "']'", "'opposite'", "'properties'", "'transient'", "'derived'", "'domainDescription'", "'var'", "'id'", "'uuid'", "'version'", "'domainKey'", "'def'", "','", "'inheritance per class'", "'discriminatorColumn'", "'discriminatorType'", "'discriminatorValue'", "'inheritance per subclass'", "'package'", "'import'", "'datatype'", "'jvmType'", "'as primitive'", "'dateType'", "'as blob'", "'isFalse'", "'msgCode'", "'='", "'msgI18nKey'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'asDefault'", "'forNull'", "'constraints'", "'key'", "'value'", "'.'", "'*'", "'cachable'", "'collection'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'..'", "'+'", "'-'", "'@'", "'#'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'=>'", "'<>'", "'?:'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'val'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'INHERIT'", "'STRING'", "'CHAR'", "'INT'", "'DATE'", "'TIMESTAMP'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'1'"
+    };
+    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 RULE_HEX=7;
+    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=5;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int T__171=171;
+    public static final int T__170=170;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__169=169;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+
+    public String[] getTokenNames() { return InternalEntityGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g"; }
+
+
+
+     	protected EntityGrammarGrammarAccess grammarAccess;
+     	
+
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "EntityModel";	
+       	}
+       	
+       	@Override
+       	protected EntityGrammarGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred33_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred33_InternalEntityGrammar_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 synpred29_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred29_InternalEntityGrammar_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 synpred17_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_InternalEntityGrammar_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 synpred2_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred2_InternalEntityGrammar_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 synpred45_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred45_InternalEntityGrammar_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 synpred25_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred25_InternalEntityGrammar_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 synpred50_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred50_InternalEntityGrammar_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 synpred37_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred37_InternalEntityGrammar_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 synpred42_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred42_InternalEntityGrammar_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 synpred12_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_InternalEntityGrammar_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 synpred26_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_InternalEntityGrammar_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 synpred34_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred34_InternalEntityGrammar_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 synpred40_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalEntityGrammar_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 synpred14_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred14_InternalEntityGrammar_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 synpred20_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred20_InternalEntityGrammar_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 synpred3_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred3_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred54_InternalEntityGrammar_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_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred53_InternalEntityGrammar_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 synpred46_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred46_InternalEntityGrammar_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 synpred7_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalEntityGrammar_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 synpred13_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_InternalEntityGrammar_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 synpred21_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_InternalEntityGrammar_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 synpred18_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalEntityGrammar_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 synpred41_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred41_InternalEntityGrammar_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 synpred38_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalEntityGrammar_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 synpred27_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred27_InternalEntityGrammar_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 synpred19_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred19_InternalEntityGrammar_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 synpred31_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred31_InternalEntityGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred23_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred23_InternalEntityGrammar_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 synpred43_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_InternalEntityGrammar_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 synpred4_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred4_InternalEntityGrammar_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 synpred35_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred35_InternalEntityGrammar_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 synpred15_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_InternalEntityGrammar_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 synpred10_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred10_InternalEntityGrammar_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 synpred8_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_InternalEntityGrammar_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 synpred39_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalEntityGrammar_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 synpred47_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred47_InternalEntityGrammar_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 synpred52_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred52_InternalEntityGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred22_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred22_InternalEntityGrammar_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 synpred24_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_InternalEntityGrammar_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 synpred44_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred44_InternalEntityGrammar_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 synpred16_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_InternalEntityGrammar_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 synpred9_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_InternalEntityGrammar_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 synpred11_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred11_InternalEntityGrammar_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 synpred51_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred51_InternalEntityGrammar_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 synpred28_InternalEntityGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred28_InternalEntityGrammar_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 DFA180 dfa180 = new DFA180(this);
+    protected DFA186 dfa186 = new DFA186(this);
+    protected DFA189 dfa189 = new DFA189(this);
+    protected DFA191 dfa191 = new DFA191(this);
+    protected DFA201 dfa201 = new DFA201(this);
+    protected DFA204 dfa204 = new DFA204(this);
+    protected DFA220 dfa220 = new DFA220(this);
+    protected DFA219 dfa219 = new DFA219(this);
+    protected DFA221 dfa221 = new DFA221(this);
+    protected DFA223 dfa223 = new DFA223(this);
+    protected DFA232 dfa232 = new DFA232(this);
+    protected DFA239 dfa239 = new DFA239(this);
+    protected DFA238 dfa238 = new DFA238(this);
+    protected DFA261 dfa261 = new DFA261(this);
+    protected DFA260 dfa260 = new DFA260(this);
+    protected DFA262 dfa262 = new DFA262(this);
+    protected DFA266 dfa266 = new DFA266(this);
+    protected DFA269 dfa269 = new DFA269(this);
+    protected DFA268 dfa268 = new DFA268(this);
+    protected DFA270 dfa270 = new DFA270(this);
+    protected DFA273 dfa273 = new DFA273(this);
+    protected DFA291 dfa291 = new DFA291(this);
+    protected DFA289 dfa289 = new DFA289(this);
+    protected DFA298 dfa298 = new DFA298(this);
+    static final String DFA180_eotS =
+        "\44\uffff";
+    static final String DFA180_eofS =
+        "\44\uffff";
+    static final String DFA180_minS =
+        "\1\4\1\0\42\uffff";
+    static final String DFA180_maxS =
+        "\1\u0097\1\0\42\uffff";
+    static final String DFA180_acceptS =
+        "\2\uffff\1\2\37\uffff\1\3\1\1";
+    static final String DFA180_specialS =
+        "\1\uffff\1\0\42\uffff}>";
+    static final String[] DFA180_transitionS = {
+            "\1\2\1\1\3\2\7\uffff\1\2\1\42\2\uffff\2\2\14\uffff\1\2\23\uffff\1\2\50\uffff\4\2\5\uffff\1\2\21\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\3\2\1\uffff\13\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA180_eot = DFA.unpackEncodedString(DFA180_eotS);
+    static final short[] DFA180_eof = DFA.unpackEncodedString(DFA180_eofS);
+    static final char[] DFA180_min = DFA.unpackEncodedStringToUnsignedChars(DFA180_minS);
+    static final char[] DFA180_max = DFA.unpackEncodedStringToUnsignedChars(DFA180_maxS);
+    static final short[] DFA180_accept = DFA.unpackEncodedString(DFA180_acceptS);
+    static final short[] DFA180_special = DFA.unpackEncodedString(DFA180_specialS);
+    static final short[][] DFA180_transition;
+
+    static {
+        int numStates = DFA180_transitionS.length;
+        DFA180_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA180_transition[i] = DFA.unpackEncodedString(DFA180_transitionS[i]);
+        }
+    }
+
+    class DFA180 extends DFA {
+
+        public DFA180(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 180;
+            this.eot = DFA180_eot;
+            this.eof = DFA180_eof;
+            this.min = DFA180_min;
+            this.max = DFA180_max;
+            this.accept = DFA180_accept;
+            this.special = DFA180_special;
+            this.transition = DFA180_transition;
+        }
+        public String getDescription() {
+            return "7232:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA180_1 = input.LA(1);
+
+                         
+                        int index180_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred4_InternalEntityGrammar()) ) {s = 35;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index180_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 180, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA186_eotS =
+        "\43\uffff";
+    static final String DFA186_eofS =
+        "\43\uffff";
+    static final String DFA186_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA186_maxS =
+        "\1\u0097\1\0\41\uffff";
+    static final String DFA186_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA186_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA186_transitionS = {
+            "\5\2\7\uffff\1\2\3\uffff\2\2\14\uffff\1\2\23\uffff\1\2\50\uffff\3\2\1\1\5\uffff\1\2\21\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\3\2\1\uffff\13\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA186_eot = DFA.unpackEncodedString(DFA186_eotS);
+    static final short[] DFA186_eof = DFA.unpackEncodedString(DFA186_eofS);
+    static final char[] DFA186_min = DFA.unpackEncodedStringToUnsignedChars(DFA186_minS);
+    static final char[] DFA186_max = DFA.unpackEncodedStringToUnsignedChars(DFA186_maxS);
+    static final short[] DFA186_accept = DFA.unpackEncodedString(DFA186_acceptS);
+    static final short[] DFA186_special = DFA.unpackEncodedString(DFA186_specialS);
+    static final short[][] DFA186_transition;
+
+    static {
+        int numStates = DFA186_transitionS.length;
+        DFA186_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA186_transition[i] = DFA.unpackEncodedString(DFA186_transitionS[i]);
+        }
+    }
+
+    class DFA186 extends DFA {
+
+        public DFA186(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 186;
+            this.eot = DFA186_eot;
+            this.eof = DFA186_eof;
+            this.min = DFA186_min;
+            this.max = DFA186_max;
+            this.accept = DFA186_accept;
+            this.special = DFA186_special;
+            this.transition = DFA186_transition;
+        }
+        public String getDescription() {
+            return "7389:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? ) )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA186_1 = input.LA(1);
+
+                         
+                        int index186_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index186_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 186, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA189_eotS =
+        "\43\uffff";
+    static final String DFA189_eofS =
+        "\43\uffff";
+    static final String DFA189_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA189_maxS =
+        "\1\u0097\1\0\41\uffff";
+    static final String DFA189_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA189_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA189_transitionS = {
+            "\5\2\7\uffff\1\2\3\uffff\2\2\14\uffff\1\2\23\uffff\1\2\50\uffff\3\2\1\1\5\uffff\1\2\21\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\3\2\1\uffff\13\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA189_eot = DFA.unpackEncodedString(DFA189_eotS);
+    static final short[] DFA189_eof = DFA.unpackEncodedString(DFA189_eofS);
+    static final char[] DFA189_min = DFA.unpackEncodedStringToUnsignedChars(DFA189_minS);
+    static final char[] DFA189_max = DFA.unpackEncodedStringToUnsignedChars(DFA189_maxS);
+    static final short[] DFA189_accept = DFA.unpackEncodedString(DFA189_acceptS);
+    static final short[] DFA189_special = DFA.unpackEncodedString(DFA189_specialS);
+    static final short[][] DFA189_transition;
+
+    static {
+        int numStates = DFA189_transitionS.length;
+        DFA189_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA189_transition[i] = DFA.unpackEncodedString(DFA189_transitionS[i]);
+        }
+    }
+
+    class DFA189 extends DFA {
+
+        public DFA189(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 189;
+            this.eot = DFA189_eot;
+            this.eof = DFA189_eof;
+            this.min = DFA189_min;
+            this.max = DFA189_max;
+            this.accept = DFA189_accept;
+            this.special = DFA189_special;
+            this.transition = DFA189_transition;
+        }
+        public String getDescription() {
+            return "7509:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA189_1 = input.LA(1);
+
+                         
+                        int index189_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred8_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index189_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 189, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA191_eotS =
+        "\12\uffff";
+    static final String DFA191_eofS =
+        "\1\10\11\uffff";
+    static final String DFA191_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA191_maxS =
+        "\1\u0098\7\0\2\uffff";
+    static final String DFA191_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA191_specialS =
+        "\1\uffff\1\2\1\3\1\4\1\5\1\6\1\1\1\0\2\uffff}>";
+    static final String[] DFA191_transitionS = {
+            "\5\10\7\uffff\2\10\2\uffff\2\10\1\uffff\2\10\2\uffff\2\10\3\uffff\1\10\1\uffff\2\10\2\uffff\12\10\6\uffff\1\10\34\uffff\2\10\11\uffff\5\10\1\1\1\2\1\3\1\4\1\5\1\6\1\7\26\10\1\uffff\30\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA191_eot = DFA.unpackEncodedString(DFA191_eotS);
+    static final short[] DFA191_eof = DFA.unpackEncodedString(DFA191_eofS);
+    static final char[] DFA191_min = DFA.unpackEncodedStringToUnsignedChars(DFA191_minS);
+    static final char[] DFA191_max = DFA.unpackEncodedStringToUnsignedChars(DFA191_maxS);
+    static final short[] DFA191_accept = DFA.unpackEncodedString(DFA191_acceptS);
+    static final short[] DFA191_special = DFA.unpackEncodedString(DFA191_specialS);
+    static final short[][] DFA191_transition;
+
+    static {
+        int numStates = DFA191_transitionS.length;
+        DFA191_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA191_transition[i] = DFA.unpackEncodedString(DFA191_transitionS[i]);
+        }
+    }
+
+    class DFA191 extends DFA {
+
+        public DFA191(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 191;
+            this.eot = DFA191_eot;
+            this.eof = DFA191_eof;
+            this.min = DFA191_min;
+            this.max = DFA191_max;
+            this.accept = DFA191_accept;
+            this.special = DFA191_special;
+            this.transition = DFA191_transition;
+        }
+        public String getDescription() {
+            return "7728:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA191_7 = input.LA(1);
+
+                         
+                        int index191_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA191_6 = input.LA(1);
+
+                         
+                        int index191_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA191_1 = input.LA(1);
+
+                         
+                        int index191_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA191_2 = input.LA(1);
+
+                         
+                        int index191_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA191_3 = input.LA(1);
+
+                         
+                        int index191_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA191_4 = input.LA(1);
+
+                         
+                        int index191_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA191_5 = input.LA(1);
+
+                         
+                        int index191_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalEntityGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index191_5);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 191, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA201_eotS =
+        "\13\uffff";
+    static final String DFA201_eofS =
+        "\1\1\12\uffff";
+    static final String DFA201_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA201_maxS =
+        "\1\u0098\1\uffff\10\0\1\uffff";
+    static final String DFA201_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA201_specialS =
+        "\2\uffff\1\7\1\3\1\4\1\5\1\2\1\6\1\0\1\1\1\uffff}>";
+    static final String[] DFA201_transitionS = {
+            "\5\1\7\uffff\2\1\2\uffff\2\1\1\uffff\2\1\2\uffff\2\1\3\uffff\1\1\1\uffff\2\1\2\uffff\12\1\6\uffff\1\1\34\uffff\2\1\11\uffff\1\6\11\1\1\2\1\3\10\1\1\4\1\5\1\7\1\10\1\11\11\1\1\uffff\30\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA201_eot = DFA.unpackEncodedString(DFA201_eotS);
+    static final short[] DFA201_eof = DFA.unpackEncodedString(DFA201_eofS);
+    static final char[] DFA201_min = DFA.unpackEncodedStringToUnsignedChars(DFA201_minS);
+    static final char[] DFA201_max = DFA.unpackEncodedStringToUnsignedChars(DFA201_maxS);
+    static final short[] DFA201_accept = DFA.unpackEncodedString(DFA201_acceptS);
+    static final short[] DFA201_special = DFA.unpackEncodedString(DFA201_specialS);
+    static final short[][] DFA201_transition;
+
+    static {
+        int numStates = DFA201_transitionS.length;
+        DFA201_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA201_transition[i] = DFA.unpackEncodedString(DFA201_transitionS[i]);
+        }
+    }
+
+    class DFA201 extends DFA {
+
+        public DFA201(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 201;
+            this.eot = DFA201_eot;
+            this.eof = DFA201_eof;
+            this.min = DFA201_min;
+            this.max = DFA201_max;
+            this.accept = DFA201_accept;
+            this.special = DFA201_special;
+            this.transition = DFA201_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 8405:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA201_8 = input.LA(1);
+
+                         
+                        int index201_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA201_9 = input.LA(1);
+
+                         
+                        int index201_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA201_6 = input.LA(1);
+
+                         
+                        int index201_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA201_3 = input.LA(1);
+
+                         
+                        int index201_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA201_4 = input.LA(1);
+
+                         
+                        int index201_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA201_5 = input.LA(1);
+
+                         
+                        int index201_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA201_7 = input.LA(1);
+
+                         
+                        int index201_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA201_2 = input.LA(1);
+
+                         
+                        int index201_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred15_InternalEntityGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index201_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 201, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA204_eotS =
+        "\13\uffff";
+    static final String DFA204_eofS =
+        "\13\uffff";
+    static final String DFA204_minS =
+        "\1\136\2\uffff\1\136\7\uffff";
+    static final String DFA204_maxS =
+        "\1\166\2\uffff\1\151\7\uffff";
+    static final String DFA204_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 DFA204_specialS =
+        "\13\uffff}>";
+    static final String[] DFA204_transitionS = {
+            "\1\4\11\uffff\1\6\1\3\10\uffff\1\1\1\2\1\5\1\7\1\10",
+            "",
+            "",
+            "\1\12\12\uffff\1\11",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA204_eot = DFA.unpackEncodedString(DFA204_eotS);
+    static final short[] DFA204_eof = DFA.unpackEncodedString(DFA204_eofS);
+    static final char[] DFA204_min = DFA.unpackEncodedStringToUnsignedChars(DFA204_minS);
+    static final char[] DFA204_max = DFA.unpackEncodedStringToUnsignedChars(DFA204_maxS);
+    static final short[] DFA204_accept = DFA.unpackEncodedString(DFA204_acceptS);
+    static final short[] DFA204_special = DFA.unpackEncodedString(DFA204_specialS);
+    static final short[][] DFA204_transition;
+
+    static {
+        int numStates = DFA204_transitionS.length;
+        DFA204_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA204_transition[i] = DFA.unpackEncodedString(DFA204_transitionS[i]);
+        }
+    }
+
+    class DFA204 extends DFA {
+
+        public DFA204(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 204;
+            this.eot = DFA204_eot;
+            this.eof = DFA204_eof;
+            this.min = DFA204_min;
+            this.max = DFA204_max;
+            this.accept = DFA204_accept;
+            this.special = DFA204_special;
+            this.transition = DFA204_transition;
+        }
+        public String getDescription() {
+            return "8470:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )";
+        }
+    }
+    static final String DFA220_eotS =
+        "\132\uffff";
+    static final String DFA220_eofS =
+        "\1\2\131\uffff";
+    static final String DFA220_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA220_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA220_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA220_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA220_transitionS = {
+            "\5\2\7\uffff\1\1\1\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\2\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\42\2\1\uffff\30\2",
+            "\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 "9314:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA220_1 = input.LA(1);
+
+                         
+                        int index220_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred24_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index220_1);
+                        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 DFA219_eotS =
+        "\44\uffff";
+    static final String DFA219_eofS =
+        "\44\uffff";
+    static final String DFA219_minS =
+        "\1\4\2\0\41\uffff";
+    static final String DFA219_maxS =
+        "\1\u0097\2\0\41\uffff";
+    static final String DFA219_acceptS =
+        "\3\uffff\2\1\1\2\35\uffff\1\3";
+    static final String DFA219_specialS =
+        "\1\0\1\1\1\2\41\uffff}>";
+    static final String[] DFA219_transitionS = {
+            "\1\5\1\1\3\5\7\uffff\1\2\1\43\2\uffff\2\5\14\uffff\1\5\23\uffff\1\5\50\uffff\2\5\1\uffff\1\5\5\uffff\1\5\13\uffff\1\3\5\uffff\1\5\5\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\1\uffff\13\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA219_eot = DFA.unpackEncodedString(DFA219_eotS);
+    static final short[] DFA219_eof = DFA.unpackEncodedString(DFA219_eofS);
+    static final char[] DFA219_min = DFA.unpackEncodedStringToUnsignedChars(DFA219_minS);
+    static final char[] DFA219_max = DFA.unpackEncodedStringToUnsignedChars(DFA219_maxS);
+    static final short[] DFA219_accept = DFA.unpackEncodedString(DFA219_acceptS);
+    static final short[] DFA219_special = DFA.unpackEncodedString(DFA219_specialS);
+    static final short[][] DFA219_transition;
+
+    static {
+        int numStates = DFA219_transitionS.length;
+        DFA219_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA219_transition[i] = DFA.unpackEncodedString(DFA219_transitionS[i]);
+        }
+    }
+
+    class DFA219 extends DFA {
+
+        public DFA219(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 219;
+            this.eot = DFA219_eot;
+            this.eof = DFA219_eof;
+            this.min = DFA219_min;
+            this.max = DFA219_max;
+            this.accept = DFA219_accept;
+            this.special = DFA219_special;
+            this.transition = DFA219_transition;
+        }
+        public String getDescription() {
+            return "9335:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA219_0 = input.LA(1);
+
+                         
+                        int index219_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA219_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA219_0==16) ) {s = 2;}
+
+                        else if ( (LA219_0==116) && (synpred25_InternalEntityGrammar())) {s = 3;}
+
+                        else if ( (LA219_0==128) && (synpred25_InternalEntityGrammar())) {s = 4;}
+
+                        else if ( (LA219_0==RULE_STRING||(LA219_0>=RULE_INT && LA219_0<=RULE_DECIMAL)||(LA219_0>=20 && LA219_0<=21)||LA219_0==34||LA219_0==54||(LA219_0>=95 && LA219_0<=96)||LA219_0==98||LA219_0==104||LA219_0==122||LA219_0==129||LA219_0==131||(LA219_0>=135 && LA219_0<=137)||(LA219_0>=139 && LA219_0<=149)||LA219_0==151) ) {s = 5;}
+
+                        else if ( (LA219_0==17) ) {s = 35;}
+
+                         
+                        input.seek(index219_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA219_1 = input.LA(1);
+
+                         
+                        int index219_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred25_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index219_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA219_2 = input.LA(1);
+
+                         
+                        int index219_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred25_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index219_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 219, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA221_eotS =
+        "\132\uffff";
+    static final String DFA221_eofS =
+        "\1\2\131\uffff";
+    static final String DFA221_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA221_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA221_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA221_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA221_transitionS = {
+            "\5\2\7\uffff\2\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\1\1\1\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA221_eot = DFA.unpackEncodedString(DFA221_eotS);
+    static final short[] DFA221_eof = DFA.unpackEncodedString(DFA221_eofS);
+    static final char[] DFA221_min = DFA.unpackEncodedStringToUnsignedChars(DFA221_minS);
+    static final char[] DFA221_max = DFA.unpackEncodedStringToUnsignedChars(DFA221_maxS);
+    static final short[] DFA221_accept = DFA.unpackEncodedString(DFA221_acceptS);
+    static final short[] DFA221_special = DFA.unpackEncodedString(DFA221_specialS);
+    static final short[][] DFA221_transition;
+
+    static {
+        int numStates = DFA221_transitionS.length;
+        DFA221_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA221_transition[i] = DFA.unpackEncodedString(DFA221_transitionS[i]);
+        }
+    }
+
+    class DFA221 extends DFA {
+
+        public DFA221(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 221;
+            this.eot = DFA221_eot;
+            this.eof = DFA221_eof;
+            this.min = DFA221_min;
+            this.max = DFA221_max;
+            this.accept = DFA221_accept;
+            this.special = DFA221_special;
+            this.transition = DFA221_transition;
+        }
+        public String getDescription() {
+            return "9414:3: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA221_1 = input.LA(1);
+
+                         
+                        int index221_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred26_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index221_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 221, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA223_eotS =
+        "\40\uffff";
+    static final String DFA223_eofS =
+        "\40\uffff";
+    static final String DFA223_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA223_maxS =
+        "\1\u0097\26\uffff\1\0\10\uffff";
+    static final String DFA223_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 DFA223_specialS =
+        "\1\0\26\uffff\1\1\10\uffff}>";
+    static final String[] DFA223_transitionS = {
+            "\1\14\1\5\3\14\7\uffff\1\35\3\uffff\1\5\1\2\14\uffff\1\14\23\uffff\1\5\53\uffff\1\14\5\uffff\1\5\30\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\uffff\3\5\1\1\4\14\1\32\1\33\1\34\1\uffff\1\4",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA223_eot = DFA.unpackEncodedString(DFA223_eotS);
+    static final short[] DFA223_eof = DFA.unpackEncodedString(DFA223_eofS);
+    static final char[] DFA223_min = DFA.unpackEncodedStringToUnsignedChars(DFA223_minS);
+    static final char[] DFA223_max = DFA.unpackEncodedStringToUnsignedChars(DFA223_maxS);
+    static final short[] DFA223_accept = DFA.unpackEncodedString(DFA223_acceptS);
+    static final short[] DFA223_special = DFA.unpackEncodedString(DFA223_specialS);
+    static final short[][] DFA223_transition;
+
+    static {
+        int numStates = DFA223_transitionS.length;
+        DFA223_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA223_transition[i] = DFA.unpackEncodedString(DFA223_transitionS[i]);
+        }
+    }
+
+    class DFA223 extends DFA {
+
+        public DFA223(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 223;
+            this.eot = DFA223_eot;
+            this.eof = DFA223_eof;
+            this.min = DFA223_min;
+            this.max = DFA223_max;
+            this.accept = DFA223_accept;
+            this.special = DFA223_special;
+            this.transition = DFA223_transition;
+        }
+        public String getDescription() {
+            return "9455:1: (this_XConstructorCall_0= ruleXConstructorCall | this_XBlockExpression_1= ruleXBlockExpression | this_XSwitchExpression_2= ruleXSwitchExpression | ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression ) | this_XFeatureCall_4= ruleXFeatureCall | this_XLiteral_5= ruleXLiteral | this_XIfExpression_6= ruleXIfExpression | ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression ) | this_XBasicForLoopExpression_8= ruleXBasicForLoopExpression | this_XWhileExpression_9= ruleXWhileExpression | this_XDoWhileExpression_10= ruleXDoWhileExpression | this_XThrowExpression_11= ruleXThrowExpression | this_XReturnExpression_12= ruleXReturnExpression | this_XTryCatchFinallyExpression_13= ruleXTryCatchFinallyExpression | this_XParenthesizedExpression_14= ruleXParenthesizedExpression )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA223_0 = input.LA(1);
+
+                         
+                        int index223_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA223_0==142) ) {s = 1;}
+
+                        else if ( (LA223_0==21) ) {s = 2;}
+
+                        else if ( (LA223_0==131) ) {s = 3;}
+
+                        else if ( (LA223_0==151) && (synpred27_InternalEntityGrammar())) {s = 4;}
+
+                        else if ( (LA223_0==RULE_ID||LA223_0==20||LA223_0==54||LA223_0==104||(LA223_0>=139 && LA223_0<=141)) ) {s = 5;}
+
+                        else if ( (LA223_0==RULE_STRING||(LA223_0>=RULE_INT && LA223_0<=RULE_DECIMAL)||LA223_0==34||LA223_0==98||(LA223_0>=143 && LA223_0<=146)) ) {s = 12;}
+
+                        else if ( (LA223_0==129) ) {s = 22;}
+
+                        else if ( (LA223_0==135) ) {s = 23;}
+
+                        else if ( (LA223_0==136) ) {s = 24;}
+
+                        else if ( (LA223_0==137) ) {s = 25;}
+
+                        else if ( (LA223_0==147) ) {s = 26;}
+
+                        else if ( (LA223_0==148) ) {s = 27;}
+
+                        else if ( (LA223_0==149) ) {s = 28;}
+
+                        else if ( (LA223_0==16) ) {s = 29;}
+
+                         
+                        input.seek(index223_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA223_23 = input.LA(1);
+
+                         
+                        int index223_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred28_InternalEntityGrammar()) ) {s = 30;}
+
+                        else if ( (true) ) {s = 31;}
+
+                         
+                        input.seek(index223_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 223, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA232_eotS =
+        "\46\uffff";
+    static final String DFA232_eofS =
+        "\46\uffff";
+    static final String DFA232_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA232_maxS =
+        "\1\u0097\2\0\43\uffff";
+    static final String DFA232_acceptS =
+        "\3\uffff\2\1\1\2\40\uffff";
+    static final String DFA232_specialS =
+        "\1\0\1\1\1\2\43\uffff}>";
+    static final String[] DFA232_transitionS = {
+            "\1\5\1\1\3\5\7\uffff\1\2\3\uffff\2\5\14\uffff\2\5\5\uffff\1\5\14\uffff\1\5\50\uffff\2\5\1\uffff\1\5\5\uffff\1\5\13\uffff\1\3\5\uffff\1\5\5\uffff\1\4\1\5\1\uffff\1\5\3\uffff\17\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA232_eot = DFA.unpackEncodedString(DFA232_eotS);
+    static final short[] DFA232_eof = DFA.unpackEncodedString(DFA232_eofS);
+    static final char[] DFA232_min = DFA.unpackEncodedStringToUnsignedChars(DFA232_minS);
+    static final char[] DFA232_max = DFA.unpackEncodedStringToUnsignedChars(DFA232_maxS);
+    static final short[] DFA232_accept = DFA.unpackEncodedString(DFA232_acceptS);
+    static final short[] DFA232_special = DFA.unpackEncodedString(DFA232_specialS);
+    static final short[][] DFA232_transition;
+
+    static {
+        int numStates = DFA232_transitionS.length;
+        DFA232_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA232_transition[i] = DFA.unpackEncodedString(DFA232_transitionS[i]);
+        }
+    }
+
+    class DFA232 extends DFA {
+
+        public DFA232(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 232;
+            this.eot = DFA232_eot;
+            this.eof = DFA232_eof;
+            this.min = DFA232_min;
+            this.max = DFA232_max;
+            this.accept = DFA232_accept;
+            this.special = DFA232_special;
+            this.transition = DFA232_transition;
+        }
+        public String getDescription() {
+            return "9938:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA232_0 = input.LA(1);
+
+                         
+                        int index232_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA232_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA232_0==16) ) {s = 2;}
+
+                        else if ( (LA232_0==116) && (synpred31_InternalEntityGrammar())) {s = 3;}
+
+                        else if ( (LA232_0==128) && (synpred31_InternalEntityGrammar())) {s = 4;}
+
+                        else if ( (LA232_0==RULE_STRING||(LA232_0>=RULE_INT && LA232_0<=RULE_DECIMAL)||(LA232_0>=20 && LA232_0<=21)||(LA232_0>=34 && LA232_0<=35)||LA232_0==41||LA232_0==54||(LA232_0>=95 && LA232_0<=96)||LA232_0==98||LA232_0==104||LA232_0==122||LA232_0==129||LA232_0==131||(LA232_0>=135 && LA232_0<=149)||LA232_0==151) ) {s = 5;}
+
+                         
+                        input.seek(index232_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA232_1 = input.LA(1);
+
+                         
+                        int index232_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred31_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index232_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA232_2 = input.LA(1);
+
+                         
+                        int index232_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred31_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index232_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 232, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA239_eotS =
+        "\43\uffff";
+    static final String DFA239_eofS =
+        "\43\uffff";
+    static final String DFA239_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA239_maxS =
+        "\1\u0097\1\0\41\uffff";
+    static final String DFA239_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA239_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA239_transitionS = {
+            "\5\2\7\uffff\1\1\3\uffff\2\2\14\uffff\1\2\23\uffff\1\2\50\uffff\2\2\1\uffff\1\2\5\uffff\1\2\13\uffff\1\2\5\uffff\1\2\6\uffff\1\2\1\uffff\1\2\3\uffff\3\2\1\uffff\13\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA239_eot = DFA.unpackEncodedString(DFA239_eotS);
+    static final short[] DFA239_eof = DFA.unpackEncodedString(DFA239_eofS);
+    static final char[] DFA239_min = DFA.unpackEncodedStringToUnsignedChars(DFA239_minS);
+    static final char[] DFA239_max = DFA.unpackEncodedStringToUnsignedChars(DFA239_maxS);
+    static final short[] DFA239_accept = DFA.unpackEncodedString(DFA239_acceptS);
+    static final short[] DFA239_special = DFA.unpackEncodedString(DFA239_specialS);
+    static final short[][] DFA239_transition;
+
+    static {
+        int numStates = DFA239_transitionS.length;
+        DFA239_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA239_transition[i] = DFA.unpackEncodedString(DFA239_transitionS[i]);
+        }
+    }
+
+    class DFA239 extends DFA {
+
+        public DFA239(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 239;
+            this.eot = DFA239_eot;
+            this.eof = DFA239_eof;
+            this.min = DFA239_min;
+            this.max = DFA239_max;
+            this.accept = DFA239_accept;
+            this.special = DFA239_special;
+            this.transition = DFA239_transition;
+        }
+        public String getDescription() {
+            return "10362:1: ( ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' ) | ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) ) )";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA239_1 = input.LA(1);
+
+                         
+                        int index239_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred34_InternalEntityGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index239_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 239, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA238_eotS =
+        "\42\uffff";
+    static final String DFA238_eofS =
+        "\42\uffff";
+    static final String DFA238_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA238_maxS =
+        "\1\u0097\2\0\37\uffff";
+    static final String DFA238_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA238_specialS =
+        "\1\0\1\1\1\2\37\uffff}>";
+    static final String[] DFA238_transitionS = {
+            "\1\4\1\1\3\4\7\uffff\1\2\3\uffff\2\4\14\uffff\1\4\23\uffff\1\4\50\uffff\2\4\1\uffff\1\4\5\uffff\1\4\13\uffff\1\3\5\uffff\1\4\6\uffff\1\4\1\uffff\1\4\3\uffff\3\4\1\uffff\13\4\1\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA238_eot = DFA.unpackEncodedString(DFA238_eotS);
+    static final short[] DFA238_eof = DFA.unpackEncodedString(DFA238_eofS);
+    static final char[] DFA238_min = DFA.unpackEncodedStringToUnsignedChars(DFA238_minS);
+    static final char[] DFA238_max = DFA.unpackEncodedStringToUnsignedChars(DFA238_maxS);
+    static final short[] DFA238_accept = DFA.unpackEncodedString(DFA238_acceptS);
+    static final short[] DFA238_special = DFA.unpackEncodedString(DFA238_specialS);
+    static final short[][] DFA238_transition;
+
+    static {
+        int numStates = DFA238_transitionS.length;
+        DFA238_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA238_transition[i] = DFA.unpackEncodedString(DFA238_transitionS[i]);
+        }
+    }
+
+    class DFA238 extends DFA {
+
+        public DFA238(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 238;
+            this.eot = DFA238_eot;
+            this.eof = DFA238_eof;
+            this.min = DFA238_min;
+            this.max = DFA238_max;
+            this.accept = DFA238_accept;
+            this.special = DFA238_special;
+            this.transition = DFA238_transition;
+        }
+        public String getDescription() {
+            return "10417:7: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA238_0 = input.LA(1);
+
+                         
+                        int index238_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA238_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA238_0==16) ) {s = 2;}
+
+                        else if ( (LA238_0==116) && (synpred35_InternalEntityGrammar())) {s = 3;}
+
+                        else if ( (LA238_0==RULE_STRING||(LA238_0>=RULE_INT && LA238_0<=RULE_DECIMAL)||(LA238_0>=20 && LA238_0<=21)||LA238_0==34||LA238_0==54||(LA238_0>=95 && LA238_0<=96)||LA238_0==98||LA238_0==104||LA238_0==122||LA238_0==129||LA238_0==131||(LA238_0>=135 && LA238_0<=137)||(LA238_0>=139 && LA238_0<=149)||LA238_0==151) ) {s = 4;}
+
+                         
+                        input.seek(index238_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA238_1 = input.LA(1);
+
+                         
+                        int index238_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred35_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index238_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA238_2 = input.LA(1);
+
+                         
+                        int index238_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred35_InternalEntityGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index238_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 238, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA261_eotS =
+        "\132\uffff";
+    static final String DFA261_eofS =
+        "\1\2\131\uffff";
+    static final String DFA261_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA261_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA261_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA261_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA261_transitionS = {
+            "\5\2\7\uffff\1\1\1\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\2\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA261_eot = DFA.unpackEncodedString(DFA261_eotS);
+    static final short[] DFA261_eof = DFA.unpackEncodedString(DFA261_eofS);
+    static final char[] DFA261_min = DFA.unpackEncodedStringToUnsignedChars(DFA261_minS);
+    static final char[] DFA261_max = DFA.unpackEncodedStringToUnsignedChars(DFA261_maxS);
+    static final short[] DFA261_accept = DFA.unpackEncodedString(DFA261_acceptS);
+    static final short[] DFA261_special = DFA.unpackEncodedString(DFA261_specialS);
+    static final short[][] DFA261_transition;
+
+    static {
+        int numStates = DFA261_transitionS.length;
+        DFA261_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA261_transition[i] = DFA.unpackEncodedString(DFA261_transitionS[i]);
+        }
+    }
+
+    class DFA261 extends DFA {
+
+        public DFA261(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 261;
+            this.eot = DFA261_eot;
+            this.eof = DFA261_eof;
+            this.min = DFA261_min;
+            this.max = DFA261_max;
+            this.accept = DFA261_accept;
+            this.special = DFA261_special;
+            this.transition = DFA261_transition;
+        }
+        public String getDescription() {
+            return "11474:2: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )? otherlv_12= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA261_1 = input.LA(1);
+
+                         
+                        int index261_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index261_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 261, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA260_eotS =
+        "\44\uffff";
+    static final String DFA260_eofS =
+        "\44\uffff";
+    static final String DFA260_minS =
+        "\1\4\2\0\41\uffff";
+    static final String DFA260_maxS =
+        "\1\u0097\2\0\41\uffff";
+    static final String DFA260_acceptS =
+        "\3\uffff\2\1\1\2\35\uffff\1\3";
+    static final String DFA260_specialS =
+        "\1\0\1\1\1\2\41\uffff}>";
+    static final String[] DFA260_transitionS = {
+            "\1\5\1\1\3\5\7\uffff\1\2\1\43\2\uffff\2\5\14\uffff\1\5\23\uffff\1\5\50\uffff\2\5\1\uffff\1\5\5\uffff\1\5\13\uffff\1\3\5\uffff\1\5\5\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\1\uffff\13\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA260_eot = DFA.unpackEncodedString(DFA260_eotS);
+    static final short[] DFA260_eof = DFA.unpackEncodedString(DFA260_eofS);
+    static final char[] DFA260_min = DFA.unpackEncodedStringToUnsignedChars(DFA260_minS);
+    static final char[] DFA260_max = DFA.unpackEncodedStringToUnsignedChars(DFA260_maxS);
+    static final short[] DFA260_accept = DFA.unpackEncodedString(DFA260_acceptS);
+    static final short[] DFA260_special = DFA.unpackEncodedString(DFA260_specialS);
+    static final short[][] DFA260_transition;
+
+    static {
+        int numStates = DFA260_transitionS.length;
+        DFA260_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA260_transition[i] = DFA.unpackEncodedString(DFA260_transitionS[i]);
+        }
+    }
+
+    class DFA260 extends DFA {
+
+        public DFA260(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 260;
+            this.eot = DFA260_eot;
+            this.eof = DFA260_eof;
+            this.min = DFA260_min;
+            this.max = DFA260_max;
+            this.accept = DFA260_accept;
+            this.special = DFA260_special;
+            this.transition = DFA260_transition;
+        }
+        public String getDescription() {
+            return "11495:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA260_0 = input.LA(1);
+
+                         
+                        int index260_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA260_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA260_0==16) ) {s = 2;}
+
+                        else if ( (LA260_0==116) && (synpred39_InternalEntityGrammar())) {s = 3;}
+
+                        else if ( (LA260_0==128) && (synpred39_InternalEntityGrammar())) {s = 4;}
+
+                        else if ( (LA260_0==RULE_STRING||(LA260_0>=RULE_INT && LA260_0<=RULE_DECIMAL)||(LA260_0>=20 && LA260_0<=21)||LA260_0==34||LA260_0==54||(LA260_0>=95 && LA260_0<=96)||LA260_0==98||LA260_0==104||LA260_0==122||LA260_0==129||LA260_0==131||(LA260_0>=135 && LA260_0<=137)||(LA260_0>=139 && LA260_0<=149)||LA260_0==151) ) {s = 5;}
+
+                        else if ( (LA260_0==17) ) {s = 35;}
+
+                         
+                        input.seek(index260_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA260_1 = input.LA(1);
+
+                         
+                        int index260_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index260_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA260_2 = input.LA(1);
+
+                         
+                        int index260_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index260_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 260, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA262_eotS =
+        "\132\uffff";
+    static final String DFA262_eofS =
+        "\1\2\131\uffff";
+    static final String DFA262_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA262_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA262_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA262_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA262_transitionS = {
+            "\5\2\7\uffff\2\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\1\1\1\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA262_eot = DFA.unpackEncodedString(DFA262_eotS);
+    static final short[] DFA262_eof = DFA.unpackEncodedString(DFA262_eofS);
+    static final char[] DFA262_min = DFA.unpackEncodedStringToUnsignedChars(DFA262_minS);
+    static final char[] DFA262_max = DFA.unpackEncodedStringToUnsignedChars(DFA262_maxS);
+    static final short[] DFA262_accept = DFA.unpackEncodedString(DFA262_acceptS);
+    static final short[] DFA262_special = DFA.unpackEncodedString(DFA262_specialS);
+    static final short[][] DFA262_transition;
+
+    static {
+        int numStates = DFA262_transitionS.length;
+        DFA262_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA262_transition[i] = DFA.unpackEncodedString(DFA262_transitionS[i]);
+        }
+    }
+
+    class DFA262 extends DFA {
+
+        public DFA262(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 262;
+            this.eot = DFA262_eot;
+            this.eof = DFA262_eof;
+            this.min = DFA262_min;
+            this.max = DFA262_max;
+            this.accept = DFA262_accept;
+            this.special = DFA262_special;
+            this.transition = DFA262_transition;
+        }
+        public String getDescription() {
+            return "11574:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA262_1 = input.LA(1);
+
+                         
+                        int index262_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index262_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 262, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA266_eotS =
+        "\132\uffff";
+    static final String DFA266_eofS =
+        "\1\2\131\uffff";
+    static final String DFA266_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA266_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA266_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA266_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA266_transitionS = {
+            "\5\2\7\uffff\2\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\2\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\12\2\1\1\27\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA266_eot = DFA.unpackEncodedString(DFA266_eotS);
+    static final short[] DFA266_eof = DFA.unpackEncodedString(DFA266_eofS);
+    static final char[] DFA266_min = DFA.unpackEncodedStringToUnsignedChars(DFA266_minS);
+    static final char[] DFA266_max = DFA.unpackEncodedStringToUnsignedChars(DFA266_maxS);
+    static final short[] DFA266_accept = DFA.unpackEncodedString(DFA266_acceptS);
+    static final short[] DFA266_special = DFA.unpackEncodedString(DFA266_specialS);
+    static final short[][] DFA266_transition;
+
+    static {
+        int numStates = DFA266_transitionS.length;
+        DFA266_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA266_transition[i] = DFA.unpackEncodedString(DFA266_transitionS[i]);
+        }
+    }
+
+    class DFA266 extends DFA {
+
+        public DFA266(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 266;
+            this.eot = DFA266_eot;
+            this.eof = DFA266_eof;
+            this.min = DFA266_min;
+            this.max = DFA266_max;
+            this.accept = DFA266_accept;
+            this.special = DFA266_special;
+            this.transition = DFA266_transition;
+        }
+        public String getDescription() {
+            return "11739:2: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA266_1 = input.LA(1);
+
+                         
+                        int index266_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index266_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 266, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA269_eotS =
+        "\132\uffff";
+    static final String DFA269_eofS =
+        "\1\2\131\uffff";
+    static final String DFA269_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA269_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA269_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA269_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA269_transitionS = {
+            "\5\2\7\uffff\1\1\1\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\2\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA269_eot = DFA.unpackEncodedString(DFA269_eotS);
+    static final short[] DFA269_eof = DFA.unpackEncodedString(DFA269_eofS);
+    static final char[] DFA269_min = DFA.unpackEncodedStringToUnsignedChars(DFA269_minS);
+    static final char[] DFA269_max = DFA.unpackEncodedStringToUnsignedChars(DFA269_maxS);
+    static final short[] DFA269_accept = DFA.unpackEncodedString(DFA269_acceptS);
+    static final short[] DFA269_special = DFA.unpackEncodedString(DFA269_specialS);
+    static final short[][] DFA269_transition;
+
+    static {
+        int numStates = DFA269_transitionS.length;
+        DFA269_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA269_transition[i] = DFA.unpackEncodedString(DFA269_transitionS[i]);
+        }
+    }
+
+    class DFA269 extends DFA {
+
+        public DFA269(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 269;
+            this.eot = DFA269_eot;
+            this.eof = DFA269_eof;
+            this.min = DFA269_min;
+            this.max = DFA269_max;
+            this.accept = DFA269_accept;
+            this.special = DFA269_special;
+            this.transition = DFA269_transition;
+        }
+        public String getDescription() {
+            return "11788:3: ( ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )? otherlv_13= ')' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA269_1 = input.LA(1);
+
+                         
+                        int index269_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred42_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index269_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 269, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA268_eotS =
+        "\44\uffff";
+    static final String DFA268_eofS =
+        "\44\uffff";
+    static final String DFA268_minS =
+        "\1\4\2\0\41\uffff";
+    static final String DFA268_maxS =
+        "\1\u0097\2\0\41\uffff";
+    static final String DFA268_acceptS =
+        "\3\uffff\2\1\1\2\35\uffff\1\3";
+    static final String DFA268_specialS =
+        "\1\0\1\1\1\2\41\uffff}>";
+    static final String[] DFA268_transitionS = {
+            "\1\5\1\1\3\5\7\uffff\1\2\1\43\2\uffff\2\5\14\uffff\1\5\23\uffff\1\5\50\uffff\2\5\1\uffff\1\5\5\uffff\1\5\13\uffff\1\3\5\uffff\1\5\5\uffff\1\4\1\5\1\uffff\1\5\3\uffff\3\5\1\uffff\13\5\1\uffff\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA268_eot = DFA.unpackEncodedString(DFA268_eotS);
+    static final short[] DFA268_eof = DFA.unpackEncodedString(DFA268_eofS);
+    static final char[] DFA268_min = DFA.unpackEncodedStringToUnsignedChars(DFA268_minS);
+    static final char[] DFA268_max = DFA.unpackEncodedStringToUnsignedChars(DFA268_maxS);
+    static final short[] DFA268_accept = DFA.unpackEncodedString(DFA268_acceptS);
+    static final short[] DFA268_special = DFA.unpackEncodedString(DFA268_specialS);
+    static final short[][] DFA268_transition;
+
+    static {
+        int numStates = DFA268_transitionS.length;
+        DFA268_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA268_transition[i] = DFA.unpackEncodedString(DFA268_transitionS[i]);
+        }
+    }
+
+    class DFA268 extends DFA {
+
+        public DFA268(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 268;
+            this.eot = DFA268_eot;
+            this.eof = DFA268_eof;
+            this.min = DFA268_min;
+            this.max = DFA268_max;
+            this.accept = DFA268_accept;
+            this.special = DFA268_special;
+            this.transition = DFA268_transition;
+        }
+        public String getDescription() {
+            return "11809:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA268_0 = input.LA(1);
+
+                         
+                        int index268_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA268_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA268_0==16) ) {s = 2;}
+
+                        else if ( (LA268_0==116) && (synpred43_InternalEntityGrammar())) {s = 3;}
+
+                        else if ( (LA268_0==128) && (synpred43_InternalEntityGrammar())) {s = 4;}
+
+                        else if ( (LA268_0==RULE_STRING||(LA268_0>=RULE_INT && LA268_0<=RULE_DECIMAL)||(LA268_0>=20 && LA268_0<=21)||LA268_0==34||LA268_0==54||(LA268_0>=95 && LA268_0<=96)||LA268_0==98||LA268_0==104||LA268_0==122||LA268_0==129||LA268_0==131||(LA268_0>=135 && LA268_0<=137)||(LA268_0>=139 && LA268_0<=149)||LA268_0==151) ) {s = 5;}
+
+                        else if ( (LA268_0==17) ) {s = 35;}
+
+                         
+                        input.seek(index268_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA268_1 = input.LA(1);
+
+                         
+                        int index268_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index268_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA268_2 = input.LA(1);
+
+                         
+                        int index268_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalEntityGrammar()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index268_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 268, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA270_eotS =
+        "\132\uffff";
+    static final String DFA270_eofS =
+        "\1\2\131\uffff";
+    static final String DFA270_minS =
+        "\1\4\1\0\130\uffff";
+    static final String DFA270_maxS =
+        "\1\u0098\1\0\130\uffff";
+    static final String DFA270_acceptS =
+        "\2\uffff\1\2\126\uffff\1\1";
+    static final String DFA270_specialS =
+        "\1\uffff\1\0\130\uffff}>";
+    static final String[] DFA270_transitionS = {
+            "\5\2\7\uffff\2\2\2\uffff\2\2\1\uffff\2\2\2\uffff\2\2\3\uffff\1\2\1\uffff\1\1\1\2\2\uffff\12\2\6\uffff\1\2\34\uffff\2\2\11\uffff\42\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA270_eot = DFA.unpackEncodedString(DFA270_eotS);
+    static final short[] DFA270_eof = DFA.unpackEncodedString(DFA270_eofS);
+    static final char[] DFA270_min = DFA.unpackEncodedStringToUnsignedChars(DFA270_minS);
+    static final char[] DFA270_max = DFA.unpackEncodedStringToUnsignedChars(DFA270_maxS);
+    static final short[] DFA270_accept = DFA.unpackEncodedString(DFA270_acceptS);
+    static final short[] DFA270_special = DFA.unpackEncodedString(DFA270_specialS);
+    static final short[][] DFA270_transition;
+
+    static {
+        int numStates = DFA270_transitionS.length;
+        DFA270_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA270_transition[i] = DFA.unpackEncodedString(DFA270_transitionS[i]);
+        }
+    }
+
+    class DFA270 extends DFA {
+
+        public DFA270(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 270;
+            this.eot = DFA270_eot;
+            this.eof = DFA270_eof;
+            this.min = DFA270_min;
+            this.max = DFA270_max;
+            this.accept = DFA270_accept;
+            this.special = DFA270_special;
+            this.transition = DFA270_transition;
+        }
+        public String getDescription() {
+            return "11888:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA270_1 = input.LA(1);
+
+                         
+                        int index270_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred44_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index270_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 270, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA273_eotS =
+        "\132\uffff";
+    static final String DFA273_eofS =
+        "\1\41\131\uffff";
+    static final String DFA273_minS =
+        "\1\4\40\0\71\uffff";
+    static final String DFA273_maxS =
+        "\1\u0098\40\0\71\uffff";
+    static final String DFA273_acceptS =
+        "\41\uffff\1\2\67\uffff\1\1";
+    static final String DFA273_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\71\uffff}>";
+    static final String[] DFA273_transitionS = {
+            "\1\27\1\1\1\24\1\23\1\25\7\uffff\1\40\1\41\2\uffff\1\2\1\12\1\uffff\2\41\2\uffff\2\41\3\uffff\1\41\1\uffff\1\20\1\41\2\uffff\12\41\6\uffff\1\4\34\uffff\2\41\11\uffff\1\41\1\10\1\7\1\41\1\17\5\41\1\15\21\41\1\6\5\41\1\uffff\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\41\1\3\1\5\1\16\1\11\1\21\1\22\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\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[] DFA273_eot = DFA.unpackEncodedString(DFA273_eotS);
+    static final short[] DFA273_eof = DFA.unpackEncodedString(DFA273_eofS);
+    static final char[] DFA273_min = DFA.unpackEncodedStringToUnsignedChars(DFA273_minS);
+    static final char[] DFA273_max = DFA.unpackEncodedStringToUnsignedChars(DFA273_maxS);
+    static final short[] DFA273_accept = DFA.unpackEncodedString(DFA273_acceptS);
+    static final short[] DFA273_special = DFA.unpackEncodedString(DFA273_specialS);
+    static final short[][] DFA273_transition;
+
+    static {
+        int numStates = DFA273_transitionS.length;
+        DFA273_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA273_transition[i] = DFA.unpackEncodedString(DFA273_transitionS[i]);
+        }
+    }
+
+    class DFA273 extends DFA {
+
+        public DFA273(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 273;
+            this.eot = DFA273_eot;
+            this.eof = DFA273_eof;
+            this.min = DFA273_min;
+            this.max = DFA273_max;
+            this.accept = DFA273_accept;
+            this.special = DFA273_special;
+            this.transition = DFA273_transition;
+        }
+        public String getDescription() {
+            return "12228:1: ( ( 'extends' | 'static' | 'import' | 'extension' | '!' | '-' | '+' | 'new' | '{' | 'switch' | 'synchronized' | '<' | 'super' | '#' | '[' | 'false' | 'true' | 'null' | 'typeof' | 'if' | 'for' | 'while' | 'do' | 'throw' | 'return' | 'try' | '(' | RULE_ID | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_STRING )=> (lv_expression_2_0= ruleXExpression ) )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA273_1 = input.LA(1);
+
+                         
+                        int index273_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA273_2 = input.LA(1);
+
+                         
+                        int index273_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA273_3 = input.LA(1);
+
+                         
+                        int index273_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA273_4 = input.LA(1);
+
+                         
+                        int index273_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA273_5 = input.LA(1);
+
+                         
+                        int index273_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA273_6 = input.LA(1);
+
+                         
+                        int index273_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA273_7 = input.LA(1);
+
+                         
+                        int index273_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA273_8 = input.LA(1);
+
+                         
+                        int index273_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA273_9 = input.LA(1);
+
+                         
+                        int index273_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA273_10 = input.LA(1);
+
+                         
+                        int index273_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA273_11 = input.LA(1);
+
+                         
+                        int index273_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA273_12 = input.LA(1);
+
+                         
+                        int index273_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA273_13 = input.LA(1);
+
+                         
+                        int index273_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA273_14 = input.LA(1);
+
+                         
+                        int index273_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA273_15 = input.LA(1);
+
+                         
+                        int index273_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA273_16 = input.LA(1);
+
+                         
+                        int index273_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA273_17 = input.LA(1);
+
+                         
+                        int index273_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA273_18 = input.LA(1);
+
+                         
+                        int index273_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA273_19 = input.LA(1);
+
+                         
+                        int index273_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA273_20 = input.LA(1);
+
+                         
+                        int index273_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA273_21 = input.LA(1);
+
+                         
+                        int index273_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA273_22 = input.LA(1);
+
+                         
+                        int index273_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA273_23 = input.LA(1);
+
+                         
+                        int index273_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA273_24 = input.LA(1);
+
+                         
+                        int index273_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA273_25 = input.LA(1);
+
+                         
+                        int index273_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA273_26 = input.LA(1);
+
+                         
+                        int index273_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA273_27 = input.LA(1);
+
+                         
+                        int index273_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA273_28 = input.LA(1);
+
+                         
+                        int index273_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA273_29 = input.LA(1);
+
+                         
+                        int index273_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA273_30 = input.LA(1);
+
+                         
+                        int index273_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA273_31 = input.LA(1);
+
+                         
+                        int index273_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA273_32 = input.LA(1);
+
+                         
+                        int index273_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred45_InternalEntityGrammar()) ) {s = 89;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index273_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 273, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA291_eotS =
+        "\172\uffff";
+    static final String DFA291_eofS =
+        "\1\2\171\uffff";
+    static final String DFA291_minS =
+        "\1\4\1\0\170\uffff";
+    static final String DFA291_maxS =
+        "\1\u009a\1\0\170\uffff";
+    static final String DFA291_acceptS =
+        "\2\uffff\1\2\166\uffff\1\1";
+    static final String DFA291_specialS =
+        "\1\uffff\1\0\170\uffff}>";
+    static final String[] DFA291_transitionS = {
+            "\5\2\4\uffff\11\2\1\uffff\6\2\3\uffff\4\2\1\uffff\13\2\6\uffff\2\2\1\uffff\1\2\2\uffff\1\2\4\uffff\4\2\2\uffff\7\2\5\uffff\3\2\1\uffff\21\2\1\1\27\2\1\uffff\30\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA291_eot = DFA.unpackEncodedString(DFA291_eotS);
+    static final short[] DFA291_eof = DFA.unpackEncodedString(DFA291_eofS);
+    static final char[] DFA291_min = DFA.unpackEncodedStringToUnsignedChars(DFA291_minS);
+    static final char[] DFA291_max = DFA.unpackEncodedStringToUnsignedChars(DFA291_maxS);
+    static final short[] DFA291_accept = DFA.unpackEncodedString(DFA291_acceptS);
+    static final short[] DFA291_special = DFA.unpackEncodedString(DFA291_specialS);
+    static final short[][] DFA291_transition;
+
+    static {
+        int numStates = DFA291_transitionS.length;
+        DFA291_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA291_transition[i] = DFA.unpackEncodedString(DFA291_transitionS[i]);
+        }
+    }
+
+    class DFA291 extends DFA {
+
+        public DFA291(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 291;
+            this.eot = DFA291_eot;
+            this.eof = DFA291_eof;
+            this.min = DFA291_min;
+            this.max = DFA291_max;
+            this.accept = DFA291_accept;
+            this.special = DFA291_special;
+            this.transition = DFA291_transition;
+        }
+        public String getDescription() {
+            return "12878:2: ( ( ( '<' )=>otherlv_1= '<' ) ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )* )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA291_1 = input.LA(1);
+
+                         
+                        int index291_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred52_InternalEntityGrammar()) ) {s = 121;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index291_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 291, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA289_eotS =
+        "\172\uffff";
+    static final String DFA289_eofS =
+        "\1\2\171\uffff";
+    static final String DFA289_minS =
+        "\1\4\1\0\170\uffff";
+    static final String DFA289_maxS =
+        "\1\u009a\1\0\170\uffff";
+    static final String DFA289_acceptS =
+        "\2\uffff\1\2\166\uffff\1\1";
+    static final String DFA289_specialS =
+        "\1\uffff\1\0\170\uffff}>";
+    static final String[] DFA289_transitionS = {
+            "\5\2\4\uffff\11\2\1\uffff\6\2\3\uffff\4\2\1\uffff\13\2\6\uffff\2\2\1\uffff\1\2\2\uffff\1\2\4\uffff\4\2\2\uffff\7\2\5\uffff\3\2\1\uffff\21\2\1\1\27\2\1\uffff\30\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA289_eot = DFA.unpackEncodedString(DFA289_eotS);
+    static final short[] DFA289_eof = DFA.unpackEncodedString(DFA289_eofS);
+    static final char[] DFA289_min = DFA.unpackEncodedStringToUnsignedChars(DFA289_minS);
+    static final char[] DFA289_max = DFA.unpackEncodedStringToUnsignedChars(DFA289_maxS);
+    static final short[] DFA289_accept = DFA.unpackEncodedString(DFA289_acceptS);
+    static final short[] DFA289_special = DFA.unpackEncodedString(DFA289_specialS);
+    static final short[][] DFA289_transition;
+
+    static {
+        int numStates = DFA289_transitionS.length;
+        DFA289_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA289_transition[i] = DFA.unpackEncodedString(DFA289_transitionS[i]);
+        }
+    }
+
+    class DFA289 extends DFA {
+
+        public DFA289(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 289;
+            this.eot = DFA289_eot;
+            this.eof = DFA289_eof;
+            this.min = DFA289_min;
+            this.max = DFA289_max;
+            this.accept = DFA289_accept;
+            this.special = DFA289_special;
+            this.transition = DFA289_transition;
+        }
+        public String getDescription() {
+            return "12954:2: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?";
+        }
+        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
+            TokenStream input = (TokenStream)_input;
+        	int _s = s;
+            switch ( s ) {
+                    case 0 : 
+                        int LA289_1 = input.LA(1);
+
+                         
+                        int index289_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred54_InternalEntityGrammar()) ) {s = 121;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index289_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 289, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA298_eotS =
+        "\7\uffff";
+    static final String DFA298_eofS =
+        "\2\uffff\1\4\3\uffff\1\4";
+    static final String DFA298_minS =
+        "\1\5\1\uffff\1\27\1\5\2\uffff\1\27";
+    static final String DFA298_maxS =
+        "\1\u008b\1\uffff\1\123\1\124\2\uffff\1\123";
+    static final String DFA298_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\3\1\uffff";
+    static final String DFA298_specialS =
+        "\7\uffff}>";
+    static final String[] DFA298_transitionS = {
+            "\1\2\u0085\uffff\1\1",
+            "",
+            "\1\4\73\uffff\1\3",
+            "\1\6\116\uffff\1\5",
+            "",
+            "",
+            "\1\4\73\uffff\1\3"
+    };
+
+    static final short[] DFA298_eot = DFA.unpackEncodedString(DFA298_eotS);
+    static final short[] DFA298_eof = DFA.unpackEncodedString(DFA298_eofS);
+    static final char[] DFA298_min = DFA.unpackEncodedStringToUnsignedChars(DFA298_minS);
+    static final char[] DFA298_max = DFA.unpackEncodedStringToUnsignedChars(DFA298_maxS);
+    static final short[] DFA298_accept = DFA.unpackEncodedString(DFA298_acceptS);
+    static final short[] DFA298_special = DFA.unpackEncodedString(DFA298_specialS);
+    static final short[][] DFA298_transition;
+
+    static {
+        int numStates = DFA298_transitionS.length;
+        DFA298_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA298_transition[i] = DFA.unpackEncodedString(DFA298_transitionS[i]);
+        }
+    }
+
+    class DFA298 extends DFA {
+
+        public DFA298(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 298;
+            this.eot = DFA298_eot;
+            this.eof = DFA298_eof;
+            this.min = DFA298_min;
+            this.max = DFA298_max;
+            this.accept = DFA298_accept;
+            this.special = DFA298_special;
+            this.transition = DFA298_transition;
+        }
+        public String getDescription() {
+            return "13420:1: ( ( ( (lv_static_1_0= 'static' ) ) ( (lv_extension_2_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_4_0= '*' ) ) | ( (lv_memberName_5_0= ruleValidID ) ) ) ) | ( ( ruleQualifiedName ) ) | ( (lv_importedNamespace_7_0= ruleQualifiedNameWithWildcard ) ) )";
+        }
+    }
+ 
+
+    
+    protected static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleEntityModel_in_entryRuleEntityModel75 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEntityModel85 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedPackage_in_ruleEntityModel130 = new BitSet(new long[]{0x0020000000000002L});
+        public static final BitSet FOLLOW_ruleClass_in_entryRuleClass166 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleClass176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_ruleClass231 = new BitSet(new long[]{0x00000000060CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_13_in_ruleClass306 = new BitSet(new long[]{0x00000000000CE000L});
+        public static final BitSet FOLLOW_14_in_ruleClass392 = new BitSet(new long[]{0x00000000000CE000L});
+        public static final BitSet FOLLOW_15_in_ruleClass430 = new BitSet(new long[]{0x00000000000DE000L});
+        public static final BitSet FOLLOW_16_in_ruleClass456 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleLHistorizedDateType_in_ruleClass477 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleClass489 = new BitSet(new long[]{0x00000000000CE000L});
+        public static final BitSet FOLLOW_18_in_ruleClass565 = new BitSet(new long[]{0x00000000000CE000L});
+        public static final BitSet FOLLOW_19_in_ruleClass630 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleClass651 = new BitSet(new long[]{0x0000000000300000L});
+        public static final BitSet FOLLOW_20_in_ruleClass664 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass687 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleClass701 = new BitSet(new long[]{0x00117FC1DF4CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_ruleEntityPersistenceInfo_in_ruleClass722 = new BitSet(new long[]{0x00117FC11F4CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_ruleEntityInheritanceStrategy_in_ruleClass743 = new BitSet(new long[]{0x00007FC11F4CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_22_in_ruleClass757 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleClass774 = new BitSet(new long[]{0x00007FC11F8CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_23_in_ruleClass792 = new BitSet(new long[]{0x00007FC11F0CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_ruleEntityFeature_in_ruleClass817 = new BitSet(new long[]{0x00007FC11F0CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_ruleIndex_in_ruleClass839 = new BitSet(new long[]{0x0000000019000000L});
+        public static final BitSet FOLLOW_24_in_ruleClass852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_ruleClass887 = new BitSet(new long[]{0x00001EC300100020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_20_in_ruleClass913 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass936 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleClass959 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleClass971 = new BitSet(new long[]{0x00007FC1074CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_22_in_ruleClass984 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleClass1001 = new BitSet(new long[]{0x00007FC1078CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_23_in_ruleClass1019 = new BitSet(new long[]{0x00007FC1070CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_ruleEntityFeature_in_ruleClass1044 = new BitSet(new long[]{0x00007FC1070CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_24_in_ruleClass1057 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_ruleClass1086 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleClass1107 = new BitSet(new long[]{0x0000000000300000L});
+        public static final BitSet FOLLOW_20_in_ruleClass1120 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass1143 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleClass1157 = new BitSet(new long[]{0x00005641070CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_ruleBeanFeature_in_ruleClass1178 = new BitSet(new long[]{0x00005641070CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_24_in_ruleClass1191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIndex_in_entryRuleIndex1229 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIndex1239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_ruleIndex1282 = new BitSet(new long[]{0x0000000010000000L});
+        public static final BitSet FOLLOW_28_in_ruleIndex1308 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleIndex1325 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleIndex1342 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleIndex1362 = new BitSet(new long[]{0x0000000021000000L});
+        public static final BitSet FOLLOW_29_in_ruleIndex1375 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleIndex1395 = new BitSet(new long[]{0x0000000021000000L});
+        public static final BitSet FOLLOW_24_in_ruleIndex1409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityPersistenceInfo_in_entryRuleEntityPersistenceInfo1445 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEntityPersistenceInfo1455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_ruleEntityPersistenceInfo1547 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleEntityPersistenceInfo1568 = new BitSet(new long[]{0x00000000C0800002L});
+        public static final BitSet FOLLOW_23_in_ruleEntityPersistenceInfo1581 = new BitSet(new long[]{0x00000000C0000002L});
+        public static final BitSet FOLLOW_31_in_ruleEntityPersistenceInfo1651 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleEntityPersistenceInfo1672 = new BitSet(new long[]{0x00000000C0800002L});
+        public static final BitSet FOLLOW_23_in_ruleEntityPersistenceInfo1685 = new BitSet(new long[]{0x00000000C0000002L});
+        public static final BitSet FOLLOW_ruleColumnPersistenceInfo_in_entryRuleColumnPersistenceInfo1764 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleColumnPersistenceInfo1774 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_ruleColumnPersistenceInfo1820 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleColumnPersistenceInfo1841 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleColumnPersistenceInfo1853 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityFeature_in_entryRuleEntityFeature1889 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEntityFeature1899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_ruleEntityFeature1954 = new BitSet(new long[]{0x00007FC1060CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_32_in_ruleEntityFeature1979 = new BitSet(new long[]{0x0000000200000020L});
+        public static final BitSet FOLLOW_33_in_ruleEntityFeature1997 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleEntityFeature2034 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleMultiplicity_in_ruleEntityFeature2055 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_34_in_ruleEntityFeature2069 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_ruleEntityFeature2090 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_35_in_ruleEntityFeature2103 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature2126 = new BitSet(new long[]{0x0000003000810002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_ruleColumnPersistenceInfo_in_ruleEntityFeature2147 = new BitSet(new long[]{0x0000003000800002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_36_in_ruleEntityFeature2161 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleLFQN_in_ruleEntityFeature2184 = new BitSet(new long[]{0x0000002000800002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_37_in_ruleEntityFeature2199 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleEntityFeature2211 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2232 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleEntityFeature2245 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2266 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleEntityFeature2280 = new BitSet(new long[]{0x0000000000800002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_ruleResultFilters_in_ruleEntityFeature2304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_ruleEntityFeature2323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_ruleEntityFeature2364 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleEntityFeature2400 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_34_in_ruleEntityFeature2413 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_ruleEntityFeature2434 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_35_in_ruleEntityFeature2447 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature2470 = new BitSet(new long[]{0x0000002000800002L});
+        public static final BitSet FOLLOW_37_in_ruleEntityFeature2483 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleEntityFeature2495 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2516 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleEntityFeature2529 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2550 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleEntityFeature2564 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleEntityFeature2579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_ruleEntityFeature2607 = new BitSet(new long[]{0x0000010000000020L});
+        public static final BitSet FOLLOW_40_in_ruleEntityFeature2638 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleEntityFeature2675 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature2696 = new BitSet(new long[]{0x0000002000200000L});
+        public static final BitSet FOLLOW_37_in_ruleEntityFeature2709 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleEntityFeature2721 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2742 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleEntityFeature2755 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2776 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleEntityFeature2790 = new BitSet(new long[]{0x0000002000200000L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleEntityFeature2813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleEntityFeature2834 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_42_in_ruleEntityFeature2858 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_43_in_ruleEntityFeature2895 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_44_in_ruleEntityFeature2932 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_40_in_ruleEntityFeature2969 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_45_in_ruleEntityFeature3006 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleEntityFeature3043 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleMultiplicity_in_ruleEntityFeature3064 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_34_in_ruleEntityFeature3078 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_ruleEntityFeature3099 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_35_in_ruleEntityFeature3112 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature3135 = new BitSet(new long[]{0x0000003000810002L});
+        public static final BitSet FOLLOW_ruleColumnPersistenceInfo_in_ruleEntityFeature3156 = new BitSet(new long[]{0x0000003000800002L});
+        public static final BitSet FOLLOW_36_in_ruleEntityFeature3170 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleLFQN_in_ruleEntityFeature3193 = new BitSet(new long[]{0x0000002000800002L});
+        public static final BitSet FOLLOW_37_in_ruleEntityFeature3208 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleEntityFeature3220 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature3241 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleEntityFeature3254 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleEntityFeature3275 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleEntityFeature3289 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleEntityFeature3304 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_ruleEntityFeature3338 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleEntityFeature3359 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature3380 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleEntityFeature3392 = new BitSet(new long[]{0x0000000000030020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleEntityFeature3414 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleEntityFeature3427 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleEntityFeature3448 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleEntityFeature3464 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleEntityFeature3485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBeanFeature_in_entryRuleBeanFeature3524 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBeanFeature3534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_ruleBeanFeature3589 = new BitSet(new long[]{0x00005641060CE000L,0x0000000200000000L});
+        public static final BitSet FOLLOW_32_in_ruleBeanFeature3614 = new BitSet(new long[]{0x0000000200000020L});
+        public static final BitSet FOLLOW_33_in_ruleBeanFeature3632 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleBeanFeature3669 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleMultiplicity_in_ruleBeanFeature3690 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+    }
+
+    protected static class FollowSets001 {
+        public static final BitSet FOLLOW_34_in_ruleBeanFeature3704 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_ruleBeanFeature3725 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_35_in_ruleBeanFeature3738 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleBeanFeature3761 = new BitSet(new long[]{0x0000003000800002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_36_in_ruleBeanFeature3774 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleLFQN_in_ruleBeanFeature3797 = new BitSet(new long[]{0x0000002000800002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_37_in_ruleBeanFeature3812 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBeanFeature3824 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleBeanFeature3845 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleBeanFeature3858 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleBeanFeature3879 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleBeanFeature3893 = new BitSet(new long[]{0x0000000000800002L,0x0000000000010000L});
+        public static final BitSet FOLLOW_ruleResultFilters_in_ruleBeanFeature3917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_ruleBeanFeature3936 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_ruleBeanFeature3977 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleBeanFeature4013 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_34_in_ruleBeanFeature4026 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_ruleBeanFeature4047 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_35_in_ruleBeanFeature4060 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleBeanFeature4083 = new BitSet(new long[]{0x0000002000000002L});
+        public static final BitSet FOLLOW_37_in_ruleBeanFeature4096 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBeanFeature4108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleBeanFeature4129 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleBeanFeature4142 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleBeanFeature4163 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleBeanFeature4177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleBeanFeature4200 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_42_in_ruleBeanFeature4224 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_44_in_ruleBeanFeature4261 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleBeanFeature4298 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleMultiplicity_in_ruleBeanFeature4319 = new BitSet(new long[]{0x00001EC700000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_34_in_ruleBeanFeature4333 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_ruleBeanFeature4354 = new BitSet(new long[]{0x1000000800000000L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_35_in_ruleBeanFeature4367 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleBeanFeature4390 = new BitSet(new long[]{0x0000002000800002L});
+        public static final BitSet FOLLOW_37_in_ruleBeanFeature4403 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBeanFeature4415 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleBeanFeature4436 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleBeanFeature4449 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleBeanFeature4470 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleBeanFeature4484 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleBeanFeature4499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_ruleBeanFeature4533 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleBeanFeature4554 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_ruleBeanFeature4575 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleBeanFeature4587 = new BitSet(new long[]{0x0000000000030020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleBeanFeature4609 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleBeanFeature4622 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleBeanFeature4643 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_17_in_ruleBeanFeature4659 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleBeanFeature4680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEntityInheritanceStrategy_in_entryRuleEntityInheritanceStrategy4719 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEntityInheritanceStrategy4729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTablePerClassStrategy_in_ruleEntityInheritanceStrategy4776 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTablePerSubclassStrategy_in_ruleEntityInheritanceStrategy4803 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTablePerClassStrategy_in_entryRuleTablePerClassStrategy4838 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTablePerClassStrategy4848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_ruleTablePerClassStrategy4894 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleTablePerClassStrategy4906 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_49_in_ruleTablePerClassStrategy4964 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleTablePerClassStrategy4985 = new BitSet(new long[]{0x000E000001800000L});
+        public static final BitSet FOLLOW_23_in_ruleTablePerClassStrategy4998 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_50_in_ruleTablePerClassStrategy5068 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000078000000L});
+        public static final BitSet FOLLOW_ruleDiscriminatorType_in_ruleTablePerClassStrategy5089 = new BitSet(new long[]{0x000E000001800000L});
+        public static final BitSet FOLLOW_23_in_ruleTablePerClassStrategy5102 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_51_in_ruleTablePerClassStrategy5172 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleTablePerClassStrategy5193 = new BitSet(new long[]{0x000E000001800000L});
+        public static final BitSet FOLLOW_23_in_ruleTablePerClassStrategy5206 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_24_in_ruleTablePerClassStrategy5261 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTablePerSubclassStrategy_in_entryRuleTablePerSubclassStrategy5297 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTablePerSubclassStrategy5307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_ruleTablePerSubclassStrategy5353 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleTablePerSubclassStrategy5365 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_49_in_ruleTablePerSubclassStrategy5423 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleTablePerSubclassStrategy5444 = new BitSet(new long[]{0x000E000001800000L});
+        public static final BitSet FOLLOW_23_in_ruleTablePerSubclassStrategy5457 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_50_in_ruleTablePerSubclassStrategy5527 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000078000000L});
+        public static final BitSet FOLLOW_ruleDiscriminatorType_in_ruleTablePerSubclassStrategy5548 = new BitSet(new long[]{0x000E000001800000L});
+        public static final BitSet FOLLOW_23_in_ruleTablePerSubclassStrategy5561 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_51_in_ruleTablePerSubclassStrategy5631 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleTablePerSubclassStrategy5652 = new BitSet(new long[]{0x000E000001800000L});
+        public static final BitSet FOLLOW_23_in_ruleTablePerSubclassStrategy5665 = new BitSet(new long[]{0x000E000001000000L});
+        public static final BitSet FOLLOW_24_in_ruleTablePerSubclassStrategy5720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID5757 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTRANSLATABLEID5768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleTRANSLATABLEID5814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage5860 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypedPackage5870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_ruleTypedPackage5916 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleTypedPackage5937 = new BitSet(new long[]{0x0000000000200002L});
+        public static final BitSet FOLLOW_21_in_ruleTypedPackage5950 = new BitSet(new long[]{0x00C00000070CE000L,0x0000000200002000L});
+        public static final BitSet FOLLOW_ruleImport_in_ruleTypedPackage5971 = new BitSet(new long[]{0x00C00000070CE000L,0x0000000200002000L});
+        public static final BitSet FOLLOW_ruleType_in_ruleTypedPackage5993 = new BitSet(new long[]{0x00800000070CE000L,0x0000000200002000L});
+        public static final BitSet FOLLOW_24_in_ruleTypedPackage6006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleType_in_entryRuleType6044 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleType6054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_ruleType6101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleClass_in_ruleType6128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleImport_in_entryRuleImport6163 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleImport6173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleImport6210 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleLQualifiedNameWithWildCard_in_ruleImport6231 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleImport6244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType6282 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataType6292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_ruleDataType6329 = new BitSet(new long[]{0x00001EC300000020L,0x000000003FA00000L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_ruleDataType6350 = new BitSet(new long[]{0x0D00000000000000L});
+        public static final BitSet FOLLOW_56_in_ruleDataType6364 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleDataType6385 = new BitSet(new long[]{0x1200002000800002L,0x0000000000001F9EL});
+        public static final BitSet FOLLOW_57_in_ruleDataType6403 = new BitSet(new long[]{0x1000002000800002L,0x0000000000001F9EL});
+        public static final BitSet FOLLOW_ruleDataTypeConstraint_in_ruleDataType6438 = new BitSet(new long[]{0x1000002000800002L,0x0000000000001F9EL});
+        public static final BitSet FOLLOW_37_in_ruleDataType6452 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDataType6464 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleDataType6485 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleDataType6498 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleDataType6519 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleDataType6533 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_58_in_ruleDataType6561 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L,0x0000003000000000L});
+        public static final BitSet FOLLOW_ruleDateType_in_ruleDataType6595 = new BitSet(new long[]{0x1000002000800002L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_ruleDateConstraint_in_ruleDataType6616 = new BitSet(new long[]{0x1000002000800002L,0x0000000000001FFEL});
+        public static final BitSet FOLLOW_37_in_ruleDataType6630 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDataType6642 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleDataType6663 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleDataType6676 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleDataType6697 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleDataType6711 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_59_in_ruleDataType6739 = new BitSet(new long[]{0x0000002000800002L,0x0000000000000600L});
+        public static final BitSet FOLLOW_ruleBlobTypeConstraint_in_ruleDataType6773 = new BitSet(new long[]{0x0000002000800002L,0x0000000000000600L});
+        public static final BitSet FOLLOW_37_in_ruleDataType6787 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDataType6799 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleDataType6820 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_29_in_ruleDataType6833 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_ruleDataType6854 = new BitSet(new long[]{0x0000000020020000L});
+        public static final BitSet FOLLOW_17_in_ruleDataType6868 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleDataType6885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAllConstraints_in_entryRuleAllConstraints6923 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAllConstraints6933 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_ruleAllConstraints6980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_ruleAllConstraints7007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_ruleAllConstraints7034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_ruleAllConstraints7061 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_ruleAllConstraints7088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_ruleAllConstraints7115 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_ruleAllConstraints7142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_ruleAllConstraints7169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_ruleAllConstraints7196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_ruleAllConstraints7223 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_ruleAllConstraints7250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_ruleAllConstraints7277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_ruleAllConstraints7304 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets002 {
+        public static final BitSet FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint7339 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataTypeConstraint7349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_ruleDataTypeConstraint7396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_ruleDataTypeConstraint7423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_ruleDataTypeConstraint7450 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_ruleDataTypeConstraint7477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_ruleDataTypeConstraint7504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_ruleDataTypeConstraint7531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_ruleDataTypeConstraint7558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_ruleDataTypeConstraint7585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_ruleDataTypeConstraint7612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_ruleDataTypeConstraint7639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_ruleDataTypeConstraint7666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint7701 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDateConstraint7711 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_ruleDateConstraint7758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_ruleDateConstraint7785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_ruleDateConstraint7812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_ruleDateConstraint7839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint7874 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBlobTypeConstraint7884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_ruleBlobTypeConstraint7931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_ruleBlobTypeConstraint7958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse7993 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertFalse8003 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_ruleDtCAssertFalse8049 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCAssertFalse8107 = new BitSet(new long[]{0xA000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCAssertFalse8120 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCAssertFalse8132 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse8153 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCAssertFalse8223 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCAssertFalse8235 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse8256 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCAssertFalse8325 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCAssertFalse8337 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertFalse8358 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCAssertFalse8372 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue8456 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertTrue8466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_ruleDtCAssertTrue8512 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCAssertTrue8570 = new BitSet(new long[]{0xA000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCAssertTrue8583 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCAssertTrue8595 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue8616 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCAssertTrue8686 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCAssertTrue8698 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue8719 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCAssertTrue8788 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCAssertTrue8800 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertTrue8821 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCAssertTrue8835 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax8919 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMax8929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_ruleDtCDecimalMax8975 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCDecimalMax8987 = new BitSet(new long[]{0x0000000000000040L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleLDecimal_in_ruleDtCDecimalMax9008 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCDecimalMax9066 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCDecimalMax9079 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDecimalMax9091 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax9112 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCDecimalMax9182 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDecimalMax9194 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax9215 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCDecimalMax9284 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDecimalMax9296 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMax9317 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCDecimalMax9331 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCDecimalMax9391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin9427 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMin9437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_ruleDtCDecimalMin9483 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCDecimalMin9495 = new BitSet(new long[]{0x0000000000000040L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleLDecimal_in_ruleDtCDecimalMin9516 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCDecimalMin9574 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCDecimalMin9587 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDecimalMin9599 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin9620 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCDecimalMin9690 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDecimalMin9702 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin9723 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCDecimalMin9792 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDecimalMin9804 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMin9825 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCDecimalMin9839 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCDecimalMin9899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits9935 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDigits9945 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_ruleDtCDigits9991 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCDigits10003 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleDtCDigits10020 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_29_in_ruleDtCDigits10037 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleDtCDigits10054 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCDigits10117 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCDigits10130 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDigits10142 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCDigits10163 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCDigits10233 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDigits10245 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCDigits10266 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCDigits10335 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCDigits10347 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCDigits10368 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCDigits10382 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCDigits10442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture10478 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCFuture10488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_ruleDtCFuture10534 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCFuture10592 = new BitSet(new long[]{0xA000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCFuture10605 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCFuture10617 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCFuture10638 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCFuture10708 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCFuture10720 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCFuture10741 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCFuture10810 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCFuture10822 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCFuture10843 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCFuture10857 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_entryRuleDtCPast10941 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCPast10951 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_ruleDtCPast10997 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCPast11055 = new BitSet(new long[]{0xA000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCPast11068 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCPast11080 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCPast11101 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCPast11171 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCPast11183 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCPast11204 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCPast11273 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCPast11285 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCPast11306 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCPast11320 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax11404 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMax11414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_ruleDtCNumericMax11460 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCNumericMax11472 = new BitSet(new long[]{0x0000000000000040L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleLInt_in_ruleDtCNumericMax11493 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCNumericMax11551 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCNumericMax11564 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNumericMax11576 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax11597 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCNumericMax11667 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNumericMax11679 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax11700 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCNumericMax11769 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNumericMax11781 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMax11802 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCNumericMax11816 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCNumericMax11876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin11912 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets003 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMin11922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_ruleDtCNumericMin11968 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCNumericMin11980 = new BitSet(new long[]{0x0000000000000040L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleLInt_in_ruleDtCNumericMin12001 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCNumericMin12059 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCNumericMin12072 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNumericMin12084 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin12105 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCNumericMin12175 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNumericMin12187 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin12208 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCNumericMin12277 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNumericMin12289 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMin12310 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCNumericMin12324 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCNumericMin12384 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull12420 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNotNull12430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_ruleDtCNotNull12476 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCNotNull12534 = new BitSet(new long[]{0xA000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCNotNull12547 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNotNull12559 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNotNull12580 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCNotNull12650 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNotNull12662 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNotNull12683 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCNotNull12752 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNotNull12764 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCNotNull12785 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCNotNull12799 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_entryRuleDtCNull12883 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNull12893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_ruleDtCNull12939 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCNull12997 = new BitSet(new long[]{0xA000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCNull13010 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNull13022 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNull13043 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCNull13113 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNull13125 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCNull13146 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCNull13215 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCNull13227 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCNull13248 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCNull13262 = new BitSet(new long[]{0x8000000C00000002L,0x0000000000000001L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx13346 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCRegEx13356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_ruleDtCRegEx13402 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCRegEx13414 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleDtCRegEx13431 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCRegEx13494 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCRegEx13507 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCRegEx13519 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCRegEx13540 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCRegEx13610 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCRegEx13622 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCRegEx13643 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCRegEx13712 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCRegEx13724 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCRegEx13745 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCRegEx13759 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCRegEx13819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_entryRuleDtCSize13855 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCSize13865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_ruleDtCSize13911 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleDtCSize13923 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleDtCSize13940 = new BitSet(new long[]{0x0000000020000000L});
+        public static final BitSet FOLLOW_29_in_ruleDtCSize13957 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleDtCSize13974 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_34_in_ruleDtCSize14037 = new BitSet(new long[]{0xA000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_61_in_ruleDtCSize14050 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCSize14062 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCSize14083 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_63_in_ruleDtCSize14153 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCSize14165 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDtCSize14186 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_64_in_ruleDtCSize14255 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleDtCSize14267 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000E00000000L});
+        public static final BitSet FOLLOW_ruleConstraintSeverity_in_ruleDtCSize14288 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleDtCSize14302 = new BitSet(new long[]{0x8000000C00020000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_17_in_ruleDtCSize14362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_entryRuleScalarType14398 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleScalarType14408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_ruleScalarType14455 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_ruleScalarType14482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum14519 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnum14529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_ruleEnum14566 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleEnum14583 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleEnum14600 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleEnumLiteral_in_ruleEnum14621 = new BitSet(new long[]{0x0000000021000000L});
+        public static final BitSet FOLLOW_29_in_ruleEnum14634 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleEnumLiteral_in_ruleEnum14655 = new BitSet(new long[]{0x0000000021000000L});
+        public static final BitSet FOLLOW_24_in_ruleEnum14669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnumLiteral_in_entryRuleEnumLiteral14705 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnumLiteral14715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleEnumLiteral14757 = new BitSet(new long[]{0x0000000000030002L,0x0000000000008000L});
+        public static final BitSet FOLLOW_16_in_ruleEnumLiteral14820 = new BitSet(new long[]{0x0000000000030002L,0x000000000000C000L});
+        public static final BitSet FOLLOW_78_in_ruleEnumLiteral14838 = new BitSet(new long[]{0x0000000000030002L,0x0000000000008000L});
+        public static final BitSet FOLLOW_79_in_ruleEnumLiteral14926 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleEnumLiteral14952 = new BitSet(new long[]{0x4000000000030002L,0x0000000000008000L});
+        public static final BitSet FOLLOW_62_in_ruleEnumLiteral14965 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleEnumLiteral14982 = new BitSet(new long[]{0x0000000000030002L,0x0000000000008000L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_entryRuleAnnotationDef15073 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAnnotationDef15083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_ruleAnnotationDef15141 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResultFilters_in_entryRuleResultFilters15177 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResultFilters15187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_ruleResultFilters15233 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleResultFilters15245 = new BitSet(new long[]{0x0000000001000020L});
+        public static final BitSet FOLLOW_ruleResultFilter_in_ruleResultFilters15266 = new BitSet(new long[]{0x0000000001000020L});
+        public static final BitSet FOLLOW_24_in_ruleResultFilters15279 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResultFilter_in_entryRuleResultFilter15315 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResultFilter15325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_ruleResultFilter15371 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_entryRuleAttributeMatchingConstraint15405 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAttributeMatchingConstraint15415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleAttributeMatchingConstraint15460 = new BitSet(new long[]{0x0000000000000000L,0x0020270000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_ruleLComparatorType_in_ruleAttributeMatchingConstraint15481 = new BitSet(new long[]{0x0000000000000030L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleAttributeMatchingConstraint15499 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleAttributeMatchingConstraint15542 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleAttributeMatchingConstraint15556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_entryRuleKeyAndValue15594 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleKeyAndValue15604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_ruleKeyAndValue15641 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleKeyAndValue15653 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleKeyAndValue15670 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_82_in_ruleKeyAndValue15687 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleKeyAndValue15699 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleKeyAndValue15716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLQualifiedNameWithWildCard_in_entryRuleLQualifiedNameWithWildCard15758 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLQualifiedNameWithWildCard15769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleLQualifiedNameWithWildCard15816 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleLQualifiedNameWithWildCard15835 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_84_in_ruleLQualifiedNameWithWildCard15848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLFQN_in_entryRuleLFQN15891 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLFQN15902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleLFQN15942 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleLFQN15961 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleLFQN15976 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_entryRuleTYPE_CROSS_REFERENCE16024 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTYPE_CROSS_REFERENCE16035 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleTYPE_CROSS_REFERENCE16074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_entryRuleValidIDWithKeywords16119 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidIDWithKeywords16130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_ruleValidIDWithKeywords16168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_ruleValidIDWithKeywords16187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_ruleValidIDWithKeywords16206 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_ruleValidIDWithKeywords16225 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_ruleValidIDWithKeywords16244 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_ruleValidIDWithKeywords16264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    }
+
+    protected static class FollowSets004 {
+        public static final BitSet FOLLOW_86_in_ruleValidIDWithKeywords16277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_ruleValidIDWithKeywords16297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_ruleValidIDWithKeywords16316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_ruleValidIDWithKeywords16335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_ruleValidIDWithKeywords16354 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_ruleValidIDWithKeywords16373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_ruleValidIDWithKeywords16392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_ruleValidIDWithKeywords16411 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_ruleValidIDWithKeywords16430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_ruleValidIDWithKeywords16449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleValidIDWithKeywords16468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidIDWithKeywords16489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleMultiplicity_in_entryRuleMultiplicity16536 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleMultiplicity16546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_ruleMultiplicity16583 = new BitSet(new long[]{0x0000000000000000L,0x0000000080100000L,0x00000C0002000000L});
+        public static final BitSet FOLLOW_ruleLowerBound_in_ruleMultiplicity16604 = new BitSet(new long[]{0x0000000800000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_94_in_ruleMultiplicity16617 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_ruleUpperBound_in_ruleMultiplicity16638 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleMultiplicity16652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_entryRuleLInt16689 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLInt16700 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_ruleLInt16739 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_96_in_ruleLInt16758 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleLInt16775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLDecimal_in_entryRuleLDecimal16821 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLDecimal16832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_ruleLDecimal16879 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleLDecimal16898 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleLDecimal16913 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation16960 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation16970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_ruleXAnnotation17016 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXAnnotation17039 = new BitSet(new long[]{0x0000000000010002L});
+        public static final BitSet FOLLOW_16_in_ruleXAnnotation17060 = new BitSet(new long[]{0x00400024063FE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation17104 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleXAnnotation17117 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation17158 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation17188 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXAnnotation17202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair17240 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair17250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleXAnnotationElementValuePair17320 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleXAnnotationElementValuePair17332 = new BitSet(new long[]{0x00400024063DE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair17355 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList17391 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList17401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_ruleXAnnotationElementValueOrCommaList17466 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_34_in_ruleXAnnotationElementValueOrCommaList17478 = new BitSet(new long[]{0x0040002C063DE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList17502 = new BitSet(new long[]{0x0000800800000000L});
+        public static final BitSet FOLLOW_47_in_ruleXAnnotationElementValueOrCommaList17515 = new BitSet(new long[]{0x00400024063DE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList17536 = new BitSet(new long[]{0x0000800800000000L});
+        public static final BitSet FOLLOW_35_in_ruleXAnnotationElementValueOrCommaList17552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList17582 = new BitSet(new long[]{0x0000800000000002L});
+        public static final BitSet FOLLOW_47_in_ruleXAnnotationElementValueOrCommaList17604 = new BitSet(new long[]{0x00400024063DE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList17625 = new BitSet(new long[]{0x0000800000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue17666 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue17676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_ruleXAnnotationElementValue17741 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_34_in_ruleXAnnotationElementValue17753 = new BitSet(new long[]{0x0040002C063DE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue17777 = new BitSet(new long[]{0x0000800800000000L});
+        public static final BitSet FOLLOW_47_in_ruleXAnnotationElementValue17790 = new BitSet(new long[]{0x00400024063DE1F0L,0x0400010780000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue17811 = new BitSet(new long[]{0x0000800800000000L});
+        public static final BitSet FOLLOW_35_in_ruleXAnnotationElementValue17827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue17856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression17891 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression17901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression17948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression17975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression18010 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression18020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression18066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment18100 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment18110 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleXAssignment18168 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXAssignment18184 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment18204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_ruleXAssignment18234 = new BitSet(new long[]{0x0000000000000002L,0x000003F800000000L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_ruleXAssignment18287 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXAssignment18310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign18350 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign18361 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_ruleOpSingleAssign18398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign18438 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign18449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_ruleOpMultiAssign18487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_ruleOpMultiAssign18506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_ruleOpMultiAssign18525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_ruleOpMultiAssign18544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_ruleOpMultiAssign18563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleOpMultiAssign18583 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_104_in_ruleOpMultiAssign18596 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleOpMultiAssign18609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_ruleOpMultiAssign18630 = new BitSet(new long[]{0x0000000000000000L,0x0000060000000000L});
+        public static final BitSet FOLLOW_105_in_ruleOpMultiAssign18644 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+        public static final BitSet FOLLOW_106_in_ruleOpMultiAssign18659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression18700 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression18710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression18757 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+        public static final BitSet FOLLOW_ruleOpOr_in_ruleXOrExpression18810 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_ruleXOrExpression18833 = new BitSet(new long[]{0x0000000000000002L,0x0000080000000000L});
+        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr18872 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr18883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_ruleOpOr18920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression18959 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression18969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression19016 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_ruleXAndExpression19069 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression19092 = new BitSet(new long[]{0x0000000000000002L,0x0000100000000000L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd19131 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd19142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_ruleOpAnd19179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression19218 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression19228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression19275 = new BitSet(new long[]{0x0000000000000002L,0x0001E00000000000L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_ruleXEqualityExpression19328 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression19351 = new BitSet(new long[]{0x0000000000000002L,0x0001E00000000000L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality19390 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality19401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_ruleOpEquality19439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_ruleOpEquality19458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_111_in_ruleOpEquality19477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_ruleOpEquality19496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression19536 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression19546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression19593 = new BitSet(new long[]{0x0000000000000002L,0x0002070000000000L});
+        public static final BitSet FOLLOW_113_in_ruleXRelationalExpression19629 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression19652 = new BitSet(new long[]{0x0000000000000002L,0x0002070000000000L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_ruleXRelationalExpression19713 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression19736 = new BitSet(new long[]{0x0000000000000002L,0x0002070000000000L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare19776 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare19787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_ruleOpCompare19825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleOpCompare19845 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_ruleOpCompare19858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_ruleOpCompare19878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleOpCompare19897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression19937 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression19947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression19994 = new BitSet(new long[]{0x0000000000000002L,0x007C030040000000L});
+        public static final BitSet FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression20047 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression20070 = new BitSet(new long[]{0x0000000000000002L,0x007C030040000000L});
+        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther20109 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther20120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_ruleOpOther20158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_ruleOpOther20177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_ruleOpOther20197 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+        public static final BitSet FOLLOW_94_in_ruleOpOther20210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_ruleOpOther20230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_ruleOpOther20249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_ruleOpOther20269 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    }
+
+    protected static class FollowSets005 {
+        public static final BitSet FOLLOW_105_in_ruleOpOther20300 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_ruleOpOther20313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_ruleOpOther20334 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleOpOther20356 = new BitSet(new long[]{0x0000000000000000L,0x0010010000000000L});
+        public static final BitSet FOLLOW_104_in_ruleOpOther20387 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_104_in_ruleOpOther20400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleOpOther20421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_ruleOpOther20440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_ruleOpOther20461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_ruleOpOther20480 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression20520 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression20530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression20577 = new BitSet(new long[]{0x0000000000000002L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_ruleXAdditiveExpression20630 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_ruleXAdditiveExpression20653 = new BitSet(new long[]{0x0000000000000002L,0x0000000180000000L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd20692 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd20703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_ruleOpAdd20741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_ruleOpAdd20760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression20800 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression20810 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression20857 = new BitSet(new long[]{0x0000000000000002L,0x0380000000100000L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression20910 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression20933 = new BitSet(new long[]{0x0000000000000002L,0x0380000000100000L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti20972 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti20983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_ruleOpMulti21021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_ruleOpMulti21040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_ruleOpMulti21059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_ruleOpMulti21078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation21118 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation21128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_ruleXUnaryOperation21186 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation21207 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation21236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary21272 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary21283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_ruleOpUnary21321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_ruleOpUnary21340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_ruleOpUnary21359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression21399 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression21409 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_ruleXCastedExpression21456 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
+        public static final BitSet FOLLOW_123_in_ruleXCastedExpression21491 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression21514 = new BitSet(new long[]{0x0000000000000002L,0x0800000000000000L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation21552 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation21562 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_ruleXPostfixOperation21609 = new BitSet(new long[]{0x0000000000000002L,0x3000000000000000L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_ruleXPostfixOperation21661 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix21701 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix21712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_ruleOpPostfix21750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_ruleOpPostfix21769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall21809 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall21819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_ruleXMemberFeatureCall21866 = new BitSet(new long[]{0x0000000000000002L,0xC000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleXMemberFeatureCall21938 = new BitSet(new long[]{0x0040000000100020L,0x0000000000000000L,0x0000000000001800L});
+        public static final BitSet FOLLOW_126_in_ruleXMemberFeatureCall21962 = new BitSet(new long[]{0x0040000000100020L,0x0000000000000000L,0x0000000000001800L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleXMemberFeatureCall21999 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_ruleXMemberFeatureCall22015 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXMemberFeatureCall22037 = new BitSet(new long[]{0x0000000000000002L,0xC000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleXMemberFeatureCall22123 = new BitSet(new long[]{0x0040000000100020L,0x0000010000000000L,0x0000000000003800L});
+        public static final BitSet FOLLOW_127_in_ruleXMemberFeatureCall22147 = new BitSet(new long[]{0x0040000000100020L,0x0000010000000000L,0x0000000000003800L});
+        public static final BitSet FOLLOW_126_in_ruleXMemberFeatureCall22184 = new BitSet(new long[]{0x0040000000100020L,0x0000010000000000L,0x0000000000003800L});
+        public static final BitSet FOLLOW_104_in_ruleXMemberFeatureCall22213 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall22234 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_47_in_ruleXMemberFeatureCall22247 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXMemberFeatureCall22268 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_ruleXMemberFeatureCall22282 = new BitSet(new long[]{0x0040000000100020L,0x0000010000000000L,0x0000000000003800L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_ruleXMemberFeatureCall22307 = new BitSet(new long[]{0x0000000400010002L,0xC000000000080000L});
+        public static final BitSet FOLLOW_16_in_ruleXMemberFeatureCall22341 = new BitSet(new long[]{0x00400024003301F0L,0x0410010580000000L,0x0000000000BFFB8BL});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXMemberFeatureCall22426 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall22454 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleXMemberFeatureCall22467 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXMemberFeatureCall22488 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXMemberFeatureCall22505 = new BitSet(new long[]{0x0000000400000002L,0xC000000000080000L});
+        public static final BitSet FOLLOW_ruleXClosure_in_ruleXMemberFeatureCall22540 = new BitSet(new long[]{0x0000000000000002L,0xC000000000080000L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression22580 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression22590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_ruleXPrimaryExpression22637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_ruleXPrimaryExpression22664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_ruleXPrimaryExpression22691 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_ruleXPrimaryExpression22735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_ruleXPrimaryExpression22763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_ruleXPrimaryExpression22790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_ruleXPrimaryExpression22817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_ruleXPrimaryExpression22874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_ruleXPrimaryExpression22902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_ruleXPrimaryExpression22929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_ruleXPrimaryExpression22956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_ruleXPrimaryExpression22983 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_ruleXPrimaryExpression23010 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_ruleXPrimaryExpression23037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_ruleXPrimaryExpression23064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral23099 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral23109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_ruleXLiteral23156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_ruleXLiteral23196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_ruleXLiteral23224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_ruleXLiteral23251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_ruleXLiteral23278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_ruleXLiteral23305 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_ruleXLiteral23332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral23367 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral23377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_ruleXCollectionLiteral23424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_ruleXCollectionLiteral23451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral23486 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral23496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_ruleXSetLiteral23542 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleXSetLiteral23554 = new BitSet(new long[]{0x00400024013101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSetLiteral23576 = new BitSet(new long[]{0x0000800001000000L});
+        public static final BitSet FOLLOW_47_in_ruleXSetLiteral23589 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSetLiteral23610 = new BitSet(new long[]{0x0000800001000000L});
+        public static final BitSet FOLLOW_24_in_ruleXSetLiteral23626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral23662 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral23672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_ruleXListLiteral23718 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_34_in_ruleXListLiteral23730 = new BitSet(new long[]{0x0040002C003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXListLiteral23752 = new BitSet(new long[]{0x0000800800000000L});
+        public static final BitSet FOLLOW_47_in_ruleXListLiteral23765 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXListLiteral23786 = new BitSet(new long[]{0x0000800800000000L});
+        public static final BitSet FOLLOW_35_in_ruleXListLiteral23802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure23838 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure23848 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_ruleXClosure23908 = new BitSet(new long[]{0x0040022C003101F0L,0x0410010580000000L,0x0000000000BFFF8BL});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure23981 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_47_in_ruleXClosure23994 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXClosure24015 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_ruleXClosure24037 = new BitSet(new long[]{0x0040022C003101F0L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_ruleXClosure24074 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleXClosure24086 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure24122 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure24132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_ruleXExpressionInClosure24188 = new BitSet(new long[]{0x0040022400B101F2L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_23_in_ruleXExpressionInClosure24201 = new BitSet(new long[]{0x00400224003101F2L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure24241 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure24251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure24359 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_47_in_ruleXShortClosure24372 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXShortClosure24393 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_ruleXShortClosure24415 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXShortClosure24451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression24487 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression24497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_ruleXParenthesizedExpression24534 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXParenthesizedExpression24556 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXParenthesizedExpression24567 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression24603 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression24613 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets006 {
+        public static final BitSet FOLLOW_129_in_ruleXIfExpression24659 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXIfExpression24671 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression24692 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXIfExpression24704 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression24725 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000004L});
+        public static final BitSet FOLLOW_130_in_ruleXIfExpression24746 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXIfExpression24768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression24806 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression24816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_131_in_ruleXSwitchExpression24862 = new BitSet(new long[]{0x00400024003101F0L,0x0410010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_16_in_ruleXSwitchExpression24900 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXSwitchExpression24921 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_ruleXSwitchExpression24933 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression24956 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXSwitchExpression24968 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXSwitchExpression25017 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_ruleXSwitchExpression25029 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression25053 = new BitSet(new long[]{0x0000000000200000L});
+        public static final BitSet FOLLOW_21_in_ruleXSwitchExpression25067 = new BitSet(new long[]{0x0000800001010020L,0x0010000000000000L,0x0000000000000070L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_ruleXSwitchExpression25088 = new BitSet(new long[]{0x0000800001010020L,0x0010000000000000L,0x0000000000000070L});
+        public static final BitSet FOLLOW_133_in_ruleXSwitchExpression25102 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_ruleXSwitchExpression25114 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSwitchExpression25135 = new BitSet(new long[]{0x0000000001000000L});
+        public static final BitSet FOLLOW_24_in_ruleXSwitchExpression25149 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart25185 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart25195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXCasePart25250 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000050L});
+        public static final BitSet FOLLOW_134_in_ruleXCasePart25264 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart25285 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_ruleXCasePart25301 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXCasePart25322 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_ruleXCasePart25347 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression25397 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression25407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_ruleXForLoopExpression25484 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXForLoopExpression25496 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_ruleXForLoopExpression25517 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_ruleXForLoopExpression25529 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression25552 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXForLoopExpression25564 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXForLoopExpression25585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression25621 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression25631 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_ruleXBasicForLoopExpression25677 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXBasicForLoopExpression25689 = new BitSet(new long[]{0x0040022400B101F0L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_ruleXBasicForLoopExpression25711 = new BitSet(new long[]{0x0000800000800000L});
+        public static final BitSet FOLLOW_47_in_ruleXBasicForLoopExpression25724 = new BitSet(new long[]{0x00400224003101F0L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_ruleXBasicForLoopExpression25745 = new BitSet(new long[]{0x0000800000800000L});
+        public static final BitSet FOLLOW_23_in_ruleXBasicForLoopExpression25761 = new BitSet(new long[]{0x0040002400B101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXBasicForLoopExpression25782 = new BitSet(new long[]{0x0000000000800000L});
+        public static final BitSet FOLLOW_23_in_ruleXBasicForLoopExpression25795 = new BitSet(new long[]{0x00400024003301F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXBasicForLoopExpression25817 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleXBasicForLoopExpression25830 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXBasicForLoopExpression25851 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXBasicForLoopExpression25867 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXBasicForLoopExpression25888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression25924 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression25934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_136_in_ruleXWhileExpression25980 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXWhileExpression25992 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression26013 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXWhileExpression26025 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXWhileExpression26046 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression26082 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression26092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_137_in_ruleXDoWhileExpression26138 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression26159 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+        public static final BitSet FOLLOW_136_in_ruleXDoWhileExpression26171 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXDoWhileExpression26183 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXDoWhileExpression26204 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXDoWhileExpression26216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression26252 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression26262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_ruleXBlockExpression26308 = new BitSet(new long[]{0x00400224013101F0L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_ruleXBlockExpression26330 = new BitSet(new long[]{0x0040022401B101F0L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_23_in_ruleXBlockExpression26343 = new BitSet(new long[]{0x00400224013101F0L,0x0400010580000000L,0x0000000000BFFF8AL});
+        public static final BitSet FOLLOW_24_in_ruleXBlockExpression26359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration26395 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration26405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_ruleXExpressionOrVarDeclaration26452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXExpressionOrVarDeclaration26479 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration26514 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration26524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_ruleXVariableDeclaration26577 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_138_in_ruleXVariableDeclaration26608 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXVariableDeclaration26656 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration26677 = new BitSet(new long[]{0x4000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleXVariableDeclaration26706 = new BitSet(new long[]{0x4000000000000002L});
+        public static final BitSet FOLLOW_62_in_ruleXVariableDeclaration26720 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXVariableDeclaration26741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter26779 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter26789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmFormalParameter26835 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleJvmFormalParameter26857 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter26893 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter26903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleFullJvmFormalParameter26949 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleFullJvmFormalParameter26970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall27006 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall27016 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleXFeatureCall27063 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall27084 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_47_in_ruleXFeatureCall27097 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXFeatureCall27118 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_ruleXFeatureCall27132 = new BitSet(new long[]{0x0040000000100020L,0x0000010000000000L,0x0000000000003800L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_ruleXFeatureCall27157 = new BitSet(new long[]{0x0000000400010002L});
+        public static final BitSet FOLLOW_16_in_ruleXFeatureCall27191 = new BitSet(new long[]{0x00400024003301F0L,0x0410010580000000L,0x0000000000BFFB8BL});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXFeatureCall27276 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall27304 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleXFeatureCall27317 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXFeatureCall27338 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXFeatureCall27355 = new BitSet(new long[]{0x0000000400000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_ruleXFeatureCall27390 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID27428 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID27439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleFeatureCallID27486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_ruleFeatureCallID27510 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_139_in_ruleFeatureCallID27529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleFeatureCallID27548 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_140_in_ruleFeatureCallID27567 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper27608 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper27619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_ruleIdOrSuper27666 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_141_in_ruleIdOrSuper27690 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall27730 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall27740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_142_in_ruleXConstructorCall27786 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXConstructorCall27809 = new BitSet(new long[]{0x0000000400010002L,0x0000010000000000L});
+        public static final BitSet FOLLOW_104_in_ruleXConstructorCall27830 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall27852 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_47_in_ruleXConstructorCall27865 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleXConstructorCall27886 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_ruleXConstructorCall27900 = new BitSet(new long[]{0x0000000400010002L});
+        public static final BitSet FOLLOW_16_in_ruleXConstructorCall27936 = new BitSet(new long[]{0x00400024003301F0L,0x0410010580000000L,0x0000000000BFFB8BL});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_ruleXConstructorCall28021 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall28049 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleXConstructorCall28062 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXConstructorCall28083 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXConstructorCall28100 = new BitSet(new long[]{0x0000000400000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_ruleXConstructorCall28135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral28172 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral28182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_143_in_ruleXBooleanLiteral28229 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_144_in_ruleXBooleanLiteral28253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral28303 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral28313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_145_in_ruleXNullLiteral28359 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral28395 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral28405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_ruleXNumberLiteral28460 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets007 {
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral28496 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral28506 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_STRING_in_ruleXStringLiteral28557 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral28598 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral28608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_146_in_ruleXTypeLiteral28654 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXTypeLiteral28666 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXTypeLiteral28689 = new BitSet(new long[]{0x0000000400020000L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_ruleXTypeLiteral28710 = new BitSet(new long[]{0x0000000400020000L});
+        public static final BitSet FOLLOW_17_in_ruleXTypeLiteral28723 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression28759 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression28769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_147_in_ruleXThrowExpression28815 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXThrowExpression28836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression28872 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression28882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_148_in_ruleXReturnExpression28928 = new BitSet(new long[]{0x00400024003101F2L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXReturnExpression29163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression29200 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression29210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_149_in_ruleXTryCatchFinallyExpression29256 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression29277 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000001400000L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_ruleXTryCatchFinallyExpression29307 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000001400000L});
+        public static final BitSet FOLLOW_150_in_ruleXTryCatchFinallyExpression29329 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression29351 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_150_in_ruleXTryCatchFinallyExpression29373 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXTryCatchFinallyExpression29394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression29432 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression29442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_151_in_ruleXSynchronizedExpression29506 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXSynchronizedExpression29518 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSynchronizedExpression29541 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXSynchronizedExpression29553 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXSynchronizedExpression29574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause29610 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause29620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_ruleXCatchClause29665 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_ruleXCatchClause29678 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_ruleXCatchClause29699 = new BitSet(new long[]{0x0000000000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXCatchClause29711 = new BitSet(new long[]{0x00400024003101F0L,0x0400010580000000L,0x0000000000BFFB8AL});
+        public static final BitSet FOLLOW_ruleXExpression_in_ruleXCatchClause29732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName29769 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName29780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName29827 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleQualifiedName29855 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedName29878 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber29932 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumber29943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_HEX_in_ruleNumber29987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleNumber30015 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_ruleNumber30041 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleNumber30061 = new BitSet(new long[]{0x0000000000000140L});
+        public static final BitSet FOLLOW_RULE_INT_in_ruleNumber30077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_ruleNumber30103 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference30158 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference30168 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_ruleJvmTypeReference30216 = new BitSet(new long[]{0x0000000400000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_ruleJvmTypeReference30252 = new BitSet(new long[]{0x0000000400000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_ruleJvmTypeReference30283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets30319 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets30330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_ruleArrayBrackets30368 = new BitSet(new long[]{0x0000000800000000L});
+        public static final BitSet FOLLOW_35_in_ruleArrayBrackets30381 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef30421 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef30431 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_ruleXFunctionTypeRef30469 = new BitSet(new long[]{0x0000000000030020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef30491 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_47_in_ruleXFunctionTypeRef30504 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef30525 = new BitSet(new long[]{0x0000800000020000L});
+        public static final BitSet FOLLOW_17_in_ruleXFunctionTypeRef30541 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+        public static final BitSet FOLLOW_116_in_ruleXFunctionTypeRef30555 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleXFunctionTypeRef30576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference30612 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference30622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleJvmParameterizedTypeReference30670 = new BitSet(new long[]{0x0000000000000002L,0x0000010000000000L});
+        public static final BitSet FOLLOW_104_in_ruleJvmParameterizedTypeReference30691 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference30713 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_47_in_ruleJvmParameterizedTypeReference30726 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference30747 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_ruleJvmParameterizedTypeReference30761 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleJvmParameterizedTypeReference30797 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleJvmParameterizedTypeReference30822 = new BitSet(new long[]{0x0000000000000002L,0x0000010000080000L});
+        public static final BitSet FOLLOW_104_in_ruleJvmParameterizedTypeReference30843 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference30865 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_47_in_ruleJvmParameterizedTypeReference30878 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L,0x0000000002000000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_ruleJvmParameterizedTypeReference30899 = new BitSet(new long[]{0x0000800000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_ruleJvmParameterizedTypeReference30913 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference30955 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference30965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmArgumentTypeReference31012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_ruleJvmArgumentTypeReference31039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference31074 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference31084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_153_in_ruleJvmWildcardTypeReference31130 = new BitSet(new long[]{0x0000000000100002L,0x0000000000000000L,0x0000000000002000L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_ruleJvmWildcardTypeReference31153 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_ruleJvmWildcardTypeReference31174 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_ruleJvmWildcardTypeReference31204 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_ruleJvmWildcardTypeReference31225 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound31265 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound31275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_ruleJvmUpperBound31312 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBound31333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded31369 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded31379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_ruleJvmUpperBoundAnded31416 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmUpperBoundAnded31437 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound31473 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound31483 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_141_in_ruleJvmLowerBound31520 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBound31541 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded31577 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded31587 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_154_in_ruleJvmLowerBoundAnded31624 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_ruleJvmLowerBoundAnded31645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard31684 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard31695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleQualifiedNameWithWildcard31742 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleQualifiedNameWithWildcard31760 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_84_in_ruleQualifiedNameWithWildcard31773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID31814 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidID31825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID31864 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration31910 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration31920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_ruleXImportDeclaration31957 = new BitSet(new long[]{0x0000000000000020L,0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_139_in_ruleXImportDeclaration31977 = new BitSet(new long[]{0x0000000000000020L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_140_in_ruleXImportDeclaration32008 = new BitSet(new long[]{0x0000000000000020L,0x0000000000000000L,0x0000000000001000L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_ruleXImportDeclaration32045 = new BitSet(new long[]{0x0000000000000020L,0x0000000000100000L});
+        public static final BitSet FOLLOW_84_in_ruleXImportDeclaration32064 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleXImportDeclaration32104 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_ruleXImportDeclaration32135 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_ruleXImportDeclaration32162 = new BitSet(new long[]{0x0000000000800002L});
+        public static final BitSet FOLLOW_23_in_ruleXImportDeclaration32176 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport32215 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport32226 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_ruleQualifiedNameInStaticImport32273 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+        public static final BitSet FOLLOW_83_in_ruleQualifiedNameInStaticImport32291 = new BitSet(new long[]{0x0000000000000022L});
+        public static final BitSet FOLLOW_155_in_ruleDiscriminatorType32346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_156_in_ruleDiscriminatorType32363 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_157_in_ruleDiscriminatorType32380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_158_in_ruleDiscriminatorType32397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_159_in_ruleLHistorizedDateType32442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_160_in_ruleLHistorizedDateType32459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_161_in_ruleConstraintSeverity32504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_162_in_ruleConstraintSeverity32521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_163_in_ruleConstraintSeverity32538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_ruleDateType32583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_164_in_ruleDateType32600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_165_in_ruleDateType32617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_ruleLVisibility32662 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets008 {
+        public static final BitSet FOLLOW_166_in_ruleLVisibility32679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_167_in_ruleLVisibility32696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_168_in_ruleLVisibility32713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_ruleLComparatorType32758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_ruleLComparatorType32775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_ruleLComparatorType32792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_ruleLComparatorType32809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_169_in_ruleLComparatorType32826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_ruleLComparatorType32843 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_ruleLowerBound32888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_170_in_ruleLowerBound32905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_153_in_ruleLowerBound32922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_ruleLowerBound32939 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_171_in_ruleLowerBound32956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_ruleUpperBound33001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_171_in_ruleUpperBound33018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_synpred2_InternalEntityGrammar15525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_synpred3_InternalEntityGrammar17052 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_synpred4_InternalEntityGrammar17081 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_62_in_synpred4_InternalEntityGrammar17087 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_synpred7_InternalEntityGrammar17443 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_34_in_synpred7_InternalEntityGrammar17447 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_synpred8_InternalEntityGrammar17718 = new BitSet(new long[]{0x0000000400000000L});
+        public static final BitSet FOLLOW_34_in_synpred8_InternalEntityGrammar17722 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_synpred9_InternalEntityGrammar18255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOr_in_synpred10_InternalEntityGrammar18778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_synpred11_InternalEntityGrammar19037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_synpred12_InternalEntityGrammar19296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_synpred13_InternalEntityGrammar19610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_synpred14_InternalEntityGrammar19681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOther_in_synpred15_InternalEntityGrammar20015 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_synpred16_InternalEntityGrammar20284 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_105_in_synpred16_InternalEntityGrammar20289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_synpred17_InternalEntityGrammar20371 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_104_in_synpred17_InternalEntityGrammar20376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_synpred18_InternalEntityGrammar20598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_synpred19_InternalEntityGrammar20878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_synpred20_InternalEntityGrammar21472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_synpred21_InternalEntityGrammar21629 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_synpred22_InternalEntityGrammar21884 = new BitSet(new long[]{0x0040000000100020L,0x0000000000000000L,0x0000000000001800L});
+        public static final BitSet FOLLOW_126_in_synpred22_InternalEntityGrammar21898 = new BitSet(new long[]{0x0040000000100020L,0x0000000000000000L,0x0000000000001800L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_synpred22_InternalEntityGrammar21914 = new BitSet(new long[]{0x4000000000000000L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_synpred22_InternalEntityGrammar21920 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_synpred23_InternalEntityGrammar22062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_127_in_synpred23_InternalEntityGrammar22076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_126_in_synpred23_InternalEntityGrammar22096 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_synpred24_InternalEntityGrammar22323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred25_InternalEntityGrammar22375 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_47_in_synpred25_InternalEntityGrammar22382 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred25_InternalEntityGrammar22389 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_synpred25_InternalEntityGrammar22403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_synpred26_InternalEntityGrammar22523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_151_in_synpred27_InternalEntityGrammar22712 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_synpred27_InternalEntityGrammar22716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_135_in_synpred28_InternalEntityGrammar22838 = new BitSet(new long[]{0x0000000000010000L});
+        public static final BitSet FOLLOW_16_in_synpred28_InternalEntityGrammar22842 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred28_InternalEntityGrammar22849 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_synpred28_InternalEntityGrammar22855 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_synpred29_InternalEntityGrammar23177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalEntityGrammar23927 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_47_in_synpred31_InternalEntityGrammar23934 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred31_InternalEntityGrammar23941 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_synpred31_InternalEntityGrammar23955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_130_in_synpred33_InternalEntityGrammar24738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_synpred34_InternalEntityGrammar24877 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred34_InternalEntityGrammar24884 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_synpred34_InternalEntityGrammar24890 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred35_InternalEntityGrammar24992 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
+        public static final BitSet FOLLOW_132_in_synpred35_InternalEntityGrammar24998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_synpred37_InternalEntityGrammar26626 = new BitSet(new long[]{0x0000000000000020L});
+        public static final BitSet FOLLOW_ruleValidID_in_synpred37_InternalEntityGrammar26635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_synpred38_InternalEntityGrammar27173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred39_InternalEntityGrammar27225 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_47_in_synpred39_InternalEntityGrammar27232 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred39_InternalEntityGrammar27239 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_synpred39_InternalEntityGrammar27253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_synpred40_InternalEntityGrammar27373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_synpred41_InternalEntityGrammar27822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_synpred42_InternalEntityGrammar27918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred43_InternalEntityGrammar27970 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_47_in_synpred43_InternalEntityGrammar27977 = new BitSet(new long[]{0x0000000000010020L,0x0010000000000000L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_synpred43_InternalEntityGrammar27984 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000000L,0x0000000000000001L});
+        public static final BitSet FOLLOW_128_in_synpred43_InternalEntityGrammar27998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_synpred44_InternalEntityGrammar28118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_set_in_synpred45_InternalEntityGrammar28938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_152_in_synpred46_InternalEntityGrammar29291 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_150_in_synpred47_InternalEntityGrammar29321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_synpred50_InternalEntityGrammar29846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_synpred51_InternalEntityGrammar30231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_synpred52_InternalEntityGrammar30683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_synpred53_InternalEntityGrammar30778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_synpred54_InternalEntityGrammar30835 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+
+}
+
+@SuppressWarnings("all")
+abstract class InternalEntityGrammarParser2 extends InternalEntityGrammarParser1 {
+
+        InternalEntityGrammarParser2(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalEntityGrammarParser2(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    // $ANTLR start "entryRuleEntityModel"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:68:1: entryRuleEntityModel returns [EObject current=null] : iv_ruleEntityModel= ruleEntityModel EOF ;
+    public final EObject entryRuleEntityModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEntityModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:69:2: (iv_ruleEntityModel= ruleEntityModel EOF )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:70:2: iv_ruleEntityModel= ruleEntityModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEntityModelRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleEntityModel_in_entryRuleEntityModel75);
+            iv_ruleEntityModel=ruleEntityModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEntityModel; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEntityModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEntityModel"
+
+
+    // $ANTLR start "ruleEntityModel"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:77:1: ruleEntityModel returns [EObject current=null] : ( (lv_packages_0_0= ruleTypedPackage ) )* ;
+    public final EObject ruleEntityModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:80:28: ( ( (lv_packages_0_0= ruleTypedPackage ) )* )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==53) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:83:3: lv_packages_0_0= ruleTypedPackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getEntityModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_ruleEntityModel130);
+            	    lv_packages_0_0=ruleTypedPackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getEntityModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"TypedPackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEntityModel"
+
+
+    // $ANTLR start "entryRuleClass"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:107:1: entryRuleClass returns [EObject current=null] : iv_ruleClass= ruleClass EOF ;
+    public final EObject entryRuleClass() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleClass = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:108:2: (iv_ruleClass= ruleClass EOF )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:109:2: iv_ruleClass= ruleClass EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getClassRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleClass_in_entryRuleClass166);
+            iv_ruleClass=ruleClass();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleClass; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleClass176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleClass"
+
+
+    // $ANTLR start "ruleClass"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:116:1: ruleClass returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' ) | ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' ) | ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' ) ) ) ;
+    public final EObject ruleClass() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_abstract_4_0=null;
+        Token lv_historized_5_0=null;
+        Token lv_timedependent_6_0=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token lv_cacheable_10_0=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_18=null;
+        Token lv_persistenceUnit_19_0=null;
+        Token otherlv_20=null;
+        Token otherlv_23=null;
+        Token lv_mappedSuperclass_25_0=null;
+        Token otherlv_26=null;
+        Token otherlv_29=null;
+        Token otherlv_30=null;
+        Token lv_persistenceUnit_31_0=null;
+        Token otherlv_32=null;
+        Token otherlv_34=null;
+        Token otherlv_36=null;
+        Token otherlv_38=null;
+        Token otherlv_40=null;
+        Token otherlv_42=null;
+        EObject lv_annotations_1_0 = null;
+
+        Enumerator lv_timedependentDateType_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_12_0 = null;
+
+        EObject lv_persistenceInfo_16_0 = null;
+
+        EObject lv_inheritanceStrategy_17_0 = null;
+
+        EObject lv_features_21_0 = null;
+
+        EObject lv_indexes_22_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_28_0 = null;
+
+        EObject lv_features_33_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_37_0 = null;
+
+        EObject lv_features_41_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:119:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' ) | ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' ) | ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' ) ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:120:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' ) | ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' ) | ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:120:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' ) | ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' ) | ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:120:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' ) | ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' ) | ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:120:2: ()
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getClassAccess().getLClassAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:126:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==97) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:127:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:127:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:128:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleClass231);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:3: ( ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' ) | ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' ) | ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' ) )
+            int alt18=3;
+            switch ( input.LA(1) ) {
+            case 13:
+            case 14:
+            case 15:
+            case 18:
+            case 19:
+                {
+                alt18=1;
+                }
+                break;
+            case 25:
+                {
+                alt18=2;
+                }
+                break;
+            case 26:
+                {
+                alt18=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt18) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:4: ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:4: ( () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}' )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:5: () ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) ) otherlv_11= 'entity' ( (lv_name_12_0= ruleTRANSLATABLEID ) ) (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_15= '{' ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) ) ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )? (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )? ( (lv_features_21_0= ruleEntityFeature ) )* ( (lv_indexes_22_0= ruleIndex ) )* otherlv_23= '}'
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:144:5: ()
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:145:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:150:2: ( ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:152:1: ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:152:1: ( ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:153:2: ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* )
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:156:2: ( ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )* )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:157:3: ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )*
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:157:3: ( ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) ) )*
+                    loop5:
+                    do {
+                        int alt5=4;
+                        int LA5_0 = input.LA(1);
+
+                        if ( LA5_0 ==13 && getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 0) ) {
+                            alt5=1;
+                        }
+                        else if ( LA5_0 >=14 && LA5_0<=15 && getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 1) ) {
+                            alt5=2;
+                        }
+                        else if ( LA5_0 ==18 && getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 2) ) {
+                            alt5=3;
+                        }
+
+
+                        switch (alt5) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:159:4: ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:159:4: ({...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:160:5: {...}? => ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleClass", "getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:160:106: ( ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:161:6: ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 0);
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:164:6: ({...}? => ( (lv_abstract_4_0= 'abstract' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:164:7: {...}? => ( (lv_abstract_4_0= 'abstract' ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleClass", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:164:16: ( (lv_abstract_4_0= 'abstract' ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:165:1: (lv_abstract_4_0= 'abstract' )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:165:1: (lv_abstract_4_0= 'abstract' )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:166:3: lv_abstract_4_0= 'abstract'
+                    	    {
+                    	    lv_abstract_4_0=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleClass306); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	              newLeafNode(lv_abstract_4_0, grammarAccess.getClassAccess().getAbstractAbstractKeyword_2_0_1_0_0());
+                    	          
+                    	    }
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElement(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		setWithLastConsumed(current, "abstract", true, "abstract");
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:186:4: ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:186:4: ({...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:187:5: {...}? => ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleClass", "getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:187:106: ( ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:188:6: ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 1);
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:191:6: ({...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:191:7: {...}? => ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleClass", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:191:16: ( ( (lv_historized_5_0= 'historized' ) ) | ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? ) )
+                    	    int alt4=2;
+                    	    int LA4_0 = input.LA(1);
+
+                    	    if ( (LA4_0==14) ) {
+                    	        alt4=1;
+                    	    }
+                    	    else if ( (LA4_0==15) ) {
+                    	        alt4=2;
+                    	    }
+                    	    else {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        NoViableAltException nvae =
+                    	            new NoViableAltException("", 4, 0, input);
+
+                    	        throw nvae;
+                    	    }
+                    	    switch (alt4) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:191:17: ( (lv_historized_5_0= 'historized' ) )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:191:17: ( (lv_historized_5_0= 'historized' ) )
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:192:1: (lv_historized_5_0= 'historized' )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:192:1: (lv_historized_5_0= 'historized' )
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:193:3: lv_historized_5_0= 'historized'
+                    	            {
+                    	            lv_historized_5_0=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleClass392); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_historized_5_0, grammarAccess.getClassAccess().getHistorizedHistorizedKeyword_2_0_1_1_0_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getClassRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "historized", true, "historized");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+                    	        case 2 :
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:207:6: ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:207:6: ( ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )? )
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:207:7: ( (lv_timedependent_6_0= 'timedependent' ) ) (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )?
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:207:7: ( (lv_timedependent_6_0= 'timedependent' ) )
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:208:1: (lv_timedependent_6_0= 'timedependent' )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:208:1: (lv_timedependent_6_0= 'timedependent' )
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:209:3: lv_timedependent_6_0= 'timedependent'
+                    	            {
+                    	            lv_timedependent_6_0=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleClass430); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                      newLeafNode(lv_timedependent_6_0, grammarAccess.getClassAccess().getTimedependentTimedependentKeyword_2_0_1_1_1_0_0());
+                    	                  
+                    	            }
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElement(grammarAccess.getClassRule());
+                    	              	        }
+                    	                     		setWithLastConsumed(current, "timedependent", true, "timedependent");
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+                    	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:222:2: (otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')' )?
+                    	            int alt3=2;
+                    	            int LA3_0 = input.LA(1);
+
+                    	            if ( (LA3_0==16) ) {
+                    	                alt3=1;
+                    	            }
+                    	            switch (alt3) {
+                    	                case 1 :
+                    	                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:222:4: otherlv_7= '(' ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) ) otherlv_9= ')'
+                    	                    {
+                    	                    otherlv_7=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleClass456); if (state.failed) return current;
+                    	                    if ( state.backtracking==0 ) {
+
+                    	                          	newLeafNode(otherlv_7, grammarAccess.getClassAccess().getLeftParenthesisKeyword_2_0_1_1_1_1_0());
+                    	                          
+                    	                    }
+                    	                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:226:1: ( (lv_timedependentDateType_8_0= ruleLHistorizedDateType ) )
+                    	                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:227:1: (lv_timedependentDateType_8_0= ruleLHistorizedDateType )
+                    	                    {
+                    	                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:227:1: (lv_timedependentDateType_8_0= ruleLHistorizedDateType )
+                    	                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:228:3: lv_timedependentDateType_8_0= ruleLHistorizedDateType
+                    	                    {
+                    	                    if ( state.backtracking==0 ) {
+                    	                       
+                    	                      	        newCompositeNode(grammarAccess.getClassAccess().getTimedependentDateTypeLHistorizedDateTypeEnumRuleCall_2_0_1_1_1_1_1_0()); 
+                    	                      	    
+                    	                    }
+                    	                    pushFollow(FollowSets000.FOLLOW_ruleLHistorizedDateType_in_ruleClass477);
+                    	                    lv_timedependentDateType_8_0=ruleLHistorizedDateType();
+
+                    	                    state._fsp--;
+                    	                    if (state.failed) return current;
+                    	                    if ( state.backtracking==0 ) {
+
+                    	                      	        if (current==null) {
+                    	                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	                      	        }
+                    	                             		set(
+                    	                             			current, 
+                    	                             			"timedependentDateType",
+                    	                              		lv_timedependentDateType_8_0, 
+                    	                              		"LHistorizedDateType");
+                    	                      	        afterParserOrEnumRuleCall();
+                    	                      	    
+                    	                    }
+
+                    	                    }
+
+
+                    	                    }
+
+                    	                    otherlv_9=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleClass489); if (state.failed) return current;
+                    	                    if ( state.backtracking==0 ) {
+
+                    	                          	newLeafNode(otherlv_9, grammarAccess.getClassAccess().getRightParenthesisKeyword_2_0_1_1_1_1_2());
+                    	                          
+                    	                    }
+
+                    	                    }
+                    	                    break;
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:255:4: ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:255:4: ({...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:256:5: {...}? => ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleClass", "getUnorderedGroupHelper().canSelect(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:256:106: ( ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:257:6: ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1(), 2);
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:260:6: ({...}? => ( (lv_cacheable_10_0= 'cacheable' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:260:7: {...}? => ( (lv_cacheable_10_0= 'cacheable' ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleClass", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:260:16: ( (lv_cacheable_10_0= 'cacheable' ) )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:261:1: (lv_cacheable_10_0= 'cacheable' )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:261:1: (lv_cacheable_10_0= 'cacheable' )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:262:3: lv_cacheable_10_0= 'cacheable'
+                    	    {
+                    	    lv_cacheable_10_0=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleClass565); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	              newLeafNode(lv_cacheable_10_0, grammarAccess.getClassAccess().getCacheableCacheableKeyword_2_0_1_2_0());
+                    	          
+                    	    }
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElement(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		setWithLastConsumed(current, "cacheable", true, "cacheable");
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop5;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getClassAccess().getUnorderedGroup_2_0_1());
+
+                    }
+
+                    otherlv_11=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleClass630); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_11, grammarAccess.getClassAccess().getEntityKeyword_2_0_2());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:293:1: ( (lv_name_12_0= ruleTRANSLATABLEID ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:294:1: (lv_name_12_0= ruleTRANSLATABLEID )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:294:1: (lv_name_12_0= ruleTRANSLATABLEID )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:295:3: lv_name_12_0= ruleTRANSLATABLEID
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getNameTRANSLATABLEIDParserRuleCall_2_0_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTRANSLATABLEID_in_ruleClass651);
+                    lv_name_12_0=ruleTRANSLATABLEID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_12_0, 
+                              		"TRANSLATABLEID");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:311:2: (otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0==20) ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:311:4: otherlv_13= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_13=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleClass664); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_13, grammarAccess.getClassAccess().getExtendsKeyword_2_0_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:315:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:316:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:316:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:317:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLEntityCrossReference_2_0_4_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass687);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_15=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleClass701); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_15, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_0_5());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:334:1: ( (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:335:1: (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:335:1: (lv_persistenceInfo_16_0= ruleEntityPersistenceInfo )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:336:3: lv_persistenceInfo_16_0= ruleEntityPersistenceInfo
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getPersistenceInfoEntityPersistenceInfoParserRuleCall_2_0_6_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleEntityPersistenceInfo_in_ruleClass722);
+                    lv_persistenceInfo_16_0=ruleEntityPersistenceInfo();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"persistenceInfo",
+                              		lv_persistenceInfo_16_0, 
+                              		"EntityPersistenceInfo");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:352:2: ( (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy ) )?
+                    int alt7=2;
+                    int LA7_0 = input.LA(1);
+
+                    if ( (LA7_0==48||LA7_0==52) ) {
+                        alt7=1;
+                    }
+                    switch (alt7) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:353:1: (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:353:1: (lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:354:3: lv_inheritanceStrategy_17_0= ruleEntityInheritanceStrategy
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getInheritanceStrategyEntityInheritanceStrategyParserRuleCall_2_0_7_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleEntityInheritanceStrategy_in_ruleClass743);
+                            lv_inheritanceStrategy_17_0=ruleEntityInheritanceStrategy();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getClassRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"inheritanceStrategy",
+                                      		lv_inheritanceStrategy_17_0, 
+                                      		"EntityInheritanceStrategy");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:370:3: (otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )? )?
+                    int alt9=2;
+                    int LA9_0 = input.LA(1);
+
+                    if ( (LA9_0==22) ) {
+                        alt9=1;
+                    }
+                    switch (alt9) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:370:5: otherlv_18= 'persistenceUnit' ( (lv_persistenceUnit_19_0= RULE_STRING ) ) (otherlv_20= ';' )?
+                            {
+                            otherlv_18=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleClass757); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_18, grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_0_8_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:374:1: ( (lv_persistenceUnit_19_0= RULE_STRING ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:375:1: (lv_persistenceUnit_19_0= RULE_STRING )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:375:1: (lv_persistenceUnit_19_0= RULE_STRING )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:376:3: lv_persistenceUnit_19_0= RULE_STRING
+                            {
+                            lv_persistenceUnit_19_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleClass774); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              			newLeafNode(lv_persistenceUnit_19_0, grammarAccess.getClassAccess().getPersistenceUnitSTRINGTerminalRuleCall_2_0_8_1_0()); 
+                              		
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                     		setWithLastConsumed(
+                                     			current, 
+                                     			"persistenceUnit",
+                                      		lv_persistenceUnit_19_0, 
+                                      		"STRING");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:392:2: (otherlv_20= ';' )?
+                            int alt8=2;
+                            int LA8_0 = input.LA(1);
+
+                            if ( (LA8_0==23) ) {
+                                alt8=1;
+                            }
+                            switch (alt8) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:392:4: otherlv_20= ';'
+                                    {
+                                    otherlv_20=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleClass792); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_20, grammarAccess.getClassAccess().getSemicolonKeyword_2_0_8_2());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:396:5: ( (lv_features_21_0= ruleEntityFeature ) )*
+                    loop10:
+                    do {
+                        int alt10=2;
+                        int LA10_0 = input.LA(1);
+
+                        if ( (LA10_0==32||(LA10_0>=38 && LA10_0<=46)||LA10_0==97) ) {
+                            alt10=1;
+                        }
+
+
+                        switch (alt10) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:397:1: (lv_features_21_0= ruleEntityFeature )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:397:1: (lv_features_21_0= ruleEntityFeature )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:398:3: lv_features_21_0= ruleEntityFeature
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesEntityFeatureParserRuleCall_2_0_9_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEntityFeature_in_ruleClass817);
+                    	    lv_features_21_0=ruleEntityFeature();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"features",
+                    	              		lv_features_21_0, 
+                    	              		"EntityFeature");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop10;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:414:3: ( (lv_indexes_22_0= ruleIndex ) )*
+                    loop11:
+                    do {
+                        int alt11=2;
+                        int LA11_0 = input.LA(1);
+
+                        if ( ((LA11_0>=27 && LA11_0<=28)) ) {
+                            alt11=1;
+                        }
+
+
+                        switch (alt11) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:415:1: (lv_indexes_22_0= ruleIndex )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:415:1: (lv_indexes_22_0= ruleIndex )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:416:3: lv_indexes_22_0= ruleIndex
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getIndexesIndexParserRuleCall_2_0_10_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleIndex_in_ruleClass839);
+                    	    lv_indexes_22_0=ruleIndex();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"indexes",
+                    	              		lv_indexes_22_0, 
+                    	              		"Index");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop11;
+                        }
+                    } while (true);
+
+                    otherlv_23=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleClass852); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_23, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_0_11());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:437:6: ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:437:6: ( () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}' )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:437:7: () ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) ) (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? ( (lv_name_28_0= ruleValidIDWithKeywords ) ) otherlv_29= '{' (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )? ( (lv_features_33_0= ruleEntityFeature ) )* otherlv_34= '}'
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:437:7: ()
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:438:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_1_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:443:2: ( (lv_mappedSuperclass_25_0= 'mapped superclass' ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:444:1: (lv_mappedSuperclass_25_0= 'mapped superclass' )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:444:1: (lv_mappedSuperclass_25_0= 'mapped superclass' )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:445:3: lv_mappedSuperclass_25_0= 'mapped superclass'
+                    {
+                    lv_mappedSuperclass_25_0=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleClass887); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_mappedSuperclass_25_0, grammarAccess.getClassAccess().getMappedSuperclassMappedSuperclassKeyword_2_1_1_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getClassRule());
+                      	        }
+                             		setWithLastConsumed(current, "mappedSuperclass", true, "mapped superclass");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:458:2: (otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0==20) ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:458:4: otherlv_26= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_26=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleClass913); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_26, grammarAccess.getClassAccess().getExtendsKeyword_2_1_2_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:462:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:463:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:463:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:464:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLEntityCrossReference_2_1_2_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass936);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:477:4: ( (lv_name_28_0= ruleValidIDWithKeywords ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:478:1: (lv_name_28_0= ruleValidIDWithKeywords )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:478:1: (lv_name_28_0= ruleValidIDWithKeywords )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:479:3: lv_name_28_0= ruleValidIDWithKeywords
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_2_1_3_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleClass959);
+                    lv_name_28_0=ruleValidIDWithKeywords();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_28_0, 
+                              		"ValidIDWithKeywords");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    otherlv_29=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleClass971); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_29, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_1_4());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:499:1: (otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )? )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0==22) ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:499:3: otherlv_30= 'persistenceUnit' ( (lv_persistenceUnit_31_0= RULE_STRING ) ) (otherlv_32= ';' )?
+                            {
+                            otherlv_30=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleClass984); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_30, grammarAccess.getClassAccess().getPersistenceUnitKeyword_2_1_5_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:503:1: ( (lv_persistenceUnit_31_0= RULE_STRING ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:504:1: (lv_persistenceUnit_31_0= RULE_STRING )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:504:1: (lv_persistenceUnit_31_0= RULE_STRING )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:505:3: lv_persistenceUnit_31_0= RULE_STRING
+                            {
+                            lv_persistenceUnit_31_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleClass1001); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              			newLeafNode(lv_persistenceUnit_31_0, grammarAccess.getClassAccess().getPersistenceUnitSTRINGTerminalRuleCall_2_1_5_1_0()); 
+                              		
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                     		setWithLastConsumed(
+                                     			current, 
+                                     			"persistenceUnit",
+                                      		lv_persistenceUnit_31_0, 
+                                      		"STRING");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:521:2: (otherlv_32= ';' )?
+                            int alt13=2;
+                            int LA13_0 = input.LA(1);
+
+                            if ( (LA13_0==23) ) {
+                                alt13=1;
+                            }
+                            switch (alt13) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:521:4: otherlv_32= ';'
+                                    {
+                                    otherlv_32=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleClass1019); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_32, grammarAccess.getClassAccess().getSemicolonKeyword_2_1_5_2());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:525:5: ( (lv_features_33_0= ruleEntityFeature ) )*
+                    loop15:
+                    do {
+                        int alt15=2;
+                        int LA15_0 = input.LA(1);
+
+                        if ( (LA15_0==32||(LA15_0>=38 && LA15_0<=46)||LA15_0==97) ) {
+                            alt15=1;
+                        }
+
+
+                        switch (alt15) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:526:1: (lv_features_33_0= ruleEntityFeature )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:526:1: (lv_features_33_0= ruleEntityFeature )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:527:3: lv_features_33_0= ruleEntityFeature
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesEntityFeatureParserRuleCall_2_1_6_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleEntityFeature_in_ruleClass1044);
+                    	    lv_features_33_0=ruleEntityFeature();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"features",
+                    	              		lv_features_33_0, 
+                    	              		"EntityFeature");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop15;
+                        }
+                    } while (true);
+
+                    otherlv_34=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleClass1057); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_34, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_1_7());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:548:6: ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:548:6: ( () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}' )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:548:7: () otherlv_36= 'bean' ( (lv_name_37_0= ruleTRANSLATABLEID ) ) (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )? otherlv_40= '{' ( (lv_features_41_0= ruleBeanFeature ) )* otherlv_42= '}'
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:548:7: ()
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:549:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getClassAccess().getLBeanAnnotationInfoAction_2_2_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    otherlv_36=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleClass1086); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_36, grammarAccess.getClassAccess().getBeanKeyword_2_2_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:558:1: ( (lv_name_37_0= ruleTRANSLATABLEID ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:559:1: (lv_name_37_0= ruleTRANSLATABLEID )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:559:1: (lv_name_37_0= ruleTRANSLATABLEID )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:560:3: lv_name_37_0= ruleTRANSLATABLEID
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getNameTRANSLATABLEIDParserRuleCall_2_2_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTRANSLATABLEID_in_ruleClass1107);
+                    lv_name_37_0=ruleTRANSLATABLEID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_37_0, 
+                              		"TRANSLATABLEID");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:576:2: (otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) ) )?
+                    int alt16=2;
+                    int LA16_0 = input.LA(1);
+
+                    if ( (LA16_0==20) ) {
+                        alt16=1;
+                    }
+                    switch (alt16) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:576:4: otherlv_38= 'extends' ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            {
+                            otherlv_38=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleClass1120); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_38, grammarAccess.getClassAccess().getExtendsKeyword_2_2_3_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:580:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:581:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:581:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:582:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getClassAccess().getSuperTypeLBeanCrossReference_2_2_3_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass1143);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_40=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleClass1157); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_40, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_2_2_4());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:599:1: ( (lv_features_41_0= ruleBeanFeature ) )*
+                    loop17:
+                    do {
+                        int alt17=2;
+                        int LA17_0 = input.LA(1);
+
+                        if ( (LA17_0==32||LA17_0==38||(LA17_0>=41 && LA17_0<=42)||LA17_0==44||LA17_0==46||LA17_0==97) ) {
+                            alt17=1;
+                        }
+
+
+                        switch (alt17) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:600:1: (lv_features_41_0= ruleBeanFeature )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:600:1: (lv_features_41_0= ruleBeanFeature )
+                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:601:3: lv_features_41_0= ruleBeanFeature
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getFeaturesBeanFeatureParserRuleCall_2_2_5_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBeanFeature_in_ruleClass1178);
+                    	    lv_features_41_0=ruleBeanFeature();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"features",
+                    	              		lv_features_41_0, 
+                    	              		"BeanFeature");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop17;
+                        }
+                    } while (true);
+
+                    otherlv_42=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleClass1191); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_42, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_2_2_6());
+                          
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleClass"
+
+
+    // $ANTLR start "entryRuleIndex"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:629:1: entryRuleIndex returns [EObject current=null] : iv_ruleIndex= ruleIndex EOF ;
+    public final EObject entryRuleIndex() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleIndex = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:630:2: (iv_ruleIndex= ruleIndex EOF )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:631:2: iv_ruleIndex= ruleIndex EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getIndexRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleIndex_in_entryRuleIndex1229);
+            iv_ruleIndex=ruleIndex();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleIndex; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleIndex1239); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleIndex"
+
+
+    // $ANTLR start "ruleIndex"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:638:1: ruleIndex returns [EObject current=null] : ( ( (lv_unique_0_0= 'unique' ) )? otherlv_1= 'index' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ', ' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= '}' ) ;
+    public final EObject ruleIndex() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_unique_0_0=null;
+        Token otherlv_1=null;
+        Token lv_name_2_0=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:641:28: ( ( ( (lv_unique_0_0= 'unique' ) )? otherlv_1= 'index' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ', ' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= '}' ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:642:1: ( ( (lv_unique_0_0= 'unique' ) )? otherlv_1= 'index' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ', ' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= '}' )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:642:1: ( ( (lv_unique_0_0= 'unique' ) )? otherlv_1= 'index' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ', ' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= '}' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:642:2: ( (lv_unique_0_0= 'unique' ) )? otherlv_1= 'index' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '{' ( (otherlv_4= RULE_ID ) ) (otherlv_5= ', ' ( (otherlv_6= RULE_ID ) ) )* otherlv_7= '}'
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:642:2: ( (lv_unique_0_0= 'unique' ) )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==27) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:643:1: (lv_unique_0_0= 'unique' )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:643:1: (lv_unique_0_0= 'unique' )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:644:3: lv_unique_0_0= 'unique'
+                    {
+                    lv_unique_0_0=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleIndex1282); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_unique_0_0, grammarAccess.getIndexAccess().getUniqueUniqueKeyword_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getIndexRule());
+                      	        }
+                             		setWithLastConsumed(current, "unique", true, "unique");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_1=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleIndex1308); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getIndexAccess().getIndexKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:661:1: ( (lv_name_2_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:662:1: (lv_name_2_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:662:1: (lv_name_2_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:663:3: lv_name_2_0= RULE_ID
+            {
+            lv_name_2_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleIndex1325); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_2_0, grammarAccess.getIndexAccess().getNameIDTerminalRuleCall_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getIndexRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleIndex1342); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getIndexAccess().getLeftCurlyBracketKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:683:1: ( (otherlv_4= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:684:1: (otherlv_4= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:684:1: (otherlv_4= RULE_ID )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:685:3: otherlv_4= RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getIndexRule());
+              	        }
+                      
+            }
+            otherlv_4=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleIndex1362); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		newLeafNode(otherlv_4, grammarAccess.getIndexAccess().getFeaturesLEntityFeatureCrossReference_4_0()); 
+              	
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:696:2: (otherlv_5= ', ' ( (otherlv_6= RULE_ID ) ) )*
+            loop20:
+            do {
+                int alt20=2;
+                int LA20_0 = input.LA(1);
+
+                if ( (LA20_0==29) ) {
+                    alt20=1;
+                }
+
+
+                switch (alt20) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:696:4: otherlv_5= ', ' ( (otherlv_6= RULE_ID ) )
+            	    {
+            	    otherlv_5=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleIndex1375); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_5, grammarAccess.getIndexAccess().getCommaSpaceKeyword_5_0());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:700:1: ( (otherlv_6= RULE_ID ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:701:1: (otherlv_6= RULE_ID )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:701:1: (otherlv_6= RULE_ID )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:702:3: otherlv_6= RULE_ID
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			if (current==null) {
+            	      	            current = createModelElement(grammarAccess.getIndexRule());
+            	      	        }
+            	              
+            	    }
+            	    otherlv_6=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleIndex1395); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      		newLeafNode(otherlv_6, grammarAccess.getIndexAccess().getFeaturesLEntityFeatureCrossReference_5_1_0()); 
+            	      	
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop20;
+                }
+            } while (true);
+
+            otherlv_7=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleIndex1409); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getIndexAccess().getRightCurlyBracketKeyword_6());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleIndex"
+
+
+    // $ANTLR start "entryRuleEntityPersistenceInfo"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:725:1: entryRuleEntityPersistenceInfo returns [EObject current=null] : iv_ruleEntityPersistenceInfo= ruleEntityPersistenceInfo EOF ;
+    public final EObject entryRuleEntityPersistenceInfo() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEntityPersistenceInfo = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:726:2: (iv_ruleEntityPersistenceInfo= ruleEntityPersistenceInfo EOF )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:727:2: iv_ruleEntityPersistenceInfo= ruleEntityPersistenceInfo EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEntityPersistenceInfoRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleEntityPersistenceInfo_in_entryRuleEntityPersistenceInfo1445);
+            iv_ruleEntityPersistenceInfo=ruleEntityPersistenceInfo();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEntityPersistenceInfo; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEntityPersistenceInfo1455); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEntityPersistenceInfo"
+
+
+    // $ANTLR start "ruleEntityPersistenceInfo"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:734:1: ruleEntityPersistenceInfo returns [EObject current=null] : ( () ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) ) ) ) ;
+    public final EObject ruleEntityPersistenceInfo() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        AntlrDatatypeRuleToken lv_schemaName_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_tableName_6_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:737:28: ( ( () ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) ) ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:738:1: ( () ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:738:1: ( () ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:738:2: () ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:738:2: ()
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:739:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getEntityPersistenceInfoAccess().getLEntityPersistenceInfoAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:744:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:746:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:746:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:747:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:750:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )* )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:751:3: ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )*
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:751:3: ( ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) ) )*
+            loop23:
+            do {
+                int alt23=3;
+                int LA23_0 = input.LA(1);
+
+                if ( LA23_0 ==30 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 0) ) {
+                    alt23=1;
+                }
+                else if ( LA23_0 ==31 && getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 1) ) {
+                    alt23=2;
+                }
+
+
+                switch (alt23) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:753:4: ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:753:4: ({...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:754:5: {...}? => ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleEntityPersistenceInfo", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 0)");
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:754:118: ( ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:755:6: ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 0);
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:758:6: ({...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:758:7: {...}? => (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleEntityPersistenceInfo", "true");
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:758:16: (otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )? )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:758:18: otherlv_2= 'schemaName' ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) ) (otherlv_4= ';' )?
+            	    {
+            	    otherlv_2=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleEntityPersistenceInfo1547); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_2, grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameKeyword_1_0_0());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:762:1: ( (lv_schemaName_3_0= ruleValidIDWithKeywords ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:763:1: (lv_schemaName_3_0= ruleValidIDWithKeywords )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:763:1: (lv_schemaName_3_0= ruleValidIDWithKeywords )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:764:3: lv_schemaName_3_0= ruleValidIDWithKeywords
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getEntityPersistenceInfoAccess().getSchemaNameValidIDWithKeywordsParserRuleCall_1_0_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleEntityPersistenceInfo1568);
+            	    lv_schemaName_3_0=ruleValidIDWithKeywords();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getEntityPersistenceInfoRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"schemaName",
+            	              		lv_schemaName_3_0, 
+            	              		"ValidIDWithKeywords");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:780:2: (otherlv_4= ';' )?
+            	    int alt21=2;
+            	    int LA21_0 = input.LA(1);
+
+            	    if ( (LA21_0==23) ) {
+            	        alt21=1;
+            	    }
+            	    switch (alt21) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:780:4: otherlv_4= ';'
+            	            {
+            	            otherlv_4=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleEntityPersistenceInfo1581); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                  	newLeafNode(otherlv_4, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_0_2());
+            	                  
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:791:4: ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:791:4: ({...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:792:5: {...}? => ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleEntityPersistenceInfo", "getUnorderedGroupHelper().canSelect(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 1)");
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:792:118: ( ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:793:6: ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1(), 1);
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:796:6: ({...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:796:7: {...}? => (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleEntityPersistenceInfo", "true");
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:796:16: (otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )? )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:796:18: otherlv_5= 'tableName' ( (lv_tableName_6_0= ruleValidIDWithKeywords ) ) (otherlv_7= ';' )?
+            	    {
+            	    otherlv_5=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleEntityPersistenceInfo1651); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	          	newLeafNode(otherlv_5, grammarAccess.getEntityPersistenceInfoAccess().getTableNameKeyword_1_1_0());
+            	          
+            	    }
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:800:1: ( (lv_tableName_6_0= ruleValidIDWithKeywords ) )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:801:1: (lv_tableName_6_0= ruleValidIDWithKeywords )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:801:1: (lv_tableName_6_0= ruleValidIDWithKeywords )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:802:3: lv_tableName_6_0= ruleValidIDWithKeywords
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getEntityPersistenceInfoAccess().getTableNameValidIDWithKeywordsParserRuleCall_1_1_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleEntityPersistenceInfo1672);
+            	    lv_tableName_6_0=ruleValidIDWithKeywords();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getEntityPersistenceInfoRule());
+            	      	        }
+            	             		set(
+            	             			current, 
+            	             			"tableName",
+            	              		lv_tableName_6_0, 
+            	              		"ValidIDWithKeywords");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:818:2: (otherlv_7= ';' )?
+            	    int alt22=2;
+            	    int LA22_0 = input.LA(1);
+
+            	    if ( (LA22_0==23) ) {
+            	        alt22=1;
+            	    }
+            	    switch (alt22) {
+            	        case 1 :
+            	            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:818:4: otherlv_7= ';'
+            	            {
+            	            otherlv_7=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleEntityPersistenceInfo1685); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	                  	newLeafNode(otherlv_7, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_1_2());
+            	                  
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop23;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getEntityPersistenceInfoAccess().getUnorderedGroup_1());
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleEntityPersistenceInfo"
+
+
+    // $ANTLR start "entryRuleColumnPersistenceInfo"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:844:1: entryRuleColumnPersistenceInfo returns [EObject current=null] : iv_ruleColumnPersistenceInfo= ruleColumnPersistenceInfo EOF ;
+    public final EObject entryRuleColumnPersistenceInfo() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleColumnPersistenceInfo = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:845:2: (iv_ruleColumnPersistenceInfo= ruleColumnPersistenceInfo EOF )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:846:2: iv_ruleColumnPersistenceInfo= ruleColumnPersistenceInfo EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getColumnPersistenceInfoRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleColumnPersistenceInfo_in_entryRuleColumnPersistenceInfo1764);
+            iv_ruleColumnPersistenceInfo=ruleColumnPersistenceInfo();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleColumnPersistenceInfo; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleColumnPersistenceInfo1774); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleColumnPersistenceInfo"
+
+
+    // $ANTLR start "ruleColumnPersistenceInfo"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:853:1: ruleColumnPersistenceInfo returns [EObject current=null] : ( () otherlv_1= '(' ( (lv_columnName_2_0= ruleValidIDWithKeywords ) ) otherlv_3= ')' ) ;
+    public final EObject ruleColumnPersistenceInfo() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        AntlrDatatypeRuleToken lv_columnName_2_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:856:28: ( ( () otherlv_1= '(' ( (lv_columnName_2_0= ruleValidIDWithKeywords ) ) otherlv_3= ')' ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:857:1: ( () otherlv_1= '(' ( (lv_columnName_2_0= ruleValidIDWithKeywords ) ) otherlv_3= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:857:1: ( () otherlv_1= '(' ( (lv_columnName_2_0= ruleValidIDWithKeywords ) ) otherlv_3= ')' )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:857:2: () otherlv_1= '(' ( (lv_columnName_2_0= ruleValidIDWithKeywords ) ) otherlv_3= ')'
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:857:2: ()
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:858:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getColumnPersistenceInfoAccess().getLEntityColumnPersistenceInfoAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleColumnPersistenceInfo1820); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getColumnPersistenceInfoAccess().getLeftParenthesisKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:867:1: ( (lv_columnName_2_0= ruleValidIDWithKeywords ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:868:1: (lv_columnName_2_0= ruleValidIDWithKeywords )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:868:1: (lv_columnName_2_0= ruleValidIDWithKeywords )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:869:3: lv_columnName_2_0= ruleValidIDWithKeywords
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameValidIDWithKeywordsParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleColumnPersistenceInfo1841);
+            lv_columnName_2_0=ruleValidIDWithKeywords();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getColumnPersistenceInfoRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"columnName",
+                      		lv_columnName_2_0, 
+                      		"ValidIDWithKeywords");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_3=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleColumnPersistenceInfo1853); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getColumnPersistenceInfoAccess().getRightParenthesisKeyword_3());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleColumnPersistenceInfo"
+
+
+    // $ANTLR start "entryRuleEntityFeature"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:897:1: entryRuleEntityFeature returns [EObject current=null] : iv_ruleEntityFeature= ruleEntityFeature EOF ;
+    public final EObject entryRuleEntityFeature() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleEntityFeature = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:898:2: (iv_ruleEntityFeature= ruleEntityFeature EOF )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:899:2: iv_ruleEntityFeature= ruleEntityFeature EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getEntityFeatureRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleEntityFeature_in_entryRuleEntityFeature1889);
+            iv_ruleEntityFeature=ruleEntityFeature();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleEntityFeature; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleEntityFeature1899); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleEntityFeature"
+
+
+    // $ANTLR start "ruleEntityFeature"
+    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:906:1: ruleEntityFeature returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) ) | ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) ) | ( () (otherlv_70= 'def' ( (lv_type_71_0= ruleJvmTypeReference ) ) ( (lv_name_72_0= ruleTRANSLATABLEID ) ) otherlv_73= '(' ( ( (lv_params_74_0= ruleFullJvmFormalParameter ) ) (otherlv_75= ', ' ( (lv_params_76_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_77= ')' ( (lv_body_78_0= ruleXExpression ) ) ) ) ) ) ;
+    public final EObject ruleEntityFeature() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_3=null;
+        Token lv_cascading_4_0=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_19=null;
+        Token otherlv_21=null;
+        Token lv_transient_23_0=null;
+        Token otherlv_25=null;
+        Token otherlv_27=null;
+        Token otherlv_29=null;
+        Token otherlv_30=null;
+        Token otherlv_32=null;
+        Token otherlv_34=null;
+        Token otherlv_35=null;
+        Token lv_derived_36_0=null;
+        Token lv_domainDescription_37_0=null;
+        Token otherlv_40=null;
+        Token otherlv_41=null;
+        Token otherlv_43=null;
+        Token otherlv_45=null;
+        Token otherlv_47=null;
+        Token lv_id_48_0=null;
+        Token lv_uuid_49_0=null;
+        Token lv_version_50_0=null;
+        Token lv_domainDescription_51_0=null;
+        Token lv_domainKey_52_0=null;
+        Token otherlv_55=null;
+        Token otherlv_57=null;
+        Token otherlv_60=null;
+        Token otherlv_62=null;
+        Token otherlv_63=null;
+        Token otherlv_65=null;
+        Token otherlv_67=null;
+        Token otherlv_68=null;
+        Token otherlv_70=null;
+        Token otherlv_73=null;
+        Token otherlv_75=null;
+        Token otherlv_77=null;
+        EObject lv_annotations_1_0 = null;
+
+        EObject lv_multiplicity_6_0 = null;
+
+        EObject lv_constraints_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_10_0 = null;
+
+        EObject lv_persistenceInfo_11_0 = null;
+
+        EObject lv_properties_16_0 = null;
+
+        EObject lv_properties_18_0 = null;
+
+        EObject lv_resultFilters_20_0 = null;
+
+        EObject lv_constraints_26_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_28_0 = null;
+
+        EObject lv_properties_31_0 = null;
+
+        EObject lv_properties_33_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_39_0 = null;
+
+        EObject lv_properties_42_0 = null;
+
+        EObject lv_properties_44_0 = null;
+
+        EObject lv_derivedGetterExpression_46_0 = null;
+
+        EObject lv_multiplicity_54_0 = null;
+
+        EObject lv_constraints_56_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_58_0 = null;
+
+        EObject lv_persistenceInfo_59_0 = null;
+
+        EObject lv_properties_64_0 = null;
+
+        EObject lv_properties_66_0 = null;
+
+        EObject lv_type_71_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_72_0 = null;
+
+        EObject lv_params_74_0 = null;
+
+        EObject lv_params_76_0 = null;
+
+        EObject lv_body_78_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:909:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) ) | ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) ) | ( () (otherlv_70= 'def' ( (lv_type_71_0= ruleJvmTypeReference ) ) ( (lv_name_72_0= ruleTRANSLATABLEID ) ) otherlv_73= '(' ( ( (lv_params_74_0= ruleFullJvmFormalParameter ) ) (otherlv_75= ', ' ( (lv_params_76_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_77= ')' ( (lv_body_78_0= ruleXExpression ) ) ) ) ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:910:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) ) | ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) ) | ( () (otherlv_70= 'def' ( (lv_type_71_0= ruleJvmTypeReference ) ) ( (lv_name_72_0= ruleTRANSLATABLEID ) ) otherlv_73= '(' ( ( (lv_params_74_0= ruleFullJvmFormalParameter ) ) (otherlv_75= ', ' ( (lv_params_76_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_77= ')' ( (lv_body_78_0= ruleXExpression ) ) ) ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:910:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) ) | ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) ) | ( () (otherlv_70= 'def' ( (lv_type_71_0= ruleJvmTypeReference ) ) ( (lv_name_72_0= ruleTRANSLATABLEID ) ) otherlv_73= '(' ( ( (lv_params_74_0= ruleFullJvmFormalParameter ) ) (otherlv_75= ', ' ( (lv_params_76_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_77= ')' ( (lv_body_78_0= ruleXExpression ) ) ) ) ) )
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:910:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* ( ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) ) | ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) ) | ( () (otherlv_70= 'def' ( (lv_type_71_0= ruleJvmTypeReference ) ) ( (lv_name_72_0= ruleTRANSLATABLEID ) ) otherlv_73= '(' ( ( (lv_params_74_0= ruleFullJvmFormalParameter ) ) (otherlv_75= ', ' ( (lv_params_76_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_77= ')' ( (lv_body_78_0= ruleXExpression ) ) ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:910:2: ()
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:911:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getEntityFeatureAccess().getLEntityFeatureAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:916:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop24:
+            do {
+                int alt24=2;
+                int LA24_0 = input.LA(1);
+
+                if ( (LA24_0==97) ) {
+                    alt24=1;
+                }
+
+
+                switch (alt24) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:917:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:917:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:918:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleEntityFeature1954);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop24;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:934:3: ( ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) ) | ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) ) | ( () (otherlv_70= 'def' ( (lv_type_71_0= ruleJvmTypeReference ) ) ( (lv_name_72_0= ruleTRANSLATABLEID ) ) otherlv_73= '(' ( ( (lv_params_74_0= ruleFullJvmFormalParameter ) ) (otherlv_75= ', ' ( (lv_params_76_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_77= ')' ( (lv_body_78_0= ruleXExpression ) ) ) ) )
+            int alt55=3;
+            switch ( input.LA(1) ) {
+            case 32:
+                {
+                alt55=1;
+                }
+                break;
+            case 38:
+            case 39:
+            case 40:
+            case 41:
+            case 42:
+            case 43:
+            case 44:
+            case 45:
+                {
+                alt55=2;
+                }
+                break;
+            case 46:
+                {
+                alt55=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 55, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt55) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:934:4: ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:934:4: ( () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:934:5: () (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:934:5: ()
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:935:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getEntityFeatureAccess().getLEntityReferenceAnnotationInfoAction_2_0_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:940:2: (otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:940:4: otherlv_3= 'ref' ( (lv_cascading_4_0= 'cascade' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_6_0= ruleMultiplicity ) )? (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )? ( (lv_name_10_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )? (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )? ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? )
+                    {
+                    otherlv_3=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleEntityFeature1979); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getEntityFeatureAccess().getRefKeyword_2_0_1_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:944:1: ( (lv_cascading_4_0= 'cascade' ) )?
+                    int alt25=2;
+                    int LA25_0 = input.LA(1);
+
+                    if ( (LA25_0==33) ) {
+                        alt25=1;
+                    }
+                    switch (alt25) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:945:1: (lv_cascading_4_0= 'cascade' )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:945:1: (lv_cascading_4_0= 'cascade' )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:946:3: lv_cascading_4_0= 'cascade'
+                            {
+                            lv_cascading_4_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleEntityFeature1997); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_cascading_4_0, grammarAccess.getEntityFeatureAccess().getCascadingCascadeKeyword_2_0_1_1_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "cascading", true, "cascade");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:959:3: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:960:1: ( ruleTYPE_CROSS_REFERENCE )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:960:1: ( ruleTYPE_CROSS_REFERENCE )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:961:3: ruleTYPE_CROSS_REFERENCE
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			if (current==null) {
+                      	            current = createModelElement(grammarAccess.getEntityFeatureRule());
+                      	        }
+                              
+                    }
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeLEntityCrossReference_2_0_1_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleEntityFeature2034);
+                    ruleTYPE_CROSS_REFERENCE();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:974:2: ( (lv_multiplicity_6_0= ruleMultiplicity ) )?
+                    int alt26=2;
+                    int LA26_0 = input.LA(1);
+
+                    if ( (LA26_0==34) ) {
+                        int LA26_1 = input.LA(2);
+
+                        if ( (LA26_1==84||LA26_1==95||LA26_1==153||(LA26_1>=170 && LA26_1<=171)) ) {
+                            alt26=1;
+                        }
+                    }
+                    switch (alt26) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:975:1: (lv_multiplicity_6_0= ruleMultiplicity )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:975:1: (lv_multiplicity_6_0= ruleMultiplicity )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:976:3: lv_multiplicity_6_0= ruleMultiplicity
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getMultiplicityMultiplicityParserRuleCall_2_0_1_3_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleMultiplicity_in_ruleEntityFeature2055);
+                            lv_multiplicity_6_0=ruleMultiplicity();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"multiplicity",
+                                      		lv_multiplicity_6_0, 
+                                      		"Multiplicity");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:992:3: (otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']' )?
+                    int alt28=2;
+                    int LA28_0 = input.LA(1);
+
+                    if ( (LA28_0==34) ) {
+                        alt28=1;
+                    }
+                    switch (alt28) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:992:5: otherlv_7= '[' ( (lv_constraints_8_0= ruleAllConstraints ) )* otherlv_9= ']'
+                            {
+                            otherlv_7=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleEntityFeature2069); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_7, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:996:1: ( (lv_constraints_8_0= ruleAllConstraints ) )*
+                            loop27:
+                            do {
+                                int alt27=2;
+                                int LA27_0 = input.LA(1);
+
+                                if ( (LA27_0==60||(LA27_0>=65 && LA27_0<=76)) ) {
+                                    alt27=1;
+                                }
+
+
+                                switch (alt27) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:997:1: (lv_constraints_8_0= ruleAllConstraints )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:997:1: (lv_constraints_8_0= ruleAllConstraints )
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:998:3: lv_constraints_8_0= ruleAllConstraints
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleAllConstraints_in_ruleEntityFeature2090);
+                            	    lv_constraints_8_0=ruleAllConstraints();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"constraints",
+                            	              		lv_constraints_8_0, 
+                            	              		"AllConstraints");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop27;
+                                }
+                            } while (true);
+
+                            otherlv_9=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleEntityFeature2103); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_9, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1018:3: ( (lv_name_10_0= ruleTRANSLATABLEID ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1019:1: (lv_name_10_0= ruleTRANSLATABLEID )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1019:1: (lv_name_10_0= ruleTRANSLATABLEID )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1020:3: lv_name_10_0= ruleTRANSLATABLEID
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature2126);
+                    lv_name_10_0=ruleTRANSLATABLEID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"name",
+                              		lv_name_10_0, 
+                              		"TRANSLATABLEID");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1036:2: ( (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo ) )?
+                    int alt29=2;
+                    int LA29_0 = input.LA(1);
+
+                    if ( (LA29_0==16) ) {
+                        alt29=1;
+                    }
+                    switch (alt29) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1037:1: (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1037:1: (lv_persistenceInfo_11_0= ruleColumnPersistenceInfo )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1038:3: lv_persistenceInfo_11_0= ruleColumnPersistenceInfo
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPersistenceInfoColumnPersistenceInfoParserRuleCall_2_0_1_6_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleColumnPersistenceInfo_in_ruleEntityFeature2147);
+                            lv_persistenceInfo_11_0=ruleColumnPersistenceInfo();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"persistenceInfo",
+                                      		lv_persistenceInfo_11_0, 
+                                      		"ColumnPersistenceInfo");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1054:3: (otherlv_12= 'opposite' ( ( ruleLFQN ) ) )?
+                    int alt30=2;
+                    int LA30_0 = input.LA(1);
+
+                    if ( (LA30_0==36) ) {
+                        alt30=1;
+                    }
+                    switch (alt30) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1054:5: otherlv_12= 'opposite' ( ( ruleLFQN ) )
+                            {
+                            otherlv_12=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleEntityFeature2161); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_12, grammarAccess.getEntityFeatureAccess().getOppositeKeyword_2_0_1_7_0());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1058:1: ( ( ruleLFQN ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1059:1: ( ruleLFQN )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1059:1: ( ruleLFQN )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1060:3: ruleLFQN
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getOppositeLEntityReferenceCrossReference_2_0_1_7_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleLFQN_in_ruleEntityFeature2184);
+                            ruleLFQN();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1073:4: (otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')' )?
+                    int alt32=2;
+                    int LA32_0 = input.LA(1);
+
+                    if ( (LA32_0==37) ) {
+                        alt32=1;
+                    }
+                    switch (alt32) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1073:6: otherlv_14= 'properties' otherlv_15= '(' ( (lv_properties_16_0= ruleKeyAndValue ) ) (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )* otherlv_19= ')'
+                            {
+                            otherlv_14=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleEntityFeature2199); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_14, grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_0_1_8_0());
+                                  
+                            }
+                            otherlv_15=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleEntityFeature2211); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_15, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_0_1_8_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1081:1: ( (lv_properties_16_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1082:1: (lv_properties_16_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1082:1: (lv_properties_16_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1083:3: lv_properties_16_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2232);
+                            lv_properties_16_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_16_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1099:2: (otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) ) )*
+                            loop31:
+                            do {
+                                int alt31=2;
+                                int LA31_0 = input.LA(1);
+
+                                if ( (LA31_0==29) ) {
+                                    alt31=1;
+                                }
+
+
+                                switch (alt31) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1099:4: otherlv_17= ', ' ( (lv_properties_18_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_17=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleEntityFeature2245); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_17, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_0_1_8_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1103:1: ( (lv_properties_18_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1104:1: (lv_properties_18_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1104:1: (lv_properties_18_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1105:3: lv_properties_18_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2266);
+                            	    lv_properties_18_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_18_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop31;
+                                }
+                            } while (true);
+
+                            otherlv_19=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleEntityFeature2280); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_19, grammarAccess.getEntityFeatureAccess().getRightParenthesisKeyword_2_0_1_8_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1125:3: ( ( (lv_resultFilters_20_0= ruleResultFilters ) ) | (otherlv_21= ';' )? )
+                    int alt34=2;
+                    int LA34_0 = input.LA(1);
+
+                    if ( (LA34_0==80) ) {
+                        alt34=1;
+                    }
+                    else if ( (LA34_0==EOF||(LA34_0>=23 && LA34_0<=24)||(LA34_0>=27 && LA34_0<=28)||LA34_0==32||(LA34_0>=38 && LA34_0<=46)||LA34_0==97) ) {
+                        alt34=2;
+                    }
+                    else {
+                        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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1125:4: ( (lv_resultFilters_20_0= ruleResultFilters ) )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1125:4: ( (lv_resultFilters_20_0= ruleResultFilters ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1126:1: (lv_resultFilters_20_0= ruleResultFilters )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1126:1: (lv_resultFilters_20_0= ruleResultFilters )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1127:3: lv_resultFilters_20_0= ruleResultFilters
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getResultFiltersResultFiltersParserRuleCall_2_0_1_9_0_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleResultFilters_in_ruleEntityFeature2304);
+                            lv_resultFilters_20_0=ruleResultFilters();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"resultFilters",
+                                      		lv_resultFilters_20_0, 
+                                      		"ResultFilters");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1144:6: (otherlv_21= ';' )?
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1144:6: (otherlv_21= ';' )?
+                            int alt33=2;
+                            int LA33_0 = input.LA(1);
+
+                            if ( (LA33_0==23) ) {
+                                alt33=1;
+                            }
+                            switch (alt33) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1144:8: otherlv_21= ';'
+                                    {
+                                    otherlv_21=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleEntityFeature2323); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_21, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_0_1_9_1());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1149:6: ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1149:6: ( () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) ) )
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1149:7: () ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1149:7: ()
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1150:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                              current = forceCreateModelElementAndSet(
+                                  grammarAccess.getEntityFeatureAccess().getLEntityAttributeAnnotationInfoAction_2_1_0(),
+                                  current);
+                          
+                    }
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1155:2: ( ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? ) | ( ( (lv_derived_36_0= 'derived' ) ) ( (lv_domainDescription_37_0= 'domainDescription' ) )? ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_name_39_0= ruleTRANSLATABLEID ) ) (otherlv_40= 'properties' otherlv_41= '(' ( (lv_properties_42_0= ruleKeyAndValue ) ) (otherlv_43= ', ' ( (lv_properties_44_0= ruleKeyAndValue ) ) )* otherlv_45= ')' )? ( (lv_derivedGetterExpression_46_0= ruleXBlockExpression ) ) ) | ( (otherlv_47= 'var' | ( (lv_id_48_0= 'id' ) ) | ( (lv_uuid_49_0= 'uuid' ) ) | ( (lv_version_50_0= 'version' ) ) | ( (lv_domainDescription_51_0= 'domainDescription' ) ) | ( (lv_domainKey_52_0= 'domainKey' ) ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) ( (lv_multiplicity_54_0= ruleMultiplicity ) )? (otherlv_55= '[' ( (lv_constraints_56_0= ruleAllConstraints ) )* otherlv_57= ']' )? ( (lv_name_58_0= ruleTRANSLATABLEID ) ) ( (lv_persistenceInfo_59_0= ruleColumnPersistenceInfo ) )? (otherlv_60= 'opposite' ( ( ruleLFQN ) ) )? (otherlv_62= 'properties' otherlv_63= '(' ( (lv_properties_64_0= ruleKeyAndValue ) ) (otherlv_65= ', ' ( (lv_properties_66_0= ruleKeyAndValue ) ) )* otherlv_67= ')' )? (otherlv_68= ';' )? ) )
+                    int alt52=3;
+                    switch ( input.LA(1) ) {
+                    case 38:
+                        {
+                        alt52=1;
+                        }
+                        break;
+                    case 39:
+                        {
+                        alt52=2;
+                        }
+                        break;
+                    case 40:
+                    case 41:
+                    case 42:
+                    case 43:
+                    case 44:
+                    case 45:
+                        {
+                        alt52=3;
+                        }
+                        break;
+                    default:
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 52, 0, input);
+
+                        throw nvae;
+                    }
+
+                    switch (alt52) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1155:3: ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1155:3: ( ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )? )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1155:4: ( (lv_transient_23_0= 'transient' ) ) ( ( ruleTYPE_CROSS_REFERENCE ) ) (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )? ( (lv_name_28_0= ruleTRANSLATABLEID ) ) (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )? (otherlv_35= ';' )?
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1155:4: ( (lv_transient_23_0= 'transient' ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1156:1: (lv_transient_23_0= 'transient' )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1156:1: (lv_transient_23_0= 'transient' )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1157:3: lv_transient_23_0= 'transient'
+                            {
+                            lv_transient_23_0=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleEntityFeature2364); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_transient_23_0, grammarAccess.getEntityFeatureAccess().getTransientTransientKeyword_2_1_1_0_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		setWithLastConsumed(current, "transient", true, "transient");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1170:2: ( ( ruleTYPE_CROSS_REFERENCE ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1171:1: ( ruleTYPE_CROSS_REFERENCE )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1171:1: ( ruleTYPE_CROSS_REFERENCE )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1172:3: ruleTYPE_CROSS_REFERENCE
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              			if (current==null) {
+                              	            current = createModelElement(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                      
+                            }
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getTypeLScalarTypeCrossReference_2_1_1_0_1_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleEntityFeature2400);
+                            ruleTYPE_CROSS_REFERENCE();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+                               
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1185:2: (otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']' )?
+                            int alt36=2;
+                            int LA36_0 = input.LA(1);
+
+                            if ( (LA36_0==34) ) {
+                                alt36=1;
+                            }
+                            switch (alt36) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1185:4: otherlv_25= '[' ( (lv_constraints_26_0= ruleAllConstraints ) )* otherlv_27= ']'
+                                    {
+                                    otherlv_25=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleEntityFeature2413); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_25, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0());
+                                          
+                                    }
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1189:1: ( (lv_constraints_26_0= ruleAllConstraints ) )*
+                                    loop35:
+                                    do {
+                                        int alt35=2;
+                                        int LA35_0 = input.LA(1);
+
+                                        if ( (LA35_0==60||(LA35_0>=65 && LA35_0<=76)) ) {
+                                            alt35=1;
+                                        }
+
+
+                                        switch (alt35) {
+                                    	case 1 :
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1190:1: (lv_constraints_26_0= ruleAllConstraints )
+                                    	    {
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1190:1: (lv_constraints_26_0= ruleAllConstraints )
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1191:3: lv_constraints_26_0= ruleAllConstraints
+                                    	    {
+                                    	    if ( state.backtracking==0 ) {
+                                    	       
+                                    	      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0()); 
+                                    	      	    
+                                    	    }
+                                    	    pushFollow(FollowSets000.FOLLOW_ruleAllConstraints_in_ruleEntityFeature2434);
+                                    	    lv_constraints_26_0=ruleAllConstraints();
+
+                                    	    state._fsp--;
+                                    	    if (state.failed) return current;
+                                    	    if ( state.backtracking==0 ) {
+
+                                    	      	        if (current==null) {
+                                    	      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                                    	      	        }
+                                    	             		add(
+                                    	             			current, 
+                                    	             			"constraints",
+                                    	              		lv_constraints_26_0, 
+                                    	              		"AllConstraints");
+                                    	      	        afterParserOrEnumRuleCall();
+                                    	      	    
+                                    	    }
+
+                                    	    }
+
+
+                                    	    }
+                                    	    break;
+
+                                    	default :
+                                    	    break loop35;
+                                        }
+                                    } while (true);
+
+                                    otherlv_27=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleEntityFeature2447); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_27, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2());
+                                          
+                                    }
+
+                                    }
+                                    break;
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1211:3: ( (lv_name_28_0= ruleTRANSLATABLEID ) )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1212:1: (lv_name_28_0= ruleTRANSLATABLEID )
+                            {
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1212:1: (lv_name_28_0= ruleTRANSLATABLEID )
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1213:3: lv_name_28_0= ruleTRANSLATABLEID
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleTRANSLATABLEID_in_ruleEntityFeature2470);
+                            lv_name_28_0=ruleTRANSLATABLEID();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                              	        }
+                                     		set(
+                                     			current, 
+                                     			"name",
+                                      		lv_name_28_0, 
+                                      		"TRANSLATABLEID");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1229:2: (otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')' )?
+                            int alt38=2;
+                            int LA38_0 = input.LA(1);
+
+                            if ( (LA38_0==37) ) {
+                                alt38=1;
+                            }
+                            switch (alt38) {
+                                case 1 :
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1229:4: otherlv_29= 'properties' otherlv_30= '(' ( (lv_properties_31_0= ruleKeyAndValue ) ) (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )* otherlv_34= ')'
+                                    {
+                                    otherlv_29=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleEntityFeature2483); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_29, grammarAccess.getEntityFeatureAccess().getPropertiesKeyword_2_1_1_0_4_0());
+                                          
+                                    }
+                                    otherlv_30=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleEntityFeature2495); if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                          	newLeafNode(otherlv_30, grammarAccess.getEntityFeatureAccess().getLeftParenthesisKeyword_2_1_1_0_4_1());
+                                          
+                                    }
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1237:1: ( (lv_properties_31_0= ruleKeyAndValue ) )
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1238:1: (lv_properties_31_0= ruleKeyAndValue )
+                                    {
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1238:1: (lv_properties_31_0= ruleKeyAndValue )
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1239:3: lv_properties_31_0= ruleKeyAndValue
+                                    {
+                                    if ( state.backtracking==0 ) {
+                                       
+                                      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0()); 
+                                      	    
+                                    }
+                                    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2516);
+                                    lv_properties_31_0=ruleKeyAndValue();
+
+                                    state._fsp--;
+                                    if (state.failed) return current;
+                                    if ( state.backtracking==0 ) {
+
+                                      	        if (current==null) {
+                                      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                                      	        }
+                                             		add(
+                                             			current, 
+                                             			"properties",
+                                              		lv_properties_31_0, 
+                                              		"KeyAndValue");
+                                      	        afterParserOrEnumRuleCall();
+                                      	    
+                                    }
+
+                                    }
+
+
+                                    }
+
+                                    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1255:2: (otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) ) )*
+                                    loop37:
+                                    do {
+                                        int alt37=2;
+                                        int LA37_0 = input.LA(1);
+
+                                        if ( (LA37_0==29) ) {
+                                            alt37=1;
+                                        }
+
+
+                                        switch (alt37) {
+                                    	case 1 :
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1255:4: otherlv_32= ', ' ( (lv_properties_33_0= ruleKeyAndValue ) )
+                                    	    {
+                                    	    otherlv_32=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleEntityFeature2529); if (state.failed) return current;
+                                    	    if ( state.backtracking==0 ) {
+
+                                    	          	newLeafNode(otherlv_32, grammarAccess.getEntityFeatureAccess().getCommaSpaceKeyword_2_1_1_0_4_3_0());
+                                    	          
+                                    	    }
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1259:1: ( (lv_properties_33_0= ruleKeyAndValue ) )
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1260:1: (lv_properties_33_0= ruleKeyAndValue )
+                                    	    {
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1260:1: (lv_properties_33_0= ruleKeyAndValue )
+                                    	    // ../org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/parser/antlr/internal/InternalEntityGrammar.g:1261:3: lv_properties_33_0= ruleKeyAndValue
+                                    	    {
+                                    	    if ( state.backtracking==0 ) {
+                                    	       
+                                    	      	        newCompositeNode(grammarAccess.getEntityFeatureAccess().getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0()); 
+                                    	      	    
+                                    	    }
+                                    	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleEntityFeature2550);
+                                    	    lv_properties_33_0=ruleKeyAndValue();
+
+                                    	    state._fsp--;
+                                    	    if (state.failed) return current;
+                                    	    if ( state.backtracking==0 ) {
+
+                                    	      	        if (current==null) {
+                                    	      	            current = createModelElementForParent(grammarAccess.getEntityFeatureRule());
+                                    	      	        }
+                                    	             		add(
+                                    	             			current, 
+                                    	             			"properties",
+                                    	              		lv_properties_33_0, 
+                                    	              		"KeyAndValue");
+                                    	      	        afterParserOrEnumRuleCall();
+                                    	      	    
+                                    	    }
+
+                                    	    }
+
+
+                                    	    }
+
+
+                                    	    }
+                                    	    break;
+
+                                    	default :
+                                    	    break loop37;
+                                        }
+                                    } while (true);
+
+                                    otherlv_34=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleEntityFeature2564); if (state.failed) return current;
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/serializer/AbstractEntityGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/serializer/AbstractEntityGrammarSemanticSequencer.java
new file mode 100644
index 0000000..a3016ae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/serializer/AbstractEntityGrammarSemanticSequencer.java
@@ -0,0 +1,1925 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.common.xtext.serializer.CommonGrammarSemanticSequencer;
+import org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+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.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 abstract class AbstractEntityGrammarSemanticSequencer extends CommonGrammarSemanticSequencer {
+
+	@Inject
+	private EntityGrammarGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == OSBPEntityPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPEntityPackage.LBEAN:
+				if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LBean) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE:
+				if(context == grammarAccess.getBeanFeatureRule()) {
+					sequence_BeanFeature(context, (LBeanAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LBEAN_FEATURE:
+				if(context == grammarAccess.getBeanFeatureAccess().getLBeanAttributeAnnotationInfoAction_2_1_0() ||
+				   context == grammarAccess.getBeanFeatureAccess().getLBeanReferenceAnnotationInfoAction_2_0_0() ||
+				   context == grammarAccess.getBeanFeatureAccess().getLOperationAnnotationInfoAction_2_2_0()) {
+					sequence_BeanFeature_LBeanAttribute_2_1_0_LBeanReference_2_0_0_LOperation_2_2_0(context, (LBeanFeature) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LBEAN_REFERENCE:
+				if(context == grammarAccess.getBeanFeatureRule()) {
+					sequence_BeanFeature(context, (LBeanReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY:
+				if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LEntity) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE:
+				if(context == grammarAccess.getEntityFeatureRule()) {
+					sequence_EntityFeature(context, (LEntityAttribute) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO:
+				if(context == grammarAccess.getColumnPersistenceInfoRule()) {
+					sequence_ColumnPersistenceInfo(context, (LEntityColumnPersistenceInfo) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY_FEATURE:
+				if(context == grammarAccess.getEntityFeatureAccess().getLEntityAttributeAnnotationInfoAction_2_1_0() ||
+				   context == grammarAccess.getEntityFeatureAccess().getLEntityReferenceAnnotationInfoAction_2_0_0() ||
+				   context == grammarAccess.getEntityFeatureAccess().getLOperationAnnotationInfoAction_2_2_0()) {
+					sequence_EntityFeature_LEntityAttribute_2_1_0_LEntityReference_2_0_0_LOperation_2_2_0(context, (LEntityFeature) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY_MODEL:
+				if(context == grammarAccess.getEntityModelRule()) {
+					sequence_EntityModel(context, (LEntityModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO:
+				if(context == grammarAccess.getEntityPersistenceInfoRule()) {
+					sequence_EntityPersistenceInfo(context, (LEntityPersistenceInfo) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LENTITY_REFERENCE:
+				if(context == grammarAccess.getEntityFeatureRule()) {
+					sequence_EntityFeature(context, (LEntityReference) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LINDEX:
+				if(context == grammarAccess.getIndexRule()) {
+					sequence_Index(context, (LIndex) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LOPERATION:
+				if(context == grammarAccess.getBeanFeatureRule()) {
+					sequence_BeanFeature(context, (LOperation) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getEntityFeatureRule()) {
+					sequence_EntityFeature(context, (LOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY:
+				if(context == grammarAccess.getEntityInheritanceStrategyRule() ||
+				   context == grammarAccess.getTablePerClassStrategyRule()) {
+					sequence_TablePerClassStrategy(context, (LTablePerClassStrategy) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY:
+				if(context == grammarAccess.getEntityInheritanceStrategyRule() ||
+				   context == grammarAccess.getTablePerSubclassStrategyRule()) {
+					sequence_TablePerSubclassStrategy(context, (LTablePerSubclassStrategy) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LANNOTATION_DEF:
+				if(context == grammarAccess.getAnnotationDefRule()) {
+					sequence_AnnotationDef(context, (LAnnotationDef) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT:
+				if(context == grammarAccess.getAttributeMatchingConstraintRule() ||
+				   context == grammarAccess.getResultFilterRule()) {
+					sequence_AttributeMatchingConstraint(context, (LAttributeMatchingConstraint) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LCLASS:
+				if(context == grammarAccess.getClassAccess().getLBeanAnnotationInfoAction_2_2_0() ||
+				   context == grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_0_0() ||
+				   context == grammarAccess.getClassAccess().getLEntityAnnotationInfoAction_2_1_0()) {
+					sequence_Class_LBean_2_2_0_LEntity_2_0_0_LEntity_2_1_0(context, (LClass) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDATA_TYPE:
+				if(context == grammarAccess.getDataTypeRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_DataType(context, (LDataType) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertFalseRule()) {
+					sequence_DtCAssertFalse(context, (LDtCAssertFalse) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertTrueRule()) {
+					sequence_DtCAssertTrue(context, (LDtCAssertTrue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMaxRule()) {
+					sequence_DtCDecimalMax(context, (LDtCDecimalMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMinRule()) {
+					sequence_DtCDecimalMin(context, (LDtCDecimalMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDIGITS:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDigitsRule()) {
+					sequence_DtCDigits(context, (LDtCDigits) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CFUTURE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCFutureRule()) {
+					sequence_DtCFuture(context, (LDtCFuture) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNOT_NULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNotNullRule()) {
+					sequence_DtCNotNull(context, (LDtCNotNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNullRule()) {
+					sequence_DtCNull(context, (LDtCNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMaxRule()) {
+					sequence_DtCNumericMax(context, (LDtCNumericMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMinRule()) {
+					sequence_DtCNumericMin(context, (LDtCNumericMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CPAST:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCPastRule()) {
+					sequence_DtCPast(context, (LDtCPast) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CREG_EX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCRegExRule()) {
+					sequence_DtCRegEx(context, (LDtCRegEx) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CSIZE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCSizeRule()) {
+					sequence_DtCSize(context, (LDtCSize) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM:
+				if(context == grammarAccess.getEnumRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Enum(context, (LEnum) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM_LITERAL:
+				if(context == grammarAccess.getEnumLiteralRule()) {
+					sequence_EnumLiteral(context, (LEnumLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getImportRule()) {
+					sequence_Import(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LKEY_AND_VALUE:
+				if(context == grammarAccess.getKeyAndValueRule()) {
+					sequence_KeyAndValue(context, (LKeyAndValue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMODIFIER:
+				if(context == grammarAccess.getModifierRule()) {
+					sequence_Modifier(context, (LModifier) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMULTIPLICITY:
+				if(context == grammarAccess.getMultiplicityRule()) {
+					sequence_Multiplicity(context, (LMultiplicity) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LRESULT_FILTERS:
+				if(context == grammarAccess.getResultFiltersRule()) {
+					sequence_ResultFilters(context, (LResultFilters) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LTYPED_PACKAGE:
+				if(context == grammarAccess.getTypedPackageRule()) {
+					sequence_TypedPackage(context, (LTypedPackage) 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:
+	 *     (
+	 *         annotationInfo=BeanFeature_LBeanAttribute_2_1_0 
+	 *         (
+	 *             (
+	 *                 transient?='transient' 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 constraints+=AllConstraints* 
+	 *                 name=TRANSLATABLEID 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *             ) | 
+	 *             (
+	 *                 (id?='id' | version?='version')? 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 multiplicity=Multiplicity? 
+	 *                 constraints+=AllConstraints* 
+	 *                 name=TRANSLATABLEID 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *             )
+	 *         )
+	 *     )
+	 */
+	protected void sequence_BeanFeature(EObject context, LBeanAttribute semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_BeanFeature_LBeanAttribute_2_1_0_LBeanReference_2_0_0_LOperation_2_2_0(EObject context, LBeanFeature semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=BeanFeature_LBeanReference_2_0_0 
+	 *         (
+	 *             cascading?='cascade'? 
+	 *             type=[LType|TYPE_CROSS_REFERENCE] 
+	 *             multiplicity=Multiplicity? 
+	 *             constraints+=AllConstraints* 
+	 *             name=TRANSLATABLEID 
+	 *             opposite=[LReference|LFQN]? 
+	 *             (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *             resultFilters=ResultFilters?
+	 *         )
+	 *     )
+	 */
+	protected void sequence_BeanFeature(EObject context, LBeanReference semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=BeanFeature_LOperation_2_2_0 
+	 *         (type=JvmTypeReference name=TRANSLATABLEID (params+=FullJvmFormalParameter params+=FullJvmFormalParameter*)? body=XExpression)
+	 *     )
+	 */
+	protected void sequence_BeanFeature(EObject context, LOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (annotationInfo=Class_LBean_2_2_0 name=TRANSLATABLEID superType=[LBean|TYPE_CROSS_REFERENCE]? features+=BeanFeature*)
+	 */
+	protected void sequence_Class(EObject context, LBean semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_Class_LBean_2_2_0_LEntity_2_0_0_LEntity_2_1_0(EObject context, LClass semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         (
+	 *             annotationInfo=Class_LEntity_2_0_0 
+	 *             (
+	 *                 abstract?='abstract'? 
+	 *                 (historized?='historized' | (timedependent?='timedependent' timedependentDateType=LHistorizedDateType?))? 
+	 *                 cacheable?='cacheable'?
+	 *             ) 
+	 *             name=TRANSLATABLEID 
+	 *             superType=[LEntity|TYPE_CROSS_REFERENCE]? 
+	 *             persistenceInfo=EntityPersistenceInfo 
+	 *             inheritanceStrategy=EntityInheritanceStrategy? 
+	 *             persistenceUnit=STRING? 
+	 *             features+=EntityFeature* 
+	 *             indexes+=Index*
+	 *         ) | 
+	 *         (
+	 *             annotationInfo=Class_LEntity_2_1_0 
+	 *             mappedSuperclass?='mapped superclass' 
+	 *             superType=[LEntity|TYPE_CROSS_REFERENCE]? 
+	 *             name=ValidIDWithKeywords 
+	 *             persistenceUnit=STRING? 
+	 *             features+=EntityFeature*
+	 *         )
+	 *     )
+	 */
+	protected void sequence_Class(EObject context, LEntity semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     columnName=ValidIDWithKeywords
+	 */
+	protected void sequence_ColumnPersistenceInfo(EObject context, LEntityColumnPersistenceInfo semanticObject) {
+		if(errorAcceptor != null) {
+			if(transientValues.isValueTransient(semanticObject, OSBPEntityPackage.Literals.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME) == ValueTransient.YES)
+				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, OSBPEntityPackage.Literals.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME));
+		}
+		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
+		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		feeder.accept(grammarAccess.getColumnPersistenceInfoAccess().getColumnNameValidIDWithKeywordsParserRuleCall_2_0(), semanticObject.getColumnName());
+		feeder.finish();
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=EntityFeature_LEntityAttribute_2_1_0 
+	 *         (
+	 *             (
+	 *                 transient?='transient' 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 constraints+=AllConstraints* 
+	 *                 name=TRANSLATABLEID 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *             ) | 
+	 *             (
+	 *                 derived?='derived' 
+	 *                 domainDescription?='domainDescription'? 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 name=TRANSLATABLEID 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *                 derivedGetterExpression=XBlockExpression
+	 *             ) | 
+	 *             (
+	 *                 (id?='id' | uuid?='uuid' | version?='version' | domainDescription?='domainDescription' | domainKey?='domainKey')? 
+	 *                 type=[LScalarType|TYPE_CROSS_REFERENCE] 
+	 *                 multiplicity=Multiplicity? 
+	 *                 constraints+=AllConstraints* 
+	 *                 name=TRANSLATABLEID 
+	 *                 persistenceInfo=ColumnPersistenceInfo? 
+	 *                 opposite=[LBeanReference|LFQN]? 
+	 *                 (properties+=KeyAndValue properties+=KeyAndValue*)?
+	 *             )
+	 *         )
+	 *     )
+	 */
+	protected void sequence_EntityFeature(EObject context, LEntityAttribute semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_EntityFeature_LEntityAttribute_2_1_0_LEntityReference_2_0_0_LOperation_2_2_0(EObject context, LEntityFeature semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=EntityFeature_LEntityReference_2_0_0 
+	 *         (
+	 *             cascading?='cascade'? 
+	 *             type=[LEntity|TYPE_CROSS_REFERENCE] 
+	 *             multiplicity=Multiplicity? 
+	 *             constraints+=AllConstraints* 
+	 *             name=TRANSLATABLEID 
+	 *             persistenceInfo=ColumnPersistenceInfo? 
+	 *             opposite=[LEntityReference|LFQN]? 
+	 *             (properties+=KeyAndValue properties+=KeyAndValue*)? 
+	 *             resultFilters=ResultFilters?
+	 *         )
+	 *     )
+	 */
+	protected void sequence_EntityFeature(EObject context, LEntityReference semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (
+	 *         annotationInfo=EntityFeature_LOperation_2_2_0 
+	 *         (type=JvmTypeReference name=TRANSLATABLEID (params+=FullJvmFormalParameter params+=FullJvmFormalParameter*)? body=XExpression)
+	 *     )
+	 */
+	protected void sequence_EntityFeature(EObject context, LOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     packages+=TypedPackage*
+	 */
+	protected void sequence_EntityModel(EObject context, LEntityModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (schemaName=ValidIDWithKeywords? tableName=ValidIDWithKeywords?)
+	 */
+	protected void sequence_EntityPersistenceInfo(EObject context, LEntityPersistenceInfo semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (unique?='unique'? name=ID features+=[LEntityFeature|ID] features+=[LEntityFeature|ID]*)
+	 */
+	protected void sequence_Index(EObject context, LIndex semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (discriminatorColumn=ValidIDWithKeywords? discriminatorType=DiscriminatorType? discriminatorValue=ValidIDWithKeywords?)
+	 */
+	protected void sequence_TablePerClassStrategy(EObject context, LTablePerClassStrategy semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (discriminatorColumn=ValidIDWithKeywords? discriminatorType=DiscriminatorType? discriminatorValue=ValidIDWithKeywords?)
+	 */
+	protected void sequence_TablePerSubclassStrategy(EObject context, LTablePerSubclassStrategy semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/serializer/AbstractEntityGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/serializer/AbstractEntityGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..6765a3b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/serializer/AbstractEntityGrammarSyntacticSequencer.java
@@ -0,0 +1,1159 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public abstract class AbstractEntityGrammarSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected EntityGrammarGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_AttributeMatchingConstraint_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_BeanFeature_SemicolonKeyword_2_0_1_8_1_q;
+	protected AbstractElementAlias match_BeanFeature_SemicolonKeyword_2_1_1_1_6_q;
+	protected AbstractElementAlias match_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q;
+	protected AbstractElementAlias match_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q;
+	protected AbstractElementAlias match_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q;
+	protected AbstractElementAlias match_Class_SemicolonKeyword_2_0_8_2_q;
+	protected AbstractElementAlias match_Class_SemicolonKeyword_2_1_5_2_q;
+	protected AbstractElementAlias match_DataType_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_EntityFeature_SemicolonKeyword_2_0_1_9_1_q;
+	protected AbstractElementAlias match_EntityFeature_SemicolonKeyword_2_1_1_0_5_q;
+	protected AbstractElementAlias match_EntityFeature_SemicolonKeyword_2_1_1_2_8_q;
+	protected AbstractElementAlias match_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q;
+	protected AbstractElementAlias match_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q;
+	protected AbstractElementAlias match_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q;
+	protected AbstractElementAlias match_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q;
+	protected AbstractElementAlias match_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p;
+	protected AbstractElementAlias match_Import_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_TablePerClassStrategy_SemicolonKeyword_3_0_2_q;
+	protected AbstractElementAlias match_TablePerClassStrategy_SemicolonKeyword_3_1_2_q;
+	protected AbstractElementAlias match_TablePerClassStrategy_SemicolonKeyword_3_2_2_q;
+	protected AbstractElementAlias match_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q;
+	protected AbstractElementAlias match_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q;
+	protected AbstractElementAlias match_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q;
+	protected AbstractElementAlias match_TypedPackage___LeftCurlyBracketKeyword_3_0_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 = (EntityGrammarGrammarAccess) access;
+		match_AttributeMatchingConstraint_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+		match_BeanFeature_SemicolonKeyword_2_0_1_8_1_q = new TokenAlias(false, true, grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_0_1_8_1());
+		match_BeanFeature_SemicolonKeyword_2_1_1_1_6_q = new TokenAlias(false, true, grammarAccess.getBeanFeatureAccess().getSemicolonKeyword_2_1_1_1_6());
+		match_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0()), new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2()));
+		match_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()), new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()));
+		match_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getLeftSquareBracketKeyword_2_1_1_1_3_0()), new TokenAlias(false, false, grammarAccess.getBeanFeatureAccess().getRightSquareBracketKeyword_2_1_1_1_3_2()));
+		match_Class_SemicolonKeyword_2_0_8_2_q = new TokenAlias(false, true, grammarAccess.getClassAccess().getSemicolonKeyword_2_0_8_2());
+		match_Class_SemicolonKeyword_2_1_5_2_q = new TokenAlias(false, true, grammarAccess.getClassAccess().getSemicolonKeyword_2_1_5_2());
+		match_DataType_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+		match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_EntityFeature_SemicolonKeyword_2_0_1_9_1_q = new TokenAlias(false, true, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_0_1_9_1());
+		match_EntityFeature_SemicolonKeyword_2_1_1_0_5_q = new TokenAlias(false, true, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_0_5());
+		match_EntityFeature_SemicolonKeyword_2_1_1_2_8_q = new TokenAlias(false, true, grammarAccess.getEntityFeatureAccess().getSemicolonKeyword_2_1_1_2_8());
+		match_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_0_1_4_0()), new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_0_1_4_2()));
+		match_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_0_2_0()), new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_0_2_2()));
+		match_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getLeftSquareBracketKeyword_2_1_1_2_3_0()), new TokenAlias(false, false, grammarAccess.getEntityFeatureAccess().getRightSquareBracketKeyword_2_1_1_2_3_2()));
+		match_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q = new TokenAlias(false, true, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_0_2());
+		match_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q = new TokenAlias(false, true, grammarAccess.getEntityPersistenceInfoAccess().getSemicolonKeyword_1_1_2());
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a = new GroupAlias(true, true, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_Import_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+		match_TablePerClassStrategy_SemicolonKeyword_3_0_2_q = new TokenAlias(false, true, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_0_2());
+		match_TablePerClassStrategy_SemicolonKeyword_3_1_2_q = new TokenAlias(false, true, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_1_2());
+		match_TablePerClassStrategy_SemicolonKeyword_3_2_2_q = new TokenAlias(false, true, grammarAccess.getTablePerClassStrategyAccess().getSemicolonKeyword_3_2_2());
+		match_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q = new TokenAlias(false, true, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_0_2());
+		match_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q = new TokenAlias(false, true, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_1_2());
+		match_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q = new TokenAlias(false, true, grammarAccess.getTablePerSubclassStrategyAccess().getSemicolonKeyword_3_2_2());
+		match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().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_AttributeMatchingConstraint_SemicolonKeyword_3_q.equals(syntax))
+				emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_BeanFeature_SemicolonKeyword_2_0_1_8_1_q.equals(syntax))
+				emit_BeanFeature_SemicolonKeyword_2_0_1_8_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_BeanFeature_SemicolonKeyword_2_1_1_1_6_q.equals(syntax))
+				emit_BeanFeature_SemicolonKeyword_2_1_1_1_6_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q.equals(syntax))
+				emit_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q.equals(syntax))
+				emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q.equals(syntax))
+				emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Class_SemicolonKeyword_2_0_8_2_q.equals(syntax))
+				emit_Class_SemicolonKeyword_2_0_8_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Class_SemicolonKeyword_2_1_5_2_q.equals(syntax))
+				emit_Class_SemicolonKeyword_2_1_5_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DataType_SemicolonKeyword_3_q.equals(syntax))
+				emit_DataType_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityFeature_SemicolonKeyword_2_0_1_9_1_q.equals(syntax))
+				emit_EntityFeature_SemicolonKeyword_2_0_1_9_1_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityFeature_SemicolonKeyword_2_1_1_0_5_q.equals(syntax))
+				emit_EntityFeature_SemicolonKeyword_2_1_1_0_5_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityFeature_SemicolonKeyword_2_1_1_2_8_q.equals(syntax))
+				emit_EntityFeature_SemicolonKeyword_2_1_1_2_8_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q.equals(syntax))
+				emit_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q.equals(syntax))
+				emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q.equals(syntax))
+				emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q.equals(syntax))
+				emit_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q.equals(syntax))
+				emit_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Import_SemicolonKeyword_2_q.equals(syntax))
+				emit_Import_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TablePerClassStrategy_SemicolonKeyword_3_0_2_q.equals(syntax))
+				emit_TablePerClassStrategy_SemicolonKeyword_3_0_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TablePerClassStrategy_SemicolonKeyword_3_1_2_q.equals(syntax))
+				emit_TablePerClassStrategy_SemicolonKeyword_3_1_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TablePerClassStrategy_SemicolonKeyword_3_2_2_q.equals(syntax))
+				emit_TablePerClassStrategy_SemicolonKeyword_3_2_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q.equals(syntax))
+				emit_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q.equals(syntax))
+				emit_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q.equals(syntax))
+				emit_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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:
+	 *     ';'?
+	 */
+	protected void emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_BeanFeature_SemicolonKeyword_2_0_1_8_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_BeanFeature_SemicolonKeyword_2_1_1_1_6_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_BeanFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_BeanFeature___LeftSquareBracketKeyword_2_1_1_1_3_0_RightSquareBracketKeyword_2_1_1_1_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Class_SemicolonKeyword_2_0_8_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Class_SemicolonKeyword_2_1_5_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DataType_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_EntityFeature_SemicolonKeyword_2_0_1_9_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_EntityFeature_SemicolonKeyword_2_1_1_0_5_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_EntityFeature_SemicolonKeyword_2_1_1_2_8_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_EntityFeature___LeftSquareBracketKeyword_2_0_1_4_0_RightSquareBracketKeyword_2_0_1_4_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_0_2_0_RightSquareBracketKeyword_2_1_1_0_2_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' ']')?
+	 */
+	protected void emit_EntityFeature___LeftSquareBracketKeyword_2_1_1_2_3_0_RightSquareBracketKeyword_2_1_1_2_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_EntityPersistenceInfo_SemicolonKeyword_1_0_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_EntityPersistenceInfo_SemicolonKeyword_1_1_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')+
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' | ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')' '('*)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'* '(')+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'+ '('+)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Import_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_TablePerClassStrategy_SemicolonKeyword_3_0_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_TablePerClassStrategy_SemicolonKeyword_3_1_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_TablePerClassStrategy_SemicolonKeyword_3_2_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_TablePerSubclassStrategy_SemicolonKeyword_3_0_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_TablePerSubclassStrategy_SemicolonKeyword_3_1_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_TablePerSubclassStrategy_SemicolonKeyword_3_2_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/services/EntityGrammarGrammarAccess.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/services/EntityGrammarGrammarAccess.java
new file mode 100644
index 0000000..c77d1f4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/services/EntityGrammarGrammarAccess.java
@@ -0,0 +1,3743 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.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.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+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 EntityGrammarGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class EntityModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EntityModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesTypedPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//EntityModel returns entity::LEntityModel:
+		//	packages+=TypedPackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=TypedPackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//TypedPackage
+		public RuleCall getPackagesTypedPackageParserRuleCall_0() { return cPackagesTypedPackageParserRuleCall_0; }
+	}
+
+	public class ClassElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Class");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLClassAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Action cLEntityAnnotationInfoAction_2_0_0 = (Action)cGroup_2_0.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_2_0_1 = (UnorderedGroup)cGroup_2_0.eContents().get(1);
+		private final Assignment cAbstractAssignment_2_0_1_0 = (Assignment)cUnorderedGroup_2_0_1.eContents().get(0);
+		private final Keyword cAbstractAbstractKeyword_2_0_1_0_0 = (Keyword)cAbstractAssignment_2_0_1_0.eContents().get(0);
+		private final Alternatives cAlternatives_2_0_1_1 = (Alternatives)cUnorderedGroup_2_0_1.eContents().get(1);
+		private final Assignment cHistorizedAssignment_2_0_1_1_0 = (Assignment)cAlternatives_2_0_1_1.eContents().get(0);
+		private final Keyword cHistorizedHistorizedKeyword_2_0_1_1_0_0 = (Keyword)cHistorizedAssignment_2_0_1_1_0.eContents().get(0);
+		private final Group cGroup_2_0_1_1_1 = (Group)cAlternatives_2_0_1_1.eContents().get(1);
+		private final Assignment cTimedependentAssignment_2_0_1_1_1_0 = (Assignment)cGroup_2_0_1_1_1.eContents().get(0);
+		private final Keyword cTimedependentTimedependentKeyword_2_0_1_1_1_0_0 = (Keyword)cTimedependentAssignment_2_0_1_1_1_0.eContents().get(0);
+		private final Group cGroup_2_0_1_1_1_1 = (Group)cGroup_2_0_1_1_1.eContents().get(1);
+		private final Keyword cLeftParenthesisKeyword_2_0_1_1_1_1_0 = (Keyword)cGroup_2_0_1_1_1_1.eContents().get(0);
+		private final Assignment cTimedependentDateTypeAssignment_2_0_1_1_1_1_1 = (Assignment)cGroup_2_0_1_1_1_1.eContents().get(1);
+		private final RuleCall cTimedependentDateTypeLHistorizedDateTypeEnumRuleCall_2_0_1_1_1_1_1_0 = (RuleCall)cTimedependentDateTypeAssignment_2_0_1_1_1_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_0_1_1_1_1_2 = (Keyword)cGroup_2_0_1_1_1_1.eContents().get(2);
+		private final Assignment cCacheableAssignment_2_0_1_2 = (Assignment)cUnorderedGroup_2_0_1.eContents().get(2);
+		private final Keyword cCacheableCacheableKeyword_2_0_1_2_0 = (Keyword)cCacheableAssignment_2_0_1_2.eContents().get(0);
+		private final Keyword cEntityKeyword_2_0_2 = (Keyword)cGroup_2_0.eContents().get(2);
+		private final Assignment cNameAssignment_2_0_3 = (Assignment)cGroup_2_0.eContents().get(3);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0_3_0 = (RuleCall)cNameAssignment_2_0_3.eContents().get(0);
+		private final Group cGroup_2_0_4 = (Group)cGroup_2_0.eContents().get(4);
+		private final Keyword cExtendsKeyword_2_0_4_0 = (Keyword)cGroup_2_0_4.eContents().get(0);
+		private final Assignment cSuperTypeAssignment_2_0_4_1 = (Assignment)cGroup_2_0_4.eContents().get(1);
+		private final CrossReference cSuperTypeLEntityCrossReference_2_0_4_1_0 = (CrossReference)cSuperTypeAssignment_2_0_4_1.eContents().get(0);
+		private final RuleCall cSuperTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_4_1_0_1 = (RuleCall)cSuperTypeLEntityCrossReference_2_0_4_1_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2_0_5 = (Keyword)cGroup_2_0.eContents().get(5);
+		private final Assignment cPersistenceInfoAssignment_2_0_6 = (Assignment)cGroup_2_0.eContents().get(6);
+		private final RuleCall cPersistenceInfoEntityPersistenceInfoParserRuleCall_2_0_6_0 = (RuleCall)cPersistenceInfoAssignment_2_0_6.eContents().get(0);
+		private final Assignment cInheritanceStrategyAssignment_2_0_7 = (Assignment)cGroup_2_0.eContents().get(7);
+		private final RuleCall cInheritanceStrategyEntityInheritanceStrategyParserRuleCall_2_0_7_0 = (RuleCall)cInheritanceStrategyAssignment_2_0_7.eContents().get(0);
+		private final Group cGroup_2_0_8 = (Group)cGroup_2_0.eContents().get(8);
+		private final Keyword cPersistenceUnitKeyword_2_0_8_0 = (Keyword)cGroup_2_0_8.eContents().get(0);
+		private final Assignment cPersistenceUnitAssignment_2_0_8_1 = (Assignment)cGroup_2_0_8.eContents().get(1);
+		private final RuleCall cPersistenceUnitSTRINGTerminalRuleCall_2_0_8_1_0 = (RuleCall)cPersistenceUnitAssignment_2_0_8_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_0_8_2 = (Keyword)cGroup_2_0_8.eContents().get(2);
+		private final Assignment cFeaturesAssignment_2_0_9 = (Assignment)cGroup_2_0.eContents().get(9);
+		private final RuleCall cFeaturesEntityFeatureParserRuleCall_2_0_9_0 = (RuleCall)cFeaturesAssignment_2_0_9.eContents().get(0);
+		private final Assignment cIndexesAssignment_2_0_10 = (Assignment)cGroup_2_0.eContents().get(10);
+		private final RuleCall cIndexesIndexParserRuleCall_2_0_10_0 = (RuleCall)cIndexesAssignment_2_0_10.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_0_11 = (Keyword)cGroup_2_0.eContents().get(11);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Action cLEntityAnnotationInfoAction_2_1_0 = (Action)cGroup_2_1.eContents().get(0);
+		private final Assignment cMappedSuperclassAssignment_2_1_1 = (Assignment)cGroup_2_1.eContents().get(1);
+		private final Keyword cMappedSuperclassMappedSuperclassKeyword_2_1_1_0 = (Keyword)cMappedSuperclassAssignment_2_1_1.eContents().get(0);
+		private final Group cGroup_2_1_2 = (Group)cGroup_2_1.eContents().get(2);
+		private final Keyword cExtendsKeyword_2_1_2_0 = (Keyword)cGroup_2_1_2.eContents().get(0);
+		private final Assignment cSuperTypeAssignment_2_1_2_1 = (Assignment)cGroup_2_1_2.eContents().get(1);
+		private final CrossReference cSuperTypeLEntityCrossReference_2_1_2_1_0 = (CrossReference)cSuperTypeAssignment_2_1_2_1.eContents().get(0);
+		private final RuleCall cSuperTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_1_2_1_0_1 = (RuleCall)cSuperTypeLEntityCrossReference_2_1_2_1_0.eContents().get(1);
+		private final Assignment cNameAssignment_2_1_3 = (Assignment)cGroup_2_1.eContents().get(3);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_2_1_3_0 = (RuleCall)cNameAssignment_2_1_3.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_2_1_4 = (Keyword)cGroup_2_1.eContents().get(4);
+		private final Group cGroup_2_1_5 = (Group)cGroup_2_1.eContents().get(5);
+		private final Keyword cPersistenceUnitKeyword_2_1_5_0 = (Keyword)cGroup_2_1_5.eContents().get(0);
+		private final Assignment cPersistenceUnitAssignment_2_1_5_1 = (Assignment)cGroup_2_1_5.eContents().get(1);
+		private final RuleCall cPersistenceUnitSTRINGTerminalRuleCall_2_1_5_1_0 = (RuleCall)cPersistenceUnitAssignment_2_1_5_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_1_5_2 = (Keyword)cGroup_2_1_5.eContents().get(2);
+		private final Assignment cFeaturesAssignment_2_1_6 = (Assignment)cGroup_2_1.eContents().get(6);
+		private final RuleCall cFeaturesEntityFeatureParserRuleCall_2_1_6_0 = (RuleCall)cFeaturesAssignment_2_1_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_1_7 = (Keyword)cGroup_2_1.eContents().get(7);
+		private final Group cGroup_2_2 = (Group)cAlternatives_2.eContents().get(2);
+		private final Action cLBeanAnnotationInfoAction_2_2_0 = (Action)cGroup_2_2.eContents().get(0);
+		private final Keyword cBeanKeyword_2_2_1 = (Keyword)cGroup_2_2.eContents().get(1);
+		private final Assignment cNameAssignment_2_2_2 = (Assignment)cGroup_2_2.eContents().get(2);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_2_2_0 = (RuleCall)cNameAssignment_2_2_2.eContents().get(0);
+		private final Group cGroup_2_2_3 = (Group)cGroup_2_2.eContents().get(3);
+		private final Keyword cExtendsKeyword_2_2_3_0 = (Keyword)cGroup_2_2_3.eContents().get(0);
+		private final Assignment cSuperTypeAssignment_2_2_3_1 = (Assignment)cGroup_2_2_3.eContents().get(1);
+		private final CrossReference cSuperTypeLBeanCrossReference_2_2_3_1_0 = (CrossReference)cSuperTypeAssignment_2_2_3_1.eContents().get(0);
+		private final RuleCall cSuperTypeLBeanTYPE_CROSS_REFERENCEParserRuleCall_2_2_3_1_0_1 = (RuleCall)cSuperTypeLBeanCrossReference_2_2_3_1_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2_2_4 = (Keyword)cGroup_2_2.eContents().get(4);
+		private final Assignment cFeaturesAssignment_2_2_5 = (Assignment)cGroup_2_2.eContents().get(5);
+		private final RuleCall cFeaturesBeanFeatureParserRuleCall_2_2_5_0 = (RuleCall)cFeaturesAssignment_2_2_5.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_2_6 = (Keyword)cGroup_2_2.eContents().get(6);
+		
+		//Class returns LClass:
+		//	{LClass} annotations+=AnnotationDef* ({entity::LEntity.annotationInfo=current} (abstract?="abstract"? &
+		//	(historized?="historized" | timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?)? &
+		//	cacheable?="cacheable"?) "entity" name=TRANSLATABLEID ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		//	"{" persistenceInfo=EntityPersistenceInfo inheritanceStrategy=EntityInheritanceStrategy? ("persistenceUnit"
+		//	persistenceUnit=STRING ";"?)? features+=EntityFeature* indexes+=Index* "}" | {entity::LEntity.annotationInfo=current}
+		//	mappedSuperclass?="mapped superclass" ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		//	name=ValidIDWithKeywords "{" ("persistenceUnit" persistenceUnit=STRING ";"?)? features+=EntityFeature* "}" |
+		//	{entity::LBean.annotationInfo=current} "bean" name=TRANSLATABLEID ("extends"
+		//	superType=[entity::LBean|TYPE_CROSS_REFERENCE])? "{" features+=BeanFeature* "}");
+		public ParserRule getRule() { return rule; }
+
+		//{LClass} annotations+=AnnotationDef* ({entity::LEntity.annotationInfo=current} (abstract?="abstract"? &
+		//(historized?="historized" | timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?)? &
+		//cacheable?="cacheable"?) "entity" name=TRANSLATABLEID ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{"
+		//persistenceInfo=EntityPersistenceInfo inheritanceStrategy=EntityInheritanceStrategy? ("persistenceUnit"
+		//persistenceUnit=STRING ";"?)? features+=EntityFeature* indexes+=Index* "}" | {entity::LEntity.annotationInfo=current}
+		//mappedSuperclass?="mapped superclass" ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		//name=ValidIDWithKeywords "{" ("persistenceUnit" persistenceUnit=STRING ";"?)? features+=EntityFeature* "}" |
+		//{entity::LBean.annotationInfo=current} "bean" name=TRANSLATABLEID ("extends"
+		//superType=[entity::LBean|TYPE_CROSS_REFERENCE])? "{" features+=BeanFeature* "}")
+		public Group getGroup() { return cGroup; }
+
+		//{LClass}
+		public Action getLClassAction_0() { return cLClassAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//{entity::LEntity.annotationInfo=current} (abstract?="abstract"? & (historized?="historized" |
+		//timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?)? & cacheable?="cacheable"?)
+		//"entity" name=TRANSLATABLEID ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{"
+		//persistenceInfo=EntityPersistenceInfo inheritanceStrategy=EntityInheritanceStrategy? ("persistenceUnit"
+		//persistenceUnit=STRING ";"?)? features+=EntityFeature* indexes+=Index* "}" | {entity::LEntity.annotationInfo=current}
+		//mappedSuperclass?="mapped superclass" ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		//name=ValidIDWithKeywords "{" ("persistenceUnit" persistenceUnit=STRING ";"?)? features+=EntityFeature* "}" |
+		//{entity::LBean.annotationInfo=current} "bean" name=TRANSLATABLEID ("extends"
+		//superType=[entity::LBean|TYPE_CROSS_REFERENCE])? "{" features+=BeanFeature* "}"
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//{entity::LEntity.annotationInfo=current} (abstract?="abstract"? & (historized?="historized" |
+		//timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?)? & cacheable?="cacheable"?)
+		//"entity" name=TRANSLATABLEID ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])? "{"
+		//persistenceInfo=EntityPersistenceInfo inheritanceStrategy=EntityInheritanceStrategy? ("persistenceUnit"
+		//persistenceUnit=STRING ";"?)? features+=EntityFeature* indexes+=Index* "}"
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//{entity::LEntity.annotationInfo=current}
+		public Action getLEntityAnnotationInfoAction_2_0_0() { return cLEntityAnnotationInfoAction_2_0_0; }
+
+		//abstract?="abstract"? & (historized?="historized" | timedependent?="timedependent" ("("
+		//timedependentDateType=LHistorizedDateType ")")?)? & cacheable?="cacheable"?
+		public UnorderedGroup getUnorderedGroup_2_0_1() { return cUnorderedGroup_2_0_1; }
+
+		//abstract?="abstract"?
+		public Assignment getAbstractAssignment_2_0_1_0() { return cAbstractAssignment_2_0_1_0; }
+
+		//"abstract"
+		public Keyword getAbstractAbstractKeyword_2_0_1_0_0() { return cAbstractAbstractKeyword_2_0_1_0_0; }
+
+		//(historized?="historized" | timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?)?
+		public Alternatives getAlternatives_2_0_1_1() { return cAlternatives_2_0_1_1; }
+
+		//historized?="historized"
+		public Assignment getHistorizedAssignment_2_0_1_1_0() { return cHistorizedAssignment_2_0_1_1_0; }
+
+		//"historized"
+		public Keyword getHistorizedHistorizedKeyword_2_0_1_1_0_0() { return cHistorizedHistorizedKeyword_2_0_1_1_0_0; }
+
+		//timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?
+		public Group getGroup_2_0_1_1_1() { return cGroup_2_0_1_1_1; }
+
+		//timedependent?="timedependent"
+		public Assignment getTimedependentAssignment_2_0_1_1_1_0() { return cTimedependentAssignment_2_0_1_1_1_0; }
+
+		//"timedependent"
+		public Keyword getTimedependentTimedependentKeyword_2_0_1_1_1_0_0() { return cTimedependentTimedependentKeyword_2_0_1_1_1_0_0; }
+
+		//("(" timedependentDateType=LHistorizedDateType ")")?
+		public Group getGroup_2_0_1_1_1_1() { return cGroup_2_0_1_1_1_1; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_0_1_1_1_1_0() { return cLeftParenthesisKeyword_2_0_1_1_1_1_0; }
+
+		//timedependentDateType=LHistorizedDateType
+		public Assignment getTimedependentDateTypeAssignment_2_0_1_1_1_1_1() { return cTimedependentDateTypeAssignment_2_0_1_1_1_1_1; }
+
+		//LHistorizedDateType
+		public RuleCall getTimedependentDateTypeLHistorizedDateTypeEnumRuleCall_2_0_1_1_1_1_1_0() { return cTimedependentDateTypeLHistorizedDateTypeEnumRuleCall_2_0_1_1_1_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_0_1_1_1_1_2() { return cRightParenthesisKeyword_2_0_1_1_1_1_2; }
+
+		//cacheable?="cacheable"?
+		public Assignment getCacheableAssignment_2_0_1_2() { return cCacheableAssignment_2_0_1_2; }
+
+		//"cacheable"
+		public Keyword getCacheableCacheableKeyword_2_0_1_2_0() { return cCacheableCacheableKeyword_2_0_1_2_0; }
+
+		//"entity"
+		public Keyword getEntityKeyword_2_0_2() { return cEntityKeyword_2_0_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_0_3() { return cNameAssignment_2_0_3; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0_3_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0_3_0; }
+
+		//("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_0_4() { return cGroup_2_0_4; }
+
+		//"extends"
+		public Keyword getExtendsKeyword_2_0_4_0() { return cExtendsKeyword_2_0_4_0; }
+
+		//superType=[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public Assignment getSuperTypeAssignment_2_0_4_1() { return cSuperTypeAssignment_2_0_4_1; }
+
+		//[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public CrossReference getSuperTypeLEntityCrossReference_2_0_4_1_0() { return cSuperTypeLEntityCrossReference_2_0_4_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getSuperTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_4_1_0_1() { return cSuperTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_4_1_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_0_5() { return cLeftCurlyBracketKeyword_2_0_5; }
+
+		//persistenceInfo=EntityPersistenceInfo
+		public Assignment getPersistenceInfoAssignment_2_0_6() { return cPersistenceInfoAssignment_2_0_6; }
+
+		//EntityPersistenceInfo
+		public RuleCall getPersistenceInfoEntityPersistenceInfoParserRuleCall_2_0_6_0() { return cPersistenceInfoEntityPersistenceInfoParserRuleCall_2_0_6_0; }
+
+		//inheritanceStrategy=EntityInheritanceStrategy?
+		public Assignment getInheritanceStrategyAssignment_2_0_7() { return cInheritanceStrategyAssignment_2_0_7; }
+
+		//EntityInheritanceStrategy
+		public RuleCall getInheritanceStrategyEntityInheritanceStrategyParserRuleCall_2_0_7_0() { return cInheritanceStrategyEntityInheritanceStrategyParserRuleCall_2_0_7_0; }
+
+		//("persistenceUnit" persistenceUnit=STRING ";"?)?
+		public Group getGroup_2_0_8() { return cGroup_2_0_8; }
+
+		//"persistenceUnit"
+		public Keyword getPersistenceUnitKeyword_2_0_8_0() { return cPersistenceUnitKeyword_2_0_8_0; }
+
+		//persistenceUnit=STRING
+		public Assignment getPersistenceUnitAssignment_2_0_8_1() { return cPersistenceUnitAssignment_2_0_8_1; }
+
+		//STRING
+		public RuleCall getPersistenceUnitSTRINGTerminalRuleCall_2_0_8_1_0() { return cPersistenceUnitSTRINGTerminalRuleCall_2_0_8_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_0_8_2() { return cSemicolonKeyword_2_0_8_2; }
+
+		//features+=EntityFeature*
+		public Assignment getFeaturesAssignment_2_0_9() { return cFeaturesAssignment_2_0_9; }
+
+		//EntityFeature
+		public RuleCall getFeaturesEntityFeatureParserRuleCall_2_0_9_0() { return cFeaturesEntityFeatureParserRuleCall_2_0_9_0; }
+
+		//indexes+=Index*
+		public Assignment getIndexesAssignment_2_0_10() { return cIndexesAssignment_2_0_10; }
+
+		//Index
+		public RuleCall getIndexesIndexParserRuleCall_2_0_10_0() { return cIndexesIndexParserRuleCall_2_0_10_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_0_11() { return cRightCurlyBracketKeyword_2_0_11; }
+
+		//{entity::LEntity.annotationInfo=current} mappedSuperclass?="mapped superclass" ("extends"
+		//superType=[entity::LEntity|TYPE_CROSS_REFERENCE])? name=ValidIDWithKeywords "{" ("persistenceUnit"
+		//persistenceUnit=STRING ";"?)? features+=EntityFeature* "}"
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//{entity::LEntity.annotationInfo=current}
+		public Action getLEntityAnnotationInfoAction_2_1_0() { return cLEntityAnnotationInfoAction_2_1_0; }
+
+		//mappedSuperclass?="mapped superclass"
+		public Assignment getMappedSuperclassAssignment_2_1_1() { return cMappedSuperclassAssignment_2_1_1; }
+
+		//"mapped superclass"
+		public Keyword getMappedSuperclassMappedSuperclassKeyword_2_1_1_0() { return cMappedSuperclassMappedSuperclassKeyword_2_1_1_0; }
+
+		//("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_1_2() { return cGroup_2_1_2; }
+
+		//"extends"
+		public Keyword getExtendsKeyword_2_1_2_0() { return cExtendsKeyword_2_1_2_0; }
+
+		//superType=[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public Assignment getSuperTypeAssignment_2_1_2_1() { return cSuperTypeAssignment_2_1_2_1; }
+
+		//[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public CrossReference getSuperTypeLEntityCrossReference_2_1_2_1_0() { return cSuperTypeLEntityCrossReference_2_1_2_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getSuperTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_1_2_1_0_1() { return cSuperTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_1_2_1_0_1; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_2_1_3() { return cNameAssignment_2_1_3; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_2_1_3_0() { return cNameValidIDWithKeywordsParserRuleCall_2_1_3_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_1_4() { return cLeftCurlyBracketKeyword_2_1_4; }
+
+		//("persistenceUnit" persistenceUnit=STRING ";"?)?
+		public Group getGroup_2_1_5() { return cGroup_2_1_5; }
+
+		//"persistenceUnit"
+		public Keyword getPersistenceUnitKeyword_2_1_5_0() { return cPersistenceUnitKeyword_2_1_5_0; }
+
+		//persistenceUnit=STRING
+		public Assignment getPersistenceUnitAssignment_2_1_5_1() { return cPersistenceUnitAssignment_2_1_5_1; }
+
+		//STRING
+		public RuleCall getPersistenceUnitSTRINGTerminalRuleCall_2_1_5_1_0() { return cPersistenceUnitSTRINGTerminalRuleCall_2_1_5_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_1_5_2() { return cSemicolonKeyword_2_1_5_2; }
+
+		//features+=EntityFeature*
+		public Assignment getFeaturesAssignment_2_1_6() { return cFeaturesAssignment_2_1_6; }
+
+		//EntityFeature
+		public RuleCall getFeaturesEntityFeatureParserRuleCall_2_1_6_0() { return cFeaturesEntityFeatureParserRuleCall_2_1_6_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_1_7() { return cRightCurlyBracketKeyword_2_1_7; }
+
+		//{entity::LBean.annotationInfo=current} "bean" name=TRANSLATABLEID ("extends"
+		//superType=[entity::LBean|TYPE_CROSS_REFERENCE])? "{" features+=BeanFeature* "}"
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//{entity::LBean.annotationInfo=current}
+		public Action getLBeanAnnotationInfoAction_2_2_0() { return cLBeanAnnotationInfoAction_2_2_0; }
+
+		//"bean"
+		public Keyword getBeanKeyword_2_2_1() { return cBeanKeyword_2_2_1; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_2_2() { return cNameAssignment_2_2_2; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_2_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_2_2_0; }
+
+		//("extends" superType=[entity::LBean|TYPE_CROSS_REFERENCE])?
+		public Group getGroup_2_2_3() { return cGroup_2_2_3; }
+
+		//"extends"
+		public Keyword getExtendsKeyword_2_2_3_0() { return cExtendsKeyword_2_2_3_0; }
+
+		//superType=[entity::LBean|TYPE_CROSS_REFERENCE]
+		public Assignment getSuperTypeAssignment_2_2_3_1() { return cSuperTypeAssignment_2_2_3_1; }
+
+		//[entity::LBean|TYPE_CROSS_REFERENCE]
+		public CrossReference getSuperTypeLBeanCrossReference_2_2_3_1_0() { return cSuperTypeLBeanCrossReference_2_2_3_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getSuperTypeLBeanTYPE_CROSS_REFERENCEParserRuleCall_2_2_3_1_0_1() { return cSuperTypeLBeanTYPE_CROSS_REFERENCEParserRuleCall_2_2_3_1_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2_2_4() { return cLeftCurlyBracketKeyword_2_2_4; }
+
+		//features+=BeanFeature*
+		public Assignment getFeaturesAssignment_2_2_5() { return cFeaturesAssignment_2_2_5; }
+
+		//BeanFeature
+		public RuleCall getFeaturesBeanFeatureParserRuleCall_2_2_5_0() { return cFeaturesBeanFeatureParserRuleCall_2_2_5_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_2_2_6() { return cRightCurlyBracketKeyword_2_2_6; }
+	}
+
+	public class IndexElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Index");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cUniqueAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final Keyword cUniqueUniqueKeyword_0_0 = (Keyword)cUniqueAssignment_0.eContents().get(0);
+		private final Keyword cIndexKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cNameIDTerminalRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cFeaturesAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final CrossReference cFeaturesLEntityFeatureCrossReference_4_0 = (CrossReference)cFeaturesAssignment_4.eContents().get(0);
+		private final RuleCall cFeaturesLEntityFeatureIDTerminalRuleCall_4_0_1 = (RuleCall)cFeaturesLEntityFeatureCrossReference_4_0.eContents().get(1);
+		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
+		private final Keyword cCommaSpaceKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Assignment cFeaturesAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
+		private final CrossReference cFeaturesLEntityFeatureCrossReference_5_1_0 = (CrossReference)cFeaturesAssignment_5_1.eContents().get(0);
+		private final RuleCall cFeaturesLEntityFeatureIDTerminalRuleCall_5_1_0_1 = (RuleCall)cFeaturesLEntityFeatureCrossReference_5_1_0.eContents().get(1);
+		private final Keyword cRightCurlyBracketKeyword_6 = (Keyword)cGroup.eContents().get(6);
+		
+		//Index returns entity::LIndex:
+		//	unique?="unique"? "index" name=ID "{" features+=[entity::LEntityFeature] (", " features+=[entity::LEntityFeature])*
+		//	"}";
+		public ParserRule getRule() { return rule; }
+
+		//unique?="unique"? "index" name=ID "{" features+=[entity::LEntityFeature] (", " features+=[entity::LEntityFeature])* "}"
+		public Group getGroup() { return cGroup; }
+
+		//unique?="unique"?
+		public Assignment getUniqueAssignment_0() { return cUniqueAssignment_0; }
+
+		//"unique"
+		public Keyword getUniqueUniqueKeyword_0_0() { return cUniqueUniqueKeyword_0_0; }
+
+		//"index"
+		public Keyword getIndexKeyword_1() { return cIndexKeyword_1; }
+
+		//name=ID
+		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_2_0() { return cNameIDTerminalRuleCall_2_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
+
+		//features+=[entity::LEntityFeature]
+		public Assignment getFeaturesAssignment_4() { return cFeaturesAssignment_4; }
+
+		//[entity::LEntityFeature]
+		public CrossReference getFeaturesLEntityFeatureCrossReference_4_0() { return cFeaturesLEntityFeatureCrossReference_4_0; }
+
+		//ID
+		public RuleCall getFeaturesLEntityFeatureIDTerminalRuleCall_4_0_1() { return cFeaturesLEntityFeatureIDTerminalRuleCall_4_0_1; }
+
+		//(", " features+=[entity::LEntityFeature])*
+		public Group getGroup_5() { return cGroup_5; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_5_0() { return cCommaSpaceKeyword_5_0; }
+
+		//features+=[entity::LEntityFeature]
+		public Assignment getFeaturesAssignment_5_1() { return cFeaturesAssignment_5_1; }
+
+		//[entity::LEntityFeature]
+		public CrossReference getFeaturesLEntityFeatureCrossReference_5_1_0() { return cFeaturesLEntityFeatureCrossReference_5_1_0; }
+
+		//ID
+		public RuleCall getFeaturesLEntityFeatureIDTerminalRuleCall_5_1_0_1() { return cFeaturesLEntityFeatureIDTerminalRuleCall_5_1_0_1; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_6() { return cRightCurlyBracketKeyword_6; }
+	}
+
+	public class EntityPersistenceInfoElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EntityPersistenceInfo");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLEntityPersistenceInfoAction_0 = (Action)cGroup.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_1 = (UnorderedGroup)cGroup.eContents().get(1);
+		private final Group cGroup_1_0 = (Group)cUnorderedGroup_1.eContents().get(0);
+		private final Keyword cSchemaNameKeyword_1_0_0 = (Keyword)cGroup_1_0.eContents().get(0);
+		private final Assignment cSchemaNameAssignment_1_0_1 = (Assignment)cGroup_1_0.eContents().get(1);
+		private final RuleCall cSchemaNameValidIDWithKeywordsParserRuleCall_1_0_1_0 = (RuleCall)cSchemaNameAssignment_1_0_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_1_0_2 = (Keyword)cGroup_1_0.eContents().get(2);
+		private final Group cGroup_1_1 = (Group)cUnorderedGroup_1.eContents().get(1);
+		private final Keyword cTableNameKeyword_1_1_0 = (Keyword)cGroup_1_1.eContents().get(0);
+		private final Assignment cTableNameAssignment_1_1_1 = (Assignment)cGroup_1_1.eContents().get(1);
+		private final RuleCall cTableNameValidIDWithKeywordsParserRuleCall_1_1_1_0 = (RuleCall)cTableNameAssignment_1_1_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_1_1_2 = (Keyword)cGroup_1_1.eContents().get(2);
+		
+		//EntityPersistenceInfo returns entity::LEntityPersistenceInfo:
+		//	{entity::LEntityPersistenceInfo} (("schemaName" schemaName=ValidIDWithKeywords ";"?)? & ("tableName"
+		//	tableName=ValidIDWithKeywords ";"?)?);
+		public ParserRule getRule() { return rule; }
+
+		//{entity::LEntityPersistenceInfo} (("schemaName" schemaName=ValidIDWithKeywords ";"?)? & ("tableName"
+		//tableName=ValidIDWithKeywords ";"?)?)
+		public Group getGroup() { return cGroup; }
+
+		//{entity::LEntityPersistenceInfo}
+		public Action getLEntityPersistenceInfoAction_0() { return cLEntityPersistenceInfoAction_0; }
+
+		//("schemaName" schemaName=ValidIDWithKeywords ";"?)? & ("tableName" tableName=ValidIDWithKeywords ";"?)?
+		public UnorderedGroup getUnorderedGroup_1() { return cUnorderedGroup_1; }
+
+		//("schemaName" schemaName=ValidIDWithKeywords ";"?)?
+		public Group getGroup_1_0() { return cGroup_1_0; }
+
+		//"schemaName"
+		public Keyword getSchemaNameKeyword_1_0_0() { return cSchemaNameKeyword_1_0_0; }
+
+		//schemaName=ValidIDWithKeywords
+		public Assignment getSchemaNameAssignment_1_0_1() { return cSchemaNameAssignment_1_0_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getSchemaNameValidIDWithKeywordsParserRuleCall_1_0_1_0() { return cSchemaNameValidIDWithKeywordsParserRuleCall_1_0_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_1_0_2() { return cSemicolonKeyword_1_0_2; }
+
+		//("tableName" tableName=ValidIDWithKeywords ";"?)?
+		public Group getGroup_1_1() { return cGroup_1_1; }
+
+		//"tableName"
+		public Keyword getTableNameKeyword_1_1_0() { return cTableNameKeyword_1_1_0; }
+
+		//tableName=ValidIDWithKeywords
+		public Assignment getTableNameAssignment_1_1_1() { return cTableNameAssignment_1_1_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getTableNameValidIDWithKeywordsParserRuleCall_1_1_1_0() { return cTableNameValidIDWithKeywordsParserRuleCall_1_1_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_1_1_2() { return cSemicolonKeyword_1_1_2; }
+	}
+
+	public class ColumnPersistenceInfoElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ColumnPersistenceInfo");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLEntityColumnPersistenceInfoAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cColumnNameAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cColumnNameValidIDWithKeywordsParserRuleCall_2_0 = (RuleCall)cColumnNameAssignment_2.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		
+		//ColumnPersistenceInfo returns entity::LEntityColumnPersistenceInfo:
+		//	{entity::LEntityColumnPersistenceInfo} "(" columnName=ValidIDWithKeywords ")";
+		public ParserRule getRule() { return rule; }
+
+		//{entity::LEntityColumnPersistenceInfo} "(" columnName=ValidIDWithKeywords ")"
+		public Group getGroup() { return cGroup; }
+
+		//{entity::LEntityColumnPersistenceInfo}
+		public Action getLEntityColumnPersistenceInfoAction_0() { return cLEntityColumnPersistenceInfoAction_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; }
+
+		//columnName=ValidIDWithKeywords
+		public Assignment getColumnNameAssignment_2() { return cColumnNameAssignment_2; }
+
+		//ValidIDWithKeywords
+		public RuleCall getColumnNameValidIDWithKeywordsParserRuleCall_2_0() { return cColumnNameValidIDWithKeywordsParserRuleCall_2_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_3() { return cRightParenthesisKeyword_3; }
+	}
+
+	public class EntityFeatureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EntityFeature");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLEntityFeatureAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Action cLEntityReferenceAnnotationInfoAction_2_0_0 = (Action)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cRefKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Assignment cCascadingAssignment_2_0_1_1 = (Assignment)cGroup_2_0_1.eContents().get(1);
+		private final Keyword cCascadingCascadeKeyword_2_0_1_1_0 = (Keyword)cCascadingAssignment_2_0_1_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final CrossReference cTypeLEntityCrossReference_2_0_1_2_0 = (CrossReference)cTypeAssignment_2_0_1_2.eContents().get(0);
+		private final RuleCall cTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_2_0_1 = (RuleCall)cTypeLEntityCrossReference_2_0_1_2_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_0_1_3 = (Assignment)cGroup_2_0_1.eContents().get(3);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_0_1_3_0 = (RuleCall)cMultiplicityAssignment_2_0_1_3.eContents().get(0);
+		private final Group cGroup_2_0_1_4 = (Group)cGroup_2_0_1.eContents().get(4);
+		private final Keyword cLeftSquareBracketKeyword_2_0_1_4_0 = (Keyword)cGroup_2_0_1_4.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_0_1_4_1 = (Assignment)cGroup_2_0_1_4.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0 = (RuleCall)cConstraintsAssignment_2_0_1_4_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_0_1_4_2 = (Keyword)cGroup_2_0_1_4.eContents().get(2);
+		private final Assignment cNameAssignment_2_0_1_5 = (Assignment)cGroup_2_0_1.eContents().get(5);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0 = (RuleCall)cNameAssignment_2_0_1_5.eContents().get(0);
+		private final Assignment cPersistenceInfoAssignment_2_0_1_6 = (Assignment)cGroup_2_0_1.eContents().get(6);
+		private final RuleCall cPersistenceInfoColumnPersistenceInfoParserRuleCall_2_0_1_6_0 = (RuleCall)cPersistenceInfoAssignment_2_0_1_6.eContents().get(0);
+		private final Group cGroup_2_0_1_7 = (Group)cGroup_2_0_1.eContents().get(7);
+		private final Keyword cOppositeKeyword_2_0_1_7_0 = (Keyword)cGroup_2_0_1_7.eContents().get(0);
+		private final Assignment cOppositeAssignment_2_0_1_7_1 = (Assignment)cGroup_2_0_1_7.eContents().get(1);
+		private final CrossReference cOppositeLEntityReferenceCrossReference_2_0_1_7_1_0 = (CrossReference)cOppositeAssignment_2_0_1_7_1.eContents().get(0);
+		private final RuleCall cOppositeLEntityReferenceLFQNParserRuleCall_2_0_1_7_1_0_1 = (RuleCall)cOppositeLEntityReferenceCrossReference_2_0_1_7_1_0.eContents().get(1);
+		private final Group cGroup_2_0_1_8 = (Group)cGroup_2_0_1.eContents().get(8);
+		private final Keyword cPropertiesKeyword_2_0_1_8_0 = (Keyword)cGroup_2_0_1_8.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_0_1_8_1 = (Keyword)cGroup_2_0_1_8.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_0_1_8_2 = (Assignment)cGroup_2_0_1_8.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0 = (RuleCall)cPropertiesAssignment_2_0_1_8_2.eContents().get(0);
+		private final Group cGroup_2_0_1_8_3 = (Group)cGroup_2_0_1_8.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_0_1_8_3_0 = (Keyword)cGroup_2_0_1_8_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_0_1_8_3_1 = (Assignment)cGroup_2_0_1_8_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0 = (RuleCall)cPropertiesAssignment_2_0_1_8_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_0_1_8_4 = (Keyword)cGroup_2_0_1_8.eContents().get(4);
+		private final Alternatives cAlternatives_2_0_1_9 = (Alternatives)cGroup_2_0_1.eContents().get(9);
+		private final Assignment cResultFiltersAssignment_2_0_1_9_0 = (Assignment)cAlternatives_2_0_1_9.eContents().get(0);
+		private final RuleCall cResultFiltersResultFiltersParserRuleCall_2_0_1_9_0_0 = (RuleCall)cResultFiltersAssignment_2_0_1_9_0.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_0_1_9_1 = (Keyword)cAlternatives_2_0_1_9.eContents().get(1);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Action cLEntityAttributeAnnotationInfoAction_2_1_0 = (Action)cGroup_2_1.eContents().get(0);
+		private final Alternatives cAlternatives_2_1_1 = (Alternatives)cGroup_2_1.eContents().get(1);
+		private final Group cGroup_2_1_1_0 = (Group)cAlternatives_2_1_1.eContents().get(0);
+		private final Assignment cTransientAssignment_2_1_1_0_0 = (Assignment)cGroup_2_1_1_0.eContents().get(0);
+		private final Keyword cTransientTransientKeyword_2_1_1_0_0_0 = (Keyword)cTransientAssignment_2_1_1_0_0.eContents().get(0);
+		private final Assignment cTypeAssignment_2_1_1_0_1 = (Assignment)cGroup_2_1_1_0.eContents().get(1);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_1_1_0_1_0 = (CrossReference)cTypeAssignment_2_1_1_0_1.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_1_1_0_1_0.eContents().get(1);
+		private final Group cGroup_2_1_1_0_2 = (Group)cGroup_2_1_1_0.eContents().get(2);
+		private final Keyword cLeftSquareBracketKeyword_2_1_1_0_2_0 = (Keyword)cGroup_2_1_1_0_2.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_1_1_0_2_1 = (Assignment)cGroup_2_1_1_0_2.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0 = (RuleCall)cConstraintsAssignment_2_1_1_0_2_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_1_1_0_2_2 = (Keyword)cGroup_2_1_1_0_2.eContents().get(2);
+		private final Assignment cNameAssignment_2_1_1_0_3 = (Assignment)cGroup_2_1_1_0.eContents().get(3);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0 = (RuleCall)cNameAssignment_2_1_1_0_3.eContents().get(0);
+		private final Group cGroup_2_1_1_0_4 = (Group)cGroup_2_1_1_0.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_1_1_0_4_0 = (Keyword)cGroup_2_1_1_0_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_1_0_4_1 = (Keyword)cGroup_2_1_1_0_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_1_0_4_2 = (Assignment)cGroup_2_1_1_0_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0 = (RuleCall)cPropertiesAssignment_2_1_1_0_4_2.eContents().get(0);
+		private final Group cGroup_2_1_1_0_4_3 = (Group)cGroup_2_1_1_0_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_1_0_4_3_0 = (Keyword)cGroup_2_1_1_0_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_1_0_4_3_1 = (Assignment)cGroup_2_1_1_0_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_1_0_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_1_0_4_4 = (Keyword)cGroup_2_1_1_0_4.eContents().get(4);
+		private final Keyword cSemicolonKeyword_2_1_1_0_5 = (Keyword)cGroup_2_1_1_0.eContents().get(5);
+		private final Group cGroup_2_1_1_1 = (Group)cAlternatives_2_1_1.eContents().get(1);
+		private final Assignment cDerivedAssignment_2_1_1_1_0 = (Assignment)cGroup_2_1_1_1.eContents().get(0);
+		private final Keyword cDerivedDerivedKeyword_2_1_1_1_0_0 = (Keyword)cDerivedAssignment_2_1_1_1_0.eContents().get(0);
+		private final Assignment cDomainDescriptionAssignment_2_1_1_1_1 = (Assignment)cGroup_2_1_1_1.eContents().get(1);
+		private final Keyword cDomainDescriptionDomainDescriptionKeyword_2_1_1_1_1_0 = (Keyword)cDomainDescriptionAssignment_2_1_1_1_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_1_1_1_2 = (Assignment)cGroup_2_1_1_1.eContents().get(2);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_1_1_1_2_0 = (CrossReference)cTypeAssignment_2_1_1_1_2.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_2_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_1_1_1_2_0.eContents().get(1);
+		private final Assignment cNameAssignment_2_1_1_1_3 = (Assignment)cGroup_2_1_1_1.eContents().get(3);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_1_1_1_3_0 = (RuleCall)cNameAssignment_2_1_1_1_3.eContents().get(0);
+		private final Group cGroup_2_1_1_1_4 = (Group)cGroup_2_1_1_1.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_1_1_1_4_0 = (Keyword)cGroup_2_1_1_1_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_1_1_4_1 = (Keyword)cGroup_2_1_1_1_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_1_1_4_2 = (Assignment)cGroup_2_1_1_1_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_2_0 = (RuleCall)cPropertiesAssignment_2_1_1_1_4_2.eContents().get(0);
+		private final Group cGroup_2_1_1_1_4_3 = (Group)cGroup_2_1_1_1_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_1_1_4_3_0 = (Keyword)cGroup_2_1_1_1_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_1_1_4_3_1 = (Assignment)cGroup_2_1_1_1_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_1_1_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_1_1_4_4 = (Keyword)cGroup_2_1_1_1_4.eContents().get(4);
+		private final Assignment cDerivedGetterExpressionAssignment_2_1_1_1_5 = (Assignment)cGroup_2_1_1_1.eContents().get(5);
+		private final RuleCall cDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_5_0 = (RuleCall)cDerivedGetterExpressionAssignment_2_1_1_1_5.eContents().get(0);
+		private final Group cGroup_2_1_1_2 = (Group)cAlternatives_2_1_1.eContents().get(2);
+		private final Alternatives cAlternatives_2_1_1_2_0 = (Alternatives)cGroup_2_1_1_2.eContents().get(0);
+		private final Keyword cVarKeyword_2_1_1_2_0_0 = (Keyword)cAlternatives_2_1_1_2_0.eContents().get(0);
+		private final Assignment cIdAssignment_2_1_1_2_0_1 = (Assignment)cAlternatives_2_1_1_2_0.eContents().get(1);
+		private final Keyword cIdIdKeyword_2_1_1_2_0_1_0 = (Keyword)cIdAssignment_2_1_1_2_0_1.eContents().get(0);
+		private final Assignment cUuidAssignment_2_1_1_2_0_2 = (Assignment)cAlternatives_2_1_1_2_0.eContents().get(2);
+		private final Keyword cUuidUuidKeyword_2_1_1_2_0_2_0 = (Keyword)cUuidAssignment_2_1_1_2_0_2.eContents().get(0);
+		private final Assignment cVersionAssignment_2_1_1_2_0_3 = (Assignment)cAlternatives_2_1_1_2_0.eContents().get(3);
+		private final Keyword cVersionVersionKeyword_2_1_1_2_0_3_0 = (Keyword)cVersionAssignment_2_1_1_2_0_3.eContents().get(0);
+		private final Assignment cDomainDescriptionAssignment_2_1_1_2_0_4 = (Assignment)cAlternatives_2_1_1_2_0.eContents().get(4);
+		private final Keyword cDomainDescriptionDomainDescriptionKeyword_2_1_1_2_0_4_0 = (Keyword)cDomainDescriptionAssignment_2_1_1_2_0_4.eContents().get(0);
+		private final Assignment cDomainKeyAssignment_2_1_1_2_0_5 = (Assignment)cAlternatives_2_1_1_2_0.eContents().get(5);
+		private final Keyword cDomainKeyDomainKeyKeyword_2_1_1_2_0_5_0 = (Keyword)cDomainKeyAssignment_2_1_1_2_0_5.eContents().get(0);
+		private final Assignment cTypeAssignment_2_1_1_2_1 = (Assignment)cGroup_2_1_1_2.eContents().get(1);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_1_1_2_1_0 = (CrossReference)cTypeAssignment_2_1_1_2_1.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_2_1_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_1_1_2_1_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_1_1_2_2 = (Assignment)cGroup_2_1_1_2.eContents().get(2);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_1_1_2_2_0 = (RuleCall)cMultiplicityAssignment_2_1_1_2_2.eContents().get(0);
+		private final Group cGroup_2_1_1_2_3 = (Group)cGroup_2_1_1_2.eContents().get(3);
+		private final Keyword cLeftSquareBracketKeyword_2_1_1_2_3_0 = (Keyword)cGroup_2_1_1_2_3.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_1_1_2_3_1 = (Assignment)cGroup_2_1_1_2_3.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_1_1_2_3_1_0 = (RuleCall)cConstraintsAssignment_2_1_1_2_3_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_1_1_2_3_2 = (Keyword)cGroup_2_1_1_2_3.eContents().get(2);
+		private final Assignment cNameAssignment_2_1_1_2_4 = (Assignment)cGroup_2_1_1_2.eContents().get(4);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_1_1_2_4_0 = (RuleCall)cNameAssignment_2_1_1_2_4.eContents().get(0);
+		private final Assignment cPersistenceInfoAssignment_2_1_1_2_5 = (Assignment)cGroup_2_1_1_2.eContents().get(5);
+		private final RuleCall cPersistenceInfoColumnPersistenceInfoParserRuleCall_2_1_1_2_5_0 = (RuleCall)cPersistenceInfoAssignment_2_1_1_2_5.eContents().get(0);
+		private final Group cGroup_2_1_1_2_6 = (Group)cGroup_2_1_1_2.eContents().get(6);
+		private final Keyword cOppositeKeyword_2_1_1_2_6_0 = (Keyword)cGroup_2_1_1_2_6.eContents().get(0);
+		private final Assignment cOppositeAssignment_2_1_1_2_6_1 = (Assignment)cGroup_2_1_1_2_6.eContents().get(1);
+		private final CrossReference cOppositeLBeanReferenceCrossReference_2_1_1_2_6_1_0 = (CrossReference)cOppositeAssignment_2_1_1_2_6_1.eContents().get(0);
+		private final RuleCall cOppositeLBeanReferenceLFQNParserRuleCall_2_1_1_2_6_1_0_1 = (RuleCall)cOppositeLBeanReferenceCrossReference_2_1_1_2_6_1_0.eContents().get(1);
+		private final Group cGroup_2_1_1_2_7 = (Group)cGroup_2_1_1_2.eContents().get(7);
+		private final Keyword cPropertiesKeyword_2_1_1_2_7_0 = (Keyword)cGroup_2_1_1_2_7.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_1_2_7_1 = (Keyword)cGroup_2_1_1_2_7.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_1_2_7_2 = (Assignment)cGroup_2_1_1_2_7.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_2_0 = (RuleCall)cPropertiesAssignment_2_1_1_2_7_2.eContents().get(0);
+		private final Group cGroup_2_1_1_2_7_3 = (Group)cGroup_2_1_1_2_7.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_1_2_7_3_0 = (Keyword)cGroup_2_1_1_2_7_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_1_2_7_3_1 = (Assignment)cGroup_2_1_1_2_7_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_1_2_7_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_1_2_7_4 = (Keyword)cGroup_2_1_1_2_7.eContents().get(4);
+		private final Keyword cSemicolonKeyword_2_1_1_2_8 = (Keyword)cGroup_2_1_1_2.eContents().get(8);
+		private final Group cGroup_2_2 = (Group)cAlternatives_2.eContents().get(2);
+		private final Action cLOperationAnnotationInfoAction_2_2_0 = (Action)cGroup_2_2.eContents().get(0);
+		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
+		private final Keyword cDefKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
+		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0 = (RuleCall)cTypeAssignment_2_2_1_1.eContents().get(0);
+		private final Assignment cNameAssignment_2_2_1_2 = (Assignment)cGroup_2_2_1.eContents().get(2);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0 = (RuleCall)cNameAssignment_2_2_1_2.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_2_1_3 = (Keyword)cGroup_2_2_1.eContents().get(3);
+		private final Group cGroup_2_2_1_4 = (Group)cGroup_2_2_1.eContents().get(4);
+		private final Assignment cParamsAssignment_2_2_1_4_0 = (Assignment)cGroup_2_2_1_4.eContents().get(0);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0 = (RuleCall)cParamsAssignment_2_2_1_4_0.eContents().get(0);
+		private final Group cGroup_2_2_1_4_1 = (Group)cGroup_2_2_1_4.eContents().get(1);
+		private final Keyword cCommaSpaceKeyword_2_2_1_4_1_0 = (Keyword)cGroup_2_2_1_4_1.eContents().get(0);
+		private final Assignment cParamsAssignment_2_2_1_4_1_1 = (Assignment)cGroup_2_2_1_4_1.eContents().get(1);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0 = (RuleCall)cParamsAssignment_2_2_1_4_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_2_1_5 = (Keyword)cGroup_2_2_1.eContents().get(5);
+		private final Assignment cBodyAssignment_2_2_1_6 = (Assignment)cGroup_2_2_1.eContents().get(6);
+		private final RuleCall cBodyXExpressionParserRuleCall_2_2_1_6_0 = (RuleCall)cBodyAssignment_2_2_1_6.eContents().get(0);
+		
+		//EntityFeature returns entity::LEntityFeature:
+		//	{entity::LEntityFeature} annotations+=AnnotationDef* ({entity::LEntityReference.annotationInfo=current} ("ref"
+		//	cascading?="cascade"? type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//	constraints+=AllConstraints* "]")? name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite"
+		//	opposite=[entity::LEntityReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)*
+		//	")")? (resultFilters=ResultFilters | ";"?)) | {entity::LEntityAttribute.annotationInfo=current}
+		//	(transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//	name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+		//	derived?="derived" domainDescription?="domainDescription"? type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID
+		//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//	derivedGetterExpression=XBlockExpression | ("var" | id?="id" | uuid?="uuid" | version?="version" |
+		//	domainDescription?="domainDescription" | domainKey?="domainKey") type=[LScalarType|TYPE_CROSS_REFERENCE]
+		//	multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID
+		//	persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])? ("properties" "("
+		//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) | {entity::LOperation.annotationInfo=current}
+		//	("def" type=JvmTypeReference name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter (", "
+		//	params+=FullJvmFormalParameter)*)? ")" body=XExpression));
+		public ParserRule getRule() { return rule; }
+
+		//{entity::LEntityFeature} annotations+=AnnotationDef* ({entity::LEntityReference.annotationInfo=current} ("ref"
+		//cascading?="cascade"? type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite"
+		//opposite=[entity::LEntityReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)*
+		//")")? (resultFilters=ResultFilters | ";"?)) | {entity::LEntityAttribute.annotationInfo=current} (transient?="transient"
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? | derived?="derived"
+		//domainDescription?="domainDescription"? type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? derivedGetterExpression=XBlockExpression | ("var" |
+		//id?="id" | uuid?="uuid" | version?="version" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) |
+		//{entity::LOperation.annotationInfo=current} ("def" type=JvmTypeReference name=TRANSLATABLEID "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression))
+		public Group getGroup() { return cGroup; }
+
+		//{entity::LEntityFeature}
+		public Action getLEntityFeatureAction_0() { return cLEntityFeatureAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//{entity::LEntityReference.annotationInfo=current} ("ref" cascading?="cascade"?
+		//type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LEntityReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (resultFilters=ResultFilters | ";"?)) |
+		//{entity::LEntityAttribute.annotationInfo=current} (transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"? | derived?="derived" domainDescription?="domainDescription"?
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? derivedGetterExpression=XBlockExpression | ("var" | id?="id" | uuid?="uuid" |
+		//version?="version" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) |
+		//{entity::LOperation.annotationInfo=current} ("def" type=JvmTypeReference name=TRANSLATABLEID "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//{entity::LEntityReference.annotationInfo=current} ("ref" cascading?="cascade"?
+		//type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LEntityReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (resultFilters=ResultFilters | ";"?))
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//{entity::LEntityReference.annotationInfo=current}
+		public Action getLEntityReferenceAnnotationInfoAction_2_0_0() { return cLEntityReferenceAnnotationInfoAction_2_0_0; }
+
+		//"ref" cascading?="cascade"? type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite"
+		//opposite=[entity::LEntityReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)*
+		//")")? (resultFilters=ResultFilters | ";"?)
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"ref"
+		public Keyword getRefKeyword_2_0_1_0() { return cRefKeyword_2_0_1_0; }
+
+		//cascading?="cascade"?
+		public Assignment getCascadingAssignment_2_0_1_1() { return cCascadingAssignment_2_0_1_1; }
+
+		//"cascade"
+		public Keyword getCascadingCascadeKeyword_2_0_1_1_0() { return cCascadingCascadeKeyword_2_0_1_1_0; }
+
+		//type=[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_0_1_2() { return cTypeAssignment_2_0_1_2; }
+
+		//[entity::LEntity|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLEntityCrossReference_2_0_1_2_0() { return cTypeLEntityCrossReference_2_0_1_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_2_0_1() { return cTypeLEntityTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_2_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_0_1_3() { return cMultiplicityAssignment_2_0_1_3; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_0_1_3_0() { return cMultiplicityMultiplicityParserRuleCall_2_0_1_3_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_0_1_4() { return cGroup_2_0_1_4; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_1_4_0() { return cLeftSquareBracketKeyword_2_0_1_4_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_0_1_4_1() { return cConstraintsAssignment_2_0_1_4_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_0_1_4_2() { return cRightSquareBracketKeyword_2_0_1_4_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_0_1_5() { return cNameAssignment_2_0_1_5; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0; }
+
+		//persistenceInfo=ColumnPersistenceInfo?
+		public Assignment getPersistenceInfoAssignment_2_0_1_6() { return cPersistenceInfoAssignment_2_0_1_6; }
+
+		//ColumnPersistenceInfo
+		public RuleCall getPersistenceInfoColumnPersistenceInfoParserRuleCall_2_0_1_6_0() { return cPersistenceInfoColumnPersistenceInfoParserRuleCall_2_0_1_6_0; }
+
+		//("opposite" opposite=[entity::LEntityReference|LFQN])?
+		public Group getGroup_2_0_1_7() { return cGroup_2_0_1_7; }
+
+		//"opposite"
+		public Keyword getOppositeKeyword_2_0_1_7_0() { return cOppositeKeyword_2_0_1_7_0; }
+
+		//opposite=[entity::LEntityReference|LFQN]
+		public Assignment getOppositeAssignment_2_0_1_7_1() { return cOppositeAssignment_2_0_1_7_1; }
+
+		//[entity::LEntityReference|LFQN]
+		public CrossReference getOppositeLEntityReferenceCrossReference_2_0_1_7_1_0() { return cOppositeLEntityReferenceCrossReference_2_0_1_7_1_0; }
+
+		//LFQN
+		public RuleCall getOppositeLEntityReferenceLFQNParserRuleCall_2_0_1_7_1_0_1() { return cOppositeLEntityReferenceLFQNParserRuleCall_2_0_1_7_1_0_1; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_0_1_8() { return cGroup_2_0_1_8; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_0_1_8_0() { return cPropertiesKeyword_2_0_1_8_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_0_1_8_1() { return cLeftParenthesisKeyword_2_0_1_8_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_1_8_2() { return cPropertiesAssignment_2_0_1_8_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_1_8_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_0_1_8_3() { return cGroup_2_0_1_8_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_0_1_8_3_0() { return cCommaSpaceKeyword_2_0_1_8_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_1_8_3_1() { return cPropertiesAssignment_2_0_1_8_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_1_8_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_0_1_8_4() { return cRightParenthesisKeyword_2_0_1_8_4; }
+
+		//resultFilters=ResultFilters | ";"?
+		public Alternatives getAlternatives_2_0_1_9() { return cAlternatives_2_0_1_9; }
+
+		//resultFilters=ResultFilters
+		public Assignment getResultFiltersAssignment_2_0_1_9_0() { return cResultFiltersAssignment_2_0_1_9_0; }
+
+		//ResultFilters
+		public RuleCall getResultFiltersResultFiltersParserRuleCall_2_0_1_9_0_0() { return cResultFiltersResultFiltersParserRuleCall_2_0_1_9_0_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_0_1_9_1() { return cSemicolonKeyword_2_0_1_9_1; }
+
+		//{entity::LEntityAttribute.annotationInfo=current} (transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"? | derived?="derived" domainDescription?="domainDescription"?
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? derivedGetterExpression=XBlockExpression | ("var" | id?="id" | uuid?="uuid" |
+		//version?="version" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?)
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//{entity::LEntityAttribute.annotationInfo=current}
+		public Action getLEntityAttributeAnnotationInfoAction_2_1_0() { return cLEntityAttributeAnnotationInfoAction_2_1_0; }
+
+		//transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+		//derived?="derived" domainDescription?="domainDescription"? type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//derivedGetterExpression=XBlockExpression | ("var" | id?="id" | uuid?="uuid" | version?="version" |
+		//domainDescription?="domainDescription" | domainKey?="domainKey") type=[LScalarType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID
+		//persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])? ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?
+		public Alternatives getAlternatives_2_1_1() { return cAlternatives_2_1_1; }
+
+		//transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?
+		public Group getGroup_2_1_1_0() { return cGroup_2_1_1_0; }
+
+		//transient?="transient"
+		public Assignment getTransientAssignment_2_1_1_0_0() { return cTransientAssignment_2_1_1_0_0; }
+
+		//"transient"
+		public Keyword getTransientTransientKeyword_2_1_1_0_0_0() { return cTransientTransientKeyword_2_1_1_0_0_0; }
+
+		//type=[LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_1_1_0_1() { return cTypeAssignment_2_1_1_0_1; }
+
+		//[LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_1_1_0_1_0() { return cTypeLScalarTypeCrossReference_2_1_1_0_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_1_1_0_2() { return cGroup_2_1_1_0_2; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_1_1_0_2_0() { return cLeftSquareBracketKeyword_2_1_1_0_2_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_1_1_0_2_1() { return cConstraintsAssignment_2_1_1_0_2_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_1_1_0_2_2() { return cRightSquareBracketKeyword_2_1_1_0_2_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_1_1_0_3() { return cNameAssignment_2_1_1_0_3; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0() { return cNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_1_0_4() { return cGroup_2_1_1_0_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_1_0_4_0() { return cPropertiesKeyword_2_1_1_0_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_1_0_4_1() { return cLeftParenthesisKeyword_2_1_1_0_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_0_4_2() { return cPropertiesAssignment_2_1_1_0_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_1_0_4_3() { return cGroup_2_1_1_0_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_1_0_4_3_0() { return cCommaSpaceKeyword_2_1_1_0_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_0_4_3_1() { return cPropertiesAssignment_2_1_1_0_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_1_0_4_4() { return cRightParenthesisKeyword_2_1_1_0_4_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_1_1_0_5() { return cSemicolonKeyword_2_1_1_0_5; }
+
+		//derived?="derived" domainDescription?="domainDescription"? type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//derivedGetterExpression=XBlockExpression
+		public Group getGroup_2_1_1_1() { return cGroup_2_1_1_1; }
+
+		//derived?="derived"
+		public Assignment getDerivedAssignment_2_1_1_1_0() { return cDerivedAssignment_2_1_1_1_0; }
+
+		//"derived"
+		public Keyword getDerivedDerivedKeyword_2_1_1_1_0_0() { return cDerivedDerivedKeyword_2_1_1_1_0_0; }
+
+		//domainDescription?="domainDescription"?
+		public Assignment getDomainDescriptionAssignment_2_1_1_1_1() { return cDomainDescriptionAssignment_2_1_1_1_1; }
+
+		//"domainDescription"
+		public Keyword getDomainDescriptionDomainDescriptionKeyword_2_1_1_1_1_0() { return cDomainDescriptionDomainDescriptionKeyword_2_1_1_1_1_0; }
+
+		//type=[LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_1_1_1_2() { return cTypeAssignment_2_1_1_1_2; }
+
+		//[LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_1_1_1_2_0() { return cTypeLScalarTypeCrossReference_2_1_1_1_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_2_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_2_0_1; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_1_1_1_3() { return cNameAssignment_2_1_1_1_3; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_3_0() { return cNameTRANSLATABLEIDParserRuleCall_2_1_1_1_3_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_1_1_4() { return cGroup_2_1_1_1_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_1_1_4_0() { return cPropertiesKeyword_2_1_1_1_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_1_1_4_1() { return cLeftParenthesisKeyword_2_1_1_1_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_1_4_2() { return cPropertiesAssignment_2_1_1_1_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_1_1_4_3() { return cGroup_2_1_1_1_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_1_1_4_3_0() { return cCommaSpaceKeyword_2_1_1_1_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_1_4_3_1() { return cPropertiesAssignment_2_1_1_1_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_1_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_1_1_4_4() { return cRightParenthesisKeyword_2_1_1_1_4_4; }
+
+		//derivedGetterExpression=XBlockExpression
+		public Assignment getDerivedGetterExpressionAssignment_2_1_1_1_5() { return cDerivedGetterExpressionAssignment_2_1_1_1_5; }
+
+		//XBlockExpression
+		public RuleCall getDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_5_0() { return cDerivedGetterExpressionXBlockExpressionParserRuleCall_2_1_1_1_5_0; }
+
+		//("var" | id?="id" | uuid?="uuid" | version?="version" | domainDescription?="domainDescription" | domainKey?="domainKey")
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])?
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?
+		public Group getGroup_2_1_1_2() { return cGroup_2_1_1_2; }
+
+		//"var" | id?="id" | uuid?="uuid" | version?="version" | domainDescription?="domainDescription" | domainKey?="domainKey"
+		public Alternatives getAlternatives_2_1_1_2_0() { return cAlternatives_2_1_1_2_0; }
+
+		//"var"
+		public Keyword getVarKeyword_2_1_1_2_0_0() { return cVarKeyword_2_1_1_2_0_0; }
+
+		//id?="id"
+		public Assignment getIdAssignment_2_1_1_2_0_1() { return cIdAssignment_2_1_1_2_0_1; }
+
+		//"id"
+		public Keyword getIdIdKeyword_2_1_1_2_0_1_0() { return cIdIdKeyword_2_1_1_2_0_1_0; }
+
+		//uuid?="uuid"
+		public Assignment getUuidAssignment_2_1_1_2_0_2() { return cUuidAssignment_2_1_1_2_0_2; }
+
+		//"uuid"
+		public Keyword getUuidUuidKeyword_2_1_1_2_0_2_0() { return cUuidUuidKeyword_2_1_1_2_0_2_0; }
+
+		//version?="version"
+		public Assignment getVersionAssignment_2_1_1_2_0_3() { return cVersionAssignment_2_1_1_2_0_3; }
+
+		//"version"
+		public Keyword getVersionVersionKeyword_2_1_1_2_0_3_0() { return cVersionVersionKeyword_2_1_1_2_0_3_0; }
+
+		//domainDescription?="domainDescription"
+		public Assignment getDomainDescriptionAssignment_2_1_1_2_0_4() { return cDomainDescriptionAssignment_2_1_1_2_0_4; }
+
+		//"domainDescription"
+		public Keyword getDomainDescriptionDomainDescriptionKeyword_2_1_1_2_0_4_0() { return cDomainDescriptionDomainDescriptionKeyword_2_1_1_2_0_4_0; }
+
+		//domainKey?="domainKey"
+		public Assignment getDomainKeyAssignment_2_1_1_2_0_5() { return cDomainKeyAssignment_2_1_1_2_0_5; }
+
+		//"domainKey"
+		public Keyword getDomainKeyDomainKeyKeyword_2_1_1_2_0_5_0() { return cDomainKeyDomainKeyKeyword_2_1_1_2_0_5_0; }
+
+		//type=[LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_1_1_2_1() { return cTypeAssignment_2_1_1_2_1; }
+
+		//[LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_1_1_2_1_0() { return cTypeLScalarTypeCrossReference_2_1_1_2_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_2_1_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_2_1_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_1_1_2_2() { return cMultiplicityAssignment_2_1_1_2_2; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_1_1_2_2_0() { return cMultiplicityMultiplicityParserRuleCall_2_1_1_2_2_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_1_1_2_3() { return cGroup_2_1_1_2_3; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_1_1_2_3_0() { return cLeftSquareBracketKeyword_2_1_1_2_3_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_1_1_2_3_1() { return cConstraintsAssignment_2_1_1_2_3_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_1_1_2_3_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_1_1_2_3_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_1_1_2_3_2() { return cRightSquareBracketKeyword_2_1_1_2_3_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_1_1_2_4() { return cNameAssignment_2_1_1_2_4; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_1_1_2_4_0() { return cNameTRANSLATABLEIDParserRuleCall_2_1_1_2_4_0; }
+
+		//persistenceInfo=ColumnPersistenceInfo?
+		public Assignment getPersistenceInfoAssignment_2_1_1_2_5() { return cPersistenceInfoAssignment_2_1_1_2_5; }
+
+		//ColumnPersistenceInfo
+		public RuleCall getPersistenceInfoColumnPersistenceInfoParserRuleCall_2_1_1_2_5_0() { return cPersistenceInfoColumnPersistenceInfoParserRuleCall_2_1_1_2_5_0; }
+
+		//("opposite" opposite=[entity::LBeanReference|LFQN])?
+		public Group getGroup_2_1_1_2_6() { return cGroup_2_1_1_2_6; }
+
+		//"opposite"
+		public Keyword getOppositeKeyword_2_1_1_2_6_0() { return cOppositeKeyword_2_1_1_2_6_0; }
+
+		//opposite=[entity::LBeanReference|LFQN]
+		public Assignment getOppositeAssignment_2_1_1_2_6_1() { return cOppositeAssignment_2_1_1_2_6_1; }
+
+		//[entity::LBeanReference|LFQN]
+		public CrossReference getOppositeLBeanReferenceCrossReference_2_1_1_2_6_1_0() { return cOppositeLBeanReferenceCrossReference_2_1_1_2_6_1_0; }
+
+		//LFQN
+		public RuleCall getOppositeLBeanReferenceLFQNParserRuleCall_2_1_1_2_6_1_0_1() { return cOppositeLBeanReferenceLFQNParserRuleCall_2_1_1_2_6_1_0_1; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_1_2_7() { return cGroup_2_1_1_2_7; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_1_2_7_0() { return cPropertiesKeyword_2_1_1_2_7_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_1_2_7_1() { return cLeftParenthesisKeyword_2_1_1_2_7_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_2_7_2() { return cPropertiesAssignment_2_1_1_2_7_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_1_2_7_3() { return cGroup_2_1_1_2_7_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_1_2_7_3_0() { return cCommaSpaceKeyword_2_1_1_2_7_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_2_7_3_1() { return cPropertiesAssignment_2_1_1_2_7_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_2_7_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_1_2_7_4() { return cRightParenthesisKeyword_2_1_1_2_7_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_1_1_2_8() { return cSemicolonKeyword_2_1_1_2_8; }
+
+		//{entity::LOperation.annotationInfo=current} ("def" type=JvmTypeReference name=TRANSLATABLEID "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//{entity::LOperation.annotationInfo=current}
+		public Action getLOperationAnnotationInfoAction_2_2_0() { return cLOperationAnnotationInfoAction_2_2_0; }
+
+		//"def" type=JvmTypeReference name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter (", "
+		//params+=FullJvmFormalParameter)*)? ")" body=XExpression
+		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
+
+		//"def"
+		public Keyword getDefKeyword_2_2_1_0() { return cDefKeyword_2_2_1_0; }
+
+		//type=JvmTypeReference
+		public Assignment getTypeAssignment_2_2_1_1() { return cTypeAssignment_2_2_1_1; }
+
+		//JvmTypeReference
+		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0() { return cTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_2_1_2() { return cNameAssignment_2_2_1_2; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_2_1_3() { return cLeftParenthesisKeyword_2_2_1_3; }
+
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)?
+		public Group getGroup_2_2_1_4() { return cGroup_2_2_1_4; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_2_1_4_0() { return cParamsAssignment_2_2_1_4_0; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0; }
+
+		//(", " params+=FullJvmFormalParameter)*
+		public Group getGroup_2_2_1_4_1() { return cGroup_2_2_1_4_1; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_2_1_4_1_0() { return cCommaSpaceKeyword_2_2_1_4_1_0; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_2_1_4_1_1() { return cParamsAssignment_2_2_1_4_1_1; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_2_1_5() { return cRightParenthesisKeyword_2_2_1_5; }
+
+		//body=XExpression
+		public Assignment getBodyAssignment_2_2_1_6() { return cBodyAssignment_2_2_1_6; }
+
+		//XExpression
+		public RuleCall getBodyXExpressionParserRuleCall_2_2_1_6_0() { return cBodyXExpressionParserRuleCall_2_2_1_6_0; }
+	}
+
+	public class BeanFeatureElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "BeanFeature");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLBeanFeatureAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Alternatives cAlternatives_2 = (Alternatives)cGroup.eContents().get(2);
+		private final Group cGroup_2_0 = (Group)cAlternatives_2.eContents().get(0);
+		private final Action cLBeanReferenceAnnotationInfoAction_2_0_0 = (Action)cGroup_2_0.eContents().get(0);
+		private final Group cGroup_2_0_1 = (Group)cGroup_2_0.eContents().get(1);
+		private final Keyword cRefKeyword_2_0_1_0 = (Keyword)cGroup_2_0_1.eContents().get(0);
+		private final Assignment cCascadingAssignment_2_0_1_1 = (Assignment)cGroup_2_0_1.eContents().get(1);
+		private final Keyword cCascadingCascadeKeyword_2_0_1_1_0 = (Keyword)cCascadingAssignment_2_0_1_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_0_1_2 = (Assignment)cGroup_2_0_1.eContents().get(2);
+		private final CrossReference cTypeLTypeCrossReference_2_0_1_2_0 = (CrossReference)cTypeAssignment_2_0_1_2.eContents().get(0);
+		private final RuleCall cTypeLTypeTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_2_0_1 = (RuleCall)cTypeLTypeCrossReference_2_0_1_2_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_0_1_3 = (Assignment)cGroup_2_0_1.eContents().get(3);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_0_1_3_0 = (RuleCall)cMultiplicityAssignment_2_0_1_3.eContents().get(0);
+		private final Group cGroup_2_0_1_4 = (Group)cGroup_2_0_1.eContents().get(4);
+		private final Keyword cLeftSquareBracketKeyword_2_0_1_4_0 = (Keyword)cGroup_2_0_1_4.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_0_1_4_1 = (Assignment)cGroup_2_0_1_4.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0 = (RuleCall)cConstraintsAssignment_2_0_1_4_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_0_1_4_2 = (Keyword)cGroup_2_0_1_4.eContents().get(2);
+		private final Assignment cNameAssignment_2_0_1_5 = (Assignment)cGroup_2_0_1.eContents().get(5);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0 = (RuleCall)cNameAssignment_2_0_1_5.eContents().get(0);
+		private final Group cGroup_2_0_1_6 = (Group)cGroup_2_0_1.eContents().get(6);
+		private final Keyword cOppositeKeyword_2_0_1_6_0 = (Keyword)cGroup_2_0_1_6.eContents().get(0);
+		private final Assignment cOppositeAssignment_2_0_1_6_1 = (Assignment)cGroup_2_0_1_6.eContents().get(1);
+		private final CrossReference cOppositeLReferenceCrossReference_2_0_1_6_1_0 = (CrossReference)cOppositeAssignment_2_0_1_6_1.eContents().get(0);
+		private final RuleCall cOppositeLReferenceLFQNParserRuleCall_2_0_1_6_1_0_1 = (RuleCall)cOppositeLReferenceCrossReference_2_0_1_6_1_0.eContents().get(1);
+		private final Group cGroup_2_0_1_7 = (Group)cGroup_2_0_1.eContents().get(7);
+		private final Keyword cPropertiesKeyword_2_0_1_7_0 = (Keyword)cGroup_2_0_1_7.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_0_1_7_1 = (Keyword)cGroup_2_0_1_7.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_0_1_7_2 = (Assignment)cGroup_2_0_1_7.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_1_7_2_0 = (RuleCall)cPropertiesAssignment_2_0_1_7_2.eContents().get(0);
+		private final Group cGroup_2_0_1_7_3 = (Group)cGroup_2_0_1_7.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_0_1_7_3_0 = (Keyword)cGroup_2_0_1_7_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_0_1_7_3_1 = (Assignment)cGroup_2_0_1_7_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_0_1_7_3_1_0 = (RuleCall)cPropertiesAssignment_2_0_1_7_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_0_1_7_4 = (Keyword)cGroup_2_0_1_7.eContents().get(4);
+		private final Alternatives cAlternatives_2_0_1_8 = (Alternatives)cGroup_2_0_1.eContents().get(8);
+		private final Assignment cResultFiltersAssignment_2_0_1_8_0 = (Assignment)cAlternatives_2_0_1_8.eContents().get(0);
+		private final RuleCall cResultFiltersResultFiltersParserRuleCall_2_0_1_8_0_0 = (RuleCall)cResultFiltersAssignment_2_0_1_8_0.eContents().get(0);
+		private final Keyword cSemicolonKeyword_2_0_1_8_1 = (Keyword)cAlternatives_2_0_1_8.eContents().get(1);
+		private final Group cGroup_2_1 = (Group)cAlternatives_2.eContents().get(1);
+		private final Action cLBeanAttributeAnnotationInfoAction_2_1_0 = (Action)cGroup_2_1.eContents().get(0);
+		private final Alternatives cAlternatives_2_1_1 = (Alternatives)cGroup_2_1.eContents().get(1);
+		private final Group cGroup_2_1_1_0 = (Group)cAlternatives_2_1_1.eContents().get(0);
+		private final Assignment cTransientAssignment_2_1_1_0_0 = (Assignment)cGroup_2_1_1_0.eContents().get(0);
+		private final Keyword cTransientTransientKeyword_2_1_1_0_0_0 = (Keyword)cTransientAssignment_2_1_1_0_0.eContents().get(0);
+		private final Assignment cTypeAssignment_2_1_1_0_1 = (Assignment)cGroup_2_1_1_0.eContents().get(1);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_1_1_0_1_0 = (CrossReference)cTypeAssignment_2_1_1_0_1.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_1_1_0_1_0.eContents().get(1);
+		private final Group cGroup_2_1_1_0_2 = (Group)cGroup_2_1_1_0.eContents().get(2);
+		private final Keyword cLeftSquareBracketKeyword_2_1_1_0_2_0 = (Keyword)cGroup_2_1_1_0_2.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_1_1_0_2_1 = (Assignment)cGroup_2_1_1_0_2.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0 = (RuleCall)cConstraintsAssignment_2_1_1_0_2_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_1_1_0_2_2 = (Keyword)cGroup_2_1_1_0_2.eContents().get(2);
+		private final Assignment cNameAssignment_2_1_1_0_3 = (Assignment)cGroup_2_1_1_0.eContents().get(3);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0 = (RuleCall)cNameAssignment_2_1_1_0_3.eContents().get(0);
+		private final Group cGroup_2_1_1_0_4 = (Group)cGroup_2_1_1_0.eContents().get(4);
+		private final Keyword cPropertiesKeyword_2_1_1_0_4_0 = (Keyword)cGroup_2_1_1_0_4.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_1_0_4_1 = (Keyword)cGroup_2_1_1_0_4.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_1_0_4_2 = (Assignment)cGroup_2_1_1_0_4.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0 = (RuleCall)cPropertiesAssignment_2_1_1_0_4_2.eContents().get(0);
+		private final Group cGroup_2_1_1_0_4_3 = (Group)cGroup_2_1_1_0_4.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_1_0_4_3_0 = (Keyword)cGroup_2_1_1_0_4_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_1_0_4_3_1 = (Assignment)cGroup_2_1_1_0_4_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_1_0_4_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_1_0_4_4 = (Keyword)cGroup_2_1_1_0_4.eContents().get(4);
+		private final Group cGroup_2_1_1_1 = (Group)cAlternatives_2_1_1.eContents().get(1);
+		private final Alternatives cAlternatives_2_1_1_1_0 = (Alternatives)cGroup_2_1_1_1.eContents().get(0);
+		private final Keyword cVarKeyword_2_1_1_1_0_0 = (Keyword)cAlternatives_2_1_1_1_0.eContents().get(0);
+		private final Assignment cIdAssignment_2_1_1_1_0_1 = (Assignment)cAlternatives_2_1_1_1_0.eContents().get(1);
+		private final Keyword cIdIdKeyword_2_1_1_1_0_1_0 = (Keyword)cIdAssignment_2_1_1_1_0_1.eContents().get(0);
+		private final Assignment cVersionAssignment_2_1_1_1_0_2 = (Assignment)cAlternatives_2_1_1_1_0.eContents().get(2);
+		private final Keyword cVersionVersionKeyword_2_1_1_1_0_2_0 = (Keyword)cVersionAssignment_2_1_1_1_0_2.eContents().get(0);
+		private final Assignment cTypeAssignment_2_1_1_1_1 = (Assignment)cGroup_2_1_1_1.eContents().get(1);
+		private final CrossReference cTypeLScalarTypeCrossReference_2_1_1_1_1_0 = (CrossReference)cTypeAssignment_2_1_1_1_1.eContents().get(0);
+		private final RuleCall cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_1_0_1 = (RuleCall)cTypeLScalarTypeCrossReference_2_1_1_1_1_0.eContents().get(1);
+		private final Assignment cMultiplicityAssignment_2_1_1_1_2 = (Assignment)cGroup_2_1_1_1.eContents().get(2);
+		private final RuleCall cMultiplicityMultiplicityParserRuleCall_2_1_1_1_2_0 = (RuleCall)cMultiplicityAssignment_2_1_1_1_2.eContents().get(0);
+		private final Group cGroup_2_1_1_1_3 = (Group)cGroup_2_1_1_1.eContents().get(3);
+		private final Keyword cLeftSquareBracketKeyword_2_1_1_1_3_0 = (Keyword)cGroup_2_1_1_1_3.eContents().get(0);
+		private final Assignment cConstraintsAssignment_2_1_1_1_3_1 = (Assignment)cGroup_2_1_1_1_3.eContents().get(1);
+		private final RuleCall cConstraintsAllConstraintsParserRuleCall_2_1_1_1_3_1_0 = (RuleCall)cConstraintsAssignment_2_1_1_1_3_1.eContents().get(0);
+		private final Keyword cRightSquareBracketKeyword_2_1_1_1_3_2 = (Keyword)cGroup_2_1_1_1_3.eContents().get(2);
+		private final Assignment cNameAssignment_2_1_1_1_4 = (Assignment)cGroup_2_1_1_1.eContents().get(4);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_0 = (RuleCall)cNameAssignment_2_1_1_1_4.eContents().get(0);
+		private final Group cGroup_2_1_1_1_5 = (Group)cGroup_2_1_1_1.eContents().get(5);
+		private final Keyword cPropertiesKeyword_2_1_1_1_5_0 = (Keyword)cGroup_2_1_1_1_5.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_1_1_1_5_1 = (Keyword)cGroup_2_1_1_1_5.eContents().get(1);
+		private final Assignment cPropertiesAssignment_2_1_1_1_5_2 = (Assignment)cGroup_2_1_1_1_5.eContents().get(2);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0 = (RuleCall)cPropertiesAssignment_2_1_1_1_5_2.eContents().get(0);
+		private final Group cGroup_2_1_1_1_5_3 = (Group)cGroup_2_1_1_1_5.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_2_1_1_1_5_3_0 = (Keyword)cGroup_2_1_1_1_5_3.eContents().get(0);
+		private final Assignment cPropertiesAssignment_2_1_1_1_5_3_1 = (Assignment)cGroup_2_1_1_1_5_3.eContents().get(1);
+		private final RuleCall cPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0 = (RuleCall)cPropertiesAssignment_2_1_1_1_5_3_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_1_1_1_5_4 = (Keyword)cGroup_2_1_1_1_5.eContents().get(4);
+		private final Keyword cSemicolonKeyword_2_1_1_1_6 = (Keyword)cGroup_2_1_1_1.eContents().get(6);
+		private final Group cGroup_2_2 = (Group)cAlternatives_2.eContents().get(2);
+		private final Action cLOperationAnnotationInfoAction_2_2_0 = (Action)cGroup_2_2.eContents().get(0);
+		private final Group cGroup_2_2_1 = (Group)cGroup_2_2.eContents().get(1);
+		private final Keyword cDefKeyword_2_2_1_0 = (Keyword)cGroup_2_2_1.eContents().get(0);
+		private final Assignment cTypeAssignment_2_2_1_1 = (Assignment)cGroup_2_2_1.eContents().get(1);
+		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0 = (RuleCall)cTypeAssignment_2_2_1_1.eContents().get(0);
+		private final Assignment cNameAssignment_2_2_1_2 = (Assignment)cGroup_2_2_1.eContents().get(2);
+		private final RuleCall cNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0 = (RuleCall)cNameAssignment_2_2_1_2.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_2_1_3 = (Keyword)cGroup_2_2_1.eContents().get(3);
+		private final Group cGroup_2_2_1_4 = (Group)cGroup_2_2_1.eContents().get(4);
+		private final Assignment cParamsAssignment_2_2_1_4_0 = (Assignment)cGroup_2_2_1_4.eContents().get(0);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0 = (RuleCall)cParamsAssignment_2_2_1_4_0.eContents().get(0);
+		private final Group cGroup_2_2_1_4_1 = (Group)cGroup_2_2_1_4.eContents().get(1);
+		private final Keyword cCommaKeyword_2_2_1_4_1_0 = (Keyword)cGroup_2_2_1_4_1.eContents().get(0);
+		private final Assignment cParamsAssignment_2_2_1_4_1_1 = (Assignment)cGroup_2_2_1_4_1.eContents().get(1);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0 = (RuleCall)cParamsAssignment_2_2_1_4_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_2_1_5 = (Keyword)cGroup_2_2_1.eContents().get(5);
+		private final Assignment cBodyAssignment_2_2_1_6 = (Assignment)cGroup_2_2_1.eContents().get(6);
+		private final RuleCall cBodyXExpressionParserRuleCall_2_2_1_6_0 = (RuleCall)cBodyAssignment_2_2_1_6.eContents().get(0);
+		
+		//BeanFeature returns entity::LBeanFeature:
+		//	{entity::LBeanFeature} annotations+=AnnotationDef* ({entity::LBeanReference.annotationInfo=current} ("ref"
+		//	cascading?="cascade"? type=[LType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints*
+		//	"]")? name=TRANSLATABLEID ("opposite" opposite=[LReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", "
+		//	properties+=KeyAndValue)* ")")? (resultFilters=ResultFilters | ";"?)) |
+		//	{entity::LBeanAttribute.annotationInfo=current} (transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("["
+		//	constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//	properties+=KeyAndValue)* ")")? | ("var" | id?="id" | version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE]
+		//	multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "("
+		//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) | {entity::LOperation.annotationInfo=current}
+		//	("def" type=JvmTypeReference name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter (","
+		//	params+=FullJvmFormalParameter)*)? ")" body=XExpression));
+		public ParserRule getRule() { return rule; }
+
+		//{entity::LBeanFeature} annotations+=AnnotationDef* ({entity::LBeanReference.annotationInfo=current} ("ref"
+		//cascading?="cascade"? type=[LType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints*
+		//"]")? name=TRANSLATABLEID ("opposite" opposite=[LReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? (resultFilters=ResultFilters | ";"?)) | {entity::LBeanAttribute.annotationInfo=current}
+		//(transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? | ("var" | id?="id"
+		//| version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"?) | {entity::LOperation.annotationInfo=current} ("def" type=JvmTypeReference
+		//name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter ("," params+=FullJvmFormalParameter)*)? ")" body=XExpression))
+		public Group getGroup() { return cGroup; }
+
+		//{entity::LBeanFeature}
+		public Action getLBeanFeatureAction_0() { return cLBeanFeatureAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//{entity::LBeanReference.annotationInfo=current} ("ref" cascading?="cascade"? type=[LType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("opposite"
+		//opposite=[LReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//(resultFilters=ResultFilters | ";"?)) | {entity::LBeanAttribute.annotationInfo=current} (transient?="transient"
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? | ("var" | id?="id" | version?="version")
+		//type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) |
+		//{entity::LOperation.annotationInfo=current} ("def" type=JvmTypeReference name=TRANSLATABLEID "("
+		//(params+=FullJvmFormalParameter ("," params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Alternatives getAlternatives_2() { return cAlternatives_2; }
+
+		//{entity::LBeanReference.annotationInfo=current} ("ref" cascading?="cascade"? type=[LType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("opposite"
+		//opposite=[LReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		//(resultFilters=ResultFilters | ";"?))
+		public Group getGroup_2_0() { return cGroup_2_0; }
+
+		//{entity::LBeanReference.annotationInfo=current}
+		public Action getLBeanReferenceAnnotationInfoAction_2_0_0() { return cLBeanReferenceAnnotationInfoAction_2_0_0; }
+
+		//"ref" cascading?="cascade"? type=[LType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("opposite" opposite=[LReference|LFQN])? ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? (resultFilters=ResultFilters | ";"?)
+		public Group getGroup_2_0_1() { return cGroup_2_0_1; }
+
+		//"ref"
+		public Keyword getRefKeyword_2_0_1_0() { return cRefKeyword_2_0_1_0; }
+
+		//cascading?="cascade"?
+		public Assignment getCascadingAssignment_2_0_1_1() { return cCascadingAssignment_2_0_1_1; }
+
+		//"cascade"
+		public Keyword getCascadingCascadeKeyword_2_0_1_1_0() { return cCascadingCascadeKeyword_2_0_1_1_0; }
+
+		//type=[LType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_0_1_2() { return cTypeAssignment_2_0_1_2; }
+
+		//[LType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLTypeCrossReference_2_0_1_2_0() { return cTypeLTypeCrossReference_2_0_1_2_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLTypeTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_2_0_1() { return cTypeLTypeTYPE_CROSS_REFERENCEParserRuleCall_2_0_1_2_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_0_1_3() { return cMultiplicityAssignment_2_0_1_3; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_0_1_3_0() { return cMultiplicityMultiplicityParserRuleCall_2_0_1_3_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_0_1_4() { return cGroup_2_0_1_4; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_0_1_4_0() { return cLeftSquareBracketKeyword_2_0_1_4_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_0_1_4_1() { return cConstraintsAssignment_2_0_1_4_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_0_1_4_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_0_1_4_2() { return cRightSquareBracketKeyword_2_0_1_4_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_0_1_5() { return cNameAssignment_2_0_1_5; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0_1_5_0; }
+
+		//("opposite" opposite=[LReference|LFQN])?
+		public Group getGroup_2_0_1_6() { return cGroup_2_0_1_6; }
+
+		//"opposite"
+		public Keyword getOppositeKeyword_2_0_1_6_0() { return cOppositeKeyword_2_0_1_6_0; }
+
+		//opposite=[LReference|LFQN]
+		public Assignment getOppositeAssignment_2_0_1_6_1() { return cOppositeAssignment_2_0_1_6_1; }
+
+		//[LReference|LFQN]
+		public CrossReference getOppositeLReferenceCrossReference_2_0_1_6_1_0() { return cOppositeLReferenceCrossReference_2_0_1_6_1_0; }
+
+		//LFQN
+		public RuleCall getOppositeLReferenceLFQNParserRuleCall_2_0_1_6_1_0_1() { return cOppositeLReferenceLFQNParserRuleCall_2_0_1_6_1_0_1; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_0_1_7() { return cGroup_2_0_1_7; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_0_1_7_0() { return cPropertiesKeyword_2_0_1_7_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_0_1_7_1() { return cLeftParenthesisKeyword_2_0_1_7_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_1_7_2() { return cPropertiesAssignment_2_0_1_7_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_1_7_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_1_7_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_0_1_7_3() { return cGroup_2_0_1_7_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_0_1_7_3_0() { return cCommaSpaceKeyword_2_0_1_7_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_0_1_7_3_1() { return cPropertiesAssignment_2_0_1_7_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_0_1_7_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_0_1_7_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_0_1_7_4() { return cRightParenthesisKeyword_2_0_1_7_4; }
+
+		//resultFilters=ResultFilters | ";"?
+		public Alternatives getAlternatives_2_0_1_8() { return cAlternatives_2_0_1_8; }
+
+		//resultFilters=ResultFilters
+		public Assignment getResultFiltersAssignment_2_0_1_8_0() { return cResultFiltersAssignment_2_0_1_8_0; }
+
+		//ResultFilters
+		public RuleCall getResultFiltersResultFiltersParserRuleCall_2_0_1_8_0_0() { return cResultFiltersResultFiltersParserRuleCall_2_0_1_8_0_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_0_1_8_1() { return cSemicolonKeyword_2_0_1_8_1; }
+
+		//{entity::LBeanAttribute.annotationInfo=current} (transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? | ("var" | id?="id" | version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE]
+		//multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "("
+		//properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?)
+		public Group getGroup_2_1() { return cGroup_2_1; }
+
+		//{entity::LBeanAttribute.annotationInfo=current}
+		public Action getLBeanAttributeAnnotationInfoAction_2_1_0() { return cLBeanAttributeAnnotationInfoAction_2_1_0; }
+
+		//transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? | ("var" | id?="id"
+		//| version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"?
+		public Alternatives getAlternatives_2_1_1() { return cAlternatives_2_1_1; }
+
+		//transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+		//name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_1_0() { return cGroup_2_1_1_0; }
+
+		//transient?="transient"
+		public Assignment getTransientAssignment_2_1_1_0_0() { return cTransientAssignment_2_1_1_0_0; }
+
+		//"transient"
+		public Keyword getTransientTransientKeyword_2_1_1_0_0_0() { return cTransientTransientKeyword_2_1_1_0_0_0; }
+
+		//type=[LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_1_1_0_1() { return cTypeAssignment_2_1_1_0_1; }
+
+		//[LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_1_1_0_1_0() { return cTypeLScalarTypeCrossReference_2_1_1_0_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_0_1_0_1; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_1_1_0_2() { return cGroup_2_1_1_0_2; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_1_1_0_2_0() { return cLeftSquareBracketKeyword_2_1_1_0_2_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_1_1_0_2_1() { return cConstraintsAssignment_2_1_1_0_2_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_1_1_0_2_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_1_1_0_2_2() { return cRightSquareBracketKeyword_2_1_1_0_2_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_1_1_0_3() { return cNameAssignment_2_1_1_0_3; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0() { return cNameTRANSLATABLEIDParserRuleCall_2_1_1_0_3_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_1_0_4() { return cGroup_2_1_1_0_4; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_1_0_4_0() { return cPropertiesKeyword_2_1_1_0_4_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_1_0_4_1() { return cLeftParenthesisKeyword_2_1_1_0_4_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_0_4_2() { return cPropertiesAssignment_2_1_1_0_4_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_1_0_4_3() { return cGroup_2_1_1_0_4_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_1_0_4_3_0() { return cCommaSpaceKeyword_2_1_1_0_4_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_0_4_3_1() { return cPropertiesAssignment_2_1_1_0_4_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_0_4_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_1_0_4_4() { return cRightParenthesisKeyword_2_1_1_0_4_4; }
+
+		//("var" | id?="id" | version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+		//constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+		//properties+=KeyAndValue)* ")")? ";"?
+		public Group getGroup_2_1_1_1() { return cGroup_2_1_1_1; }
+
+		//"var" | id?="id" | version?="version"
+		public Alternatives getAlternatives_2_1_1_1_0() { return cAlternatives_2_1_1_1_0; }
+
+		//"var"
+		public Keyword getVarKeyword_2_1_1_1_0_0() { return cVarKeyword_2_1_1_1_0_0; }
+
+		//id?="id"
+		public Assignment getIdAssignment_2_1_1_1_0_1() { return cIdAssignment_2_1_1_1_0_1; }
+
+		//"id"
+		public Keyword getIdIdKeyword_2_1_1_1_0_1_0() { return cIdIdKeyword_2_1_1_1_0_1_0; }
+
+		//version?="version"
+		public Assignment getVersionAssignment_2_1_1_1_0_2() { return cVersionAssignment_2_1_1_1_0_2; }
+
+		//"version"
+		public Keyword getVersionVersionKeyword_2_1_1_1_0_2_0() { return cVersionVersionKeyword_2_1_1_1_0_2_0; }
+
+		//type=[LScalarType|TYPE_CROSS_REFERENCE]
+		public Assignment getTypeAssignment_2_1_1_1_1() { return cTypeAssignment_2_1_1_1_1; }
+
+		//[LScalarType|TYPE_CROSS_REFERENCE]
+		public CrossReference getTypeLScalarTypeCrossReference_2_1_1_1_1_0() { return cTypeLScalarTypeCrossReference_2_1_1_1_1_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_1_0_1() { return cTypeLScalarTypeTYPE_CROSS_REFERENCEParserRuleCall_2_1_1_1_1_0_1; }
+
+		//multiplicity=Multiplicity?
+		public Assignment getMultiplicityAssignment_2_1_1_1_2() { return cMultiplicityAssignment_2_1_1_1_2; }
+
+		//Multiplicity
+		public RuleCall getMultiplicityMultiplicityParserRuleCall_2_1_1_1_2_0() { return cMultiplicityMultiplicityParserRuleCall_2_1_1_1_2_0; }
+
+		//("[" constraints+=AllConstraints* "]")?
+		public Group getGroup_2_1_1_1_3() { return cGroup_2_1_1_1_3; }
+
+		//"["
+		public Keyword getLeftSquareBracketKeyword_2_1_1_1_3_0() { return cLeftSquareBracketKeyword_2_1_1_1_3_0; }
+
+		//constraints+=AllConstraints*
+		public Assignment getConstraintsAssignment_2_1_1_1_3_1() { return cConstraintsAssignment_2_1_1_1_3_1; }
+
+		//AllConstraints
+		public RuleCall getConstraintsAllConstraintsParserRuleCall_2_1_1_1_3_1_0() { return cConstraintsAllConstraintsParserRuleCall_2_1_1_1_3_1_0; }
+
+		//"]"
+		public Keyword getRightSquareBracketKeyword_2_1_1_1_3_2() { return cRightSquareBracketKeyword_2_1_1_1_3_2; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_1_1_1_4() { return cNameAssignment_2_1_1_1_4; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_0() { return cNameTRANSLATABLEIDParserRuleCall_2_1_1_1_4_0; }
+
+		//("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+		public Group getGroup_2_1_1_1_5() { return cGroup_2_1_1_1_5; }
+
+		//"properties"
+		public Keyword getPropertiesKeyword_2_1_1_1_5_0() { return cPropertiesKeyword_2_1_1_1_5_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_1_1_1_5_1() { return cLeftParenthesisKeyword_2_1_1_1_5_1; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_1_5_2() { return cPropertiesAssignment_2_1_1_1_5_2; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_2_0; }
+
+		//(", " properties+=KeyAndValue)*
+		public Group getGroup_2_1_1_1_5_3() { return cGroup_2_1_1_1_5_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_1_1_1_5_3_0() { return cCommaSpaceKeyword_2_1_1_1_5_3_0; }
+
+		//properties+=KeyAndValue
+		public Assignment getPropertiesAssignment_2_1_1_1_5_3_1() { return cPropertiesAssignment_2_1_1_1_5_3_1; }
+
+		//KeyAndValue
+		public RuleCall getPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0() { return cPropertiesKeyAndValueParserRuleCall_2_1_1_1_5_3_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_1_1_1_5_4() { return cRightParenthesisKeyword_2_1_1_1_5_4; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_2_1_1_1_6() { return cSemicolonKeyword_2_1_1_1_6; }
+
+		//{entity::LOperation.annotationInfo=current} ("def" type=JvmTypeReference name=TRANSLATABLEID "("
+		//(params+=FullJvmFormalParameter ("," params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Group getGroup_2_2() { return cGroup_2_2; }
+
+		//{entity::LOperation.annotationInfo=current}
+		public Action getLOperationAnnotationInfoAction_2_2_0() { return cLOperationAnnotationInfoAction_2_2_0; }
+
+		//"def" type=JvmTypeReference name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter (","
+		//params+=FullJvmFormalParameter)*)? ")" body=XExpression
+		public Group getGroup_2_2_1() { return cGroup_2_2_1; }
+
+		//"def"
+		public Keyword getDefKeyword_2_2_1_0() { return cDefKeyword_2_2_1_0; }
+
+		//type=JvmTypeReference
+		public Assignment getTypeAssignment_2_2_1_1() { return cTypeAssignment_2_2_1_1; }
+
+		//JvmTypeReference
+		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0() { return cTypeJvmTypeReferenceParserRuleCall_2_2_1_1_0; }
+
+		//name=TRANSLATABLEID
+		public Assignment getNameAssignment_2_2_1_2() { return cNameAssignment_2_2_1_2; }
+
+		//TRANSLATABLEID
+		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_2_1_2_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_2_1_3() { return cLeftParenthesisKeyword_2_2_1_3; }
+
+		//(params+=FullJvmFormalParameter ("," params+=FullJvmFormalParameter)*)?
+		public Group getGroup_2_2_1_4() { return cGroup_2_2_1_4; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_2_1_4_0() { return cParamsAssignment_2_2_1_4_0; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_0_0; }
+
+		//("," params+=FullJvmFormalParameter)*
+		public Group getGroup_2_2_1_4_1() { return cGroup_2_2_1_4_1; }
+
+		//","
+		public Keyword getCommaKeyword_2_2_1_4_1_0() { return cCommaKeyword_2_2_1_4_1_0; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_2_1_4_1_1() { return cParamsAssignment_2_2_1_4_1_1; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_2_1_4_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_2_1_5() { return cRightParenthesisKeyword_2_2_1_5; }
+
+		//body=XExpression
+		public Assignment getBodyAssignment_2_2_1_6() { return cBodyAssignment_2_2_1_6; }
+
+		//XExpression
+		public RuleCall getBodyXExpressionParserRuleCall_2_2_1_6_0() { return cBodyXExpressionParserRuleCall_2_2_1_6_0; }
+	}
+
+	public class EntityInheritanceStrategyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "EntityInheritanceStrategy");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final RuleCall cTablePerClassStrategyParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
+		private final RuleCall cTablePerSubclassStrategyParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
+		
+		//EntityInheritanceStrategy returns entity::LEntityInheritanceStrategy:
+		//	TablePerClassStrategy | TablePerSubclassStrategy;
+		public ParserRule getRule() { return rule; }
+
+		//TablePerClassStrategy | TablePerSubclassStrategy
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//TablePerClassStrategy
+		public RuleCall getTablePerClassStrategyParserRuleCall_0() { return cTablePerClassStrategyParserRuleCall_0; }
+
+		//TablePerSubclassStrategy
+		public RuleCall getTablePerSubclassStrategyParserRuleCall_1() { return cTablePerSubclassStrategyParserRuleCall_1; }
+	}
+
+	public class TablePerClassStrategyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TablePerClassStrategy");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLTablePerClassStrategyAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cInheritancePerClassKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final UnorderedGroup cUnorderedGroup_3 = (UnorderedGroup)cGroup.eContents().get(3);
+		private final Group cGroup_3_0 = (Group)cUnorderedGroup_3.eContents().get(0);
+		private final Keyword cDiscriminatorColumnKeyword_3_0_0 = (Keyword)cGroup_3_0.eContents().get(0);
+		private final Assignment cDiscriminatorColumnAssignment_3_0_1 = (Assignment)cGroup_3_0.eContents().get(1);
+		private final RuleCall cDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0 = (RuleCall)cDiscriminatorColumnAssignment_3_0_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_3_0_2 = (Keyword)cGroup_3_0.eContents().get(2);
+		private final Group cGroup_3_1 = (Group)cUnorderedGroup_3.eContents().get(1);
+		private final Keyword cDiscriminatorTypeKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cDiscriminatorTypeAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0 = (RuleCall)cDiscriminatorTypeAssignment_3_1_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_3_1_2 = (Keyword)cGroup_3_1.eContents().get(2);
+		private final Group cGroup_3_2 = (Group)cUnorderedGroup_3.eContents().get(2);
+		private final Keyword cDiscriminatorValueKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
+		private final Assignment cDiscriminatorValueAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
+		private final RuleCall cDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0 = (RuleCall)cDiscriminatorValueAssignment_3_2_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_3_2_2 = (Keyword)cGroup_3_2.eContents().get(2);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//TablePerClassStrategy returns entity::LTablePerClassStrategy:
+		//	{entity::LTablePerClassStrategy} "inheritance per class" "{" (("discriminatorColumn"
+		//	discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType" discriminatorType=DiscriminatorType ";"?)? &
+		//	("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?) "}";
+		public ParserRule getRule() { return rule; }
+
+		//{entity::LTablePerClassStrategy} "inheritance per class" "{" (("discriminatorColumn"
+		//discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType" discriminatorType=DiscriminatorType ";"?)? &
+		//("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?) "}"
+		public Group getGroup() { return cGroup; }
+
+		//{entity::LTablePerClassStrategy}
+		public Action getLTablePerClassStrategyAction_0() { return cLTablePerClassStrategyAction_0; }
+
+		//"inheritance per class"
+		public Keyword getInheritancePerClassKeyword_1() { return cInheritancePerClassKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("discriminatorColumn" discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType"
+		//discriminatorType=DiscriminatorType ";"?)? & ("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?
+		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
+
+		//("discriminatorColumn" discriminatorColumn=ValidIDWithKeywords ";"?)?
+		public Group getGroup_3_0() { return cGroup_3_0; }
+
+		//"discriminatorColumn"
+		public Keyword getDiscriminatorColumnKeyword_3_0_0() { return cDiscriminatorColumnKeyword_3_0_0; }
+
+		//discriminatorColumn=ValidIDWithKeywords
+		public Assignment getDiscriminatorColumnAssignment_3_0_1() { return cDiscriminatorColumnAssignment_3_0_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0() { return cDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3_0_2() { return cSemicolonKeyword_3_0_2; }
+
+		//("discriminatorType" discriminatorType=DiscriminatorType ";"?)?
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//"discriminatorType"
+		public Keyword getDiscriminatorTypeKeyword_3_1_0() { return cDiscriminatorTypeKeyword_3_1_0; }
+
+		//discriminatorType=DiscriminatorType
+		public Assignment getDiscriminatorTypeAssignment_3_1_1() { return cDiscriminatorTypeAssignment_3_1_1; }
+
+		//DiscriminatorType
+		public RuleCall getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0() { return cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3_1_2() { return cSemicolonKeyword_3_1_2; }
+
+		//("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?
+		public Group getGroup_3_2() { return cGroup_3_2; }
+
+		//"discriminatorValue"
+		public Keyword getDiscriminatorValueKeyword_3_2_0() { return cDiscriminatorValueKeyword_3_2_0; }
+
+		//discriminatorValue=ValidIDWithKeywords
+		public Assignment getDiscriminatorValueAssignment_3_2_1() { return cDiscriminatorValueAssignment_3_2_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0() { return cDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3_2_2() { return cSemicolonKeyword_3_2_2; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class TablePerSubclassStrategyElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TablePerSubclassStrategy");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLTablePerSubclassStrategyAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cInheritancePerSubclassKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2);
+		private final UnorderedGroup cUnorderedGroup_3 = (UnorderedGroup)cGroup.eContents().get(3);
+		private final Group cGroup_3_0 = (Group)cUnorderedGroup_3.eContents().get(0);
+		private final Keyword cDiscriminatorColumnKeyword_3_0_0 = (Keyword)cGroup_3_0.eContents().get(0);
+		private final Assignment cDiscriminatorColumnAssignment_3_0_1 = (Assignment)cGroup_3_0.eContents().get(1);
+		private final RuleCall cDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0 = (RuleCall)cDiscriminatorColumnAssignment_3_0_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_3_0_2 = (Keyword)cGroup_3_0.eContents().get(2);
+		private final Group cGroup_3_1 = (Group)cUnorderedGroup_3.eContents().get(1);
+		private final Keyword cDiscriminatorTypeKeyword_3_1_0 = (Keyword)cGroup_3_1.eContents().get(0);
+		private final Assignment cDiscriminatorTypeAssignment_3_1_1 = (Assignment)cGroup_3_1.eContents().get(1);
+		private final RuleCall cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0 = (RuleCall)cDiscriminatorTypeAssignment_3_1_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_3_1_2 = (Keyword)cGroup_3_1.eContents().get(2);
+		private final Group cGroup_3_2 = (Group)cUnorderedGroup_3.eContents().get(2);
+		private final Keyword cDiscriminatorValueKeyword_3_2_0 = (Keyword)cGroup_3_2.eContents().get(0);
+		private final Assignment cDiscriminatorValueAssignment_3_2_1 = (Assignment)cGroup_3_2.eContents().get(1);
+		private final RuleCall cDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0 = (RuleCall)cDiscriminatorValueAssignment_3_2_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_3_2_2 = (Keyword)cGroup_3_2.eContents().get(2);
+		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		
+		//TablePerSubclassStrategy returns entity::LTablePerSubclassStrategy:
+		//	{entity::LTablePerSubclassStrategy} "inheritance per subclass" "{" (("discriminatorColumn"
+		//	discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType" discriminatorType=DiscriminatorType ";"?)? &
+		//	("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?) "}";
+		public ParserRule getRule() { return rule; }
+
+		//{entity::LTablePerSubclassStrategy} "inheritance per subclass" "{" (("discriminatorColumn"
+		//discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType" discriminatorType=DiscriminatorType ";"?)? &
+		//("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?) "}"
+		public Group getGroup() { return cGroup; }
+
+		//{entity::LTablePerSubclassStrategy}
+		public Action getLTablePerSubclassStrategyAction_0() { return cLTablePerSubclassStrategyAction_0; }
+
+		//"inheritance per subclass"
+		public Keyword getInheritancePerSubclassKeyword_1() { return cInheritancePerSubclassKeyword_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
+
+		//("discriminatorColumn" discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType"
+		//discriminatorType=DiscriminatorType ";"?)? & ("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?
+		public UnorderedGroup getUnorderedGroup_3() { return cUnorderedGroup_3; }
+
+		//("discriminatorColumn" discriminatorColumn=ValidIDWithKeywords ";"?)?
+		public Group getGroup_3_0() { return cGroup_3_0; }
+
+		//"discriminatorColumn"
+		public Keyword getDiscriminatorColumnKeyword_3_0_0() { return cDiscriminatorColumnKeyword_3_0_0; }
+
+		//discriminatorColumn=ValidIDWithKeywords
+		public Assignment getDiscriminatorColumnAssignment_3_0_1() { return cDiscriminatorColumnAssignment_3_0_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0() { return cDiscriminatorColumnValidIDWithKeywordsParserRuleCall_3_0_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3_0_2() { return cSemicolonKeyword_3_0_2; }
+
+		//("discriminatorType" discriminatorType=DiscriminatorType ";"?)?
+		public Group getGroup_3_1() { return cGroup_3_1; }
+
+		//"discriminatorType"
+		public Keyword getDiscriminatorTypeKeyword_3_1_0() { return cDiscriminatorTypeKeyword_3_1_0; }
+
+		//discriminatorType=DiscriminatorType
+		public Assignment getDiscriminatorTypeAssignment_3_1_1() { return cDiscriminatorTypeAssignment_3_1_1; }
+
+		//DiscriminatorType
+		public RuleCall getDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0() { return cDiscriminatorTypeDiscriminatorTypeEnumRuleCall_3_1_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3_1_2() { return cSemicolonKeyword_3_1_2; }
+
+		//("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?
+		public Group getGroup_3_2() { return cGroup_3_2; }
+
+		//"discriminatorValue"
+		public Keyword getDiscriminatorValueKeyword_3_2_0() { return cDiscriminatorValueKeyword_3_2_0; }
+
+		//discriminatorValue=ValidIDWithKeywords
+		public Assignment getDiscriminatorValueAssignment_3_2_1() { return cDiscriminatorValueAssignment_3_2_1; }
+
+		//ValidIDWithKeywords
+		public RuleCall getDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0() { return cDiscriminatorValueValidIDWithKeywordsParserRuleCall_3_2_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_3_2_2() { return cSemicolonKeyword_3_2_2; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
+	}
+
+	public class TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLEID");
+		private final RuleCall cValidIDWithKeywordsParserRuleCall = (RuleCall)rule.eContents().get(1);
+		
+		//TRANSLATABLEID:
+		//	ValidIDWithKeywords;
+		public ParserRule getRule() { return rule; }
+
+		//ValidIDWithKeywords
+		public RuleCall getValidIDWithKeywordsParserRuleCall() { return cValidIDWithKeywordsParserRuleCall; }
+	}
+
+	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 DiscriminatorTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "DiscriminatorType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cINHERITEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cINHERITINHERITKeyword_0_0 = (Keyword)cINHERITEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cSTRINGEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cSTRINGSTRINGKeyword_1_0 = (Keyword)cSTRINGEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cCHAREnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cCHARCHARKeyword_2_0 = (Keyword)cCHAREnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cINTEGEREnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cINTEGERINTKeyword_3_0 = (Keyword)cINTEGEREnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum DiscriminatorType returns entity::LDiscriminatorType:
+		//	INHERIT | STRING | CHAR | INTEGER="INT";
+		public EnumRule getRule() { return rule; }
+
+		//INHERIT | STRING | CHAR | INTEGER="INT"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//INHERIT
+		public EnumLiteralDeclaration getINHERITEnumLiteralDeclaration_0() { return cINHERITEnumLiteralDeclaration_0; }
+
+		//"INHERIT"
+		public Keyword getINHERITINHERITKeyword_0_0() { return cINHERITINHERITKeyword_0_0; }
+
+		//STRING
+		public EnumLiteralDeclaration getSTRINGEnumLiteralDeclaration_1() { return cSTRINGEnumLiteralDeclaration_1; }
+
+		//"STRING"
+		public Keyword getSTRINGSTRINGKeyword_1_0() { return cSTRINGSTRINGKeyword_1_0; }
+
+		//CHAR
+		public EnumLiteralDeclaration getCHAREnumLiteralDeclaration_2() { return cCHAREnumLiteralDeclaration_2; }
+
+		//"CHAR"
+		public Keyword getCHARCHARKeyword_2_0() { return cCHARCHARKeyword_2_0; }
+
+		//INTEGER="INT"
+		public EnumLiteralDeclaration getINTEGEREnumLiteralDeclaration_3() { return cINTEGEREnumLiteralDeclaration_3; }
+
+		//"INT"
+		public Keyword getINTEGERINTKeyword_3_0() { return cINTEGERINTKeyword_3_0; }
+	}
+
+	public class LHistorizedDateTypeElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "LHistorizedDateType");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cDATEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cDATEDATEKeyword_0_0 = (Keyword)cDATEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cTIMESTAMPEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cTIMESTAMPTIMESTAMPKeyword_1_0 = (Keyword)cTIMESTAMPEnumLiteralDeclaration_1.eContents().get(0);
+		
+		//enum LHistorizedDateType returns LDateType:
+		//	DATE | TIMESTAMP;
+		public EnumRule getRule() { return rule; }
+
+		//DATE | TIMESTAMP
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//DATE
+		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_0() { return cDATEEnumLiteralDeclaration_0; }
+
+		//"DATE"
+		public Keyword getDATEDATEKeyword_0_0() { return cDATEDATEKeyword_0_0; }
+
+		//TIMESTAMP
+		public EnumLiteralDeclaration getTIMESTAMPEnumLiteralDeclaration_1() { return cTIMESTAMPEnumLiteralDeclaration_1; }
+
+		//"TIMESTAMP"
+		public Keyword getTIMESTAMPTIMESTAMPKeyword_1_0() { return cTIMESTAMPTIMESTAMPKeyword_1_0; }
+	}
+	
+	private final EntityModelElements pEntityModel;
+	private final ClassElements pClass;
+	private final IndexElements pIndex;
+	private final EntityPersistenceInfoElements pEntityPersistenceInfo;
+	private final ColumnPersistenceInfoElements pColumnPersistenceInfo;
+	private final EntityFeatureElements pEntityFeature;
+	private final BeanFeatureElements pBeanFeature;
+	private final EntityInheritanceStrategyElements pEntityInheritanceStrategy;
+	private final TablePerClassStrategyElements pTablePerClassStrategy;
+	private final TablePerSubclassStrategyElements pTablePerSubclassStrategy;
+	private final DiscriminatorTypeElements unknownRuleDiscriminatorType;
+	private final LHistorizedDateTypeElements unknownRuleLHistorizedDateType;
+	private final TRANSLATABLEIDElements pTRANSLATABLEID;
+	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
+	
+	private final Grammar grammar;
+
+	private final CommonGrammarGrammarAccess gaCommonGrammar;
+
+	@Inject
+	public EntityGrammarGrammarAccess(GrammarProvider grammarProvider,
+		CommonGrammarGrammarAccess gaCommonGrammar) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaCommonGrammar = gaCommonGrammar;
+		this.pEntityModel = new EntityModelElements();
+		this.pClass = new ClassElements();
+		this.pIndex = new IndexElements();
+		this.pEntityPersistenceInfo = new EntityPersistenceInfoElements();
+		this.pColumnPersistenceInfo = new ColumnPersistenceInfoElements();
+		this.pEntityFeature = new EntityFeatureElements();
+		this.pBeanFeature = new BeanFeatureElements();
+		this.pEntityInheritanceStrategy = new EntityInheritanceStrategyElements();
+		this.pTablePerClassStrategy = new TablePerClassStrategyElements();
+		this.pTablePerSubclassStrategy = new TablePerSubclassStrategyElements();
+		this.unknownRuleDiscriminatorType = new DiscriminatorTypeElements();
+		this.unknownRuleLHistorizedDateType = new LHistorizedDateTypeElements();
+		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
+		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.dsl.entity.xtext.EntityGrammar".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 CommonGrammarGrammarAccess getCommonGrammarGrammarAccess() {
+		return gaCommonGrammar;
+	}
+
+	
+	//EntityModel returns entity::LEntityModel:
+	//	packages+=TypedPackage*;
+	public EntityModelElements getEntityModelAccess() {
+		return pEntityModel;
+	}
+	
+	public ParserRule getEntityModelRule() {
+		return getEntityModelAccess().getRule();
+	}
+
+	//Class returns LClass:
+	//	{LClass} annotations+=AnnotationDef* ({entity::LEntity.annotationInfo=current} (abstract?="abstract"? &
+	//	(historized?="historized" | timedependent?="timedependent" ("(" timedependentDateType=LHistorizedDateType ")")?)? &
+	//	cacheable?="cacheable"?) "entity" name=TRANSLATABLEID ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+	//	"{" persistenceInfo=EntityPersistenceInfo inheritanceStrategy=EntityInheritanceStrategy? ("persistenceUnit"
+	//	persistenceUnit=STRING ";"?)? features+=EntityFeature* indexes+=Index* "}" | {entity::LEntity.annotationInfo=current}
+	//	mappedSuperclass?="mapped superclass" ("extends" superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+	//	name=ValidIDWithKeywords "{" ("persistenceUnit" persistenceUnit=STRING ";"?)? features+=EntityFeature* "}" |
+	//	{entity::LBean.annotationInfo=current} "bean" name=TRANSLATABLEID ("extends"
+	//	superType=[entity::LBean|TYPE_CROSS_REFERENCE])? "{" features+=BeanFeature* "}");
+	public ClassElements getClassAccess() {
+		return pClass;
+	}
+	
+	public ParserRule getClassRule() {
+		return getClassAccess().getRule();
+	}
+
+	//Index returns entity::LIndex:
+	//	unique?="unique"? "index" name=ID "{" features+=[entity::LEntityFeature] (", " features+=[entity::LEntityFeature])*
+	//	"}";
+	public IndexElements getIndexAccess() {
+		return pIndex;
+	}
+	
+	public ParserRule getIndexRule() {
+		return getIndexAccess().getRule();
+	}
+
+	//EntityPersistenceInfo returns entity::LEntityPersistenceInfo:
+	//	{entity::LEntityPersistenceInfo} (("schemaName" schemaName=ValidIDWithKeywords ";"?)? & ("tableName"
+	//	tableName=ValidIDWithKeywords ";"?)?);
+	public EntityPersistenceInfoElements getEntityPersistenceInfoAccess() {
+		return pEntityPersistenceInfo;
+	}
+	
+	public ParserRule getEntityPersistenceInfoRule() {
+		return getEntityPersistenceInfoAccess().getRule();
+	}
+
+	//ColumnPersistenceInfo returns entity::LEntityColumnPersistenceInfo:
+	//	{entity::LEntityColumnPersistenceInfo} "(" columnName=ValidIDWithKeywords ")";
+	public ColumnPersistenceInfoElements getColumnPersistenceInfoAccess() {
+		return pColumnPersistenceInfo;
+	}
+	
+	public ParserRule getColumnPersistenceInfoRule() {
+		return getColumnPersistenceInfoAccess().getRule();
+	}
+
+	//EntityFeature returns entity::LEntityFeature:
+	//	{entity::LEntityFeature} annotations+=AnnotationDef* ({entity::LEntityReference.annotationInfo=current} ("ref"
+	//	cascading?="cascade"? type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("["
+	//	constraints+=AllConstraints* "]")? name=TRANSLATABLEID persistenceInfo=ColumnPersistenceInfo? ("opposite"
+	//	opposite=[entity::LEntityReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)*
+	//	")")? (resultFilters=ResultFilters | ";"?)) | {entity::LEntityAttribute.annotationInfo=current}
+	//	(transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("[" constraints+=AllConstraints* "]")?
+	//	name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"? |
+	//	derived?="derived" domainDescription?="domainDescription"? type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID
+	//	("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?
+	//	derivedGetterExpression=XBlockExpression | ("var" | id?="id" | uuid?="uuid" | version?="version" |
+	//	domainDescription?="domainDescription" | domainKey?="domainKey") type=[LScalarType|TYPE_CROSS_REFERENCE]
+	//	multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID
+	//	persistenceInfo=ColumnPersistenceInfo? ("opposite" opposite=[entity::LBeanReference|LFQN])? ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) | {entity::LOperation.annotationInfo=current}
+	//	("def" type=JvmTypeReference name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter (", "
+	//	params+=FullJvmFormalParameter)*)? ")" body=XExpression));
+	public EntityFeatureElements getEntityFeatureAccess() {
+		return pEntityFeature;
+	}
+	
+	public ParserRule getEntityFeatureRule() {
+		return getEntityFeatureAccess().getRule();
+	}
+
+	//BeanFeature returns entity::LBeanFeature:
+	//	{entity::LBeanFeature} annotations+=AnnotationDef* ({entity::LBeanReference.annotationInfo=current} ("ref"
+	//	cascading?="cascade"? type=[LType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ("[" constraints+=AllConstraints*
+	//	"]")? name=TRANSLATABLEID ("opposite" opposite=[LReference|LFQN])? ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? (resultFilters=ResultFilters | ";"?)) |
+	//	{entity::LBeanAttribute.annotationInfo=current} (transient?="transient" type=[LScalarType|TYPE_CROSS_REFERENCE] ("["
+	//	constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? | ("var" | id?="id" | version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE]
+	//	multiplicity=Multiplicity? ("[" constraints+=AllConstraints* "]")? name=TRANSLATABLEID ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? ";"?) | {entity::LOperation.annotationInfo=current}
+	//	("def" type=JvmTypeReference name=TRANSLATABLEID "(" (params+=FullJvmFormalParameter (","
+	//	params+=FullJvmFormalParameter)*)? ")" body=XExpression));
+	public BeanFeatureElements getBeanFeatureAccess() {
+		return pBeanFeature;
+	}
+	
+	public ParserRule getBeanFeatureRule() {
+		return getBeanFeatureAccess().getRule();
+	}
+
+	//EntityInheritanceStrategy returns entity::LEntityInheritanceStrategy:
+	//	TablePerClassStrategy | TablePerSubclassStrategy;
+	public EntityInheritanceStrategyElements getEntityInheritanceStrategyAccess() {
+		return pEntityInheritanceStrategy;
+	}
+	
+	public ParserRule getEntityInheritanceStrategyRule() {
+		return getEntityInheritanceStrategyAccess().getRule();
+	}
+
+	//TablePerClassStrategy returns entity::LTablePerClassStrategy:
+	//	{entity::LTablePerClassStrategy} "inheritance per class" "{" (("discriminatorColumn"
+	//	discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType" discriminatorType=DiscriminatorType ";"?)? &
+	//	("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?) "}";
+	public TablePerClassStrategyElements getTablePerClassStrategyAccess() {
+		return pTablePerClassStrategy;
+	}
+	
+	public ParserRule getTablePerClassStrategyRule() {
+		return getTablePerClassStrategyAccess().getRule();
+	}
+
+	//TablePerSubclassStrategy returns entity::LTablePerSubclassStrategy:
+	//	{entity::LTablePerSubclassStrategy} "inheritance per subclass" "{" (("discriminatorColumn"
+	//	discriminatorColumn=ValidIDWithKeywords ";"?)? & ("discriminatorType" discriminatorType=DiscriminatorType ";"?)? &
+	//	("discriminatorValue" discriminatorValue=ValidIDWithKeywords ";"?)?) "}";
+	public TablePerSubclassStrategyElements getTablePerSubclassStrategyAccess() {
+		return pTablePerSubclassStrategy;
+	}
+	
+	public ParserRule getTablePerSubclassStrategyRule() {
+		return getTablePerSubclassStrategyAccess().getRule();
+	}
+
+	//enum DiscriminatorType returns entity::LDiscriminatorType:
+	//	INHERIT | STRING | CHAR | INTEGER="INT";
+	public DiscriminatorTypeElements getDiscriminatorTypeAccess() {
+		return unknownRuleDiscriminatorType;
+	}
+	
+	public EnumRule getDiscriminatorTypeRule() {
+		return getDiscriminatorTypeAccess().getRule();
+	}
+
+	//enum LHistorizedDateType returns LDateType:
+	//	DATE | TIMESTAMP;
+	public LHistorizedDateTypeElements getLHistorizedDateTypeAccess() {
+		return unknownRuleLHistorizedDateType;
+	}
+	
+	public EnumRule getLHistorizedDateTypeRule() {
+		return getLHistorizedDateTypeAccess().getRule();
+	}
+
+	//TRANSLATABLEID:
+	//	ValidIDWithKeywords;
+	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
+		return pTRANSLATABLEID;
+	}
+	
+	public ParserRule getTRANSLATABLEIDRule() {
+		return getTRANSLATABLEIDAccess().getRule();
+	}
+
+	//TRANSLATABLESTRING:
+	//	STRING;
+	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
+		return pTRANSLATABLESTRING;
+	}
+	
+	public ParserRule getTRANSLATABLESTRINGRule() {
+		return getTRANSLATABLESTRINGAccess().getRule();
+	}
+
+	//TypedPackage returns types::LTypedPackage:
+	//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=Type* "}")?;
+	public CommonGrammarGrammarAccess.TypedPackageElements getTypedPackageAccess() {
+		return gaCommonGrammar.getTypedPackageAccess();
+	}
+	
+	public ParserRule getTypedPackageRule() {
+		return getTypedPackageAccess().getRule();
+	}
+
+	//Type returns types::LType:
+	//	ScalarType | Class;
+	public CommonGrammarGrammarAccess.TypeElements getTypeAccess() {
+		return gaCommonGrammar.getTypeAccess();
+	}
+	
+	public ParserRule getTypeRule() {
+		return getTypeAccess().getRule();
+	}
+
+	//Import returns types::LImport:
+	//	"import" importedNamespace=LQualifiedNameWithWildCard ";"?;
+	public CommonGrammarGrammarAccess.ImportElements getImportAccess() {
+		return gaCommonGrammar.getImportAccess();
+	}
+	
+	public ParserRule getImportRule() {
+		return getImportAccess().getRule();
+	}
+
+	//DataType returns types::LDataType:
+	//	"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+	//	constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+	//	date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?;
+	public CommonGrammarGrammarAccess.DataTypeElements getDataTypeAccess() {
+		return gaCommonGrammar.getDataTypeAccess();
+	}
+	
+	public ParserRule getDataTypeRule() {
+		return getDataTypeAccess().getRule();
+	}
+
+	//AllConstraints returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast;
+	public CommonGrammarGrammarAccess.AllConstraintsElements getAllConstraintsAccess() {
+		return gaCommonGrammar.getAllConstraintsAccess();
+	}
+	
+	public ParserRule getAllConstraintsRule() {
+		return getAllConstraintsAccess().getRule();
+	}
+
+	//DataTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize;
+	public CommonGrammarGrammarAccess.DataTypeConstraintElements getDataTypeConstraintAccess() {
+		return gaCommonGrammar.getDataTypeConstraintAccess();
+	}
+	
+	public ParserRule getDataTypeConstraintRule() {
+		return getDataTypeConstraintAccess().getRule();
+	}
+
+	//DateConstraint returns types::LDatatypeConstraint:
+	//	DtCFuture | DtCPast | DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.DateConstraintElements getDateConstraintAccess() {
+		return gaCommonGrammar.getDateConstraintAccess();
+	}
+	
+	public ParserRule getDateConstraintRule() {
+		return getDateConstraintAccess().getRule();
+	}
+
+	//BlobTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.BlobTypeConstraintElements getBlobTypeConstraintAccess() {
+		return gaCommonGrammar.getBlobTypeConstraintAccess();
+	}
+	
+	public ParserRule getBlobTypeConstraintRule() {
+		return getBlobTypeConstraintAccess().getRule();
+	}
+
+	//enum ConstraintSeverity returns types::LConstraintSeverity:
+	//	INFO="info" | WARNING="warn" | ERROR="error";
+	public CommonGrammarGrammarAccess.ConstraintSeverityElements getConstraintSeverityAccess() {
+		return gaCommonGrammar.getConstraintSeverityAccess();
+	}
+	
+	public EnumRule getConstraintSeverityRule() {
+		return getConstraintSeverityAccess().getRule();
+	}
+
+	//DtCAssertFalse returns types::LDtCAssertFalse:
+	//	{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertFalseElements getDtCAssertFalseAccess() {
+		return gaCommonGrammar.getDtCAssertFalseAccess();
+	}
+	
+	public ParserRule getDtCAssertFalseRule() {
+		return getDtCAssertFalseAccess().getRule();
+	}
+
+	//DtCAssertTrue returns types::LDtCAssertTrue:
+	//	{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertTrueElements getDtCAssertTrueAccess() {
+		return gaCommonGrammar.getDtCAssertTrueAccess();
+	}
+	
+	public ParserRule getDtCAssertTrueRule() {
+		return getDtCAssertTrueAccess().getRule();
+	}
+
+	//DtCDecimalMax returns types::LDtCDecimalMax:
+	//	{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMaxElements getDtCDecimalMaxAccess() {
+		return gaCommonGrammar.getDtCDecimalMaxAccess();
+	}
+	
+	public ParserRule getDtCDecimalMaxRule() {
+		return getDtCDecimalMaxAccess().getRule();
+	}
+
+	//DtCDecimalMin returns types::LDtCDecimalMin:
+	//	{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMinElements getDtCDecimalMinAccess() {
+		return gaCommonGrammar.getDtCDecimalMinAccess();
+	}
+	
+	public ParserRule getDtCDecimalMinRule() {
+		return getDtCDecimalMinAccess().getRule();
+	}
+
+	//DtCDigits returns types::LDtCDigits:
+	//	{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+	//	("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDigitsElements getDtCDigitsAccess() {
+		return gaCommonGrammar.getDtCDigitsAccess();
+	}
+	
+	public ParserRule getDtCDigitsRule() {
+		return getDtCDigitsAccess().getRule();
+	}
+
+	//DtCFuture returns types::LDtCFuture:
+	//	{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCFutureElements getDtCFutureAccess() {
+		return gaCommonGrammar.getDtCFutureAccess();
+	}
+	
+	public ParserRule getDtCFutureRule() {
+		return getDtCFutureAccess().getRule();
+	}
+
+	//DtCPast returns types::LDtCPast:
+	//	{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCPastElements getDtCPastAccess() {
+		return gaCommonGrammar.getDtCPastAccess();
+	}
+	
+	public ParserRule getDtCPastRule() {
+		return getDtCPastAccess().getRule();
+	}
+
+	//DtCNumericMax returns types::LDtCNumericMax:
+	//	{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMaxElements getDtCNumericMaxAccess() {
+		return gaCommonGrammar.getDtCNumericMaxAccess();
+	}
+	
+	public ParserRule getDtCNumericMaxRule() {
+		return getDtCNumericMaxAccess().getRule();
+	}
+
+	//DtCNumericMin returns types::LDtCNumericMin:
+	//	{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMinElements getDtCNumericMinAccess() {
+		return gaCommonGrammar.getDtCNumericMinAccess();
+	}
+	
+	public ParserRule getDtCNumericMinRule() {
+		return getDtCNumericMinAccess().getRule();
+	}
+
+	//DtCNotNull returns types::LDtCNotNull:
+	//	{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNotNullElements getDtCNotNullAccess() {
+		return gaCommonGrammar.getDtCNotNullAccess();
+	}
+	
+	public ParserRule getDtCNotNullRule() {
+		return getDtCNotNullAccess().getRule();
+	}
+
+	//DtCNull returns types::LDtCNull:
+	//	{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNullElements getDtCNullAccess() {
+		return gaCommonGrammar.getDtCNullAccess();
+	}
+	
+	public ParserRule getDtCNullRule() {
+		return getDtCNullAccess().getRule();
+	}
+
+	//DtCRegEx returns types::LDtCRegEx:
+	//	{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCRegExElements getDtCRegExAccess() {
+		return gaCommonGrammar.getDtCRegExAccess();
+	}
+	
+	public ParserRule getDtCRegExRule() {
+		return getDtCRegExAccess().getRule();
+	}
+
+	//DtCSize returns types::LDtCSize:
+	//	{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey"
+	//	"=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCSizeElements getDtCSizeAccess() {
+		return gaCommonGrammar.getDtCSizeAccess();
+	}
+	
+	public ParserRule getDtCSizeRule() {
+		return getDtCSizeAccess().getRule();
+	}
+
+	//enum DateType returns types::LDateType:
+	//	DATE="date" | TIME="time" | TIMESTAMP="timestamp";
+	public CommonGrammarGrammarAccess.DateTypeElements getDateTypeAccess() {
+		return gaCommonGrammar.getDateTypeAccess();
+	}
+	
+	public EnumRule getDateTypeRule() {
+		return getDateTypeAccess().getRule();
+	}
+
+	//ScalarType returns types::LScalarType:
+	//	DataType | Enum;
+	public CommonGrammarGrammarAccess.ScalarTypeElements getScalarTypeAccess() {
+		return gaCommonGrammar.getScalarTypeAccess();
+	}
+	
+	public ParserRule getScalarTypeRule() {
+		return getScalarTypeAccess().getRule();
+	}
+
+	//Modifier returns types::LModifier:
+	//	final?="final"? & static?="static"? & visibility=LVisibility;
+	public CommonGrammarGrammarAccess.ModifierElements getModifierAccess() {
+		return gaCommonGrammar.getModifierAccess();
+	}
+	
+	public ParserRule getModifierRule() {
+		return getModifierAccess().getRule();
+	}
+
+	//Enum returns types::LEnum:
+	//	"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}";
+	public CommonGrammarGrammarAccess.EnumElements getEnumAccess() {
+		return gaCommonGrammar.getEnumAccess();
+	}
+	
+	public ParserRule getEnumRule() {
+		return getEnumAccess().getRule();
+	}
+
+	//EnumLiteral returns types::LEnumLiteral:
+	//	name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?;
+	public CommonGrammarGrammarAccess.EnumLiteralElements getEnumLiteralAccess() {
+		return gaCommonGrammar.getEnumLiteralAccess();
+	}
+	
+	public ParserRule getEnumLiteralRule() {
+		return getEnumLiteralAccess().getRule();
+	}
+
+	//AnnotationDef returns types::LAnnotationDef:
+	//	=> (annotation=XAnnotation);
+	public CommonGrammarGrammarAccess.AnnotationDefElements getAnnotationDefAccess() {
+		return gaCommonGrammar.getAnnotationDefAccess();
+	}
+	
+	public ParserRule getAnnotationDefRule() {
+		return getAnnotationDefAccess().getRule();
+	}
+
+	//enum LVisibility returns types::LVisibility:
+	//	PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public";
+	public CommonGrammarGrammarAccess.LVisibilityElements getLVisibilityAccess() {
+		return gaCommonGrammar.getLVisibilityAccess();
+	}
+	
+	public EnumRule getLVisibilityRule() {
+		return getLVisibilityAccess().getRule();
+	}
+
+	//ResultFilters returns types::LResultFilters:
+	//	{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}";
+	public CommonGrammarGrammarAccess.ResultFiltersElements getResultFiltersAccess() {
+		return gaCommonGrammar.getResultFiltersAccess();
+	}
+	
+	public ParserRule getResultFiltersRule() {
+		return getResultFiltersAccess().getRule();
+	}
+
+	//ResultFilter returns types::LResultFilter:
+	//	AttributeMatchingConstraint;
+	public CommonGrammarGrammarAccess.ResultFilterElements getResultFilterAccess() {
+		return gaCommonGrammar.getResultFilterAccess();
+	}
+	
+	public ParserRule getResultFilterRule() {
+		return getResultFilterAccess().getRule();
+	}
+
+	//AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+	//	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+	//	matchingLiteral=[types::LEnumLiteral]) ";"?;
+	public CommonGrammarGrammarAccess.AttributeMatchingConstraintElements getAttributeMatchingConstraintAccess() {
+		return gaCommonGrammar.getAttributeMatchingConstraintAccess();
+	}
+	
+	public ParserRule getAttributeMatchingConstraintRule() {
+		return getAttributeMatchingConstraintAccess().getRule();
+	}
+
+	//KeyAndValue returns types::LKeyAndValue:
+	//	"key" "=" key=STRING "value" "=" value=STRING;
+	public CommonGrammarGrammarAccess.KeyAndValueElements getKeyAndValueAccess() {
+		return gaCommonGrammar.getKeyAndValueAccess();
+	}
+	
+	public ParserRule getKeyAndValueRule() {
+		return getKeyAndValueAccess().getRule();
+	}
+
+	//enum LComparatorType returns types::LComparatorType:
+	//	EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>";
+	public CommonGrammarGrammarAccess.LComparatorTypeElements getLComparatorTypeAccess() {
+		return gaCommonGrammar.getLComparatorTypeAccess();
+	}
+	
+	public EnumRule getLComparatorTypeRule() {
+		return getLComparatorTypeAccess().getRule();
+	}
+
+	//LQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public CommonGrammarGrammarAccess.LQualifiedNameWithWildCardElements getLQualifiedNameWithWildCardAccess() {
+		return gaCommonGrammar.getLQualifiedNameWithWildCardAccess();
+	}
+	
+	public ParserRule getLQualifiedNameWithWildCardRule() {
+		return getLQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//LFQN:
+	//	ID ("." ID)*;
+	public CommonGrammarGrammarAccess.LFQNElements getLFQNAccess() {
+		return gaCommonGrammar.getLFQNAccess();
+	}
+	
+	public ParserRule getLFQNRule() {
+		return getLFQNAccess().getRule();
+	}
+
+	//TYPE_CROSS_REFERENCE:
+	//	ID;
+	public CommonGrammarGrammarAccess.TYPE_CROSS_REFERENCEElements getTYPE_CROSS_REFERENCEAccess() {
+		return gaCommonGrammar.getTYPE_CROSS_REFERENCEAccess();
+	}
+	
+	public ParserRule getTYPE_CROSS_REFERENCERule() {
+		return getTYPE_CROSS_REFERENCEAccess().getRule();
+	}
+
+	//ValidIDWithKeywords:
+	//	"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+	//	"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID;
+	public CommonGrammarGrammarAccess.ValidIDWithKeywordsElements getValidIDWithKeywordsAccess() {
+		return gaCommonGrammar.getValidIDWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidIDWithKeywordsRule() {
+		return getValidIDWithKeywordsAccess().getRule();
+	}
+
+	//ValidLFQNWithKeywords:
+	//	ValidIDWithKeywords ("." ValidIDWithKeywords)*;
+	public CommonGrammarGrammarAccess.ValidLFQNWithKeywordsElements getValidLFQNWithKeywordsAccess() {
+		return gaCommonGrammar.getValidLFQNWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidLFQNWithKeywordsRule() {
+		return getValidLFQNWithKeywordsAccess().getRule();
+	}
+
+	//Multiplicity returns types::LMultiplicity:
+	//	"[" lower=LowerBound (".." upper=UpperBound)? "]";
+	public CommonGrammarGrammarAccess.MultiplicityElements getMultiplicityAccess() {
+		return gaCommonGrammar.getMultiplicityAccess();
+	}
+	
+	public ParserRule getMultiplicityRule() {
+		return getMultiplicityAccess().getRule();
+	}
+
+	//enum LowerBound returns types::LLowerBound:
+	//	MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1";
+	public CommonGrammarGrammarAccess.LowerBoundElements getLowerBoundAccess() {
+		return gaCommonGrammar.getLowerBoundAccess();
+	}
+	
+	public EnumRule getLowerBoundRule() {
+		return getLowerBoundAccess().getRule();
+	}
+
+	//enum UpperBound returns types::LUpperBound:
+	//	MANY="*" | ONE="1";
+	public CommonGrammarGrammarAccess.UpperBoundElements getUpperBoundAccess() {
+		return gaCommonGrammar.getUpperBoundAccess();
+	}
+	
+	public EnumRule getUpperBoundRule() {
+		return getUpperBoundAccess().getRule();
+	}
+
+	//LInt returns ecore::EInt:
+	//	("+" | "-")? INT;
+	public CommonGrammarGrammarAccess.LIntElements getLIntAccess() {
+		return gaCommonGrammar.getLIntAccess();
+	}
+	
+	public ParserRule getLIntRule() {
+		return getLIntAccess().getRule();
+	}
+
+	//LDecimal returns ecore::EFloat:
+	//	LInt ("." INT)?;
+	public CommonGrammarGrammarAccess.LDecimalElements getLDecimalAccess() {
+		return gaCommonGrammar.getLDecimalAccess();
+	}
+	
+	public ParserRule getLDecimalRule() {
+		return getLDecimalAccess().getRule();
+	}
+
+	//XAnnotation:
+	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
+	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
+	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
+		return gaCommonGrammar.getXAnnotationAccess();
+	}
+	
+	public ParserRule getXAnnotationRule() {
+		return getXAnnotationAccess().getRule();
+	}
+
+	//XAnnotationElementValuePair:
+	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAnnotationElementValueOrCommaListAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueOrCommaListRule() {
+		return getXAnnotationElementValueOrCommaListAccess().getRule();
+	}
+
+	//XAnnotationElementValue returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
+	//	XAnnotationOrExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
+		return gaCommonGrammar.getXAnnotationElementValueAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueRule() {
+		return getXAnnotationElementValueAccess().getRule();
+	}
+
+	//XAnnotationOrExpression returns xbase::XExpression:
+	//	XAnnotation | XExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
+		return gaCommonGrammar.getXAnnotationOrExpressionAccess();
+	}
+	
+	public ParserRule getXAnnotationOrExpressionRule() {
+		return getXAnnotationOrExpressionAccess().getRule();
+	}
+
+	//XExpression:
+	//	XAssignment;
+	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAssignmentAccess();
+	}
+	
+	public ParserRule getXAssignmentRule() {
+		return getXAssignmentAccess().getRule();
+	}
+
+	//OpSingleAssign:
+	//	"=";
+	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
+		return gaCommonGrammar.getOpSingleAssignAccess();
+	}
+	
+	public ParserRule getOpSingleAssignRule() {
+		return getOpSingleAssignAccess().getRule();
+	}
+
+	//OpMultiAssign:
+	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOrExpressionAccess();
+	}
+	
+	public ParserRule getXOrExpressionRule() {
+		return getXOrExpressionAccess().getRule();
+	}
+
+	//OpOr:
+	//	"||";
+	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAndExpressionAccess();
+	}
+	
+	public ParserRule getXAndExpressionRule() {
+		return getXAndExpressionAccess().getRule();
+	}
+
+	//OpAnd:
+	//	"&&";
+	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXEqualityExpressionAccess();
+	}
+	
+	public ParserRule getXEqualityExpressionRule() {
+		return getXEqualityExpressionAccess().getRule();
+	}
+
+	//OpEquality:
+	//	"==" | "!=" | "===" | "!==";
+	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXRelationalExpressionAccess();
+	}
+	
+	public ParserRule getXRelationalExpressionRule() {
+		return getXRelationalExpressionAccess().getRule();
+	}
+
+	//OpCompare:
+	//	">=" | "<" "=" | ">" | "<";
+	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOtherOperatorExpressionAccess();
+	}
+	
+	public ParserRule getXOtherOperatorExpressionRule() {
+		return getXOtherOperatorExpressionAccess().getRule();
+	}
+
+	//OpOther:
+	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAdditiveExpressionAccess();
+	}
+	
+	public ParserRule getXAdditiveExpressionRule() {
+		return getXAdditiveExpressionAccess().getRule();
+	}
+
+	//OpAdd:
+	//	"+" | "-";
+	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXMultiplicativeExpressionAccess();
+	}
+	
+	public ParserRule getXMultiplicativeExpressionRule() {
+		return getXMultiplicativeExpressionAccess().getRule();
+	}
+
+	//OpMulti:
+	//	"*" | "**" | "/" | "%";
+	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
+		return gaCommonGrammar.getOpMultiAccess();
+	}
+	
+	public ParserRule getOpMultiRule() {
+		return getOpMultiAccess().getRule();
+	}
+
+	//XUnaryOperation returns XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
+		return gaCommonGrammar.getXUnaryOperationAccess();
+	}
+	
+	public ParserRule getXUnaryOperationRule() {
+		return getXUnaryOperationAccess().getRule();
+	}
+
+	//OpUnary:
+	//	"!" | "-" | "+";
+	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
+		return gaCommonGrammar.getOpUnaryAccess();
+	}
+	
+	public ParserRule getOpUnaryRule() {
+		return getOpUnaryAccess().getRule();
+	}
+
+	//XCastedExpression returns XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
+		return gaCommonGrammar.getXCastedExpressionAccess();
+	}
+	
+	public ParserRule getXCastedExpressionRule() {
+		return getXCastedExpressionAccess().getRule();
+	}
+
+	//XPostfixOperation returns XExpression:
+	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
+	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
+		return gaCommonGrammar.getXPostfixOperationAccess();
+	}
+	
+	public ParserRule getXPostfixOperationRule() {
+		return getXPostfixOperationAccess().getRule();
+	}
+
+	//OpPostfix:
+	//	"++" | "--";
+	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getXPrimaryExpressionAccess();
+	}
+	
+	public ParserRule getXPrimaryExpressionRule() {
+		return getXPrimaryExpressionAccess().getRule();
+	}
+
+	//XLiteral returns XExpression:
+	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
+	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
+		return gaCommonGrammar.getXLiteralAccess();
+	}
+	
+	public ParserRule getXLiteralRule() {
+		return getXLiteralAccess().getRule();
+	}
+
+	//XCollectionLiteral:
+	//	XSetLiteral | XListLiteral;
+	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
+		return gaCommonGrammar.getXCollectionLiteralAccess();
+	}
+	
+	public ParserRule getXCollectionLiteralRule() {
+		return getXCollectionLiteralAccess().getRule();
+	}
+
+	//XSetLiteral:
+	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
+		return gaCommonGrammar.getXSetLiteralAccess();
+	}
+	
+	public ParserRule getXSetLiteralRule() {
+		return getXSetLiteralAccess().getRule();
+	}
+
+	//XListLiteral:
+	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
+		return gaCommonGrammar.getXListLiteralAccess();
+	}
+	
+	public ParserRule getXListLiteralRule() {
+		return getXListLiteralAccess().getRule();
+	}
+
+	//XClosure returns XExpression:
+	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
+	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
+		return gaCommonGrammar.getXClosureAccess();
+	}
+	
+	public ParserRule getXClosureRule() {
+		return getXClosureAccess().getRule();
+	}
+
+	//XExpressionInClosure returns XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
+		return gaCommonGrammar.getXExpressionInClosureAccess();
+	}
+	
+	public ParserRule getXExpressionInClosureRule() {
+		return getXExpressionInClosureAccess().getRule();
+	}
+
+	//XShortClosure returns XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?="|") expression=XExpression;
+	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
+		return gaCommonGrammar.getXShortClosureAccess();
+	}
+	
+	public ParserRule getXShortClosureRule() {
+		return getXShortClosureAccess().getRule();
+	}
+
+	//XParenthesizedExpression returns XExpression:
+	//	"(" XExpression ")";
+	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
+		return gaCommonGrammar.getXParenthesizedExpressionAccess();
+	}
+	
+	public ParserRule getXParenthesizedExpressionRule() {
+		return getXParenthesizedExpressionAccess().getRule();
+	}
+
+	//XIfExpression returns XExpression:
+	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXSwitchExpressionAccess();
+	}
+	
+	public ParserRule getXSwitchExpressionRule() {
+		return getXSwitchExpressionAccess().getRule();
+	}
+
+	//XCasePart:
+	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
+		return gaCommonGrammar.getXCasePartAccess();
+	}
+	
+	public ParserRule getXCasePartRule() {
+		return getXCasePartAccess().getRule();
+	}
+
+	//XForLoopExpression returns XExpression:
+	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	//	eachExpression=XExpression;
+	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXBasicForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXBasicForLoopExpressionRule() {
+		return getXBasicForLoopExpressionAccess().getRule();
+	}
+
+	//XWhileExpression returns XExpression:
+	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
+		return gaCommonGrammar.getXWhileExpressionAccess();
+	}
+	
+	public ParserRule getXWhileExpressionRule() {
+		return getXWhileExpressionAccess().getRule();
+	}
+
+	//XDoWhileExpression returns XExpression:
+	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
+		return gaCommonGrammar.getXDoWhileExpressionAccess();
+	}
+	
+	public ParserRule getXDoWhileExpressionRule() {
+		return getXDoWhileExpressionAccess().getRule();
+	}
+
+	//XBlockExpression returns XExpression:
+	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
+		return gaCommonGrammar.getXBlockExpressionAccess();
+	}
+	
+	public ParserRule getXBlockExpressionRule() {
+		return getXBlockExpressionAccess().getRule();
+	}
+
+	//XExpressionOrVarDeclaration returns XExpression:
+	//	XVariableDeclaration | XExpression;
+	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXVariableDeclarationAccess();
+	}
+	
+	public ParserRule getXVariableDeclarationRule() {
+		return getXVariableDeclarationAccess().getRule();
+	}
+
+	//JvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference? name=ValidID;
+	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
+		return gaCommonGrammar.getJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getJvmFormalParameterRule() {
+		return getJvmFormalParameterAccess().getRule();
+	}
+
+	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXFeatureCallAccess();
+	}
+	
+	public ParserRule getXFeatureCallRule() {
+		return getXFeatureCallAccess().getRule();
+	}
+
+	//FeatureCallID:
+	//	ValidID | "extends" | "static" | "import" | "extension";
+	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
+		return gaCommonGrammar.getFeatureCallIDAccess();
+	}
+	
+	public ParserRule getFeatureCallIDRule() {
+		return getFeatureCallIDAccess().getRule();
+	}
+
+	//IdOrSuper:
+	//	FeatureCallID | "super";
+	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXConstructorCallAccess();
+	}
+	
+	public ParserRule getXConstructorCallRule() {
+		return getXConstructorCallAccess().getRule();
+	}
+
+	//XBooleanLiteral returns XExpression:
+	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
+		return gaCommonGrammar.getXBooleanLiteralAccess();
+	}
+	
+	public ParserRule getXBooleanLiteralRule() {
+		return getXBooleanLiteralAccess().getRule();
+	}
+
+	//XNullLiteral returns XExpression:
+	//	{XNullLiteral} "null";
+	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
+		return gaCommonGrammar.getXNullLiteralAccess();
+	}
+	
+	public ParserRule getXNullLiteralRule() {
+		return getXNullLiteralAccess().getRule();
+	}
+
+	//XNumberLiteral returns XExpression:
+	//	{XNumberLiteral} value=Number;
+	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
+		return gaCommonGrammar.getXNumberLiteralAccess();
+	}
+	
+	public ParserRule getXNumberLiteralRule() {
+		return getXNumberLiteralAccess().getRule();
+	}
+
+	//XStringLiteral returns XExpression:
+	//	{XStringLiteral} value=STRING;
+	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
+		return gaCommonGrammar.getXStringLiteralAccess();
+	}
+	
+	public ParserRule getXStringLiteralRule() {
+		return getXStringLiteralAccess().getRule();
+	}
+
+	//XTypeLiteral returns XExpression:
+	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
+		return gaCommonGrammar.getXTypeLiteralAccess();
+	}
+	
+	public ParserRule getXTypeLiteralRule() {
+		return getXTypeLiteralAccess().getRule();
+	}
+
+	//XThrowExpression returns XExpression:
+	//	{XThrowExpression} "throw" expression=XExpression;
+	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
+		return gaCommonGrammar.getXThrowExpressionAccess();
+	}
+	
+	public ParserRule getXThrowExpressionRule() {
+		return getXThrowExpressionAccess().getRule();
+	}
+
+	//XReturnExpression returns XExpression:
+	//	{XReturnExpression} "return" -> expression=XExpression?;
+	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXTryCatchFinallyExpressionAccess();
+	}
+	
+	public ParserRule getXTryCatchFinallyExpressionRule() {
+		return getXTryCatchFinallyExpressionAccess().getRule();
+	}
+
+	//XSynchronizedExpression returns XExpression:
+	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
+		return gaCommonGrammar.getXSynchronizedExpressionAccess();
+	}
+	
+	public ParserRule getXSynchronizedExpressionRule() {
+		return getXSynchronizedExpressionAccess().getRule();
+	}
+
+	//XCatchClause:
+	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
+		return gaCommonGrammar.getXCatchClauseAccess();
+	}
+	
+	public ParserRule getXCatchClauseRule() {
+		return getXCatchClauseAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaCommonGrammar.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//Number hidden():
+	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	public XbaseGrammarAccess.NumberElements getNumberAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getStaticQualifierAccess();
+	}
+	
+	public ParserRule getStaticQualifierRule() {
+		return getStaticQualifierAccess().getRule();
+	}
+
+	//terminal HEX returns ecore::EString:
+	//	("0x" | "0X") ("0".."9" | "a".."f" | "A".."F" | "_")+ ("#" (("b" | "B") ("i" | "I") | ("l" | "L")))?;
+	public TerminalRule getHEXRule() {
+		return gaCommonGrammar.getHEXRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9" ("0".."9" | "_")*;
+	public TerminalRule getINTRule() {
+		return gaCommonGrammar.getINTRule();
+	} 
+
+	//terminal DECIMAL returns ecore::EString:
+	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	public TerminalRule getDECIMALRule() {
+		return gaCommonGrammar.getDECIMALRule();
+	} 
+
+	//JvmTypeReference:
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
+	//	XFunctionTypeRef;
+	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmTypeReferenceRule() {
+		return getJvmTypeReferenceAccess().getRule();
+	}
+
+	//ArrayBrackets:
+	//	"[" "]";
+	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+		return gaCommonGrammar.getArrayBracketsAccess();
+	}
+	
+	public ParserRule getArrayBracketsRule() {
+		return getArrayBracketsAccess().getRule();
+	}
+
+	//XFunctionTypeRef:
+	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getJvmParameterizedTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmParameterizedTypeReferenceRule() {
+		return getJvmParameterizedTypeReferenceAccess().getRule();
+	}
+
+	//JvmArgumentTypeReference returns JvmTypeReference:
+	//	JvmTypeReference | JvmWildcardTypeReference;
+	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmArgumentTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmArgumentTypeReferenceRule() {
+		return getJvmArgumentTypeReferenceAccess().getRule();
+	}
+
+	//JvmWildcardTypeReference:
+	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
+	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmWildcardTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmWildcardTypeReferenceRule() {
+		return getJvmWildcardTypeReferenceAccess().getRule();
+	}
+
+	//JvmUpperBound:
+	//	"extends" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundRule() {
+		return getJvmUpperBoundAccess().getRule();
+	}
+
+	//JvmUpperBoundAnded returns JvmUpperBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundAndedRule() {
+		return getJvmUpperBoundAndedAccess().getRule();
+	}
+
+	//JvmLowerBound:
+	//	"super" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundRule() {
+		return getJvmLowerBoundAccess().getRule();
+	}
+
+	//JvmLowerBoundAnded returns JvmLowerBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundAndedRule() {
+		return getJvmLowerBoundAndedAccess().getRule();
+	}
+
+	//JvmTypeParameter:
+	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
+	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+		return gaCommonGrammar.getJvmTypeParameterAccess();
+	}
+	
+	public ParserRule getJvmTypeParameterRule() {
+		return getJvmTypeParameterAccess().getRule();
+	}
+
+	//QualifiedNameWithWildcard:
+	//	QualifiedName "." "*";
+	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+		return gaCommonGrammar.getQualifiedNameWithWildcardAccess();
+	}
+	
+	public ParserRule getQualifiedNameWithWildcardRule() {
+		return getQualifiedNameWithWildcardAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaCommonGrammar.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+
+	//XImportSection:
+	//	importDeclarations+=XImportDeclaration+;
+	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+
+	//QualifiedNameInStaticImport:
+	//	(ValidID ".")+;
+	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+		return gaCommonGrammar.getQualifiedNameInStaticImportAccess();
+	}
+	
+	public ParserRule getQualifiedNameInStaticImportRule() {
+		return getQualifiedNameInStaticImportAccess().getRule();
+	}
+
+	//terminal ID returns ecore::EString:
+	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaCommonGrammar.getIDRule();
+	} 
+
+	//terminal STRING returns ecore::EString:
+	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
+	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	public TerminalRule getSTRINGRule() {
+		return gaCommonGrammar.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT returns ecore::EString:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaCommonGrammar.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT returns ecore::EString:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaCommonGrammar.getSL_COMMENTRule();
+	} 
+
+	//terminal WS returns ecore::EString:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaCommonGrammar.getWSRule();
+	} 
+
+	//terminal ANY_OTHER returns ecore::EString:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaCommonGrammar.getANY_OTHERRule();
+	} 
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/validation/AbstractEntityGrammarJavaValidator.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/validation/AbstractEntityGrammarJavaValidator.java
new file mode 100644
index 0000000..84e9180
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/entity/xtext/validation/AbstractEntityGrammarJavaValidator.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractEntityGrammarJavaValidator extends org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/dsl/entity/v1"));
+	    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.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBean.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBean.java
new file mode 100644
index 0000000..cbcd1a3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBean.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LBean</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * *
+ * A bean is an embeddable element that may become added to a entity using the @embedd annotation.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getFeatures <em>Features</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperType <em>Super Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperTypeJvm <em>Super Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSubTypes <em>Sub Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBean()
+ * @generated
+ */
+public interface LBean extends LClass, LScalarType, LFeaturesHolder {
+	/**
+	 * Returns the value of the '<em><b>Features</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Features</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>Features</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBean_Features()
+	 * @generated
+	 */
+	EList<LBeanFeature> getFeatures();
+
+	/**
+	 * Returns the value of the '<em><b>Super Type</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSubTypes <em>Sub Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type</em>' reference.
+	 * @see #setSuperType(LBean)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBean_SuperType()
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getSubTypes
+	 * @generated
+	 */
+	LBean getSuperType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperType <em>Super Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type</em>' reference.
+	 * @see #getSuperType()
+	 * @generated
+	 */
+	void setSuperType(LBean value);
+
+	/**
+	 * Returns the value of the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type Jvm</em>' containment reference.
+	 * @see #setSuperTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBean_SuperTypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getSuperTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperTypeJvm <em>Super Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type Jvm</em>' containment reference.
+	 * @see #getSuperTypeJvm()
+	 * @generated
+	 */
+	void setSuperTypeJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Sub Types</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.entity.LBean}.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperType <em>Super Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Types</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub Types</em>' reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBean_SubTypes()
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperType
+	 * @generated
+	 */
+	EList<LBean> getSubTypes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LOperation
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LOperation> getOperations();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LBeanReference
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LBeanReference> getReferences();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LBeanAttribute
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LBeanAttribute> getAttributes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LBeanFeature> getAllFeatures();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all attributes of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LBeanAttribute> getAllAttributes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all references of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LBeanReference> getAllReferences();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	void collectAllOSBPFeatures(LBean current, List<LBeanFeature> result);
+
+} // LBean
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanAttribute.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanAttribute.java
new file mode 100644
index 0000000..73088ed
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanAttribute.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LBean Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute#getTypedName <em>Typed Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanAttribute()
+ * @generated
+ */
+public interface LBeanAttribute extends LBeanFeature, LAttribute {
+	/**
+	 * Returns the value of the '<em><b>Typed Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Typed 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>Typed Name</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanAttribute_TypedName()
+	 * @generated
+	 */
+	String getTypedName();
+
+} // LBeanAttribute
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanFeature.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanFeature.java
new file mode 100644
index 0000000..335f5ec
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanFeature.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LBean Feature</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanFeature()
+ * @generated
+ */
+public interface LBeanFeature extends LFeature {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LBean getBean();
+
+} // LBeanFeature
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanReference.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanReference.java
new file mode 100644
index 0000000..ae89363
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LBeanReference.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LBean Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getOpposite <em>Opposite</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getResultFilters <em>Result Filters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanReference()
+ * @generated
+ */
+public interface LBeanReference extends LBeanFeature, LReference {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' reference.
+	 * @see #setType(LType)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanReference_Type()
+	 * @generated
+	 */
+	LType getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getType <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(LType value);
+
+	/**
+	 * Returns the value of the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Opposite</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Opposite</em>' reference.
+	 * @see #setOpposite(LFeature)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanReference_Opposite()
+	 * @generated
+	 */
+	LFeature getOpposite();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getOpposite <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Opposite</em>' reference.
+	 * @see #getOpposite()
+	 * @generated
+	 */
+	void setOpposite(LFeature value);
+
+	/**
+	 * Returns the value of the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #setTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanReference_TypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getTypeJvm <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #getTypeJvm()
+	 * @generated
+	 */
+	void setTypeJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Result Filters</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Result Filters</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>Result Filters</em>' containment reference.
+	 * @see #setResultFilters(LResultFilters)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLBeanReference_ResultFilters()
+	 * @generated
+	 */
+	LResultFilters getResultFilters();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getResultFilters <em>Result Filters</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Result Filters</em>' containment reference.
+	 * @see #getResultFilters()
+	 * @generated
+	 */
+	void setResultFilters(LResultFilters value);
+
+} // LBeanReference
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LDiscriminatorType.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LDiscriminatorType.java
new file mode 100644
index 0000000..aabfc8e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LDiscriminatorType.java
@@ -0,0 +1,265 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+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>LDiscriminator Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLDiscriminatorType()
+ * @generated
+ */
+public enum LDiscriminatorType implements Enumerator {
+	/**
+	 * The '<em><b>INHERIT</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INHERIT_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INHERIT(0, "INHERIT", "INHERIT"),
+
+	/**
+	 * The '<em><b>STRING</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #STRING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	STRING(0, "STRING", "STRING"),
+
+	/**
+	 * The '<em><b>CHAR</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CHAR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CHAR(0, "CHAR", "CHAR"),
+
+	/**
+	 * The '<em><b>INTEGER</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INTEGER_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INTEGER(0, "INTEGER", "INTEGER");
+
+	/**
+	 * The '<em><b>INHERIT</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INHERIT</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INHERIT
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INHERIT_VALUE = 0;
+
+	/**
+	 * The '<em><b>STRING</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>STRING</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #STRING
+	 * @generated
+	 * @ordered
+	 */
+	public static final int STRING_VALUE = 0;
+
+	/**
+	 * The '<em><b>CHAR</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>CHAR</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #CHAR
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CHAR_VALUE = 0;
+
+	/**
+	 * The '<em><b>INTEGER</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>INTEGER</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INTEGER
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INTEGER_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>LDiscriminator Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LDiscriminatorType[] VALUES_ARRAY =
+		new LDiscriminatorType[] {
+			INHERIT,
+			STRING,
+			CHAR,
+			INTEGER,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LDiscriminator Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LDiscriminatorType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LDiscriminator Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LDiscriminatorType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LDiscriminatorType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LDiscriminator Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LDiscriminatorType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LDiscriminatorType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LDiscriminator Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LDiscriminatorType get(int value) {
+		switch (value) {
+			case INHERIT_VALUE: return INHERIT;
+		}
+		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 LDiscriminatorType(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;
+	}
+	
+} //LDiscriminatorType
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntity.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntity.java
new file mode 100644
index 0000000..a50b403
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntity.java
@@ -0,0 +1,434 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDateType;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * *
+ * Represents a JPA entity.
+ * <!-- end-model-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isCacheable <em>Cacheable</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isHistorized <em>Historized</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isTimedependent <em>Timedependent</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getTimedependentDateType <em>Timedependent Date Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isMappedSuperclass <em>Mapped Superclass</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceInfo <em>Persistence Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getFeatures <em>Features</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getIndexes <em>Indexes</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperType <em>Super Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperTypeJvm <em>Super Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSubTypes <em>Sub Types</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceUnit <em>Persistence Unit</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity()
+ * @generated
+ */
+public interface LEntity extends LClass, LFeaturesHolder {
+	/**
+	 * Returns the value of the '<em><b>Cacheable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cacheable</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cacheable</em>' attribute.
+	 * @see #setCacheable(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_Cacheable()
+	 * @generated
+	 */
+	boolean isCacheable();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isCacheable <em>Cacheable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cacheable</em>' attribute.
+	 * @see #isCacheable()
+	 * @generated
+	 */
+	void setCacheable(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Historized</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Historized</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Historized</em>' attribute.
+	 * @see #setHistorized(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_Historized()
+	 * @generated
+	 */
+	boolean isHistorized();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isHistorized <em>Historized</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Historized</em>' attribute.
+	 * @see #isHistorized()
+	 * @generated
+	 */
+	void setHistorized(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Timedependent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Timedependent</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Timedependent</em>' attribute.
+	 * @see #setTimedependent(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_Timedependent()
+	 * @generated
+	 */
+	boolean isTimedependent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isTimedependent <em>Timedependent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Timedependent</em>' attribute.
+	 * @see #isTimedependent()
+	 * @generated
+	 */
+	void setTimedependent(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Timedependent Date Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.common.types.LDateType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Timedependent Date Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Timedependent Date Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+	 * @see #setTimedependentDateType(LDateType)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_TimedependentDateType()
+	 * @generated
+	 */
+	LDateType getTimedependentDateType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getTimedependentDateType <em>Timedependent Date Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Timedependent Date Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.common.types.LDateType
+	 * @see #getTimedependentDateType()
+	 * @generated
+	 */
+	void setTimedependentDateType(LDateType value);
+
+	/**
+	 * Returns the value of the '<em><b>Mapped Superclass</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mapped Superclass</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mapped Superclass</em>' attribute.
+	 * @see #setMappedSuperclass(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_MappedSuperclass()
+	 * @generated
+	 */
+	boolean isMappedSuperclass();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isMappedSuperclass <em>Mapped Superclass</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mapped Superclass</em>' attribute.
+	 * @see #isMappedSuperclass()
+	 * @generated
+	 */
+	void setMappedSuperclass(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Persistence Info</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>Persistence Info</em>' containment reference.
+	 * @see #setPersistenceInfo(LEntityPersistenceInfo)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_PersistenceInfo()
+	 * @generated
+	 */
+	LEntityPersistenceInfo getPersistenceInfo();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceInfo <em>Persistence Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Persistence Info</em>' containment reference.
+	 * @see #getPersistenceInfo()
+	 * @generated
+	 */
+	void setPersistenceInfo(LEntityPersistenceInfo value);
+
+	/**
+	 * Returns the value of the '<em><b>Inheritance Strategy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inheritance Strategy</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>Inheritance Strategy</em>' containment reference.
+	 * @see #setInheritanceStrategy(LEntityInheritanceStrategy)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_InheritanceStrategy()
+	 * @generated
+	 */
+	LEntityInheritanceStrategy getInheritanceStrategy();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inheritance Strategy</em>' containment reference.
+	 * @see #getInheritanceStrategy()
+	 * @generated
+	 */
+	void setInheritanceStrategy(LEntityInheritanceStrategy value);
+
+	/**
+	 * Returns the value of the '<em><b>Features</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Features</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>Features</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_Features()
+	 * @generated
+	 */
+	EList<LEntityFeature> getFeatures();
+
+	/**
+	 * Returns the value of the '<em><b>Indexes</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.entity.LIndex}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Indexes</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>Indexes</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_Indexes()
+	 * @generated
+	 */
+	EList<LIndex> getIndexes();
+
+	/**
+	 * Returns the value of the '<em><b>Super Type</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSubTypes <em>Sub Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type</em>' reference.
+	 * @see #setSuperType(LEntity)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_SuperType()
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getSubTypes
+	 * @generated
+	 */
+	LEntity getSuperType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperType <em>Super Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type</em>' reference.
+	 * @see #getSuperType()
+	 * @generated
+	 */
+	void setSuperType(LEntity value);
+
+	/**
+	 * Returns the value of the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Super Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Super Type Jvm</em>' containment reference.
+	 * @see #setSuperTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_SuperTypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getSuperTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperTypeJvm <em>Super Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Super Type Jvm</em>' containment reference.
+	 * @see #getSuperTypeJvm()
+	 * @generated
+	 */
+	void setSuperTypeJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Sub Types</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.entity.LEntity}.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperType <em>Super Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Types</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub Types</em>' reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_SubTypes()
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperType
+	 * @generated
+	 */
+	EList<LEntity> getSubTypes();
+
+	/**
+	 * Returns the value of the '<em><b>Persistence Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Persistence Unit</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Persistence Unit</em>' attribute.
+	 * @see #setPersistenceUnit(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntity_PersistenceUnit()
+	 * @generated
+	 */
+	String getPersistenceUnit();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceUnit <em>Persistence Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Persistence Unit</em>' attribute.
+	 * @see #getPersistenceUnit()
+	 * @generated
+	 */
+	void setPersistenceUnit(String value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LOperation
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LOperation> getOperations();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LEntityReference
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LEntityReference> getReferences();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of type LEntityAttribute
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LEntityAttribute> getAttributes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all features of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LEntityFeature> getAllFeatures();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all attributes of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LEntityAttribute> getAllAttributes();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * <!-- begin-model-doc -->
+	 * *
+	 * Returns all references of the holder and from super types
+	 * <!-- end-model-doc -->
+	 * @generated
+	 */
+	List<LEntityReference> getAllReferences();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	void collectAllOSBPFeatures(LEntity current, List<LEntityFeature> result);
+
+} // LEntity
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityAttribute.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityAttribute.java
new file mode 100644
index 0000000..d5f3195
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityAttribute.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getOpposite <em>Opposite</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getTypedName <em>Typed Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityAttribute()
+ * @generated
+ */
+public interface LEntityAttribute extends LEntityFeature, LAttribute {
+	/**
+	 * Returns the value of the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Opposite</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Opposite</em>' reference.
+	 * @see #setOpposite(LBeanReference)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityAttribute_Opposite()
+	 * @generated
+	 */
+	LBeanReference getOpposite();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getOpposite <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Opposite</em>' reference.
+	 * @see #getOpposite()
+	 * @generated
+	 */
+	void setOpposite(LBeanReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Typed Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Typed 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>Typed Name</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityAttribute_TypedName()
+	 * @generated
+	 */
+	String getTypedName();
+
+} // LEntityAttribute
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityColumnPersistenceInfo.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityColumnPersistenceInfo.java
new file mode 100644
index 0000000..ebc0fac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityColumnPersistenceInfo.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Column Persistence Info</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo#getColumnName <em>Column Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityColumnPersistenceInfo()
+ * @generated
+ */
+public interface LEntityColumnPersistenceInfo extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Column Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Column 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>Column Name</em>' attribute.
+	 * @see #setColumnName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityColumnPersistenceInfo_ColumnName()
+	 * @generated
+	 */
+	String getColumnName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo#getColumnName <em>Column Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Column Name</em>' attribute.
+	 * @see #getColumnName()
+	 * @generated
+	 */
+	void setColumnName(String value);
+
+} // LEntityColumnPersistenceInfo
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityFeature.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityFeature.java
new file mode 100644
index 0000000..fa88ba9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityFeature.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Feature</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature#getPersistenceInfo <em>Persistence Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityFeature()
+ * @generated
+ */
+public interface LEntityFeature extends LFeature {
+	/**
+	 * Returns the value of the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Persistence Info</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>Persistence Info</em>' containment reference.
+	 * @see #setPersistenceInfo(LEntityColumnPersistenceInfo)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityFeature_PersistenceInfo()
+	 * @generated
+	 */
+	LEntityColumnPersistenceInfo getPersistenceInfo();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature#getPersistenceInfo <em>Persistence Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Persistence Info</em>' containment reference.
+	 * @see #getPersistenceInfo()
+	 * @generated
+	 */
+	void setPersistenceInfo(LEntityColumnPersistenceInfo value);
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LEntity getEntity();
+
+} // LEntityFeature
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityInheritanceStrategy.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityInheritanceStrategy.java
new file mode 100644
index 0000000..bf8cd32
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityInheritanceStrategy.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Inheritance Strategy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityInheritanceStrategy()
+ * @generated
+ */
+public interface LEntityInheritanceStrategy extends LLazyResolver {
+} // LEntityInheritanceStrategy
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityModel.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityModel.java
new file mode 100644
index 0000000..c26f51f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityModel.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityModel()
+ * @generated
+ */
+public interface LEntityModel 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.dsl.semantic.common.types.LTypedPackage}.
+	 * <!-- 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.dsl.semantic.entity.OSBPEntityPackage#getLEntityModel_Packages()
+	 * @generated
+	 */
+	EList<LTypedPackage> getPackages();
+
+} // LEntityModel
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityPersistenceInfo.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityPersistenceInfo.java
new file mode 100644
index 0000000..073c565
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityPersistenceInfo.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Persistence Info</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getSchemaName <em>Schema Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getTableName <em>Table Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityPersistenceInfo()
+ * @generated
+ */
+public interface LEntityPersistenceInfo extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Schema Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Schema 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>Schema Name</em>' attribute.
+	 * @see #setSchemaName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityPersistenceInfo_SchemaName()
+	 * @generated
+	 */
+	String getSchemaName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getSchemaName <em>Schema Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Schema Name</em>' attribute.
+	 * @see #getSchemaName()
+	 * @generated
+	 */
+	void setSchemaName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Table Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Table 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>Table Name</em>' attribute.
+	 * @see #setTableName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityPersistenceInfo_TableName()
+	 * @generated
+	 */
+	String getTableName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getTableName <em>Table Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Table Name</em>' attribute.
+	 * @see #getTableName()
+	 * @generated
+	 */
+	void setTableName(String value);
+
+} // LEntityPersistenceInfo
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityReference.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityReference.java
new file mode 100644
index 0000000..fe6b3aa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LEntityReference.java
@@ -0,0 +1,140 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LEntity Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getOpposite <em>Opposite</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getResultFilters <em>Result Filters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityReference()
+ * @generated
+ */
+public interface LEntityReference extends LEntityFeature, LReference {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' reference.
+	 * @see #setType(LEntity)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityReference_Type()
+	 * @generated
+	 */
+	LEntity getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getType <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' reference.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(LEntity value);
+
+	/**
+	 * Returns the value of the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #setTypeJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityReference_TypeJvm()
+	 * @generated
+	 */
+	JvmTypeReference getTypeJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getTypeJvm <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type Jvm</em>' containment reference.
+	 * @see #getTypeJvm()
+	 * @generated
+	 */
+	void setTypeJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Opposite</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Opposite</em>' reference.
+	 * @see #setOpposite(LEntityReference)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityReference_Opposite()
+	 * @generated
+	 */
+	LEntityReference getOpposite();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getOpposite <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Opposite</em>' reference.
+	 * @see #getOpposite()
+	 * @generated
+	 */
+	void setOpposite(LEntityReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Result Filters</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Result Filters</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>Result Filters</em>' containment reference.
+	 * @see #setResultFilters(LResultFilters)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLEntityReference_ResultFilters()
+	 * @generated
+	 */
+	LResultFilters getResultFilters();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getResultFilters <em>Result Filters</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Result Filters</em>' containment reference.
+	 * @see #getResultFilters()
+	 * @generated
+	 */
+	void setResultFilters(LResultFilters value);
+
+} // LEntityReference
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LIndex.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LIndex.java
new file mode 100644
index 0000000..29cd16a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LIndex.java
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LIndex</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#isUnique <em>Unique</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#getFeatures <em>Features</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLIndex()
+ * @generated
+ */
+public interface LIndex extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Unique</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Unique</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Unique</em>' attribute.
+	 * @see #setUnique(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLIndex_Unique()
+	 * @generated
+	 */
+	boolean isUnique();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#isUnique <em>Unique</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Unique</em>' attribute.
+	 * @see #isUnique()
+	 * @generated
+	 */
+	void setUnique(boolean value);
+
+	/**
+	 * 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.dsl.semantic.entity.OSBPEntityPackage#getLIndex_Name()
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#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);
+
+	/**
+	 * Returns the value of the '<em><b>Features</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Features</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Features</em>' reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLIndex_Features()
+	 * @generated
+	 */
+	EList<LEntityFeature> getFeatures();
+
+} // LIndex
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LOperation.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LOperation.java
new file mode 100644
index 0000000..f7b7796
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LOperation.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LOperation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * *
+ * Overwrites LOperation to add bean and entity feature as supertype
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLOperation()
+ * @generated
+ */
+public interface LOperation extends org.eclipse.osbp.dsl.semantic.common.types.LOperation, LBeanFeature, LEntityFeature {
+} // LOperation
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LTablePerClassStrategy.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LTablePerClassStrategy.java
new file mode 100644
index 0000000..8268330
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LTablePerClassStrategy.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LTable Per Class Strategy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorColumn <em>Discriminator Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorType <em>Discriminator Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorValue <em>Discriminator Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerClassStrategy()
+ * @generated
+ */
+public interface LTablePerClassStrategy extends LEntityInheritanceStrategy {
+	/**
+	 * Returns the value of the '<em><b>Discriminator Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Discriminator Column</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Discriminator Column</em>' attribute.
+	 * @see #setDiscriminatorColumn(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerClassStrategy_DiscriminatorColumn()
+	 * @generated
+	 */
+	String getDiscriminatorColumn();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorColumn <em>Discriminator Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Discriminator Column</em>' attribute.
+	 * @see #getDiscriminatorColumn()
+	 * @generated
+	 */
+	void setDiscriminatorColumn(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Discriminator Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Discriminator Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Discriminator Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+	 * @see #setDiscriminatorType(LDiscriminatorType)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerClassStrategy_DiscriminatorType()
+	 * @generated
+	 */
+	LDiscriminatorType getDiscriminatorType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorType <em>Discriminator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Discriminator Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+	 * @see #getDiscriminatorType()
+	 * @generated
+	 */
+	void setDiscriminatorType(LDiscriminatorType value);
+
+	/**
+	 * Returns the value of the '<em><b>Discriminator Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Discriminator 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>Discriminator Value</em>' attribute.
+	 * @see #setDiscriminatorValue(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerClassStrategy_DiscriminatorValue()
+	 * @generated
+	 */
+	String getDiscriminatorValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorValue <em>Discriminator Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Discriminator Value</em>' attribute.
+	 * @see #getDiscriminatorValue()
+	 * @generated
+	 */
+	void setDiscriminatorValue(String value);
+
+} // LTablePerClassStrategy
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LTablePerSubclassStrategy.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LTablePerSubclassStrategy.java
new file mode 100644
index 0000000..0c6d64a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/LTablePerSubclassStrategy.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LTable Per Subclass Strategy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorColumn <em>Discriminator Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorType <em>Discriminator Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorValue <em>Discriminator Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerSubclassStrategy()
+ * @generated
+ */
+public interface LTablePerSubclassStrategy extends LEntityInheritanceStrategy {
+	/**
+	 * Returns the value of the '<em><b>Discriminator Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Discriminator Column</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Discriminator Column</em>' attribute.
+	 * @see #setDiscriminatorColumn(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerSubclassStrategy_DiscriminatorColumn()
+	 * @generated
+	 */
+	String getDiscriminatorColumn();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorColumn <em>Discriminator Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Discriminator Column</em>' attribute.
+	 * @see #getDiscriminatorColumn()
+	 * @generated
+	 */
+	void setDiscriminatorColumn(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Discriminator Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Discriminator Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Discriminator Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+	 * @see #setDiscriminatorType(LDiscriminatorType)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerSubclassStrategy_DiscriminatorType()
+	 * @generated
+	 */
+	LDiscriminatorType getDiscriminatorType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorType <em>Discriminator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Discriminator Type</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+	 * @see #getDiscriminatorType()
+	 * @generated
+	 */
+	void setDiscriminatorType(LDiscriminatorType value);
+
+	/**
+	 * Returns the value of the '<em><b>Discriminator Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Discriminator 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>Discriminator Value</em>' attribute.
+	 * @see #setDiscriminatorValue(String)
+	 * @see org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage#getLTablePerSubclassStrategy_DiscriminatorValue()
+	 * @generated
+	 */
+	String getDiscriminatorValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorValue <em>Discriminator Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Discriminator Value</em>' attribute.
+	 * @see #getDiscriminatorValue()
+	 * @generated
+	 */
+	void setDiscriminatorValue(String value);
+
+} // LTablePerSubclassStrategy
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/OSBPEntityFactory.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/OSBPEntityFactory.java
new file mode 100644
index 0000000..44178b4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/OSBPEntityFactory.java
@@ -0,0 +1,179 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+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.dsl.semantic.entity.OSBPEntityPackage
+ * @generated
+ */
+public interface OSBPEntityFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPEntityFactory eINSTANCE = org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>LEntity Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity Model</em>'.
+	 * @generated
+	 */
+	LEntityModel createLEntityModel();
+
+	/**
+	 * Returns a new object of class '<em>LBean</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LBean</em>'.
+	 * @generated
+	 */
+	LBean createLBean();
+
+	/**
+	 * Returns a new object of class '<em>LEntity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity</em>'.
+	 * @generated
+	 */
+	LEntity createLEntity();
+
+	/**
+	 * Returns a new object of class '<em>LEntity Persistence Info</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity Persistence Info</em>'.
+	 * @generated
+	 */
+	LEntityPersistenceInfo createLEntityPersistenceInfo();
+
+	/**
+	 * Returns a new object of class '<em>LEntity Column Persistence Info</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity Column Persistence Info</em>'.
+	 * @generated
+	 */
+	LEntityColumnPersistenceInfo createLEntityColumnPersistenceInfo();
+
+	/**
+	 * Returns a new object of class '<em>LTable Per Class Strategy</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LTable Per Class Strategy</em>'.
+	 * @generated
+	 */
+	LTablePerClassStrategy createLTablePerClassStrategy();
+
+	/**
+	 * Returns a new object of class '<em>LTable Per Subclass Strategy</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LTable Per Subclass Strategy</em>'.
+	 * @generated
+	 */
+	LTablePerSubclassStrategy createLTablePerSubclassStrategy();
+
+	/**
+	 * Returns a new object of class '<em>LEntity Feature</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity Feature</em>'.
+	 * @generated
+	 */
+	LEntityFeature createLEntityFeature();
+
+	/**
+	 * Returns a new object of class '<em>LEntity Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity Attribute</em>'.
+	 * @generated
+	 */
+	LEntityAttribute createLEntityAttribute();
+
+	/**
+	 * Returns a new object of class '<em>LEntity Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LEntity Reference</em>'.
+	 * @generated
+	 */
+	LEntityReference createLEntityReference();
+
+	/**
+	 * Returns a new object of class '<em>LBean Feature</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LBean Feature</em>'.
+	 * @generated
+	 */
+	LBeanFeature createLBeanFeature();
+
+	/**
+	 * Returns a new object of class '<em>LBean Attribute</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LBean Attribute</em>'.
+	 * @generated
+	 */
+	LBeanAttribute createLBeanAttribute();
+
+	/**
+	 * Returns a new object of class '<em>LBean Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LBean Reference</em>'.
+	 * @generated
+	 */
+	LBeanReference createLBeanReference();
+
+	/**
+	 * Returns a new object of class '<em>LIndex</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LIndex</em>'.
+	 * @generated
+	 */
+	LIndex createLIndex();
+
+	/**
+	 * Returns a new object of class '<em>LOperation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LOperation</em>'.
+	 * @generated
+	 */
+	LOperation createLOperation();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	OSBPEntityPackage getOSBPEntityPackage();
+
+} //OSBPEntityFactory
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/OSBPEntityPackage.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/OSBPEntityPackage.java
new file mode 100644
index 0000000..dbff351
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/OSBPEntityPackage.java
@@ -0,0 +1,3790 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+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.dsl.semantic.entity.OSBPEntityFactory
+ * @generated
+ */
+public interface OSBPEntityPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "entity";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/dsl/entity/v1";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "entity";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPEntityPackage eINSTANCE = org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityModelImpl <em>LEntity Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityModelImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityModel()
+	 * @generated
+	 */
+	int LENTITY_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_MODEL__PACKAGES = 0;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>LEntity Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_MODEL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl <em>LBean</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBean()
+	 * @generated
+	 */
+	int LBEAN = 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__ANNOTATIONS = OSBPTypesPackage.LCLASS__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__NAME = OSBPTypesPackage.LCLASS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__ANNOTATION_INFO = OSBPTypesPackage.LCLASS__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__ABSTRACT = OSBPTypesPackage.LCLASS__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__SERIALIZABLE = OSBPTypesPackage.LCLASS__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__SHORT_NAME = OSBPTypesPackage.LCLASS__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__FEATURES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Super Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__SUPER_TYPE = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__SUPER_TYPE_JVM = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Sub Types</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN__SUB_TYPES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LBean</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE_COUNT = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LCLASS___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_RESOLVED_ANNOTATIONS = OSBPTypesPackage.LCLASS___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_FEATURES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Operations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_OPERATIONS = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Get References</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_REFERENCES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Get Attributes</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_ATTRIBUTES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Get All Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_ALL_FEATURES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Get All Attributes</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_ALL_ATTRIBUTES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Get All References</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___GET_ALL_REFERENCES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Collect All OSBP Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN___COLLECT_ALL_OSBP_FEATURES__LBEAN_LIST = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 8;
+
+	/**
+	 * The number of operations of the '<em>LBean</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_OPERATION_COUNT = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 9;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl <em>LEntity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntity()
+	 * @generated
+	 */
+	int LENTITY = 2;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__ANNOTATIONS = OSBPTypesPackage.LCLASS__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__NAME = OSBPTypesPackage.LCLASS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__ANNOTATION_INFO = OSBPTypesPackage.LCLASS__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__ABSTRACT = OSBPTypesPackage.LCLASS__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__SERIALIZABLE = OSBPTypesPackage.LCLASS__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__SHORT_NAME = OSBPTypesPackage.LCLASS__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Cacheable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__CACHEABLE = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Historized</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__HISTORIZED = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Timedependent</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__TIMEDEPENDENT = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Timedependent Date Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__TIMEDEPENDENT_DATE_TYPE = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Mapped Superclass</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__MAPPED_SUPERCLASS = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__PERSISTENCE_INFO = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Inheritance Strategy</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__INHERITANCE_STRATEGY = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Features</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__FEATURES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Indexes</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__INDEXES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Super Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__SUPER_TYPE = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Super Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__SUPER_TYPE_JVM = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Sub Types</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__SUB_TYPES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Unit</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY__PERSISTENCE_UNIT = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 12;
+
+	/**
+	 * The number of structural features of the '<em>LEntity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE_COUNT = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 13;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LCLASS___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_RESOLVED_ANNOTATIONS = OSBPTypesPackage.LCLASS___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_FEATURES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Operations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_OPERATIONS = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Get References</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_REFERENCES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Get Attributes</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_ATTRIBUTES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>Get All Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_ALL_FEATURES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 5;
+
+	/**
+	 * The operation id for the '<em>Get All Attributes</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_ALL_ATTRIBUTES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Get All References</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___GET_ALL_REFERENCES = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 7;
+
+	/**
+	 * The operation id for the '<em>Collect All OSBP Features</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY___COLLECT_ALL_OSBP_FEATURES__LENTITY_LIST = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 8;
+
+	/**
+	 * The number of operations of the '<em>LEntity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_OPERATION_COUNT = OSBPTypesPackage.LCLASS_OPERATION_COUNT + 9;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityPersistenceInfoImpl <em>LEntity Persistence Info</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityPersistenceInfoImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityPersistenceInfo()
+	 * @generated
+	 */
+	int LENTITY_PERSISTENCE_INFO = 3;
+
+	/**
+	 * The feature id for the '<em><b>Schema Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_PERSISTENCE_INFO__SCHEMA_NAME = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Table Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_PERSISTENCE_INFO__TABLE_NAME = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Persistence Info</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_PERSISTENCE_INFO_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_PERSISTENCE_INFO___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LEntity Persistence Info</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_PERSISTENCE_INFO_OPERATION_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityColumnPersistenceInfoImpl <em>LEntity Column Persistence Info</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityColumnPersistenceInfoImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityColumnPersistenceInfo()
+	 * @generated
+	 */
+	int LENTITY_COLUMN_PERSISTENCE_INFO = 4;
+
+	/**
+	 * The feature id for the '<em><b>Column Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Column Persistence Info</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_COLUMN_PERSISTENCE_INFO_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_COLUMN_PERSISTENCE_INFO___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LEntity Column Persistence Info</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_COLUMN_PERSISTENCE_INFO_OPERATION_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy <em>LEntity Inheritance Strategy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityInheritanceStrategy()
+	 * @generated
+	 */
+	int LENTITY_INHERITANCE_STRATEGY = 5;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Inheritance Strategy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_INHERITANCE_STRATEGY___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LLAZY_RESOLVER___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LEntity Inheritance Strategy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_INHERITANCE_STRATEGY_OPERATION_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl <em>LTable Per Class Strategy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLTablePerClassStrategy()
+	 * @generated
+	 */
+	int LTABLE_PER_CLASS_STRATEGY = 6;
+
+	/**
+	 * The feature id for the '<em><b>Discriminator Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Discriminator Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Discriminator Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LTable Per Class Strategy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_CLASS_STRATEGY_FEATURE_COUNT = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_CLASS_STRATEGY___ERESOLVE_PROXY__INTERNALEOBJECT = LENTITY_INHERITANCE_STRATEGY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LTable Per Class Strategy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_CLASS_STRATEGY_OPERATION_COUNT = LENTITY_INHERITANCE_STRATEGY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl <em>LTable Per Subclass Strategy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLTablePerSubclassStrategy()
+	 * @generated
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY = 7;
+
+	/**
+	 * The feature id for the '<em><b>Discriminator Column</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Discriminator Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Discriminator Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LTable Per Subclass Strategy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY_FEATURE_COUNT = LENTITY_INHERITANCE_STRATEGY_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY___ERESOLVE_PROXY__INTERNALEOBJECT = LENTITY_INHERITANCE_STRATEGY___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The number of operations of the '<em>LTable Per Subclass Strategy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LTABLE_PER_SUBCLASS_STRATEGY_OPERATION_COUNT = LENTITY_INHERITANCE_STRATEGY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl <em>LEntity Feature</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityFeature()
+	 * @generated
+	 */
+	int LENTITY_FEATURE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE__ANNOTATIONS = OSBPTypesPackage.LFEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE__NAME = OSBPTypesPackage.LFEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE__MULTIPLICITY = OSBPTypesPackage.LFEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE__ANNOTATION_INFO = OSBPTypesPackage.LFEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE__PERSISTENCE_INFO = OSBPTypesPackage.LFEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Feature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE_FEATURE_COUNT = OSBPTypesPackage.LFEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LFEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE___GET_RESOLVED_ANNOTATIONS = OSBPTypesPackage.LFEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Entity</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE___GET_ENTITY = OSBPTypesPackage.LFEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LEntity Feature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_FEATURE_OPERATION_COUNT = OSBPTypesPackage.LFEATURE_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl <em>LEntity Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityAttribute()
+	 * @generated
+	 */
+	int LENTITY_ATTRIBUTE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__ANNOTATIONS = LENTITY_FEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__NAME = LENTITY_FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__MULTIPLICITY = LENTITY_FEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__ANNOTATION_INFO = LENTITY_FEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__PERSISTENCE_INFO = LENTITY_FEATURE__PERSISTENCE_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__ID = LENTITY_FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__UUID = LENTITY_FEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__VERSION = LENTITY_FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__LAZY = LENTITY_FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__CASCADING = LENTITY_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__TRANSIENT = LENTITY_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__DERIVED = LENTITY_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__DIRTY = LENTITY_FEATURE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__DOMAIN_KEY = LENTITY_FEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION = LENTITY_FEATURE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LENTITY_FEATURE_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__TYPE = LENTITY_FEATURE_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__TYPE_JVM = LENTITY_FEATURE_FEATURE_COUNT + 12;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__PROPERTIES = LENTITY_FEATURE_FEATURE_COUNT + 13;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__CONSTRAINTS = LENTITY_FEATURE_FEATURE_COUNT + 14;
+
+	/**
+	 * The feature id for the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__OPPOSITE = LENTITY_FEATURE_FEATURE_COUNT + 15;
+
+	/**
+	 * The feature id for the '<em><b>Typed Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE__TYPED_NAME = LENTITY_FEATURE_FEATURE_COUNT + 16;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE_FEATURE_COUNT = LENTITY_FEATURE_FEATURE_COUNT + 17;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = LENTITY_FEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE___GET_RESOLVED_ANNOTATIONS = LENTITY_FEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Entity</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE___GET_ENTITY = LENTITY_FEATURE___GET_ENTITY;
+
+	/**
+	 * The number of operations of the '<em>LEntity Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_ATTRIBUTE_OPERATION_COUNT = LENTITY_FEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl <em>LEntity Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityReference()
+	 * @generated
+	 */
+	int LENTITY_REFERENCE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__ANNOTATIONS = LENTITY_FEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__NAME = LENTITY_FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__MULTIPLICITY = LENTITY_FEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__ANNOTATION_INFO = LENTITY_FEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__PERSISTENCE_INFO = LENTITY_FEATURE__PERSISTENCE_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__LAZY = LENTITY_FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__CASCADING = LENTITY_FEATURE_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 LENTITY_REFERENCE__PROPERTIES = LENTITY_FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__CONSTRAINTS = LENTITY_FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__TYPE = LENTITY_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__TYPE_JVM = LENTITY_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__OPPOSITE = LENTITY_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Result Filters</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE__RESULT_FILTERS = LENTITY_FEATURE_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>LEntity Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE_FEATURE_COUNT = LENTITY_FEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE___ERESOLVE_PROXY__INTERNALEOBJECT = LENTITY_FEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE___GET_RESOLVED_ANNOTATIONS = LENTITY_FEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Entity</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE___GET_ENTITY = LENTITY_FEATURE___GET_ENTITY;
+
+	/**
+	 * The number of operations of the '<em>LEntity Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LENTITY_REFERENCE_OPERATION_COUNT = LENTITY_FEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl <em>LBean Feature</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBeanFeature()
+	 * @generated
+	 */
+	int LBEAN_FEATURE = 11;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE__ANNOTATIONS = OSBPTypesPackage.LFEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE__NAME = OSBPTypesPackage.LFEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE__MULTIPLICITY = OSBPTypesPackage.LFEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE__ANNOTATION_INFO = OSBPTypesPackage.LFEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The number of structural features of the '<em>LBean Feature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE_FEATURE_COUNT = OSBPTypesPackage.LFEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LFEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE___GET_RESOLVED_ANNOTATIONS = OSBPTypesPackage.LFEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Bean</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE___GET_BEAN = OSBPTypesPackage.LFEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LBean Feature</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_FEATURE_OPERATION_COUNT = OSBPTypesPackage.LFEATURE_OPERATION_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl <em>LBean Attribute</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBeanAttribute()
+	 * @generated
+	 */
+	int LBEAN_ATTRIBUTE = 12;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__ANNOTATIONS = LBEAN_FEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__NAME = LBEAN_FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__MULTIPLICITY = LBEAN_FEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__ANNOTATION_INFO = LBEAN_FEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__ID = LBEAN_FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Uuid</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__UUID = LBEAN_FEATURE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Version</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__VERSION = LBEAN_FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__LAZY = LBEAN_FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__CASCADING = LBEAN_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Transient</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__TRANSIENT = LBEAN_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Derived</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__DERIVED = LBEAN_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Dirty</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__DIRTY = LBEAN_FEATURE_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Domain Key</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__DOMAIN_KEY = LBEAN_FEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Domain Description</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION = LBEAN_FEATURE_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Derived Getter Expression</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION = LBEAN_FEATURE_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__TYPE = LBEAN_FEATURE_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__TYPE_JVM = LBEAN_FEATURE_FEATURE_COUNT + 12;
+
+	/**
+	 * The feature id for the '<em><b>Properties</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__PROPERTIES = LBEAN_FEATURE_FEATURE_COUNT + 13;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__CONSTRAINTS = LBEAN_FEATURE_FEATURE_COUNT + 14;
+
+	/**
+	 * The feature id for the '<em><b>Typed Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE__TYPED_NAME = LBEAN_FEATURE_FEATURE_COUNT + 15;
+
+	/**
+	 * The number of structural features of the '<em>LBean Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE_FEATURE_COUNT = LBEAN_FEATURE_FEATURE_COUNT + 16;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE___ERESOLVE_PROXY__INTERNALEOBJECT = LBEAN_FEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE___GET_RESOLVED_ANNOTATIONS = LBEAN_FEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Bean</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE___GET_BEAN = LBEAN_FEATURE___GET_BEAN;
+
+	/**
+	 * The number of operations of the '<em>LBean Attribute</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_ATTRIBUTE_OPERATION_COUNT = LBEAN_FEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl <em>LBean Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBeanReference()
+	 * @generated
+	 */
+	int LBEAN_REFERENCE = 13;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__ANNOTATIONS = LBEAN_FEATURE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__NAME = LBEAN_FEATURE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__MULTIPLICITY = LBEAN_FEATURE__MULTIPLICITY;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__ANNOTATION_INFO = LBEAN_FEATURE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Lazy</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__LAZY = LBEAN_FEATURE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Cascading</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__CASCADING = LBEAN_FEATURE_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 LBEAN_REFERENCE__PROPERTIES = LBEAN_FEATURE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Constraints</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__CONSTRAINTS = LBEAN_FEATURE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__TYPE = LBEAN_FEATURE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Opposite</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__OPPOSITE = LBEAN_FEATURE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Type Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__TYPE_JVM = LBEAN_FEATURE_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Result Filters</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE__RESULT_FILTERS = LBEAN_FEATURE_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>LBean Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE_FEATURE_COUNT = LBEAN_FEATURE_FEATURE_COUNT + 8;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE___ERESOLVE_PROXY__INTERNALEOBJECT = LBEAN_FEATURE___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE___GET_RESOLVED_ANNOTATIONS = LBEAN_FEATURE___GET_RESOLVED_ANNOTATIONS;
+
+	/**
+	 * The operation id for the '<em>Get Bean</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE___GET_BEAN = LBEAN_FEATURE___GET_BEAN;
+
+	/**
+	 * The number of operations of the '<em>LBean Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LBEAN_REFERENCE_OPERATION_COUNT = LBEAN_FEATURE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl <em>LIndex</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLIndex()
+	 * @generated
+	 */
+	int LINDEX = 14;
+
+	/**
+	 * The feature id for the '<em><b>Unique</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINDEX__UNIQUE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINDEX__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Features</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINDEX__FEATURES = 2;
+
+	/**
+	 * The number of structural features of the '<em>LIndex</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINDEX_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>LIndex</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINDEX_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl <em>LOperation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLOperation()
+	 * @generated
+	 */
+	int LOPERATION = 15;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__ANNOTATIONS = OSBPTypesPackage.LOPERATION__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Modifier</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__MODIFIER = OSBPTypesPackage.LOPERATION__MODIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__TYPE = OSBPTypesPackage.LOPERATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__PARAMS = OSBPTypesPackage.LOPERATION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__BODY = OSBPTypesPackage.LOPERATION__BODY;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__NAME = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__MULTIPLICITY = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__ANNOTATION_INFO = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION__PERSISTENCE_INFO = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LOperation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION_FEATURE_COUNT = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 4;
+
+	/**
+	 * The operation id for the '<em>EResolve Proxy</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LOPERATION___ERESOLVE_PROXY__INTERNALEOBJECT;
+
+	/**
+	 * The operation id for the '<em>Get Resolved Annotations</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION___GET_RESOLVED_ANNOTATIONS = OSBPTypesPackage.LOPERATION_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Get Bean</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION___GET_BEAN = OSBPTypesPackage.LOPERATION_OPERATION_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Get Entity</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION___GET_ENTITY = OSBPTypesPackage.LOPERATION_OPERATION_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>LOperation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOPERATION_OPERATION_COUNT = OSBPTypesPackage.LOPERATION_OPERATION_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType <em>LDiscriminator Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLDiscriminatorType()
+	 * @generated
+	 */
+	int LDISCRIMINATOR_TYPE = 16;
+
+	/**
+	 * 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.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getInternalEObject()
+	 * @generated
+	 */
+	int INTERNAL_EOBJECT = 17;
+
+	/**
+	 * The meta object id for the '<em>Operations List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getOperationsList()
+	 * @generated
+	 */
+	int OPERATIONS_LIST = 18;
+
+	/**
+	 * The meta object id for the '<em>Entity Feature List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getEntityFeatureList()
+	 * @generated
+	 */
+	int ENTITY_FEATURE_LIST = 19;
+
+	/**
+	 * The meta object id for the '<em>Entity Reference List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getEntityReferenceList()
+	 * @generated
+	 */
+	int ENTITY_REFERENCE_LIST = 20;
+
+	/**
+	 * The meta object id for the '<em>Entity Attribute List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getEntityAttributeList()
+	 * @generated
+	 */
+	int ENTITY_ATTRIBUTE_LIST = 21;
+
+	/**
+	 * The meta object id for the '<em>Bean Feature List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getBeanFeatureList()
+	 * @generated
+	 */
+	int BEAN_FEATURE_LIST = 22;
+
+	/**
+	 * The meta object id for the '<em>Bean Reference List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getBeanReferenceList()
+	 * @generated
+	 */
+	int BEAN_REFERENCE_LIST = 23;
+
+	/**
+	 * The meta object id for the '<em>Bean Attribute List</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.util.List
+	 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getBeanAttributeList()
+	 * @generated
+	 */
+	int BEAN_ATTRIBUTE_LIST = 24;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityModel <em>LEntity Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Model</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityModel
+	 * @generated
+	 */
+	EClass getLEntityModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityModel#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.dsl.semantic.entity.LEntityModel#getPackages()
+	 * @see #getLEntityModel()
+	 * @generated
+	 */
+	EReference getLEntityModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LBean <em>LBean</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LBean</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean
+	 * @generated
+	 */
+	EClass getLBean();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getFeatures <em>Features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Features</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getFeatures()
+	 * @see #getLBean()
+	 * @generated
+	 */
+	EReference getLBean_Features();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperType <em>Super Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Super Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperType()
+	 * @see #getLBean()
+	 * @generated
+	 */
+	EReference getLBean_SuperType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperTypeJvm <em>Super Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Super Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getSuperTypeJvm()
+	 * @see #getLBean()
+	 * @generated
+	 */
+	EReference getLBean_SuperTypeJvm();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getSubTypes <em>Sub Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Sub Types</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getSubTypes()
+	 * @see #getLBean()
+	 * @generated
+	 */
+	EReference getLBean_SubTypes();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getOperations() <em>Get Operations</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Operations</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getOperations()
+	 * @generated
+	 */
+	EOperation getLBean__GetOperations();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getReferences() <em>Get References</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get References</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getReferences()
+	 * @generated
+	 */
+	EOperation getLBean__GetReferences();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getAttributes() <em>Get Attributes</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Attributes</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getAttributes()
+	 * @generated
+	 */
+	EOperation getLBean__GetAttributes();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getAllFeatures() <em>Get All Features</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All Features</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getAllFeatures()
+	 * @generated
+	 */
+	EOperation getLBean__GetAllFeatures();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getAllAttributes() <em>Get All Attributes</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All Attributes</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getAllAttributes()
+	 * @generated
+	 */
+	EOperation getLBean__GetAllAttributes();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#getAllReferences() <em>Get All References</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All References</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#getAllReferences()
+	 * @generated
+	 */
+	EOperation getLBean__GetAllReferences();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBean#collectAllOSBPFeatures(org.eclipse.osbp.dsl.semantic.entity.LBean, java.util.List) <em>Collect All OSBP Features</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Collect All OSBP Features</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBean#collectAllOSBPFeatures(org.eclipse.osbp.dsl.semantic.entity.LBean, java.util.List)
+	 * @generated
+	 */
+	EOperation getLBean__CollectAllOSBPFeatures__LBean_List();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity <em>LEntity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity
+	 * @generated
+	 */
+	EClass getLEntity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isCacheable <em>Cacheable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cacheable</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#isCacheable()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EAttribute getLEntity_Cacheable();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isHistorized <em>Historized</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Historized</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#isHistorized()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EAttribute getLEntity_Historized();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isTimedependent <em>Timedependent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Timedependent</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#isTimedependent()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EAttribute getLEntity_Timedependent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getTimedependentDateType <em>Timedependent Date Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Timedependent Date Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getTimedependentDateType()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EAttribute getLEntity_TimedependentDateType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#isMappedSuperclass <em>Mapped Superclass</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mapped Superclass</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#isMappedSuperclass()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EAttribute getLEntity_MappedSuperclass();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceInfo <em>Persistence Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Persistence Info</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceInfo()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_PersistenceInfo();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getInheritanceStrategy <em>Inheritance Strategy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Inheritance Strategy</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getInheritanceStrategy()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_InheritanceStrategy();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getFeatures <em>Features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Features</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getFeatures()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_Features();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getIndexes <em>Indexes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Indexes</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getIndexes()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_Indexes();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperType <em>Super Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Super Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperType()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_SuperType();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperTypeJvm <em>Super Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Super Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getSuperTypeJvm()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_SuperTypeJvm();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getSubTypes <em>Sub Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Sub Types</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getSubTypes()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EReference getLEntity_SubTypes();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceUnit <em>Persistence Unit</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Persistence Unit</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getPersistenceUnit()
+	 * @see #getLEntity()
+	 * @generated
+	 */
+	EAttribute getLEntity_PersistenceUnit();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getOperations() <em>Get Operations</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Operations</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getOperations()
+	 * @generated
+	 */
+	EOperation getLEntity__GetOperations();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getReferences() <em>Get References</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get References</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getReferences()
+	 * @generated
+	 */
+	EOperation getLEntity__GetReferences();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getAttributes() <em>Get Attributes</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Attributes</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getAttributes()
+	 * @generated
+	 */
+	EOperation getLEntity__GetAttributes();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getAllFeatures() <em>Get All Features</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All Features</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getAllFeatures()
+	 * @generated
+	 */
+	EOperation getLEntity__GetAllFeatures();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getAllAttributes() <em>Get All Attributes</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All Attributes</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getAllAttributes()
+	 * @generated
+	 */
+	EOperation getLEntity__GetAllAttributes();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#getAllReferences() <em>Get All References</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get All References</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#getAllReferences()
+	 * @generated
+	 */
+	EOperation getLEntity__GetAllReferences();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity#collectAllOSBPFeatures(org.eclipse.osbp.dsl.semantic.entity.LEntity, java.util.List) <em>Collect All OSBP Features</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Collect All OSBP Features</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntity#collectAllOSBPFeatures(org.eclipse.osbp.dsl.semantic.entity.LEntity, java.util.List)
+	 * @generated
+	 */
+	EOperation getLEntity__CollectAllOSBPFeatures__LEntity_List();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo <em>LEntity Persistence Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Persistence Info</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo
+	 * @generated
+	 */
+	EClass getLEntityPersistenceInfo();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getSchemaName <em>Schema Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Schema Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getSchemaName()
+	 * @see #getLEntityPersistenceInfo()
+	 * @generated
+	 */
+	EAttribute getLEntityPersistenceInfo_SchemaName();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getTableName <em>Table Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Table Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo#getTableName()
+	 * @see #getLEntityPersistenceInfo()
+	 * @generated
+	 */
+	EAttribute getLEntityPersistenceInfo_TableName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo <em>LEntity Column Persistence Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Column Persistence Info</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo
+	 * @generated
+	 */
+	EClass getLEntityColumnPersistenceInfo();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo#getColumnName <em>Column Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Column Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo#getColumnName()
+	 * @see #getLEntityColumnPersistenceInfo()
+	 * @generated
+	 */
+	EAttribute getLEntityColumnPersistenceInfo_ColumnName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy <em>LEntity Inheritance Strategy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Inheritance Strategy</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy
+	 * @generated
+	 */
+	EClass getLEntityInheritanceStrategy();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy <em>LTable Per Class Strategy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LTable Per Class Strategy</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy
+	 * @generated
+	 */
+	EClass getLTablePerClassStrategy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorColumn <em>Discriminator Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Discriminator Column</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorColumn()
+	 * @see #getLTablePerClassStrategy()
+	 * @generated
+	 */
+	EAttribute getLTablePerClassStrategy_DiscriminatorColumn();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorType <em>Discriminator Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Discriminator Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorType()
+	 * @see #getLTablePerClassStrategy()
+	 * @generated
+	 */
+	EAttribute getLTablePerClassStrategy_DiscriminatorType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorValue <em>Discriminator Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Discriminator Value</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy#getDiscriminatorValue()
+	 * @see #getLTablePerClassStrategy()
+	 * @generated
+	 */
+	EAttribute getLTablePerClassStrategy_DiscriminatorValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy <em>LTable Per Subclass Strategy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LTable Per Subclass Strategy</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy
+	 * @generated
+	 */
+	EClass getLTablePerSubclassStrategy();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorColumn <em>Discriminator Column</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Discriminator Column</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorColumn()
+	 * @see #getLTablePerSubclassStrategy()
+	 * @generated
+	 */
+	EAttribute getLTablePerSubclassStrategy_DiscriminatorColumn();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorType <em>Discriminator Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Discriminator Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorType()
+	 * @see #getLTablePerSubclassStrategy()
+	 * @generated
+	 */
+	EAttribute getLTablePerSubclassStrategy_DiscriminatorType();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorValue <em>Discriminator Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Discriminator Value</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy#getDiscriminatorValue()
+	 * @see #getLTablePerSubclassStrategy()
+	 * @generated
+	 */
+	EAttribute getLTablePerSubclassStrategy_DiscriminatorValue();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature <em>LEntity Feature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Feature</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
+	 * @generated
+	 */
+	EClass getLEntityFeature();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature#getPersistenceInfo <em>Persistence Info</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Persistence Info</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityFeature#getPersistenceInfo()
+	 * @see #getLEntityFeature()
+	 * @generated
+	 */
+	EReference getLEntityFeature_PersistenceInfo();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature#getEntity() <em>Get Entity</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Entity</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityFeature#getEntity()
+	 * @generated
+	 */
+	EOperation getLEntityFeature__GetEntity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute <em>LEntity Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Attribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+	 * @generated
+	 */
+	EClass getLEntityAttribute();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getOpposite <em>Opposite</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Opposite</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getOpposite()
+	 * @see #getLEntityAttribute()
+	 * @generated
+	 */
+	EReference getLEntityAttribute_Opposite();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getTypedName <em>Typed Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Typed Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute#getTypedName()
+	 * @see #getLEntityAttribute()
+	 * @generated
+	 */
+	EAttribute getLEntityAttribute_TypedName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference <em>LEntity Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LEntity Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+	 * @generated
+	 */
+	EClass getLEntityReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getType()
+	 * @see #getLEntityReference()
+	 * @generated
+	 */
+	EReference getLEntityReference_Type();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getTypeJvm <em>Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getTypeJvm()
+	 * @see #getLEntityReference()
+	 * @generated
+	 */
+	EReference getLEntityReference_TypeJvm();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getOpposite <em>Opposite</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Opposite</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getOpposite()
+	 * @see #getLEntityReference()
+	 * @generated
+	 */
+	EReference getLEntityReference_Opposite();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getResultFilters <em>Result Filters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Result Filters</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityReference#getResultFilters()
+	 * @see #getLEntityReference()
+	 * @generated
+	 */
+	EReference getLEntityReference_ResultFilters();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature <em>LBean Feature</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LBean Feature</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanFeature
+	 * @generated
+	 */
+	EClass getLBeanFeature();
+
+	/**
+	 * Returns the meta object for the '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature#getBean() <em>Get Bean</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Get Bean</em>' operation.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanFeature#getBean()
+	 * @generated
+	 */
+	EOperation getLBeanFeature__GetBean();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute <em>LBean Attribute</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LBean Attribute</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute
+	 * @generated
+	 */
+	EClass getLBeanAttribute();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute#getTypedName <em>Typed Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Typed Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute#getTypedName()
+	 * @see #getLBeanAttribute()
+	 * @generated
+	 */
+	EAttribute getLBeanAttribute_TypedName();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference <em>LBean Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LBean Reference</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+	 * @generated
+	 */
+	EClass getLBeanReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getType()
+	 * @see #getLBeanReference()
+	 * @generated
+	 */
+	EReference getLBeanReference_Type();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getOpposite <em>Opposite</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Opposite</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getOpposite()
+	 * @see #getLBeanReference()
+	 * @generated
+	 */
+	EReference getLBeanReference_Opposite();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getTypeJvm <em>Type Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Type Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getTypeJvm()
+	 * @see #getLBeanReference()
+	 * @generated
+	 */
+	EReference getLBeanReference_TypeJvm();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getResultFilters <em>Result Filters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Result Filters</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LBeanReference#getResultFilters()
+	 * @see #getLBeanReference()
+	 * @generated
+	 */
+	EReference getLBeanReference_ResultFilters();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex <em>LIndex</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LIndex</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LIndex
+	 * @generated
+	 */
+	EClass getLIndex();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#isUnique <em>Unique</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Unique</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LIndex#isUnique()
+	 * @see #getLIndex()
+	 * @generated
+	 */
+	EAttribute getLIndex_Unique();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LIndex#getName()
+	 * @see #getLIndex()
+	 * @generated
+	 */
+	EAttribute getLIndex_Name();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex#getFeatures <em>Features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Features</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LIndex#getFeatures()
+	 * @see #getLIndex()
+	 * @generated
+	 */
+	EReference getLIndex_Features();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.entity.LOperation <em>LOperation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LOperation</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LOperation
+	 * @generated
+	 */
+	EClass getLOperation();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType <em>LDiscriminator Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LDiscriminator Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+	 * @generated
+	 */
+	EEnum getLDiscriminatorType();
+
+	/**
+	 * 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
+	 * @generated
+	 */
+	EDataType getInternalEObject();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Operations List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Operations List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getOperationsList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Entity Feature List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Entity Feature List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getEntityFeatureList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Entity Reference List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Entity Reference List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getEntityReferenceList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Entity Attribute List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Entity Attribute List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getEntityAttributeList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Bean Feature List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Bean Feature List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getBeanFeatureList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Bean Reference List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Bean Reference List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getBeanReferenceList();
+
+	/**
+	 * Returns the meta object for data type '{@link java.util.List <em>Bean Attribute List</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Bean Attribute List</em>'.
+	 * @see java.util.List
+	 * @generated
+	 */
+	EDataType getBeanAttributeList();
+
+	/**
+	 * 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
+	 */
+	OSBPEntityFactory getOSBPEntityFactory();
+
+	/**
+	 * <!-- 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.dsl.semantic.entity.impl.LEntityModelImpl <em>LEntity Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityModelImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityModel()
+		 * @generated
+		 */
+		EClass LENTITY_MODEL = eINSTANCE.getLEntityModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_MODEL__PACKAGES = eINSTANCE.getLEntityModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl <em>LBean</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBean()
+		 * @generated
+		 */
+		EClass LBEAN = eINSTANCE.getLBean();
+
+		/**
+		 * The meta object literal for the '<em><b>Features</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN__FEATURES = eINSTANCE.getLBean_Features();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN__SUPER_TYPE = eINSTANCE.getLBean_SuperType();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN__SUPER_TYPE_JVM = eINSTANCE.getLBean_SuperTypeJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub Types</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN__SUB_TYPES = eINSTANCE.getLBean_SubTypes();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Operations</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___GET_OPERATIONS = eINSTANCE.getLBean__GetOperations();
+
+		/**
+		 * The meta object literal for the '<em><b>Get References</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___GET_REFERENCES = eINSTANCE.getLBean__GetReferences();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Attributes</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___GET_ATTRIBUTES = eINSTANCE.getLBean__GetAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All Features</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___GET_ALL_FEATURES = eINSTANCE.getLBean__GetAllFeatures();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All Attributes</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___GET_ALL_ATTRIBUTES = eINSTANCE.getLBean__GetAllAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All References</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___GET_ALL_REFERENCES = eINSTANCE.getLBean__GetAllReferences();
+
+		/**
+		 * The meta object literal for the '<em><b>Collect All OSBP Features</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN___COLLECT_ALL_OSBP_FEATURES__LBEAN_LIST = eINSTANCE.getLBean__CollectAllOSBPFeatures__LBean_List();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl <em>LEntity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntity()
+		 * @generated
+		 */
+		EClass LENTITY = eINSTANCE.getLEntity();
+
+		/**
+		 * The meta object literal for the '<em><b>Cacheable</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY__CACHEABLE = eINSTANCE.getLEntity_Cacheable();
+
+		/**
+		 * The meta object literal for the '<em><b>Historized</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY__HISTORIZED = eINSTANCE.getLEntity_Historized();
+
+		/**
+		 * The meta object literal for the '<em><b>Timedependent</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY__TIMEDEPENDENT = eINSTANCE.getLEntity_Timedependent();
+
+		/**
+		 * The meta object literal for the '<em><b>Timedependent Date Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY__TIMEDEPENDENT_DATE_TYPE = eINSTANCE.getLEntity_TimedependentDateType();
+
+		/**
+		 * The meta object literal for the '<em><b>Mapped Superclass</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY__MAPPED_SUPERCLASS = eINSTANCE.getLEntity_MappedSuperclass();
+
+		/**
+		 * The meta object literal for the '<em><b>Persistence Info</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__PERSISTENCE_INFO = eINSTANCE.getLEntity_PersistenceInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Inheritance Strategy</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__INHERITANCE_STRATEGY = eINSTANCE.getLEntity_InheritanceStrategy();
+
+		/**
+		 * The meta object literal for the '<em><b>Features</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__FEATURES = eINSTANCE.getLEntity_Features();
+
+		/**
+		 * The meta object literal for the '<em><b>Indexes</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__INDEXES = eINSTANCE.getLEntity_Indexes();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__SUPER_TYPE = eINSTANCE.getLEntity_SuperType();
+
+		/**
+		 * The meta object literal for the '<em><b>Super Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__SUPER_TYPE_JVM = eINSTANCE.getLEntity_SuperTypeJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub Types</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY__SUB_TYPES = eINSTANCE.getLEntity_SubTypes();
+
+		/**
+		 * The meta object literal for the '<em><b>Persistence Unit</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY__PERSISTENCE_UNIT = eINSTANCE.getLEntity_PersistenceUnit();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Operations</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___GET_OPERATIONS = eINSTANCE.getLEntity__GetOperations();
+
+		/**
+		 * The meta object literal for the '<em><b>Get References</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___GET_REFERENCES = eINSTANCE.getLEntity__GetReferences();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Attributes</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___GET_ATTRIBUTES = eINSTANCE.getLEntity__GetAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All Features</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___GET_ALL_FEATURES = eINSTANCE.getLEntity__GetAllFeatures();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All Attributes</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___GET_ALL_ATTRIBUTES = eINSTANCE.getLEntity__GetAllAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Get All References</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___GET_ALL_REFERENCES = eINSTANCE.getLEntity__GetAllReferences();
+
+		/**
+		 * The meta object literal for the '<em><b>Collect All OSBP Features</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY___COLLECT_ALL_OSBP_FEATURES__LENTITY_LIST = eINSTANCE.getLEntity__CollectAllOSBPFeatures__LEntity_List();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityPersistenceInfoImpl <em>LEntity Persistence Info</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityPersistenceInfoImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityPersistenceInfo()
+		 * @generated
+		 */
+		EClass LENTITY_PERSISTENCE_INFO = eINSTANCE.getLEntityPersistenceInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Schema Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY_PERSISTENCE_INFO__SCHEMA_NAME = eINSTANCE.getLEntityPersistenceInfo_SchemaName();
+
+		/**
+		 * The meta object literal for the '<em><b>Table Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY_PERSISTENCE_INFO__TABLE_NAME = eINSTANCE.getLEntityPersistenceInfo_TableName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityColumnPersistenceInfoImpl <em>LEntity Column Persistence Info</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityColumnPersistenceInfoImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityColumnPersistenceInfo()
+		 * @generated
+		 */
+		EClass LENTITY_COLUMN_PERSISTENCE_INFO = eINSTANCE.getLEntityColumnPersistenceInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Column Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME = eINSTANCE.getLEntityColumnPersistenceInfo_ColumnName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy <em>LEntity Inheritance Strategy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityInheritanceStrategy()
+		 * @generated
+		 */
+		EClass LENTITY_INHERITANCE_STRATEGY = eINSTANCE.getLEntityInheritanceStrategy();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl <em>LTable Per Class Strategy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLTablePerClassStrategy()
+		 * @generated
+		 */
+		EClass LTABLE_PER_CLASS_STRATEGY = eINSTANCE.getLTablePerClassStrategy();
+
+		/**
+		 * The meta object literal for the '<em><b>Discriminator Column</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN = eINSTANCE.getLTablePerClassStrategy_DiscriminatorColumn();
+
+		/**
+		 * The meta object literal for the '<em><b>Discriminator Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE = eINSTANCE.getLTablePerClassStrategy_DiscriminatorType();
+
+		/**
+		 * The meta object literal for the '<em><b>Discriminator Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE = eINSTANCE.getLTablePerClassStrategy_DiscriminatorValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl <em>LTable Per Subclass Strategy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLTablePerSubclassStrategy()
+		 * @generated
+		 */
+		EClass LTABLE_PER_SUBCLASS_STRATEGY = eINSTANCE.getLTablePerSubclassStrategy();
+
+		/**
+		 * The meta object literal for the '<em><b>Discriminator Column</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN = eINSTANCE.getLTablePerSubclassStrategy_DiscriminatorColumn();
+
+		/**
+		 * The meta object literal for the '<em><b>Discriminator Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE = eINSTANCE.getLTablePerSubclassStrategy_DiscriminatorType();
+
+		/**
+		 * The meta object literal for the '<em><b>Discriminator Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE = eINSTANCE.getLTablePerSubclassStrategy_DiscriminatorValue();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl <em>LEntity Feature</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityFeature()
+		 * @generated
+		 */
+		EClass LENTITY_FEATURE = eINSTANCE.getLEntityFeature();
+
+		/**
+		 * The meta object literal for the '<em><b>Persistence Info</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_FEATURE__PERSISTENCE_INFO = eINSTANCE.getLEntityFeature_PersistenceInfo();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Entity</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LENTITY_FEATURE___GET_ENTITY = eINSTANCE.getLEntityFeature__GetEntity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl <em>LEntity Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityAttribute()
+		 * @generated
+		 */
+		EClass LENTITY_ATTRIBUTE = eINSTANCE.getLEntityAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Opposite</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_ATTRIBUTE__OPPOSITE = eINSTANCE.getLEntityAttribute_Opposite();
+
+		/**
+		 * The meta object literal for the '<em><b>Typed Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LENTITY_ATTRIBUTE__TYPED_NAME = eINSTANCE.getLEntityAttribute_TypedName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl <em>LEntity Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLEntityReference()
+		 * @generated
+		 */
+		EClass LENTITY_REFERENCE = eINSTANCE.getLEntityReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_REFERENCE__TYPE = eINSTANCE.getLEntityReference_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_REFERENCE__TYPE_JVM = eINSTANCE.getLEntityReference_TypeJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Opposite</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_REFERENCE__OPPOSITE = eINSTANCE.getLEntityReference_Opposite();
+
+		/**
+		 * The meta object literal for the '<em><b>Result Filters</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LENTITY_REFERENCE__RESULT_FILTERS = eINSTANCE.getLEntityReference_ResultFilters();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl <em>LBean Feature</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBeanFeature()
+		 * @generated
+		 */
+		EClass LBEAN_FEATURE = eINSTANCE.getLBeanFeature();
+
+		/**
+		 * The meta object literal for the '<em><b>Get Bean</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EOperation LBEAN_FEATURE___GET_BEAN = eINSTANCE.getLBeanFeature__GetBean();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl <em>LBean Attribute</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBeanAttribute()
+		 * @generated
+		 */
+		EClass LBEAN_ATTRIBUTE = eINSTANCE.getLBeanAttribute();
+
+		/**
+		 * The meta object literal for the '<em><b>Typed Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LBEAN_ATTRIBUTE__TYPED_NAME = eINSTANCE.getLBeanAttribute_TypedName();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl <em>LBean Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLBeanReference()
+		 * @generated
+		 */
+		EClass LBEAN_REFERENCE = eINSTANCE.getLBeanReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN_REFERENCE__TYPE = eINSTANCE.getLBeanReference_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Opposite</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN_REFERENCE__OPPOSITE = eINSTANCE.getLBeanReference_Opposite();
+
+		/**
+		 * The meta object literal for the '<em><b>Type Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN_REFERENCE__TYPE_JVM = eINSTANCE.getLBeanReference_TypeJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Result Filters</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LBEAN_REFERENCE__RESULT_FILTERS = eINSTANCE.getLBeanReference_ResultFilters();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl <em>LIndex</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLIndex()
+		 * @generated
+		 */
+		EClass LINDEX = eINSTANCE.getLIndex();
+
+		/**
+		 * The meta object literal for the '<em><b>Unique</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINDEX__UNIQUE = eINSTANCE.getLIndex_Unique();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINDEX__NAME = eINSTANCE.getLIndex_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Features</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LINDEX__FEATURES = eINSTANCE.getLIndex_Features();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl <em>LOperation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLOperation()
+		 * @generated
+		 */
+		EClass LOPERATION = eINSTANCE.getLOperation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType <em>LDiscriminator Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getLDiscriminatorType()
+		 * @generated
+		 */
+		EEnum LDISCRIMINATOR_TYPE = eINSTANCE.getLDiscriminatorType();
+
+		/**
+		 * 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.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getInternalEObject()
+		 * @generated
+		 */
+		EDataType INTERNAL_EOBJECT = eINSTANCE.getInternalEObject();
+
+		/**
+		 * The meta object literal for the '<em>Operations List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getOperationsList()
+		 * @generated
+		 */
+		EDataType OPERATIONS_LIST = eINSTANCE.getOperationsList();
+
+		/**
+		 * The meta object literal for the '<em>Entity Feature List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getEntityFeatureList()
+		 * @generated
+		 */
+		EDataType ENTITY_FEATURE_LIST = eINSTANCE.getEntityFeatureList();
+
+		/**
+		 * The meta object literal for the '<em>Entity Reference List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getEntityReferenceList()
+		 * @generated
+		 */
+		EDataType ENTITY_REFERENCE_LIST = eINSTANCE.getEntityReferenceList();
+
+		/**
+		 * The meta object literal for the '<em>Entity Attribute List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getEntityAttributeList()
+		 * @generated
+		 */
+		EDataType ENTITY_ATTRIBUTE_LIST = eINSTANCE.getEntityAttributeList();
+
+		/**
+		 * The meta object literal for the '<em>Bean Feature List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getBeanFeatureList()
+		 * @generated
+		 */
+		EDataType BEAN_FEATURE_LIST = eINSTANCE.getBeanFeatureList();
+
+		/**
+		 * The meta object literal for the '<em>Bean Reference List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getBeanReferenceList()
+		 * @generated
+		 */
+		EDataType BEAN_REFERENCE_LIST = eINSTANCE.getBeanReferenceList();
+
+		/**
+		 * The meta object literal for the '<em>Bean Attribute List</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.util.List
+		 * @see org.eclipse.osbp.dsl.semantic.entity.impl.OSBPEntityPackageImpl#getBeanAttributeList()
+		 * @generated
+		 */
+		EDataType BEAN_ATTRIBUTE_LIST = eINSTANCE.getBeanAttributeList();
+
+	}
+
+} //OSBPEntityPackage
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanAttributeImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanAttributeImpl.java
new file mode 100644
index 0000000..4cf578d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanAttributeImpl.java
@@ -0,0 +1,1062 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+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.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LBean Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isUuid <em>Uuid</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isVersion <em>Version</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isTransient <em>Transient</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isDerived <em>Derived</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isDirty <em>Dirty</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isDomainKey <em>Domain Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#isDomainDescription <em>Domain Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#getDerivedGetterExpression <em>Derived Getter Expression</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanAttributeImpl#getTypedName <em>Typed Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LBeanAttributeImpl extends LBeanFeatureImpl implements LBeanAttribute {
+	/**
+	 * The default value of the '{@link #isId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isId()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isUuid() <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUuid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean UUID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isUuid() <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUuid()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uuid = UUID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean VERSION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean version = VERSION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LAZY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean lazy = LAZY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CASCADING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cascading = CASCADING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransient()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TRANSIENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransient()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean transient_ = TRANSIENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDerived() <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DERIVED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDerived() <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean derived = DERIVED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDirty()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DIRTY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDirty()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean dirty = DIRTY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainKey() <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DOMAIN_KEY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDomainKey() <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean domainKey = DOMAIN_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainDescription() <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DOMAIN_DESCRIPTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDomainDescription() <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean domainDescription = DOMAIN_DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDerivedGetterExpression() <em>Derived Getter Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDerivedGetterExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression derivedGetterExpression;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LScalarType type;
+
+	/**
+	 * The cached value of the '{@link #getTypeJvm() <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference typeJvm;
+
+	/**
+	 * 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<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * The default value of the '{@link #getTypedName() <em>Typed Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypedName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPED_NAME_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LBEAN_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(boolean newId) {
+		boolean oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isUuid() {
+		return uuid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUuid(boolean newUuid) {
+		boolean oldUuid = uuid;
+		uuid = newUuid;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID, oldUuid, uuid));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isVersion() {
+		return version;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVersion(boolean newVersion) {
+		boolean oldVersion = version;
+		version = newVersion;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION, oldVersion, version));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLazy() {
+		return lazy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLazy(boolean newLazy) {
+		boolean oldLazy = lazy;
+		lazy = newLazy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY, oldLazy, lazy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCascading() {
+		return cascading;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCascading(boolean newCascading) {
+		boolean oldCascading = cascading;
+		cascading = newCascading;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING, oldCascading, cascading));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTransient() {
+		return transient_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransient(boolean newTransient) {
+		boolean oldTransient = transient_;
+		transient_ = newTransient;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT, oldTransient, transient_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDerived() {
+		return derived;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerived(boolean newDerived) {
+		boolean oldDerived = derived;
+		derived = newDerived;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED, oldDerived, derived));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDirty() {
+		return dirty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirty(boolean newDirty) {
+		boolean oldDirty = dirty;
+		dirty = newDirty;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY, oldDirty, dirty));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDomainKey() {
+		return domainKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDomainKey(boolean newDomainKey) {
+		boolean oldDomainKey = domainKey;
+		domainKey = newDomainKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY, oldDomainKey, domainKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDomainDescription() {
+		return domainDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDomainDescription(boolean newDomainDescription) {
+		boolean oldDomainDescription = domainDescription;
+		domainDescription = newDomainDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION, oldDomainDescription, domainDescription));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getDerivedGetterExpression() {
+		return derivedGetterExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDerivedGetterExpression(XExpression newDerivedGetterExpression, NotificationChain msgs) {
+		XExpression oldDerivedGetterExpression = derivedGetterExpression;
+		derivedGetterExpression = newDerivedGetterExpression;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, oldDerivedGetterExpression, newDerivedGetterExpression);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerivedGetterExpression(XExpression newDerivedGetterExpression) {
+		if (newDerivedGetterExpression != derivedGetterExpression) {
+			NotificationChain msgs = null;
+			if (derivedGetterExpression != null)
+				msgs = ((InternalEObject)derivedGetterExpression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, null, msgs);
+			if (newDerivedGetterExpression != null)
+				msgs = ((InternalEObject)newDerivedGetterExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, null, msgs);
+			msgs = basicSetDerivedGetterExpression(newDerivedGetterExpression, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, newDerivedGetterExpression, newDerivedGetterExpression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject)type;
+			type = (LScalarType)eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE, oldType, type));
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(LScalarType newType) {
+		LScalarType oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getTypeJvm() {
+		return typeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeJvm(JvmTypeReference newTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldTypeJvm = typeJvm;
+		typeJvm = newTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM, oldTypeJvm, newTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeJvm(JvmTypeReference newTypeJvm) {
+		if (newTypeJvm != typeJvm) {
+			NotificationChain msgs = null;
+			if (typeJvm != null)
+				msgs = ((InternalEObject)typeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM, null, msgs);
+			if (newTypeJvm != null)
+				msgs = ((InternalEObject)newTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM, null, msgs);
+			msgs = basicSetTypeJvm(newTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM, newTypeJvm, newTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTypedName() {
+		StringBuilder result = new StringBuilder();
+		String _name = this.getName();
+		boolean _notEquals = (!Objects.equal(_name, null));
+		if (_notEquals) {
+			String _name_1 = this.getName();
+			result.append(_name_1);
+		}
+		else {
+			result.append("empty");
+		}
+		result.append(" : ");
+		LScalarType _type = this.getType();
+		boolean _notEquals_1 = (!Objects.equal(_type, null));
+		if (_notEquals_1) {
+			LScalarType _type_1 = this.getType();
+			String _name_2 = _type_1.getName();
+			result.append(_name_2);
+		}
+		else {
+			result.append("undefined");
+		}
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return basicSetDerivedGetterExpression(null, msgs);
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM:
+				return basicSetTypeJvm(null, msgs);
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).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 OSBPEntityPackage.LBEAN_ATTRIBUTE__ID:
+				return isId();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID:
+				return isUuid();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION:
+				return isVersion();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY:
+				return isLazy();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING:
+				return isCascading();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT:
+				return isTransient();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED:
+				return isDerived();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY:
+				return isDirty();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY:
+				return isDomainKey();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				return isDomainDescription();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return getDerivedGetterExpression();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE:
+				if (resolve) return getType();
+				return basicGetType();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM:
+				return getTypeJvm();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES:
+				return getProperties();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS:
+				return getConstraints();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPED_NAME:
+				return getTypedName();
+		}
+		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 OSBPEntityPackage.LBEAN_ATTRIBUTE__ID:
+				setId((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID:
+				setUuid((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION:
+				setVersion((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY:
+				setLazy((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING:
+				setCascading((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT:
+				setTransient((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED:
+				setDerived((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY:
+				setDirty((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY:
+				setDomainKey((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				setDomainDescription((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				setDerivedGetterExpression((XExpression)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE:
+				setType((LScalarType)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID:
+				setUuid(UUID_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION:
+				setVersion(VERSION_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY:
+				setLazy(LAZY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING:
+				setCascading(CASCADING_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT:
+				setTransient(TRANSIENT_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED:
+				setDerived(DERIVED_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY:
+				setDirty(DIRTY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY:
+				setDomainKey(DOMAIN_KEY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				setDomainDescription(DOMAIN_DESCRIPTION_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				setDerivedGetterExpression((XExpression)null);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE:
+				setType((LScalarType)null);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__ID:
+				return id != ID_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID:
+				return uuid != UUID_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION:
+				return version != VERSION_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY:
+				return lazy != LAZY_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING:
+				return cascading != CASCADING_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT:
+				return transient_ != TRANSIENT_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED:
+				return derived != DERIVED_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY:
+				return dirty != DIRTY_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY:
+				return domainKey != DOMAIN_KEY_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				return domainDescription != DOMAIN_DESCRIPTION_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return derivedGetterExpression != null;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE:
+				return type != null;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM:
+				return typeJvm != null;
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS:
+				return constraints != null && !constraints.isEmpty();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPED_NAME:
+				return TYPED_NAME_EDEFAULT == null ? getTypedName() != null : !TYPED_NAME_EDEFAULT.equals(getTypedName());
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LAttribute.class) {
+			switch (derivedFeatureID) {
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__ID: return OSBPTypesPackage.LATTRIBUTE__ID;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID: return OSBPTypesPackage.LATTRIBUTE__UUID;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION: return OSBPTypesPackage.LATTRIBUTE__VERSION;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY: return OSBPTypesPackage.LATTRIBUTE__LAZY;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING: return OSBPTypesPackage.LATTRIBUTE__CASCADING;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT: return OSBPTypesPackage.LATTRIBUTE__TRANSIENT;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED: return OSBPTypesPackage.LATTRIBUTE__DERIVED;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY: return OSBPTypesPackage.LATTRIBUTE__DIRTY;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY: return OSBPTypesPackage.LATTRIBUTE__DOMAIN_KEY;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION: return OSBPTypesPackage.LATTRIBUTE__DOMAIN_DESCRIPTION;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE: return OSBPTypesPackage.LATTRIBUTE__TYPE;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM: return OSBPTypesPackage.LATTRIBUTE__TYPE_JVM;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES: return OSBPTypesPackage.LATTRIBUTE__PROPERTIES;
+				case OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS: return OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS;
+				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 == LAttribute.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LATTRIBUTE__ID: return OSBPEntityPackage.LBEAN_ATTRIBUTE__ID;
+				case OSBPTypesPackage.LATTRIBUTE__UUID: return OSBPEntityPackage.LBEAN_ATTRIBUTE__UUID;
+				case OSBPTypesPackage.LATTRIBUTE__VERSION: return OSBPEntityPackage.LBEAN_ATTRIBUTE__VERSION;
+				case OSBPTypesPackage.LATTRIBUTE__LAZY: return OSBPEntityPackage.LBEAN_ATTRIBUTE__LAZY;
+				case OSBPTypesPackage.LATTRIBUTE__CASCADING: return OSBPEntityPackage.LBEAN_ATTRIBUTE__CASCADING;
+				case OSBPTypesPackage.LATTRIBUTE__TRANSIENT: return OSBPEntityPackage.LBEAN_ATTRIBUTE__TRANSIENT;
+				case OSBPTypesPackage.LATTRIBUTE__DERIVED: return OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED;
+				case OSBPTypesPackage.LATTRIBUTE__DIRTY: return OSBPEntityPackage.LBEAN_ATTRIBUTE__DIRTY;
+				case OSBPTypesPackage.LATTRIBUTE__DOMAIN_KEY: return OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_KEY;
+				case OSBPTypesPackage.LATTRIBUTE__DOMAIN_DESCRIPTION: return OSBPEntityPackage.LBEAN_ATTRIBUTE__DOMAIN_DESCRIPTION;
+				case OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPEntityPackage.LBEAN_ATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+				case OSBPTypesPackage.LATTRIBUTE__TYPE: return OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE;
+				case OSBPTypesPackage.LATTRIBUTE__TYPE_JVM: return OSBPEntityPackage.LBEAN_ATTRIBUTE__TYPE_JVM;
+				case OSBPTypesPackage.LATTRIBUTE__PROPERTIES: return OSBPEntityPackage.LBEAN_ATTRIBUTE__PROPERTIES;
+				case OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS: return OSBPEntityPackage.LBEAN_ATTRIBUTE__CONSTRAINTS;
+				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(" (id: ");
+		result.append(id);
+		result.append(", uuid: ");
+		result.append(uuid);
+		result.append(", version: ");
+		result.append(version);
+		result.append(", lazy: ");
+		result.append(lazy);
+		result.append(", cascading: ");
+		result.append(cascading);
+		result.append(", transient: ");
+		result.append(transient_);
+		result.append(", derived: ");
+		result.append(derived);
+		result.append(", dirty: ");
+		result.append(dirty);
+		result.append(", domainKey: ");
+		result.append(domainKey);
+		result.append(", domainDescription: ");
+		result.append(domainDescription);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LBeanAttributeImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanFeatureImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanFeatureImpl.java
new file mode 100644
index 0000000..9baacfd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanFeatureImpl.java
@@ -0,0 +1,378 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+import java.lang.reflect.InvocationTargetException;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LBean Feature</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanFeatureImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LBeanFeatureImpl extends LAnnotationTargetImpl implements LBeanFeature {
+	/**
+	 * 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 #getMultiplicity() <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LMultiplicity multiplicity;
+
+	/**
+	 * The cached value of the '{@link #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanFeatureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LBEAN_FEATURE;
+	}
+
+	/**
+	 * <!-- 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, OSBPEntityPackage.LBEAN_FEATURE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getMultiplicity() {
+		return multiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMultiplicity(LMultiplicity newMultiplicity, NotificationChain msgs) {
+		LMultiplicity oldMultiplicity = multiplicity;
+		multiplicity = newMultiplicity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY, oldMultiplicity, newMultiplicity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplicity(LMultiplicity newMultiplicity) {
+		if (newMultiplicity != multiplicity) {
+			NotificationChain msgs = null;
+			if (multiplicity != null)
+				msgs = ((InternalEObject)multiplicity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY, null, msgs);
+			if (newMultiplicity != null)
+				msgs = ((InternalEObject)newMultiplicity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY, null, msgs);
+			msgs = basicSetMultiplicity(newMultiplicity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY, newMultiplicity, newMultiplicity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBean getBean() {
+		EObject _eContainer = this.eContainer();
+		return ((LBean) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY:
+				return basicSetMultiplicity(null, msgs);
+			case OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(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 OSBPEntityPackage.LBEAN_FEATURE__NAME:
+				return getName();
+			case OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY:
+				return getMultiplicity();
+			case OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO:
+				return getAnnotationInfo();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_FEATURE__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_FEATURE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)null);
+				return;
+			case OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_FEATURE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPEntityPackage.LBEAN_FEATURE__MULTIPLICITY:
+				return multiplicity != null;
+			case OSBPEntityPackage.LBEAN_FEATURE__ANNOTATION_INFO:
+				return annotationInfo != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPEntityPackage.LBEAN_FEATURE___GET_BEAN:
+				return getBean();
+			case OSBPEntityPackage.LBEAN_FEATURE___GET_RESOLVED_ANNOTATIONS:
+				return getResolvedAnnotations();
+		}
+		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();
+	}
+
+} //LBeanFeatureImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanImpl.java
new file mode 100644
index 0000000..f66e14e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanImpl.java
@@ -0,0 +1,527 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+import com.google.common.collect.Iterables;
+
+import java.lang.Iterable;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Collection;
+import java.util.List;
+
+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.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LBean</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl#getFeatures <em>Features</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl#getSuperType <em>Super Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl#getSuperTypeJvm <em>Super Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanImpl#getSubTypes <em>Sub Types</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LBeanImpl extends LClassImpl implements LBean {
+	/**
+	 * The cached value of the '{@link #getFeatures() <em>Features</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFeatures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LBeanFeature> features;
+
+	/**
+	 * The cached value of the '{@link #getSuperType() <em>Super Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LBean superType;
+
+	/**
+	 * The cached value of the '{@link #getSuperTypeJvm() <em>Super Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference superTypeJvm;
+
+	/**
+	 * The cached value of the '{@link #getSubTypes() <em>Sub Types</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubTypes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LBean> subTypes;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LBEAN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LBeanFeature> getFeatures() {
+		if (features == null) {
+			features = new EObjectContainmentEList<LBeanFeature>(LBeanFeature.class, this, OSBPEntityPackage.LBEAN__FEATURES);
+		}
+		return features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBean getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject)superType;
+			superType = (LBean)eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LBEAN__SUPER_TYPE, oldSuperType, superType));
+			}
+		}
+		return superType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBean basicGetSuperType() {
+		return superType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperType(LBean newSuperType, NotificationChain msgs) {
+		LBean oldSuperType = superType;
+		superType = newSuperType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN__SUPER_TYPE, oldSuperType, newSuperType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperType(LBean newSuperType) {
+		if (newSuperType != superType) {
+			NotificationChain msgs = null;
+			if (superType != null)
+				msgs = ((InternalEObject)superType).eInverseRemove(this, OSBPEntityPackage.LBEAN__SUB_TYPES, LBean.class, msgs);
+			if (newSuperType != null)
+				msgs = ((InternalEObject)newSuperType).eInverseAdd(this, OSBPEntityPackage.LBEAN__SUB_TYPES, LBean.class, msgs);
+			msgs = basicSetSuperType(newSuperType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN__SUPER_TYPE, newSuperType, newSuperType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getSuperTypeJvm() {
+		return superTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperTypeJvm(JvmTypeReference newSuperTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldSuperTypeJvm = superTypeJvm;
+		superTypeJvm = newSuperTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM, oldSuperTypeJvm, newSuperTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperTypeJvm(JvmTypeReference newSuperTypeJvm) {
+		if (newSuperTypeJvm != superTypeJvm) {
+			NotificationChain msgs = null;
+			if (superTypeJvm != null)
+				msgs = ((InternalEObject)superTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM, null, msgs);
+			if (newSuperTypeJvm != null)
+				msgs = ((InternalEObject)newSuperTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM, null, msgs);
+			msgs = basicSetSuperTypeJvm(newSuperTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM, newSuperTypeJvm, newSuperTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LBean> getSubTypes() {
+		if (subTypes == null) {
+			subTypes = new EObjectWithInverseResolvingEList<LBean>(LBean.class, this, OSBPEntityPackage.LBEAN__SUB_TYPES, OSBPEntityPackage.LBEAN__SUPER_TYPE);
+		}
+		return subTypes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LOperation> getOperations() {
+		EList<LBeanFeature> _features = this.getFeatures();
+		Iterable<LOperation> _filter = Iterables.<LOperation>filter(_features, LOperation.class);
+		return IterableExtensions.<LOperation>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LBeanReference> getReferences() {
+		EList<LBeanFeature> _features = this.getFeatures();
+		Iterable<LBeanReference> _filter = Iterables.<LBeanReference>filter(_features, LBeanReference.class);
+		return IterableExtensions.<LBeanReference>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LBeanAttribute> getAttributes() {
+		EList<LBeanFeature> _features = this.getFeatures();
+		Iterable<LBeanAttribute> _filter = Iterables.<LBeanAttribute>filter(_features, LBeanAttribute.class);
+		return IterableExtensions.<LBeanAttribute>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LBeanFeature> getAllFeatures() {
+		final List<LBeanFeature> result = CollectionLiterals.<LBeanFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LBeanAttribute> getAllAttributes() {
+		final List<LBeanFeature> result = CollectionLiterals.<LBeanFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		Iterable<LBeanAttribute> _filter = Iterables.<LBeanAttribute>filter(result, LBeanAttribute.class);
+		return IterableExtensions.<LBeanAttribute>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LBeanReference> getAllReferences() {
+		final List<LBeanFeature> result = CollectionLiterals.<LBeanFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		Iterable<LBeanReference> _filter = Iterables.<LBeanReference>filter(result, LBeanReference.class);
+		return IterableExtensions.<LBeanReference>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void collectAllOSBPFeatures(final LBean current, final List<LBeanFeature> result) {
+		boolean _equals = Objects.equal(current, null);
+		if (_equals) {
+			return;
+		}
+		EList<LBeanFeature> _features = current.getFeatures();
+		result.addAll(_features);
+		LBean _superType = current.getSuperType();
+		this.collectAllOSBPFeatures(_superType, result);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE:
+				if (superType != null)
+					msgs = ((InternalEObject)superType).eInverseRemove(this, OSBPEntityPackage.LBEAN__SUB_TYPES, LBean.class, msgs);
+				return basicSetSuperType((LBean)otherEnd, msgs);
+			case OSBPEntityPackage.LBEAN__SUB_TYPES:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getSubTypes()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN__FEATURES:
+				return ((InternalEList<?>)getFeatures()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE:
+				return basicSetSuperType(null, msgs);
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM:
+				return basicSetSuperTypeJvm(null, msgs);
+			case OSBPEntityPackage.LBEAN__SUB_TYPES:
+				return ((InternalEList<?>)getSubTypes()).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 OSBPEntityPackage.LBEAN__FEATURES:
+				return getFeatures();
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE:
+				if (resolve) return getSuperType();
+				return basicGetSuperType();
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM:
+				return getSuperTypeJvm();
+			case OSBPEntityPackage.LBEAN__SUB_TYPES:
+				return getSubTypes();
+		}
+		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 OSBPEntityPackage.LBEAN__FEATURES:
+				getFeatures().clear();
+				getFeatures().addAll((Collection<? extends LBeanFeature>)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE:
+				setSuperType((LBean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM:
+				setSuperTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN__SUB_TYPES:
+				getSubTypes().clear();
+				getSubTypes().addAll((Collection<? extends LBean>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN__FEATURES:
+				getFeatures().clear();
+				return;
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE:
+				setSuperType((LBean)null);
+				return;
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM:
+				setSuperTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPEntityPackage.LBEAN__SUB_TYPES:
+				getSubTypes().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN__FEATURES:
+				return features != null && !features.isEmpty();
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE:
+				return superType != null;
+			case OSBPEntityPackage.LBEAN__SUPER_TYPE_JVM:
+				return superTypeJvm != null;
+			case OSBPEntityPackage.LBEAN__SUB_TYPES:
+				return subTypes != null && !subTypes.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+		if (baseClass == LScalarType.class) {
+			switch (baseOperationID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == LFeaturesHolder.class) {
+			switch (baseOperationID) {
+				case OSBPTypesPackage.LFEATURES_HOLDER___GET_FEATURES: return OSBPEntityPackage.LBEAN___GET_FEATURES;
+				case OSBPTypesPackage.LFEATURES_HOLDER___GET_ALL_FEATURES: return OSBPEntityPackage.LBEAN___GET_ALL_FEATURES;
+				default: return -1;
+			}
+		}
+		return super.eDerivedOperationID(baseOperationID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPEntityPackage.LBEAN___GET_OPERATIONS:
+				return getOperations();
+			case OSBPEntityPackage.LBEAN___GET_REFERENCES:
+				return getReferences();
+			case OSBPEntityPackage.LBEAN___GET_ATTRIBUTES:
+				return getAttributes();
+			case OSBPEntityPackage.LBEAN___GET_ALL_FEATURES:
+				return getAllFeatures();
+			case OSBPEntityPackage.LBEAN___GET_ALL_ATTRIBUTES:
+				return getAllAttributes();
+			case OSBPEntityPackage.LBEAN___GET_ALL_REFERENCES:
+				return getAllReferences();
+			case OSBPEntityPackage.LBEAN___COLLECT_ALL_OSBP_FEATURES__LBEAN_LIST:
+				collectAllOSBPFeatures((LBean)arguments.get(0), (List<LBeanFeature>)arguments.get(1));
+				return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} //LBeanImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanReferenceImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanReferenceImpl.java
new file mode 100644
index 0000000..ad13d0b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanReferenceImpl.java
@@ -0,0 +1,621 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LBean Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#getOpposite <em>Opposite</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LBeanReferenceImpl#getResultFilters <em>Result Filters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LBeanReferenceImpl extends LBeanFeatureImpl implements LBeanReference {
+	/**
+	 * The default value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LAZY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean lazy = LAZY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CASCADING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cascading = CASCADING_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LType type;
+
+	/**
+	 * The cached value of the '{@link #getOpposite() <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOpposite()
+	 * @generated
+	 * @ordered
+	 */
+	protected LFeature opposite;
+
+	/**
+	 * The cached value of the '{@link #getTypeJvm() <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference typeJvm;
+
+	/**
+	 * The cached value of the '{@link #getResultFilters() <em>Result Filters</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getResultFilters()
+	 * @generated
+	 * @ordered
+	 */
+	protected LResultFilters resultFilters;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LBeanReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LBEAN_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLazy() {
+		return lazy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLazy(boolean newLazy) {
+		boolean oldLazy = lazy;
+		lazy = newLazy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__LAZY, oldLazy, lazy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCascading() {
+		return cascading;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCascading(boolean newCascading) {
+		boolean oldCascading = cascading;
+		cascading = newCascading;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__CASCADING, oldCascading, cascading));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject)type;
+			type = (LType)eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LBEAN_REFERENCE__TYPE, oldType, type));
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LType basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(LType newType) {
+		LType oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFeature getOpposite() {
+		if (opposite != null && opposite.eIsProxy()) {
+			InternalEObject oldOpposite = (InternalEObject)opposite;
+			opposite = (LFeature)eResolveProxy(oldOpposite);
+			if (opposite != oldOpposite) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LBEAN_REFERENCE__OPPOSITE, oldOpposite, opposite));
+			}
+		}
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFeature basicGetOpposite() {
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOpposite(LFeature newOpposite) {
+		LFeature oldOpposite = opposite;
+		opposite = newOpposite;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__OPPOSITE, oldOpposite, opposite));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getTypeJvm() {
+		return typeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeJvm(JvmTypeReference newTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldTypeJvm = typeJvm;
+		typeJvm = newTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM, oldTypeJvm, newTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeJvm(JvmTypeReference newTypeJvm) {
+		if (newTypeJvm != typeJvm) {
+			NotificationChain msgs = null;
+			if (typeJvm != null)
+				msgs = ((InternalEObject)typeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM, null, msgs);
+			if (newTypeJvm != null)
+				msgs = ((InternalEObject)newTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM, null, msgs);
+			msgs = basicSetTypeJvm(newTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM, newTypeJvm, newTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LResultFilters getResultFilters() {
+		return resultFilters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetResultFilters(LResultFilters newResultFilters, NotificationChain msgs) {
+		LResultFilters oldResultFilters = resultFilters;
+		resultFilters = newResultFilters;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS, oldResultFilters, newResultFilters);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setResultFilters(LResultFilters newResultFilters) {
+		if (newResultFilters != resultFilters) {
+			NotificationChain msgs = null;
+			if (resultFilters != null)
+				msgs = ((InternalEObject)resultFilters).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS, null, msgs);
+			if (newResultFilters != null)
+				msgs = ((InternalEObject)newResultFilters).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS, null, msgs);
+			msgs = basicSetResultFilters(newResultFilters, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS, newResultFilters, newResultFilters));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM:
+				return basicSetTypeJvm(null, msgs);
+			case OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS:
+				return basicSetResultFilters(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 OSBPEntityPackage.LBEAN_REFERENCE__LAZY:
+				return isLazy();
+			case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING:
+				return isCascading();
+			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
+				return getProperties();
+			case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS:
+				return getConstraints();
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE:
+				if (resolve) return getType();
+				return basicGetType();
+			case OSBPEntityPackage.LBEAN_REFERENCE__OPPOSITE:
+				if (resolve) return getOpposite();
+				return basicGetOpposite();
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM:
+				return getTypeJvm();
+			case OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS:
+				return getResultFilters();
+		}
+		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 OSBPEntityPackage.LBEAN_REFERENCE__LAZY:
+				setLazy((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING:
+				setCascading((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE:
+				setType((LType)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__OPPOSITE:
+				setOpposite((LFeature)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS:
+				setResultFilters((LResultFilters)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_REFERENCE__LAZY:
+				setLazy(LAZY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING:
+				setCascading(CASCADING_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE:
+				setType((LType)null);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__OPPOSITE:
+				setOpposite((LFeature)null);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS:
+				setResultFilters((LResultFilters)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LBEAN_REFERENCE__LAZY:
+				return lazy != LAZY_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING:
+				return cascading != CASCADING_EDEFAULT;
+			case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS:
+				return constraints != null && !constraints.isEmpty();
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE:
+				return type != null;
+			case OSBPEntityPackage.LBEAN_REFERENCE__OPPOSITE:
+				return opposite != null;
+			case OSBPEntityPackage.LBEAN_REFERENCE__TYPE_JVM:
+				return typeJvm != null;
+			case OSBPEntityPackage.LBEAN_REFERENCE__RESULT_FILTERS:
+				return resultFilters != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LReference.class) {
+			switch (derivedFeatureID) {
+				case OSBPEntityPackage.LBEAN_REFERENCE__LAZY: return OSBPTypesPackage.LREFERENCE__LAZY;
+				case OSBPEntityPackage.LBEAN_REFERENCE__CASCADING: return OSBPTypesPackage.LREFERENCE__CASCADING;
+				case OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES: return OSBPTypesPackage.LREFERENCE__PROPERTIES;
+				case OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS: return OSBPTypesPackage.LREFERENCE__CONSTRAINTS;
+				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 == LReference.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LREFERENCE__LAZY: return OSBPEntityPackage.LBEAN_REFERENCE__LAZY;
+				case OSBPTypesPackage.LREFERENCE__CASCADING: return OSBPEntityPackage.LBEAN_REFERENCE__CASCADING;
+				case OSBPTypesPackage.LREFERENCE__PROPERTIES: return OSBPEntityPackage.LBEAN_REFERENCE__PROPERTIES;
+				case OSBPTypesPackage.LREFERENCE__CONSTRAINTS: return OSBPEntityPackage.LBEAN_REFERENCE__CONSTRAINTS;
+				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(" (lazy: ");
+		result.append(lazy);
+		result.append(", cascading: ");
+		result.append(cascading);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LBeanReferenceImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityAttributeImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityAttributeImpl.java
new file mode 100644
index 0000000..e298a60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityAttributeImpl.java
@@ -0,0 +1,1123 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+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.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.XExpression;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity Attribute</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isId <em>Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isUuid <em>Uuid</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isVersion <em>Version</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isTransient <em>Transient</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isDerived <em>Derived</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isDirty <em>Dirty</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isDomainKey <em>Domain Key</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#isDomainDescription <em>Domain Description</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getDerivedGetterExpression <em>Derived Getter Expression</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getOpposite <em>Opposite</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityAttributeImpl#getTypedName <em>Typed Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityAttributeImpl extends LEntityFeatureImpl implements LEntityAttribute {
+	/**
+	 * The default value of the '{@link #isId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isId()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isUuid() <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUuid()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean UUID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isUuid() <em>Uuid</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUuid()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean uuid = UUID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean VERSION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isVersion() <em>Version</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isVersion()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean version = VERSION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LAZY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean lazy = LAZY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CASCADING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cascading = CASCADING_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransient()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TRANSIENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTransient() <em>Transient</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTransient()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean transient_ = TRANSIENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDerived() <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DERIVED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDerived() <em>Derived</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDerived()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean derived = DERIVED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDirty()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DIRTY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDirty() <em>Dirty</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDirty()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean dirty = DIRTY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainKey() <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DOMAIN_KEY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDomainKey() <em>Domain Key</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainKey()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean domainKey = DOMAIN_KEY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isDomainDescription() <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean DOMAIN_DESCRIPTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isDomainDescription() <em>Domain Description</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isDomainDescription()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean domainDescription = DOMAIN_DESCRIPTION_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDerivedGetterExpression() <em>Derived Getter Expression</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDerivedGetterExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected XExpression derivedGetterExpression;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LScalarType type;
+
+	/**
+	 * The cached value of the '{@link #getTypeJvm() <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference typeJvm;
+
+	/**
+	 * 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<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * The cached value of the '{@link #getOpposite() <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOpposite()
+	 * @generated
+	 * @ordered
+	 */
+	protected LBeanReference opposite;
+
+	/**
+	 * The default value of the '{@link #getTypedName() <em>Typed Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypedName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPED_NAME_EDEFAULT = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityAttributeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY_ATTRIBUTE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(boolean newId) {
+		boolean oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isUuid() {
+		return uuid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUuid(boolean newUuid) {
+		boolean oldUuid = uuid;
+		uuid = newUuid;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID, oldUuid, uuid));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isVersion() {
+		return version;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setVersion(boolean newVersion) {
+		boolean oldVersion = version;
+		version = newVersion;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION, oldVersion, version));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLazy() {
+		return lazy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLazy(boolean newLazy) {
+		boolean oldLazy = lazy;
+		lazy = newLazy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY, oldLazy, lazy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCascading() {
+		return cascading;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCascading(boolean newCascading) {
+		boolean oldCascading = cascading;
+		cascading = newCascading;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING, oldCascading, cascading));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTransient() {
+		return transient_;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTransient(boolean newTransient) {
+		boolean oldTransient = transient_;
+		transient_ = newTransient;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT, oldTransient, transient_));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDerived() {
+		return derived;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerived(boolean newDerived) {
+		boolean oldDerived = derived;
+		derived = newDerived;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED, oldDerived, derived));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDirty() {
+		return dirty;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDirty(boolean newDirty) {
+		boolean oldDirty = dirty;
+		dirty = newDirty;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY, oldDirty, dirty));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDomainKey() {
+		return domainKey;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDomainKey(boolean newDomainKey) {
+		boolean oldDomainKey = domainKey;
+		domainKey = newDomainKey;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY, oldDomainKey, domainKey));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isDomainDescription() {
+		return domainDescription;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDomainDescription(boolean newDomainDescription) {
+		boolean oldDomainDescription = domainDescription;
+		domainDescription = newDomainDescription;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION, oldDomainDescription, domainDescription));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public XExpression getDerivedGetterExpression() {
+		return derivedGetterExpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDerivedGetterExpression(XExpression newDerivedGetterExpression, NotificationChain msgs) {
+		XExpression oldDerivedGetterExpression = derivedGetterExpression;
+		derivedGetterExpression = newDerivedGetterExpression;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, oldDerivedGetterExpression, newDerivedGetterExpression);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDerivedGetterExpression(XExpression newDerivedGetterExpression) {
+		if (newDerivedGetterExpression != derivedGetterExpression) {
+			NotificationChain msgs = null;
+			if (derivedGetterExpression != null)
+				msgs = ((InternalEObject)derivedGetterExpression).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, null, msgs);
+			if (newDerivedGetterExpression != null)
+				msgs = ((InternalEObject)newDerivedGetterExpression).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, null, msgs);
+			msgs = basicSetDerivedGetterExpression(newDerivedGetterExpression, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION, newDerivedGetterExpression, newDerivedGetterExpression));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject)type;
+			type = (LScalarType)eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE, oldType, type));
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LScalarType basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(LScalarType newType) {
+		LScalarType oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getTypeJvm() {
+		return typeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeJvm(JvmTypeReference newTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldTypeJvm = typeJvm;
+		typeJvm = newTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM, oldTypeJvm, newTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeJvm(JvmTypeReference newTypeJvm) {
+		if (newTypeJvm != typeJvm) {
+			NotificationChain msgs = null;
+			if (typeJvm != null)
+				msgs = ((InternalEObject)typeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM, null, msgs);
+			if (newTypeJvm != null)
+				msgs = ((InternalEObject)newTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM, null, msgs);
+			msgs = basicSetTypeJvm(newTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM, newTypeJvm, newTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanReference getOpposite() {
+		if (opposite != null && opposite.eIsProxy()) {
+			InternalEObject oldOpposite = (InternalEObject)opposite;
+			opposite = (LBeanReference)eResolveProxy(oldOpposite);
+			if (opposite != oldOpposite) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LENTITY_ATTRIBUTE__OPPOSITE, oldOpposite, opposite));
+			}
+		}
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanReference basicGetOpposite() {
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOpposite(LBeanReference newOpposite) {
+		LBeanReference oldOpposite = opposite;
+		opposite = newOpposite;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_ATTRIBUTE__OPPOSITE, oldOpposite, opposite));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTypedName() {
+		StringBuilder result = new StringBuilder();
+		String _name = this.getName();
+		boolean _notEquals = (!Objects.equal(_name, null));
+		if (_notEquals) {
+			String _name_1 = this.getName();
+			result.append(_name_1);
+		}
+		else {
+			result.append("empty");
+		}
+		result.append(" : ");
+		LScalarType _type = this.getType();
+		boolean _notEquals_1 = (!Objects.equal(_type, null));
+		if (_notEquals_1) {
+			LScalarType _type_1 = this.getType();
+			String _name_2 = _type_1.getName();
+			result.append(_name_2);
+		}
+		else {
+			result.append("undefined");
+		}
+		return result.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return basicSetDerivedGetterExpression(null, msgs);
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM:
+				return basicSetTypeJvm(null, msgs);
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).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 OSBPEntityPackage.LENTITY_ATTRIBUTE__ID:
+				return isId();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID:
+				return isUuid();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION:
+				return isVersion();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY:
+				return isLazy();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING:
+				return isCascading();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT:
+				return isTransient();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED:
+				return isDerived();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY:
+				return isDirty();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY:
+				return isDomainKey();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				return isDomainDescription();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return getDerivedGetterExpression();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE:
+				if (resolve) return getType();
+				return basicGetType();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM:
+				return getTypeJvm();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES:
+				return getProperties();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS:
+				return getConstraints();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__OPPOSITE:
+				if (resolve) return getOpposite();
+				return basicGetOpposite();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPED_NAME:
+				return getTypedName();
+		}
+		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 OSBPEntityPackage.LENTITY_ATTRIBUTE__ID:
+				setId((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID:
+				setUuid((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION:
+				setVersion((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY:
+				setLazy((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING:
+				setCascading((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT:
+				setTransient((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED:
+				setDerived((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY:
+				setDirty((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY:
+				setDomainKey((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				setDomainDescription((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				setDerivedGetterExpression((XExpression)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE:
+				setType((LScalarType)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__OPPOSITE:
+				setOpposite((LBeanReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID:
+				setUuid(UUID_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION:
+				setVersion(VERSION_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY:
+				setLazy(LAZY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING:
+				setCascading(CASCADING_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT:
+				setTransient(TRANSIENT_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED:
+				setDerived(DERIVED_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY:
+				setDirty(DIRTY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY:
+				setDomainKey(DOMAIN_KEY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				setDomainDescription(DOMAIN_DESCRIPTION_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				setDerivedGetterExpression((XExpression)null);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE:
+				setType((LScalarType)null);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__OPPOSITE:
+				setOpposite((LBeanReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__ID:
+				return id != ID_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID:
+				return uuid != UUID_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION:
+				return version != VERSION_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY:
+				return lazy != LAZY_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING:
+				return cascading != CASCADING_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT:
+				return transient_ != TRANSIENT_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED:
+				return derived != DERIVED_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY:
+				return dirty != DIRTY_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY:
+				return domainKey != DOMAIN_KEY_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION:
+				return domainDescription != DOMAIN_DESCRIPTION_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION:
+				return derivedGetterExpression != null;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE:
+				return type != null;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM:
+				return typeJvm != null;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS:
+				return constraints != null && !constraints.isEmpty();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__OPPOSITE:
+				return opposite != null;
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPED_NAME:
+				return TYPED_NAME_EDEFAULT == null ? getTypedName() != null : !TYPED_NAME_EDEFAULT.equals(getTypedName());
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LAttribute.class) {
+			switch (derivedFeatureID) {
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__ID: return OSBPTypesPackage.LATTRIBUTE__ID;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID: return OSBPTypesPackage.LATTRIBUTE__UUID;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION: return OSBPTypesPackage.LATTRIBUTE__VERSION;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY: return OSBPTypesPackage.LATTRIBUTE__LAZY;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING: return OSBPTypesPackage.LATTRIBUTE__CASCADING;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT: return OSBPTypesPackage.LATTRIBUTE__TRANSIENT;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED: return OSBPTypesPackage.LATTRIBUTE__DERIVED;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY: return OSBPTypesPackage.LATTRIBUTE__DIRTY;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY: return OSBPTypesPackage.LATTRIBUTE__DOMAIN_KEY;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION: return OSBPTypesPackage.LATTRIBUTE__DOMAIN_DESCRIPTION;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE: return OSBPTypesPackage.LATTRIBUTE__TYPE;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM: return OSBPTypesPackage.LATTRIBUTE__TYPE_JVM;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES: return OSBPTypesPackage.LATTRIBUTE__PROPERTIES;
+				case OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS: return OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS;
+				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 == LAttribute.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LATTRIBUTE__ID: return OSBPEntityPackage.LENTITY_ATTRIBUTE__ID;
+				case OSBPTypesPackage.LATTRIBUTE__UUID: return OSBPEntityPackage.LENTITY_ATTRIBUTE__UUID;
+				case OSBPTypesPackage.LATTRIBUTE__VERSION: return OSBPEntityPackage.LENTITY_ATTRIBUTE__VERSION;
+				case OSBPTypesPackage.LATTRIBUTE__LAZY: return OSBPEntityPackage.LENTITY_ATTRIBUTE__LAZY;
+				case OSBPTypesPackage.LATTRIBUTE__CASCADING: return OSBPEntityPackage.LENTITY_ATTRIBUTE__CASCADING;
+				case OSBPTypesPackage.LATTRIBUTE__TRANSIENT: return OSBPEntityPackage.LENTITY_ATTRIBUTE__TRANSIENT;
+				case OSBPTypesPackage.LATTRIBUTE__DERIVED: return OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED;
+				case OSBPTypesPackage.LATTRIBUTE__DIRTY: return OSBPEntityPackage.LENTITY_ATTRIBUTE__DIRTY;
+				case OSBPTypesPackage.LATTRIBUTE__DOMAIN_KEY: return OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_KEY;
+				case OSBPTypesPackage.LATTRIBUTE__DOMAIN_DESCRIPTION: return OSBPEntityPackage.LENTITY_ATTRIBUTE__DOMAIN_DESCRIPTION;
+				case OSBPTypesPackage.LATTRIBUTE__DERIVED_GETTER_EXPRESSION: return OSBPEntityPackage.LENTITY_ATTRIBUTE__DERIVED_GETTER_EXPRESSION;
+				case OSBPTypesPackage.LATTRIBUTE__TYPE: return OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE;
+				case OSBPTypesPackage.LATTRIBUTE__TYPE_JVM: return OSBPEntityPackage.LENTITY_ATTRIBUTE__TYPE_JVM;
+				case OSBPTypesPackage.LATTRIBUTE__PROPERTIES: return OSBPEntityPackage.LENTITY_ATTRIBUTE__PROPERTIES;
+				case OSBPTypesPackage.LATTRIBUTE__CONSTRAINTS: return OSBPEntityPackage.LENTITY_ATTRIBUTE__CONSTRAINTS;
+				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(" (id: ");
+		result.append(id);
+		result.append(", uuid: ");
+		result.append(uuid);
+		result.append(", version: ");
+		result.append(version);
+		result.append(", lazy: ");
+		result.append(lazy);
+		result.append(", cascading: ");
+		result.append(cascading);
+		result.append(", transient: ");
+		result.append(transient_);
+		result.append(", derived: ");
+		result.append(derived);
+		result.append(", dirty: ");
+		result.append(dirty);
+		result.append(", domainKey: ");
+		result.append(domainKey);
+		result.append(", domainDescription: ");
+		result.append(domainDescription);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LEntityAttributeImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityColumnPersistenceInfoImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityColumnPersistenceInfoImpl.java
new file mode 100644
index 0000000..d8e6edd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityColumnPersistenceInfoImpl.java
@@ -0,0 +1,175 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity Column Persistence Info</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityColumnPersistenceInfoImpl#getColumnName <em>Column Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityColumnPersistenceInfoImpl extends LLazyResolverImpl implements LEntityColumnPersistenceInfo {
+	/**
+	 * The default value of the '{@link #getColumnName() <em>Column Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumnName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String COLUMN_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getColumnName() <em>Column Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getColumnName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String columnName = COLUMN_NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityColumnPersistenceInfoImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY_COLUMN_PERSISTENCE_INFO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getColumnName() {
+		return columnName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setColumnName(String newColumnName) {
+		String oldColumnName = columnName;
+		columnName = newColumnName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME, oldColumnName, columnName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME:
+				return getColumnName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME:
+				setColumnName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME:
+				setColumnName(COLUMN_NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME:
+				return COLUMN_NAME_EDEFAULT == null ? columnName != null : !COLUMN_NAME_EDEFAULT.equals(columnName);
+		}
+		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(" (columnName: ");
+		result.append(columnName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LEntityColumnPersistenceInfoImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityFeatureImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityFeatureImpl.java
new file mode 100644
index 0000000..6bfd702
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityFeatureImpl.java
@@ -0,0 +1,445 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+import java.lang.reflect.InvocationTargetException;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LAnnotationTargetImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity Feature</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityFeatureImpl#getPersistenceInfo <em>Persistence Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityFeatureImpl extends LAnnotationTargetImpl implements LEntityFeature {
+	/**
+	 * 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 #getMultiplicity() <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LMultiplicity multiplicity;
+
+	/**
+	 * The cached value of the '{@link #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * The cached value of the '{@link #getPersistenceInfo() <em>Persistence Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityColumnPersistenceInfo persistenceInfo;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityFeatureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY_FEATURE;
+	}
+
+	/**
+	 * <!-- 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, OSBPEntityPackage.LENTITY_FEATURE__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getMultiplicity() {
+		return multiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMultiplicity(LMultiplicity newMultiplicity, NotificationChain msgs) {
+		LMultiplicity oldMultiplicity = multiplicity;
+		multiplicity = newMultiplicity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY, oldMultiplicity, newMultiplicity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplicity(LMultiplicity newMultiplicity) {
+		if (newMultiplicity != multiplicity) {
+			NotificationChain msgs = null;
+			if (multiplicity != null)
+				msgs = ((InternalEObject)multiplicity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY, null, msgs);
+			if (newMultiplicity != null)
+				msgs = ((InternalEObject)newMultiplicity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY, null, msgs);
+			msgs = basicSetMultiplicity(newMultiplicity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY, newMultiplicity, newMultiplicity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityColumnPersistenceInfo getPersistenceInfo() {
+		return persistenceInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPersistenceInfo(LEntityColumnPersistenceInfo newPersistenceInfo, NotificationChain msgs) {
+		LEntityColumnPersistenceInfo oldPersistenceInfo = persistenceInfo;
+		persistenceInfo = newPersistenceInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO, oldPersistenceInfo, newPersistenceInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPersistenceInfo(LEntityColumnPersistenceInfo newPersistenceInfo) {
+		if (newPersistenceInfo != persistenceInfo) {
+			NotificationChain msgs = null;
+			if (persistenceInfo != null)
+				msgs = ((InternalEObject)persistenceInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO, null, msgs);
+			if (newPersistenceInfo != null)
+				msgs = ((InternalEObject)newPersistenceInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO, null, msgs);
+			msgs = basicSetPersistenceInfo(newPersistenceInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO, newPersistenceInfo, newPersistenceInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity getEntity() {
+		EObject _eContainer = this.eContainer();
+		return ((LEntity) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY:
+				return basicSetMultiplicity(null, msgs);
+			case OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(null, msgs);
+			case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO:
+				return basicSetPersistenceInfo(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 OSBPEntityPackage.LENTITY_FEATURE__NAME:
+				return getName();
+			case OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY:
+				return getMultiplicity();
+			case OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO:
+				return getAnnotationInfo();
+			case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO:
+				return getPersistenceInfo();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_FEATURE__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO:
+				setPersistenceInfo((LEntityColumnPersistenceInfo)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_FEATURE__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)null);
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+			case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO:
+				setPersistenceInfo((LEntityColumnPersistenceInfo)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_FEATURE__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPEntityPackage.LENTITY_FEATURE__MULTIPLICITY:
+				return multiplicity != null;
+			case OSBPEntityPackage.LENTITY_FEATURE__ANNOTATION_INFO:
+				return annotationInfo != null;
+			case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO:
+				return persistenceInfo != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPEntityPackage.LENTITY_FEATURE___GET_ENTITY:
+				return getEntity();
+			case OSBPEntityPackage.LENTITY_FEATURE___GET_RESOLVED_ANNOTATIONS:
+				return getResolvedAnnotations();
+		}
+		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();
+	}
+
+} //LEntityFeatureImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityImpl.java
new file mode 100644
index 0000000..708fc13
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityImpl.java
@@ -0,0 +1,1031 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+import com.google.common.collect.Iterables;
+
+import java.lang.Iterable;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Collection;
+import java.util.List;
+
+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.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LDateType;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LClassImpl;
+
+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.LEntityInheritanceStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+import org.eclipse.xtext.xbase.lib.CollectionLiterals;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#isCacheable <em>Cacheable</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#isHistorized <em>Historized</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#isTimedependent <em>Timedependent</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getTimedependentDateType <em>Timedependent Date Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#isMappedSuperclass <em>Mapped Superclass</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getPersistenceInfo <em>Persistence Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getInheritanceStrategy <em>Inheritance Strategy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getFeatures <em>Features</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getIndexes <em>Indexes</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getSuperType <em>Super Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getSuperTypeJvm <em>Super Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getSubTypes <em>Sub Types</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityImpl#getPersistenceUnit <em>Persistence Unit</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityImpl extends LClassImpl implements LEntity {
+	/**
+	 * The default value of the '{@link #isCacheable() <em>Cacheable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCacheable()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CACHEABLE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCacheable() <em>Cacheable</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCacheable()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cacheable = CACHEABLE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isHistorized() <em>Historized</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHistorized()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HISTORIZED_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHistorized() <em>Historized</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHistorized()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean historized = HISTORIZED_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTimedependent() <em>Timedependent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTimedependent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TIMEDEPENDENT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTimedependent() <em>Timedependent</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTimedependent()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean timedependent = TIMEDEPENDENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTimedependentDateType() <em>Timedependent Date Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimedependentDateType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LDateType TIMEDEPENDENT_DATE_TYPE_EDEFAULT = LDateType.DATE;
+
+	/**
+	 * The cached value of the '{@link #getTimedependentDateType() <em>Timedependent Date Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTimedependentDateType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDateType timedependentDateType = TIMEDEPENDENT_DATE_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isMappedSuperclass() <em>Mapped Superclass</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMappedSuperclass()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean MAPPED_SUPERCLASS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isMappedSuperclass() <em>Mapped Superclass</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMappedSuperclass()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean mappedSuperclass = MAPPED_SUPERCLASS_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getPersistenceInfo() <em>Persistence Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityPersistenceInfo persistenceInfo;
+
+	/**
+	 * The cached value of the '{@link #getInheritanceStrategy() <em>Inheritance Strategy</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInheritanceStrategy()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityInheritanceStrategy inheritanceStrategy;
+
+	/**
+	 * The cached value of the '{@link #getFeatures() <em>Features</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFeatures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LEntityFeature> features;
+
+	/**
+	 * The cached value of the '{@link #getIndexes() <em>Indexes</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIndexes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LIndex> indexes;
+
+	/**
+	 * The cached value of the '{@link #getSuperType() <em>Super Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntity superType;
+
+	/**
+	 * The cached value of the '{@link #getSuperTypeJvm() <em>Super Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSuperTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference superTypeJvm;
+
+	/**
+	 * The cached value of the '{@link #getSubTypes() <em>Sub Types</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubTypes()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LEntity> subTypes;
+
+	/**
+	 * The default value of the '{@link #getPersistenceUnit() <em>Persistence Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceUnit()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PERSISTENCE_UNIT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPersistenceUnit() <em>Persistence Unit</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceUnit()
+	 * @generated
+	 * @ordered
+	 */
+	protected String persistenceUnit = PERSISTENCE_UNIT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCacheable() {
+		return cacheable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCacheable(boolean newCacheable) {
+		boolean oldCacheable = cacheable;
+		cacheable = newCacheable;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__CACHEABLE, oldCacheable, cacheable));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isHistorized() {
+		return historized;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setHistorized(boolean newHistorized) {
+		boolean oldHistorized = historized;
+		historized = newHistorized;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__HISTORIZED, oldHistorized, historized));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isTimedependent() {
+		return timedependent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTimedependent(boolean newTimedependent) {
+		boolean oldTimedependent = timedependent;
+		timedependent = newTimedependent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__TIMEDEPENDENT, oldTimedependent, timedependent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDateType getTimedependentDateType() {
+		return timedependentDateType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTimedependentDateType(LDateType newTimedependentDateType) {
+		LDateType oldTimedependentDateType = timedependentDateType;
+		timedependentDateType = newTimedependentDateType == null ? TIMEDEPENDENT_DATE_TYPE_EDEFAULT : newTimedependentDateType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__TIMEDEPENDENT_DATE_TYPE, oldTimedependentDateType, timedependentDateType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isMappedSuperclass() {
+		return mappedSuperclass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMappedSuperclass(boolean newMappedSuperclass) {
+		boolean oldMappedSuperclass = mappedSuperclass;
+		mappedSuperclass = newMappedSuperclass;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__MAPPED_SUPERCLASS, oldMappedSuperclass, mappedSuperclass));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityPersistenceInfo getPersistenceInfo() {
+		return persistenceInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPersistenceInfo(LEntityPersistenceInfo newPersistenceInfo, NotificationChain msgs) {
+		LEntityPersistenceInfo oldPersistenceInfo = persistenceInfo;
+		persistenceInfo = newPersistenceInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__PERSISTENCE_INFO, oldPersistenceInfo, newPersistenceInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPersistenceInfo(LEntityPersistenceInfo newPersistenceInfo) {
+		if (newPersistenceInfo != persistenceInfo) {
+			NotificationChain msgs = null;
+			if (persistenceInfo != null)
+				msgs = ((InternalEObject)persistenceInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY__PERSISTENCE_INFO, null, msgs);
+			if (newPersistenceInfo != null)
+				msgs = ((InternalEObject)newPersistenceInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY__PERSISTENCE_INFO, null, msgs);
+			msgs = basicSetPersistenceInfo(newPersistenceInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__PERSISTENCE_INFO, newPersistenceInfo, newPersistenceInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityInheritanceStrategy getInheritanceStrategy() {
+		return inheritanceStrategy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInheritanceStrategy(LEntityInheritanceStrategy newInheritanceStrategy, NotificationChain msgs) {
+		LEntityInheritanceStrategy oldInheritanceStrategy = inheritanceStrategy;
+		inheritanceStrategy = newInheritanceStrategy;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY, oldInheritanceStrategy, newInheritanceStrategy);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInheritanceStrategy(LEntityInheritanceStrategy newInheritanceStrategy) {
+		if (newInheritanceStrategy != inheritanceStrategy) {
+			NotificationChain msgs = null;
+			if (inheritanceStrategy != null)
+				msgs = ((InternalEObject)inheritanceStrategy).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY, null, msgs);
+			if (newInheritanceStrategy != null)
+				msgs = ((InternalEObject)newInheritanceStrategy).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY, null, msgs);
+			msgs = basicSetInheritanceStrategy(newInheritanceStrategy, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY, newInheritanceStrategy, newInheritanceStrategy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LEntityFeature> getFeatures() {
+		if (features == null) {
+			features = new EObjectContainmentEList<LEntityFeature>(LEntityFeature.class, this, OSBPEntityPackage.LENTITY__FEATURES);
+		}
+		return features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LIndex> getIndexes() {
+		if (indexes == null) {
+			indexes = new EObjectContainmentEList<LIndex>(LIndex.class, this, OSBPEntityPackage.LENTITY__INDEXES);
+		}
+		return indexes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject)superType;
+			superType = (LEntity)eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LENTITY__SUPER_TYPE, oldSuperType, superType));
+			}
+		}
+		return superType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity basicGetSuperType() {
+		return superType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperType(LEntity newSuperType, NotificationChain msgs) {
+		LEntity oldSuperType = superType;
+		superType = newSuperType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__SUPER_TYPE, oldSuperType, newSuperType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperType(LEntity newSuperType) {
+		if (newSuperType != superType) {
+			NotificationChain msgs = null;
+			if (superType != null)
+				msgs = ((InternalEObject)superType).eInverseRemove(this, OSBPEntityPackage.LENTITY__SUB_TYPES, LEntity.class, msgs);
+			if (newSuperType != null)
+				msgs = ((InternalEObject)newSuperType).eInverseAdd(this, OSBPEntityPackage.LENTITY__SUB_TYPES, LEntity.class, msgs);
+			msgs = basicSetSuperType(newSuperType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__SUPER_TYPE, newSuperType, newSuperType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getSuperTypeJvm() {
+		return superTypeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSuperTypeJvm(JvmTypeReference newSuperTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldSuperTypeJvm = superTypeJvm;
+		superTypeJvm = newSuperTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM, oldSuperTypeJvm, newSuperTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSuperTypeJvm(JvmTypeReference newSuperTypeJvm) {
+		if (newSuperTypeJvm != superTypeJvm) {
+			NotificationChain msgs = null;
+			if (superTypeJvm != null)
+				msgs = ((InternalEObject)superTypeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM, null, msgs);
+			if (newSuperTypeJvm != null)
+				msgs = ((InternalEObject)newSuperTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM, null, msgs);
+			msgs = basicSetSuperTypeJvm(newSuperTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM, newSuperTypeJvm, newSuperTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LEntity> getSubTypes() {
+		if (subTypes == null) {
+			subTypes = new EObjectWithInverseResolvingEList<LEntity>(LEntity.class, this, OSBPEntityPackage.LENTITY__SUB_TYPES, OSBPEntityPackage.LENTITY__SUPER_TYPE);
+		}
+		return subTypes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPersistenceUnit() {
+		return persistenceUnit;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPersistenceUnit(String newPersistenceUnit) {
+		String oldPersistenceUnit = persistenceUnit;
+		persistenceUnit = newPersistenceUnit;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY__PERSISTENCE_UNIT, oldPersistenceUnit, persistenceUnit));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LOperation> getOperations() {
+		EList<LEntityFeature> _features = this.getFeatures();
+		Iterable<LOperation> _filter = Iterables.<LOperation>filter(_features, LOperation.class);
+		return IterableExtensions.<LOperation>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LEntityReference> getReferences() {
+		EList<LEntityFeature> _features = this.getFeatures();
+		Iterable<LEntityReference> _filter = Iterables.<LEntityReference>filter(_features, LEntityReference.class);
+		return IterableExtensions.<LEntityReference>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LEntityAttribute> getAttributes() {
+		EList<LEntityFeature> _features = this.getFeatures();
+		Iterable<LEntityAttribute> _filter = Iterables.<LEntityAttribute>filter(_features, LEntityAttribute.class);
+		return IterableExtensions.<LEntityAttribute>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LEntityFeature> getAllFeatures() {
+		final List<LEntityFeature> result = CollectionLiterals.<LEntityFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LEntityAttribute> getAllAttributes() {
+		final List<LEntityFeature> result = CollectionLiterals.<LEntityFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		Iterable<LEntityAttribute> _filter = Iterables.<LEntityAttribute>filter(result, LEntityAttribute.class);
+		return IterableExtensions.<LEntityAttribute>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public List<LEntityReference> getAllReferences() {
+		final List<LEntityFeature> result = CollectionLiterals.<LEntityFeature>newArrayList();
+		this.collectAllOSBPFeatures(this, result);
+		Iterable<LEntityReference> _filter = Iterables.<LEntityReference>filter(result, LEntityReference.class);
+		return IterableExtensions.<LEntityReference>toList(_filter);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void collectAllOSBPFeatures(final LEntity current, final List<LEntityFeature> result) {
+		boolean _equals = Objects.equal(current, null);
+		if (_equals) {
+			return;
+		}
+		EList<LEntityFeature> _features = current.getFeatures();
+		result.addAll(_features);
+		LEntity _superType = current.getSuperType();
+		this.collectAllOSBPFeatures(_superType, result);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE:
+				if (superType != null)
+					msgs = ((InternalEObject)superType).eInverseRemove(this, OSBPEntityPackage.LENTITY__SUB_TYPES, LEntity.class, msgs);
+				return basicSetSuperType((LEntity)otherEnd, msgs);
+			case OSBPEntityPackage.LENTITY__SUB_TYPES:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getSubTypes()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_INFO:
+				return basicSetPersistenceInfo(null, msgs);
+			case OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY:
+				return basicSetInheritanceStrategy(null, msgs);
+			case OSBPEntityPackage.LENTITY__FEATURES:
+				return ((InternalEList<?>)getFeatures()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LENTITY__INDEXES:
+				return ((InternalEList<?>)getIndexes()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE:
+				return basicSetSuperType(null, msgs);
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM:
+				return basicSetSuperTypeJvm(null, msgs);
+			case OSBPEntityPackage.LENTITY__SUB_TYPES:
+				return ((InternalEList<?>)getSubTypes()).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 OSBPEntityPackage.LENTITY__CACHEABLE:
+				return isCacheable();
+			case OSBPEntityPackage.LENTITY__HISTORIZED:
+				return isHistorized();
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT:
+				return isTimedependent();
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT_DATE_TYPE:
+				return getTimedependentDateType();
+			case OSBPEntityPackage.LENTITY__MAPPED_SUPERCLASS:
+				return isMappedSuperclass();
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_INFO:
+				return getPersistenceInfo();
+			case OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY:
+				return getInheritanceStrategy();
+			case OSBPEntityPackage.LENTITY__FEATURES:
+				return getFeatures();
+			case OSBPEntityPackage.LENTITY__INDEXES:
+				return getIndexes();
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE:
+				if (resolve) return getSuperType();
+				return basicGetSuperType();
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM:
+				return getSuperTypeJvm();
+			case OSBPEntityPackage.LENTITY__SUB_TYPES:
+				return getSubTypes();
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_UNIT:
+				return getPersistenceUnit();
+		}
+		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 OSBPEntityPackage.LENTITY__CACHEABLE:
+				setCacheable((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__HISTORIZED:
+				setHistorized((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT:
+				setTimedependent((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT_DATE_TYPE:
+				setTimedependentDateType((LDateType)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__MAPPED_SUPERCLASS:
+				setMappedSuperclass((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_INFO:
+				setPersistenceInfo((LEntityPersistenceInfo)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY:
+				setInheritanceStrategy((LEntityInheritanceStrategy)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__FEATURES:
+				getFeatures().clear();
+				getFeatures().addAll((Collection<? extends LEntityFeature>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__INDEXES:
+				getIndexes().clear();
+				getIndexes().addAll((Collection<? extends LIndex>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE:
+				setSuperType((LEntity)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM:
+				setSuperTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__SUB_TYPES:
+				getSubTypes().clear();
+				getSubTypes().addAll((Collection<? extends LEntity>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_UNIT:
+				setPersistenceUnit((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY__CACHEABLE:
+				setCacheable(CACHEABLE_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY__HISTORIZED:
+				setHistorized(HISTORIZED_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT:
+				setTimedependent(TIMEDEPENDENT_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT_DATE_TYPE:
+				setTimedependentDateType(TIMEDEPENDENT_DATE_TYPE_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY__MAPPED_SUPERCLASS:
+				setMappedSuperclass(MAPPED_SUPERCLASS_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_INFO:
+				setPersistenceInfo((LEntityPersistenceInfo)null);
+				return;
+			case OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY:
+				setInheritanceStrategy((LEntityInheritanceStrategy)null);
+				return;
+			case OSBPEntityPackage.LENTITY__FEATURES:
+				getFeatures().clear();
+				return;
+			case OSBPEntityPackage.LENTITY__INDEXES:
+				getIndexes().clear();
+				return;
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE:
+				setSuperType((LEntity)null);
+				return;
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM:
+				setSuperTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPEntityPackage.LENTITY__SUB_TYPES:
+				getSubTypes().clear();
+				return;
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_UNIT:
+				setPersistenceUnit(PERSISTENCE_UNIT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY__CACHEABLE:
+				return cacheable != CACHEABLE_EDEFAULT;
+			case OSBPEntityPackage.LENTITY__HISTORIZED:
+				return historized != HISTORIZED_EDEFAULT;
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT:
+				return timedependent != TIMEDEPENDENT_EDEFAULT;
+			case OSBPEntityPackage.LENTITY__TIMEDEPENDENT_DATE_TYPE:
+				return timedependentDateType != TIMEDEPENDENT_DATE_TYPE_EDEFAULT;
+			case OSBPEntityPackage.LENTITY__MAPPED_SUPERCLASS:
+				return mappedSuperclass != MAPPED_SUPERCLASS_EDEFAULT;
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_INFO:
+				return persistenceInfo != null;
+			case OSBPEntityPackage.LENTITY__INHERITANCE_STRATEGY:
+				return inheritanceStrategy != null;
+			case OSBPEntityPackage.LENTITY__FEATURES:
+				return features != null && !features.isEmpty();
+			case OSBPEntityPackage.LENTITY__INDEXES:
+				return indexes != null && !indexes.isEmpty();
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE:
+				return superType != null;
+			case OSBPEntityPackage.LENTITY__SUPER_TYPE_JVM:
+				return superTypeJvm != null;
+			case OSBPEntityPackage.LENTITY__SUB_TYPES:
+				return subTypes != null && !subTypes.isEmpty();
+			case OSBPEntityPackage.LENTITY__PERSISTENCE_UNIT:
+				return PERSISTENCE_UNIT_EDEFAULT == null ? persistenceUnit != null : !PERSISTENCE_UNIT_EDEFAULT.equals(persistenceUnit);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+		if (baseClass == LFeaturesHolder.class) {
+			switch (baseOperationID) {
+				case OSBPTypesPackage.LFEATURES_HOLDER___GET_FEATURES: return OSBPEntityPackage.LENTITY___GET_FEATURES;
+				case OSBPTypesPackage.LFEATURES_HOLDER___GET_ALL_FEATURES: return OSBPEntityPackage.LENTITY___GET_ALL_FEATURES;
+				default: return -1;
+			}
+		}
+		return super.eDerivedOperationID(baseOperationID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	@SuppressWarnings("unchecked")
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case OSBPEntityPackage.LENTITY___GET_OPERATIONS:
+				return getOperations();
+			case OSBPEntityPackage.LENTITY___GET_REFERENCES:
+				return getReferences();
+			case OSBPEntityPackage.LENTITY___GET_ATTRIBUTES:
+				return getAttributes();
+			case OSBPEntityPackage.LENTITY___GET_ALL_FEATURES:
+				return getAllFeatures();
+			case OSBPEntityPackage.LENTITY___GET_ALL_ATTRIBUTES:
+				return getAllAttributes();
+			case OSBPEntityPackage.LENTITY___GET_ALL_REFERENCES:
+				return getAllReferences();
+			case OSBPEntityPackage.LENTITY___COLLECT_ALL_OSBP_FEATURES__LENTITY_LIST:
+				collectAllOSBPFeatures((LEntity)arguments.get(0), (List<LEntityFeature>)arguments.get(1));
+				return null;
+		}
+		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(" (cacheable: ");
+		result.append(cacheable);
+		result.append(", historized: ");
+		result.append(historized);
+		result.append(", timedependent: ");
+		result.append(timedependent);
+		result.append(", timedependentDateType: ");
+		result.append(timedependentDateType);
+		result.append(", mappedSuperclass: ");
+		result.append(mappedSuperclass);
+		result.append(", persistenceUnit: ");
+		result.append(persistenceUnit);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LEntityImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityModelImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityModelImpl.java
new file mode 100644
index 0000000..351ea2b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityModelImpl.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.dsl.semantic.common.types.LTypedPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityModelImpl extends MinimalEObjectImpl.Container implements LEntityModel {
+	/**
+	 * 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<LTypedPackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LTypedPackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<LTypedPackage>(LTypedPackage.class, this, OSBPEntityPackage.LENTITY_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_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 OSBPEntityPackage.LENTITY_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 OSBPEntityPackage.LENTITY_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends LTypedPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LEntityModelImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityPersistenceInfoImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityPersistenceInfoImpl.java
new file mode 100644
index 0000000..9c31611
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityPersistenceInfoImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity Persistence Info</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityPersistenceInfoImpl#getSchemaName <em>Schema Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityPersistenceInfoImpl#getTableName <em>Table Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityPersistenceInfoImpl extends LLazyResolverImpl implements LEntityPersistenceInfo {
+	/**
+	 * The default value of the '{@link #getSchemaName() <em>Schema Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSchemaName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SCHEMA_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSchemaName() <em>Schema Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSchemaName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String schemaName = SCHEMA_NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTableName() <em>Table Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTableName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TABLE_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTableName() <em>Table Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTableName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String tableName = TABLE_NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityPersistenceInfoImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY_PERSISTENCE_INFO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSchemaName() {
+		return schemaName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSchemaName(String newSchemaName) {
+		String oldSchemaName = schemaName;
+		schemaName = newSchemaName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME, oldSchemaName, schemaName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTableName() {
+		return tableName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTableName(String newTableName) {
+		String oldTableName = tableName;
+		tableName = newTableName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__TABLE_NAME, oldTableName, tableName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME:
+				return getSchemaName();
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__TABLE_NAME:
+				return getTableName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME:
+				setSchemaName((String)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__TABLE_NAME:
+				setTableName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME:
+				setSchemaName(SCHEMA_NAME_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__TABLE_NAME:
+				setTableName(TABLE_NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__SCHEMA_NAME:
+				return SCHEMA_NAME_EDEFAULT == null ? schemaName != null : !SCHEMA_NAME_EDEFAULT.equals(schemaName);
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO__TABLE_NAME:
+				return TABLE_NAME_EDEFAULT == null ? tableName != null : !TABLE_NAME_EDEFAULT.equals(tableName);
+		}
+		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(" (schemaName: ");
+		result.append(schemaName);
+		result.append(", tableName: ");
+		result.append(tableName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LEntityPersistenceInfoImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityReferenceImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityReferenceImpl.java
new file mode 100644
index 0000000..58bb222
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityReferenceImpl.java
@@ -0,0 +1,620 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.common.types.LDatatypeConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LEntity Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#isLazy <em>Lazy</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#isCascading <em>Cascading</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#getProperties <em>Properties</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#getConstraints <em>Constraints</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#getTypeJvm <em>Type Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#getOpposite <em>Opposite</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LEntityReferenceImpl#getResultFilters <em>Result Filters</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LEntityReferenceImpl extends LEntityFeatureImpl implements LEntityReference {
+	/**
+	 * The default value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LAZY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLazy() <em>Lazy</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLazy()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean lazy = LAZY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CASCADING_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCascading() <em>Cascading</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCascading()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean cascading = CASCADING_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getProperties() <em>Properties</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProperties()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LKeyAndValue> properties;
+
+	/**
+	 * The cached value of the '{@link #getConstraints() <em>Constraints</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConstraints()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDatatypeConstraint> constraints;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntity type;
+
+	/**
+	 * The cached value of the '{@link #getTypeJvm() <em>Type Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTypeJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference typeJvm;
+
+	/**
+	 * The cached value of the '{@link #getOpposite() <em>Opposite</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOpposite()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityReference opposite;
+
+	/**
+	 * The cached value of the '{@link #getResultFilters() <em>Result Filters</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getResultFilters()
+	 * @generated
+	 * @ordered
+	 */
+	protected LResultFilters resultFilters;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LEntityReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LENTITY_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isLazy() {
+		return lazy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setLazy(boolean newLazy) {
+		boolean oldLazy = lazy;
+		lazy = newLazy;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__LAZY, oldLazy, lazy));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isCascading() {
+		return cascading;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCascading(boolean newCascading) {
+		boolean oldCascading = cascading;
+		cascading = newCascading;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__CASCADING, oldCascading, cascading));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LKeyAndValue> getProperties() {
+		if (properties == null) {
+			properties = new EObjectContainmentEList<LKeyAndValue>(LKeyAndValue.class, this, OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES);
+		}
+		return properties;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDatatypeConstraint> getConstraints() {
+		if (constraints == null) {
+			constraints = new EObjectContainmentEList<LDatatypeConstraint>(LDatatypeConstraint.class, this, OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS);
+		}
+		return constraints;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity getType() {
+		if (type != null && type.eIsProxy()) {
+			InternalEObject oldType = (InternalEObject)type;
+			type = (LEntity)eResolveProxy(oldType);
+			if (type != oldType) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LENTITY_REFERENCE__TYPE, oldType, type));
+			}
+		}
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity basicGetType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(LEntity newType) {
+		LEntity oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getTypeJvm() {
+		return typeJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTypeJvm(JvmTypeReference newTypeJvm, NotificationChain msgs) {
+		JvmTypeReference oldTypeJvm = typeJvm;
+		typeJvm = newTypeJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM, oldTypeJvm, newTypeJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTypeJvm(JvmTypeReference newTypeJvm) {
+		if (newTypeJvm != typeJvm) {
+			NotificationChain msgs = null;
+			if (typeJvm != null)
+				msgs = ((InternalEObject)typeJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM, null, msgs);
+			if (newTypeJvm != null)
+				msgs = ((InternalEObject)newTypeJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM, null, msgs);
+			msgs = basicSetTypeJvm(newTypeJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM, newTypeJvm, newTypeJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityReference getOpposite() {
+		if (opposite != null && opposite.eIsProxy()) {
+			InternalEObject oldOpposite = (InternalEObject)opposite;
+			opposite = (LEntityReference)eResolveProxy(oldOpposite);
+			if (opposite != oldOpposite) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPEntityPackage.LENTITY_REFERENCE__OPPOSITE, oldOpposite, opposite));
+			}
+		}
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityReference basicGetOpposite() {
+		return opposite;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOpposite(LEntityReference newOpposite) {
+		LEntityReference oldOpposite = opposite;
+		opposite = newOpposite;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__OPPOSITE, oldOpposite, opposite));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LResultFilters getResultFilters() {
+		return resultFilters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetResultFilters(LResultFilters newResultFilters, NotificationChain msgs) {
+		LResultFilters oldResultFilters = resultFilters;
+		resultFilters = newResultFilters;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS, oldResultFilters, newResultFilters);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setResultFilters(LResultFilters newResultFilters) {
+		if (newResultFilters != resultFilters) {
+			NotificationChain msgs = null;
+			if (resultFilters != null)
+				msgs = ((InternalEObject)resultFilters).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS, null, msgs);
+			if (newResultFilters != null)
+				msgs = ((InternalEObject)newResultFilters).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS, null, msgs);
+			msgs = basicSetResultFilters(newResultFilters, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS, newResultFilters, newResultFilters));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES:
+				return ((InternalEList<?>)getProperties()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS:
+				return ((InternalEList<?>)getConstraints()).basicRemove(otherEnd, msgs);
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM:
+				return basicSetTypeJvm(null, msgs);
+			case OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS:
+				return basicSetResultFilters(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 OSBPEntityPackage.LENTITY_REFERENCE__LAZY:
+				return isLazy();
+			case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING:
+				return isCascading();
+			case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES:
+				return getProperties();
+			case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS:
+				return getConstraints();
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE:
+				if (resolve) return getType();
+				return basicGetType();
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM:
+				return getTypeJvm();
+			case OSBPEntityPackage.LENTITY_REFERENCE__OPPOSITE:
+				if (resolve) return getOpposite();
+				return basicGetOpposite();
+			case OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS:
+				return getResultFilters();
+		}
+		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 OSBPEntityPackage.LENTITY_REFERENCE__LAZY:
+				setLazy((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING:
+				setCascading((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES:
+				getProperties().clear();
+				getProperties().addAll((Collection<? extends LKeyAndValue>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS:
+				getConstraints().clear();
+				getConstraints().addAll((Collection<? extends LDatatypeConstraint>)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE:
+				setType((LEntity)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__OPPOSITE:
+				setOpposite((LEntityReference)newValue);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS:
+				setResultFilters((LResultFilters)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_REFERENCE__LAZY:
+				setLazy(LAZY_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING:
+				setCascading(CASCADING_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES:
+				getProperties().clear();
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS:
+				getConstraints().clear();
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE:
+				setType((LEntity)null);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM:
+				setTypeJvm((JvmTypeReference)null);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__OPPOSITE:
+				setOpposite((LEntityReference)null);
+				return;
+			case OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS:
+				setResultFilters((LResultFilters)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LENTITY_REFERENCE__LAZY:
+				return lazy != LAZY_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING:
+				return cascading != CASCADING_EDEFAULT;
+			case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES:
+				return properties != null && !properties.isEmpty();
+			case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS:
+				return constraints != null && !constraints.isEmpty();
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE:
+				return type != null;
+			case OSBPEntityPackage.LENTITY_REFERENCE__TYPE_JVM:
+				return typeJvm != null;
+			case OSBPEntityPackage.LENTITY_REFERENCE__OPPOSITE:
+				return opposite != null;
+			case OSBPEntityPackage.LENTITY_REFERENCE__RESULT_FILTERS:
+				return resultFilters != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LReference.class) {
+			switch (derivedFeatureID) {
+				case OSBPEntityPackage.LENTITY_REFERENCE__LAZY: return OSBPTypesPackage.LREFERENCE__LAZY;
+				case OSBPEntityPackage.LENTITY_REFERENCE__CASCADING: return OSBPTypesPackage.LREFERENCE__CASCADING;
+				case OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES: return OSBPTypesPackage.LREFERENCE__PROPERTIES;
+				case OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS: return OSBPTypesPackage.LREFERENCE__CONSTRAINTS;
+				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 == LReference.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LREFERENCE__LAZY: return OSBPEntityPackage.LENTITY_REFERENCE__LAZY;
+				case OSBPTypesPackage.LREFERENCE__CASCADING: return OSBPEntityPackage.LENTITY_REFERENCE__CASCADING;
+				case OSBPTypesPackage.LREFERENCE__PROPERTIES: return OSBPEntityPackage.LENTITY_REFERENCE__PROPERTIES;
+				case OSBPTypesPackage.LREFERENCE__CONSTRAINTS: return OSBPEntityPackage.LENTITY_REFERENCE__CONSTRAINTS;
+				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(" (lazy: ");
+		result.append(lazy);
+		result.append(", cascading: ");
+		result.append(cascading);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LEntityReferenceImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LIndexImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LIndexImpl.java
new file mode 100644
index 0000000..f47eb8c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LIndexImpl.java
@@ -0,0 +1,270 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LIndex</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl#isUnique <em>Unique</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LIndexImpl#getFeatures <em>Features</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LIndexImpl extends MinimalEObjectImpl.Container implements LIndex {
+	/**
+	 * The default value of the '{@link #isUnique() <em>Unique</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUnique()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean UNIQUE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isUnique() <em>Unique</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUnique()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean unique = UNIQUE_EDEFAULT;
+
+	/**
+	 * 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 #getFeatures() <em>Features</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFeatures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LEntityFeature> features;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LIndexImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LINDEX;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isUnique() {
+		return unique;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUnique(boolean newUnique) {
+		boolean oldUnique = unique;
+		unique = newUnique;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LINDEX__UNIQUE, oldUnique, unique));
+	}
+
+	/**
+	 * <!-- 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, OSBPEntityPackage.LINDEX__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LEntityFeature> getFeatures() {
+		if (features == null) {
+			features = new EObjectResolvingEList<LEntityFeature>(LEntityFeature.class, this, OSBPEntityPackage.LINDEX__FEATURES);
+		}
+		return features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPEntityPackage.LINDEX__UNIQUE:
+				return isUnique();
+			case OSBPEntityPackage.LINDEX__NAME:
+				return getName();
+			case OSBPEntityPackage.LINDEX__FEATURES:
+				return getFeatures();
+		}
+		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 OSBPEntityPackage.LINDEX__UNIQUE:
+				setUnique((Boolean)newValue);
+				return;
+			case OSBPEntityPackage.LINDEX__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPEntityPackage.LINDEX__FEATURES:
+				getFeatures().clear();
+				getFeatures().addAll((Collection<? extends LEntityFeature>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LINDEX__UNIQUE:
+				setUnique(UNIQUE_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LINDEX__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LINDEX__FEATURES:
+				getFeatures().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LINDEX__UNIQUE:
+				return unique != UNIQUE_EDEFAULT;
+			case OSBPEntityPackage.LINDEX__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPEntityPackage.LINDEX__FEATURES:
+				return features != null && !features.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(" (unique: ");
+		result.append(unique);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LIndexImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LOperationImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LOperationImpl.java
new file mode 100644
index 0000000..bcab45c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LOperationImpl.java
@@ -0,0 +1,552 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import com.google.common.base.Objects;
+
+import java.lang.reflect.InvocationTargetException;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LOperation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LOperationImpl#getPersistenceInfo <em>Persistence Info</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LOperationImpl extends org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl implements LOperation {
+	/**
+	 * 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 #getMultiplicity() <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LMultiplicity multiplicity;
+
+	/**
+	 * The cached value of the '{@link #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * The cached value of the '{@link #getPersistenceInfo() <em>Persistence Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LEntityColumnPersistenceInfo persistenceInfo;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LOperationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LOPERATION;
+	}
+
+	/**
+	 * <!-- 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, OSBPEntityPackage.LOPERATION__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getMultiplicity() {
+		return multiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMultiplicity(LMultiplicity newMultiplicity, NotificationChain msgs) {
+		LMultiplicity oldMultiplicity = multiplicity;
+		multiplicity = newMultiplicity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LOPERATION__MULTIPLICITY, oldMultiplicity, newMultiplicity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplicity(LMultiplicity newMultiplicity) {
+		if (newMultiplicity != multiplicity) {
+			NotificationChain msgs = null;
+			if (multiplicity != null)
+				msgs = ((InternalEObject)multiplicity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LOPERATION__MULTIPLICITY, null, msgs);
+			if (newMultiplicity != null)
+				msgs = ((InternalEObject)newMultiplicity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LOPERATION__MULTIPLICITY, null, msgs);
+			msgs = basicSetMultiplicity(newMultiplicity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LOPERATION__MULTIPLICITY, newMultiplicity, newMultiplicity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LOPERATION__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LOPERATION__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LOPERATION__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LOPERATION__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityColumnPersistenceInfo getPersistenceInfo() {
+		return persistenceInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetPersistenceInfo(LEntityColumnPersistenceInfo newPersistenceInfo, NotificationChain msgs) {
+		LEntityColumnPersistenceInfo oldPersistenceInfo = persistenceInfo;
+		persistenceInfo = newPersistenceInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO, oldPersistenceInfo, newPersistenceInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPersistenceInfo(LEntityColumnPersistenceInfo newPersistenceInfo) {
+		if (newPersistenceInfo != persistenceInfo) {
+			NotificationChain msgs = null;
+			if (persistenceInfo != null)
+				msgs = ((InternalEObject)persistenceInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO, null, msgs);
+			if (newPersistenceInfo != null)
+				msgs = ((InternalEObject)newPersistenceInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO, null, msgs);
+			msgs = basicSetPersistenceInfo(newPersistenceInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO, newPersistenceInfo, newPersistenceInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity getEntity() {
+		EObject _eContainer = this.eContainer();
+		return ((LEntity) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBean getBean() {
+		EObject _eContainer = this.eContainer();
+		return ((LBean) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPEntityPackage.LOPERATION__MULTIPLICITY:
+				return basicSetMultiplicity(null, msgs);
+			case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(null, msgs);
+			case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO:
+				return basicSetPersistenceInfo(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 OSBPEntityPackage.LOPERATION__NAME:
+				return getName();
+			case OSBPEntityPackage.LOPERATION__MULTIPLICITY:
+				return getMultiplicity();
+			case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO:
+				return getAnnotationInfo();
+			case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO:
+				return getPersistenceInfo();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LOPERATION__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPEntityPackage.LOPERATION__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)newValue);
+				return;
+			case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+			case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO:
+				setPersistenceInfo((LEntityColumnPersistenceInfo)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LOPERATION__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LOPERATION__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)null);
+				return;
+			case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+			case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO:
+				setPersistenceInfo((LEntityColumnPersistenceInfo)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LOPERATION__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPEntityPackage.LOPERATION__MULTIPLICITY:
+				return multiplicity != null;
+			case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO:
+				return annotationInfo != null;
+			case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO:
+				return persistenceInfo != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LFeature.class) {
+			switch (derivedFeatureID) {
+				case OSBPEntityPackage.LOPERATION__NAME: return OSBPTypesPackage.LFEATURE__NAME;
+				case OSBPEntityPackage.LOPERATION__MULTIPLICITY: return OSBPTypesPackage.LFEATURE__MULTIPLICITY;
+				case OSBPEntityPackage.LOPERATION__ANNOTATION_INFO: return OSBPTypesPackage.LFEATURE__ANNOTATION_INFO;
+				default: return -1;
+			}
+		}
+		if (baseClass == LBeanFeature.class) {
+			switch (derivedFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == LEntityFeature.class) {
+			switch (derivedFeatureID) {
+				case OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO: return OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO;
+				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 == LFeature.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LFEATURE__NAME: return OSBPEntityPackage.LOPERATION__NAME;
+				case OSBPTypesPackage.LFEATURE__MULTIPLICITY: return OSBPEntityPackage.LOPERATION__MULTIPLICITY;
+				case OSBPTypesPackage.LFEATURE__ANNOTATION_INFO: return OSBPEntityPackage.LOPERATION__ANNOTATION_INFO;
+				default: return -1;
+			}
+		}
+		if (baseClass == LBeanFeature.class) {
+			switch (baseFeatureID) {
+				default: return -1;
+			}
+		}
+		if (baseClass == LEntityFeature.class) {
+			switch (baseFeatureID) {
+				case OSBPEntityPackage.LENTITY_FEATURE__PERSISTENCE_INFO: return OSBPEntityPackage.LOPERATION__PERSISTENCE_INFO;
+				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 == org.eclipse.osbp.dsl.semantic.common.types.LOperation.class) {
+			switch (baseOperationID) {
+				case OSBPTypesPackage.LOPERATION___GET_RESOLVED_ANNOTATIONS: return OSBPEntityPackage.LOPERATION___GET_RESOLVED_ANNOTATIONS;
+				default: return super.eDerivedOperationID(baseOperationID, baseClass);
+			}
+		}
+		if (baseClass == LFeature.class) {
+			switch (baseOperationID) {
+				case OSBPTypesPackage.LFEATURE___GET_RESOLVED_ANNOTATIONS: return OSBPEntityPackage.LOPERATION___GET_RESOLVED_ANNOTATIONS;
+				default: return -1;
+			}
+		}
+		if (baseClass == LBeanFeature.class) {
+			switch (baseOperationID) {
+				case OSBPEntityPackage.LBEAN_FEATURE___GET_BEAN: return OSBPEntityPackage.LOPERATION___GET_BEAN;
+				default: return -1;
+			}
+		}
+		if (baseClass == LEntityFeature.class) {
+			switch (baseOperationID) {
+				case OSBPEntityPackage.LENTITY_FEATURE___GET_ENTITY: return OSBPEntityPackage.LOPERATION___GET_ENTITY;
+				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 OSBPEntityPackage.LOPERATION___GET_ENTITY:
+				return getEntity();
+			case OSBPEntityPackage.LOPERATION___GET_BEAN:
+				return getBean();
+			case OSBPEntityPackage.LOPERATION___GET_RESOLVED_ANNOTATIONS:
+				return getResolvedAnnotations();
+		}
+		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();
+	}
+
+} //LOperationImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LTablePerClassStrategyImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LTablePerClassStrategyImpl.java
new file mode 100644
index 0000000..fa510d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LTablePerClassStrategyImpl.java
@@ -0,0 +1,284 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LTable Per Class Strategy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl#getDiscriminatorColumn <em>Discriminator Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl#getDiscriminatorType <em>Discriminator Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerClassStrategyImpl#getDiscriminatorValue <em>Discriminator Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LTablePerClassStrategyImpl extends LLazyResolverImpl implements LTablePerClassStrategy {
+	/**
+	 * The default value of the '{@link #getDiscriminatorColumn() <em>Discriminator Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISCRIMINATOR_COLUMN_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDiscriminatorColumn() <em>Discriminator Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected String discriminatorColumn = DISCRIMINATOR_COLUMN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LDiscriminatorType DISCRIMINATOR_TYPE_EDEFAULT = LDiscriminatorType.INHERIT;
+
+	/**
+	 * The cached value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDiscriminatorType discriminatorType = DISCRIMINATOR_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDiscriminatorValue() <em>Discriminator Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDiscriminatorValue() <em>Discriminator Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String discriminatorValue = DISCRIMINATOR_VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTablePerClassStrategyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LTABLE_PER_CLASS_STRATEGY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDiscriminatorColumn() {
+		return discriminatorColumn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDiscriminatorColumn(String newDiscriminatorColumn) {
+		String oldDiscriminatorColumn = discriminatorColumn;
+		discriminatorColumn = newDiscriminatorColumn;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN, oldDiscriminatorColumn, discriminatorColumn));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDiscriminatorType getDiscriminatorType() {
+		return discriminatorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDiscriminatorType(LDiscriminatorType newDiscriminatorType) {
+		LDiscriminatorType oldDiscriminatorType = discriminatorType;
+		discriminatorType = newDiscriminatorType == null ? DISCRIMINATOR_TYPE_EDEFAULT : newDiscriminatorType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE, oldDiscriminatorType, discriminatorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDiscriminatorValue() {
+		return discriminatorValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDiscriminatorValue(String newDiscriminatorValue) {
+		String oldDiscriminatorValue = discriminatorValue;
+		discriminatorValue = newDiscriminatorValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE, oldDiscriminatorValue, discriminatorValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				return getDiscriminatorColumn();
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				return getDiscriminatorType();
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				return getDiscriminatorValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				setDiscriminatorColumn((String)newValue);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				setDiscriminatorType((LDiscriminatorType)newValue);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				setDiscriminatorValue((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				setDiscriminatorColumn(DISCRIMINATOR_COLUMN_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				setDiscriminatorType(DISCRIMINATOR_TYPE_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				setDiscriminatorValue(DISCRIMINATOR_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				return DISCRIMINATOR_COLUMN_EDEFAULT == null ? discriminatorColumn != null : !DISCRIMINATOR_COLUMN_EDEFAULT.equals(discriminatorColumn);
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				return discriminatorType != DISCRIMINATOR_TYPE_EDEFAULT;
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				return DISCRIMINATOR_VALUE_EDEFAULT == null ? discriminatorValue != null : !DISCRIMINATOR_VALUE_EDEFAULT.equals(discriminatorValue);
+		}
+		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(" (discriminatorColumn: ");
+		result.append(discriminatorColumn);
+		result.append(", discriminatorType: ");
+		result.append(discriminatorType);
+		result.append(", discriminatorValue: ");
+		result.append(discriminatorValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LTablePerClassStrategyImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LTablePerSubclassStrategyImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LTablePerSubclassStrategyImpl.java
new file mode 100644
index 0000000..ff4884b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/LTablePerSubclassStrategyImpl.java
@@ -0,0 +1,284 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LTable Per Subclass Strategy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl#getDiscriminatorColumn <em>Discriminator Column</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl#getDiscriminatorType <em>Discriminator Type</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.entity.impl.LTablePerSubclassStrategyImpl#getDiscriminatorValue <em>Discriminator Value</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LTablePerSubclassStrategyImpl extends LLazyResolverImpl implements LTablePerSubclassStrategy {
+	/**
+	 * The default value of the '{@link #getDiscriminatorColumn() <em>Discriminator Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISCRIMINATOR_COLUMN_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDiscriminatorColumn() <em>Discriminator Column</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorColumn()
+	 * @generated
+	 * @ordered
+	 */
+	protected String discriminatorColumn = DISCRIMINATOR_COLUMN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LDiscriminatorType DISCRIMINATOR_TYPE_EDEFAULT = LDiscriminatorType.INHERIT;
+
+	/**
+	 * The cached value of the '{@link #getDiscriminatorType() <em>Discriminator Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDiscriminatorType discriminatorType = DISCRIMINATOR_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDiscriminatorValue() <em>Discriminator Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISCRIMINATOR_VALUE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDiscriminatorValue() <em>Discriminator Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiscriminatorValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected String discriminatorValue = DISCRIMINATOR_VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LTablePerSubclassStrategyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPEntityPackage.Literals.LTABLE_PER_SUBCLASS_STRATEGY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDiscriminatorColumn() {
+		return discriminatorColumn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDiscriminatorColumn(String newDiscriminatorColumn) {
+		String oldDiscriminatorColumn = discriminatorColumn;
+		discriminatorColumn = newDiscriminatorColumn;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN, oldDiscriminatorColumn, discriminatorColumn));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDiscriminatorType getDiscriminatorType() {
+		return discriminatorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDiscriminatorType(LDiscriminatorType newDiscriminatorType) {
+		LDiscriminatorType oldDiscriminatorType = discriminatorType;
+		discriminatorType = newDiscriminatorType == null ? DISCRIMINATOR_TYPE_EDEFAULT : newDiscriminatorType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE, oldDiscriminatorType, discriminatorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getDiscriminatorValue() {
+		return discriminatorValue;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDiscriminatorValue(String newDiscriminatorValue) {
+		String oldDiscriminatorValue = discriminatorValue;
+		discriminatorValue = newDiscriminatorValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE, oldDiscriminatorValue, discriminatorValue));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				return getDiscriminatorColumn();
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				return getDiscriminatorType();
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				return getDiscriminatorValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				setDiscriminatorColumn((String)newValue);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				setDiscriminatorType((LDiscriminatorType)newValue);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				setDiscriminatorValue((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				setDiscriminatorColumn(DISCRIMINATOR_COLUMN_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				setDiscriminatorType(DISCRIMINATOR_TYPE_EDEFAULT);
+				return;
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				setDiscriminatorValue(DISCRIMINATOR_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN:
+				return DISCRIMINATOR_COLUMN_EDEFAULT == null ? discriminatorColumn != null : !DISCRIMINATOR_COLUMN_EDEFAULT.equals(discriminatorColumn);
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE:
+				return discriminatorType != DISCRIMINATOR_TYPE_EDEFAULT;
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE:
+				return DISCRIMINATOR_VALUE_EDEFAULT == null ? discriminatorValue != null : !DISCRIMINATOR_VALUE_EDEFAULT.equals(discriminatorValue);
+		}
+		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(" (discriminatorColumn: ");
+		result.append(discriminatorColumn);
+		result.append(", discriminatorType: ");
+		result.append(discriminatorType);
+		result.append(", discriminatorValue: ");
+		result.append(discriminatorValue);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LTablePerSubclassStrategyImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/OSBPEntityFactoryImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/OSBPEntityFactoryImpl.java
new file mode 100644
index 0000000..3707357
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/OSBPEntityFactoryImpl.java
@@ -0,0 +1,497 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import java.util.List;
+
+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.dsl.semantic.entity.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPEntityFactoryImpl extends EFactoryImpl implements OSBPEntityFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OSBPEntityFactory init() {
+		try {
+			OSBPEntityFactory theOSBPEntityFactory = (OSBPEntityFactory)EPackage.Registry.INSTANCE.getEFactory(OSBPEntityPackage.eNS_URI);
+			if (theOSBPEntityFactory != null) {
+				return theOSBPEntityFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new OSBPEntityFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPEntityFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case OSBPEntityPackage.LENTITY_MODEL: return createLEntityModel();
+			case OSBPEntityPackage.LBEAN: return createLBean();
+			case OSBPEntityPackage.LENTITY: return createLEntity();
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO: return createLEntityPersistenceInfo();
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO: return createLEntityColumnPersistenceInfo();
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY: return createLTablePerClassStrategy();
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY: return createLTablePerSubclassStrategy();
+			case OSBPEntityPackage.LENTITY_FEATURE: return createLEntityFeature();
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE: return createLEntityAttribute();
+			case OSBPEntityPackage.LENTITY_REFERENCE: return createLEntityReference();
+			case OSBPEntityPackage.LBEAN_FEATURE: return createLBeanFeature();
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE: return createLBeanAttribute();
+			case OSBPEntityPackage.LBEAN_REFERENCE: return createLBeanReference();
+			case OSBPEntityPackage.LINDEX: return createLIndex();
+			case OSBPEntityPackage.LOPERATION: return createLOperation();
+			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 OSBPEntityPackage.LDISCRIMINATOR_TYPE:
+				return createLDiscriminatorTypeFromString(eDataType, initialValue);
+			case OSBPEntityPackage.INTERNAL_EOBJECT:
+				return createInternalEObjectFromString(eDataType, initialValue);
+			case OSBPEntityPackage.OPERATIONS_LIST:
+				return createOperationsListFromString(eDataType, initialValue);
+			case OSBPEntityPackage.ENTITY_FEATURE_LIST:
+				return createEntityFeatureListFromString(eDataType, initialValue);
+			case OSBPEntityPackage.ENTITY_REFERENCE_LIST:
+				return createEntityReferenceListFromString(eDataType, initialValue);
+			case OSBPEntityPackage.ENTITY_ATTRIBUTE_LIST:
+				return createEntityAttributeListFromString(eDataType, initialValue);
+			case OSBPEntityPackage.BEAN_FEATURE_LIST:
+				return createBeanFeatureListFromString(eDataType, initialValue);
+			case OSBPEntityPackage.BEAN_REFERENCE_LIST:
+				return createBeanReferenceListFromString(eDataType, initialValue);
+			case OSBPEntityPackage.BEAN_ATTRIBUTE_LIST:
+				return createBeanAttributeListFromString(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 OSBPEntityPackage.LDISCRIMINATOR_TYPE:
+				return convertLDiscriminatorTypeToString(eDataType, instanceValue);
+			case OSBPEntityPackage.INTERNAL_EOBJECT:
+				return convertInternalEObjectToString(eDataType, instanceValue);
+			case OSBPEntityPackage.OPERATIONS_LIST:
+				return convertOperationsListToString(eDataType, instanceValue);
+			case OSBPEntityPackage.ENTITY_FEATURE_LIST:
+				return convertEntityFeatureListToString(eDataType, instanceValue);
+			case OSBPEntityPackage.ENTITY_REFERENCE_LIST:
+				return convertEntityReferenceListToString(eDataType, instanceValue);
+			case OSBPEntityPackage.ENTITY_ATTRIBUTE_LIST:
+				return convertEntityAttributeListToString(eDataType, instanceValue);
+			case OSBPEntityPackage.BEAN_FEATURE_LIST:
+				return convertBeanFeatureListToString(eDataType, instanceValue);
+			case OSBPEntityPackage.BEAN_REFERENCE_LIST:
+				return convertBeanReferenceListToString(eDataType, instanceValue);
+			case OSBPEntityPackage.BEAN_ATTRIBUTE_LIST:
+				return convertBeanAttributeListToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityModel createLEntityModel() {
+		LEntityModelImpl lEntityModel = new LEntityModelImpl();
+		return lEntityModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBean createLBean() {
+		LBeanImpl lBean = new LBeanImpl();
+		return lBean;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntity createLEntity() {
+		LEntityImpl lEntity = new LEntityImpl();
+		return lEntity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityPersistenceInfo createLEntityPersistenceInfo() {
+		LEntityPersistenceInfoImpl lEntityPersistenceInfo = new LEntityPersistenceInfoImpl();
+		return lEntityPersistenceInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityColumnPersistenceInfo createLEntityColumnPersistenceInfo() {
+		LEntityColumnPersistenceInfoImpl lEntityColumnPersistenceInfo = new LEntityColumnPersistenceInfoImpl();
+		return lEntityColumnPersistenceInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTablePerClassStrategy createLTablePerClassStrategy() {
+		LTablePerClassStrategyImpl lTablePerClassStrategy = new LTablePerClassStrategyImpl();
+		return lTablePerClassStrategy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LTablePerSubclassStrategy createLTablePerSubclassStrategy() {
+		LTablePerSubclassStrategyImpl lTablePerSubclassStrategy = new LTablePerSubclassStrategyImpl();
+		return lTablePerSubclassStrategy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityFeature createLEntityFeature() {
+		LEntityFeatureImpl lEntityFeature = new LEntityFeatureImpl();
+		return lEntityFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityAttribute createLEntityAttribute() {
+		LEntityAttributeImpl lEntityAttribute = new LEntityAttributeImpl();
+		return lEntityAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LEntityReference createLEntityReference() {
+		LEntityReferenceImpl lEntityReference = new LEntityReferenceImpl();
+		return lEntityReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanFeature createLBeanFeature() {
+		LBeanFeatureImpl lBeanFeature = new LBeanFeatureImpl();
+		return lBeanFeature;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanAttribute createLBeanAttribute() {
+		LBeanAttributeImpl lBeanAttribute = new LBeanAttributeImpl();
+		return lBeanAttribute;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LBeanReference createLBeanReference() {
+		LBeanReferenceImpl lBeanReference = new LBeanReferenceImpl();
+		return lBeanReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LIndex createLIndex() {
+		LIndexImpl lIndex = new LIndexImpl();
+		return lIndex;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LOperation createLOperation() {
+		LOperationImpl lOperation = new LOperationImpl();
+		return lOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDiscriminatorType createLDiscriminatorTypeFromString(EDataType eDataType, String initialValue) {
+		LDiscriminatorType result = LDiscriminatorType.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 convertLDiscriminatorTypeToString(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
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LOperation> createOperationsListFromString(EDataType eDataType, String initialValue) {
+		return (List<LOperation>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertOperationsListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LEntityFeature> createEntityFeatureListFromString(EDataType eDataType, String initialValue) {
+		return (List<LEntityFeature>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertEntityFeatureListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LEntityReference> createEntityReferenceListFromString(EDataType eDataType, String initialValue) {
+		return (List<LEntityReference>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertEntityReferenceListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LEntityAttribute> createEntityAttributeListFromString(EDataType eDataType, String initialValue) {
+		return (List<LEntityAttribute>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertEntityAttributeListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LBeanFeature> createBeanFeatureListFromString(EDataType eDataType, String initialValue) {
+		return (List<LBeanFeature>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertBeanFeatureListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LBeanReference> createBeanReferenceListFromString(EDataType eDataType, String initialValue) {
+		return (List<LBeanReference>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertBeanReferenceListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	public List<LBeanAttribute> createBeanAttributeListFromString(EDataType eDataType, String initialValue) {
+		return (List<LBeanAttribute>)super.createFromString(initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertBeanAttributeListToString(EDataType eDataType, Object instanceValue) {
+		return super.convertToString(instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPEntityPackage getOSBPEntityPackage() {
+		return (OSBPEntityPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static OSBPEntityPackage getPackage() {
+		return OSBPEntityPackage.eINSTANCE;
+	}
+
+} //OSBPEntityFactoryImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/OSBPEntityPackageImpl.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/OSBPEntityPackageImpl.java
new file mode 100644
index 0000000..e215cf1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/impl/OSBPEntityPackageImpl.java
@@ -0,0 +1,1388 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import java.util.List;
+
+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.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.LOperation;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+import org.eclipse.xtext.common.types.TypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPEntityPackageImpl extends EPackageImpl implements OSBPEntityPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lBeanEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityPersistenceInfoEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityColumnPersistenceInfoEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityInheritanceStrategyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lTablePerClassStrategyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lTablePerSubclassStrategyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityFeatureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lEntityReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lBeanFeatureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lBeanAttributeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lBeanReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lIndexEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lOperationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lDiscriminatorTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType internalEObjectEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType operationsListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType entityFeatureListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType entityReferenceListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType entityAttributeListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType beanFeatureListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType beanReferenceListEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType beanAttributeListEDataType = 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.dsl.semantic.entity.OSBPEntityPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private OSBPEntityPackageImpl() {
+		super(eNS_URI, OSBPEntityFactory.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 OSBPEntityPackage#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 OSBPEntityPackage init() {
+		if (isInited) return (OSBPEntityPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPEntityPackage.eNS_URI);
+
+		// Obtain or create and register package
+		OSBPEntityPackageImpl theOSBPEntityPackage = (OSBPEntityPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof OSBPEntityPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new OSBPEntityPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		OSBPTypesPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theOSBPEntityPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theOSBPEntityPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theOSBPEntityPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(OSBPEntityPackage.eNS_URI, theOSBPEntityPackage);
+		return theOSBPEntityPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityModel() {
+		return lEntityModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityModel_Packages() {
+		return (EReference)lEntityModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLBean() {
+		return lBeanEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBean_Features() {
+		return (EReference)lBeanEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBean_SuperType() {
+		return (EReference)lBeanEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBean_SuperTypeJvm() {
+		return (EReference)lBeanEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBean_SubTypes() {
+		return (EReference)lBeanEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__GetOperations() {
+		return lBeanEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__GetReferences() {
+		return lBeanEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__GetAttributes() {
+		return lBeanEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__GetAllFeatures() {
+		return lBeanEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__GetAllAttributes() {
+		return lBeanEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__GetAllReferences() {
+		return lBeanEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBean__CollectAllOSBPFeatures__LBean_List() {
+		return lBeanEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntity() {
+		return lEntityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntity_Cacheable() {
+		return (EAttribute)lEntityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntity_Historized() {
+		return (EAttribute)lEntityEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntity_Timedependent() {
+		return (EAttribute)lEntityEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntity_TimedependentDateType() {
+		return (EAttribute)lEntityEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntity_MappedSuperclass() {
+		return (EAttribute)lEntityEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_PersistenceInfo() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_InheritanceStrategy() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_Features() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_Indexes() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_SuperType() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_SuperTypeJvm() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntity_SubTypes() {
+		return (EReference)lEntityEClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntity_PersistenceUnit() {
+		return (EAttribute)lEntityEClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__GetOperations() {
+		return lEntityEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__GetReferences() {
+		return lEntityEClass.getEOperations().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__GetAttributes() {
+		return lEntityEClass.getEOperations().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__GetAllFeatures() {
+		return lEntityEClass.getEOperations().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__GetAllAttributes() {
+		return lEntityEClass.getEOperations().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__GetAllReferences() {
+		return lEntityEClass.getEOperations().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntity__CollectAllOSBPFeatures__LEntity_List() {
+		return lEntityEClass.getEOperations().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityPersistenceInfo() {
+		return lEntityPersistenceInfoEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntityPersistenceInfo_SchemaName() {
+		return (EAttribute)lEntityPersistenceInfoEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntityPersistenceInfo_TableName() {
+		return (EAttribute)lEntityPersistenceInfoEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityColumnPersistenceInfo() {
+		return lEntityColumnPersistenceInfoEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntityColumnPersistenceInfo_ColumnName() {
+		return (EAttribute)lEntityColumnPersistenceInfoEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityInheritanceStrategy() {
+		return lEntityInheritanceStrategyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLTablePerClassStrategy() {
+		return lTablePerClassStrategyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLTablePerClassStrategy_DiscriminatorColumn() {
+		return (EAttribute)lTablePerClassStrategyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLTablePerClassStrategy_DiscriminatorType() {
+		return (EAttribute)lTablePerClassStrategyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLTablePerClassStrategy_DiscriminatorValue() {
+		return (EAttribute)lTablePerClassStrategyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLTablePerSubclassStrategy() {
+		return lTablePerSubclassStrategyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLTablePerSubclassStrategy_DiscriminatorColumn() {
+		return (EAttribute)lTablePerSubclassStrategyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLTablePerSubclassStrategy_DiscriminatorType() {
+		return (EAttribute)lTablePerSubclassStrategyEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLTablePerSubclassStrategy_DiscriminatorValue() {
+		return (EAttribute)lTablePerSubclassStrategyEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityFeature() {
+		return lEntityFeatureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityFeature_PersistenceInfo() {
+		return (EReference)lEntityFeatureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLEntityFeature__GetEntity() {
+		return lEntityFeatureEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityAttribute() {
+		return lEntityAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityAttribute_Opposite() {
+		return (EReference)lEntityAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLEntityAttribute_TypedName() {
+		return (EAttribute)lEntityAttributeEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLEntityReference() {
+		return lEntityReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityReference_Type() {
+		return (EReference)lEntityReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityReference_TypeJvm() {
+		return (EReference)lEntityReferenceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityReference_Opposite() {
+		return (EReference)lEntityReferenceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLEntityReference_ResultFilters() {
+		return (EReference)lEntityReferenceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLBeanFeature() {
+		return lBeanFeatureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EOperation getLBeanFeature__GetBean() {
+		return lBeanFeatureEClass.getEOperations().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLBeanAttribute() {
+		return lBeanAttributeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLBeanAttribute_TypedName() {
+		return (EAttribute)lBeanAttributeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLBeanReference() {
+		return lBeanReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBeanReference_Type() {
+		return (EReference)lBeanReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBeanReference_Opposite() {
+		return (EReference)lBeanReferenceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBeanReference_TypeJvm() {
+		return (EReference)lBeanReferenceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLBeanReference_ResultFilters() {
+		return (EReference)lBeanReferenceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLIndex() {
+		return lIndexEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLIndex_Unique() {
+		return (EAttribute)lIndexEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLIndex_Name() {
+		return (EAttribute)lIndexEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLIndex_Features() {
+		return (EReference)lIndexEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLOperation() {
+		return lOperationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLDiscriminatorType() {
+		return lDiscriminatorTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getInternalEObject() {
+		return internalEObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getOperationsList() {
+		return operationsListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getEntityFeatureList() {
+		return entityFeatureListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getEntityReferenceList() {
+		return entityReferenceListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getEntityAttributeList() {
+		return entityAttributeListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getBeanFeatureList() {
+		return beanFeatureListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getBeanReferenceList() {
+		return beanReferenceListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getBeanAttributeList() {
+		return beanAttributeListEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPEntityFactory getOSBPEntityFactory() {
+		return (OSBPEntityFactory)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
+		lEntityModelEClass = createEClass(LENTITY_MODEL);
+		createEReference(lEntityModelEClass, LENTITY_MODEL__PACKAGES);
+
+		lBeanEClass = createEClass(LBEAN);
+		createEReference(lBeanEClass, LBEAN__FEATURES);
+		createEReference(lBeanEClass, LBEAN__SUPER_TYPE);
+		createEReference(lBeanEClass, LBEAN__SUPER_TYPE_JVM);
+		createEReference(lBeanEClass, LBEAN__SUB_TYPES);
+		createEOperation(lBeanEClass, LBEAN___GET_OPERATIONS);
+		createEOperation(lBeanEClass, LBEAN___GET_REFERENCES);
+		createEOperation(lBeanEClass, LBEAN___GET_ATTRIBUTES);
+		createEOperation(lBeanEClass, LBEAN___GET_ALL_FEATURES);
+		createEOperation(lBeanEClass, LBEAN___GET_ALL_ATTRIBUTES);
+		createEOperation(lBeanEClass, LBEAN___GET_ALL_REFERENCES);
+		createEOperation(lBeanEClass, LBEAN___COLLECT_ALL_OSBP_FEATURES__LBEAN_LIST);
+
+		lEntityEClass = createEClass(LENTITY);
+		createEAttribute(lEntityEClass, LENTITY__CACHEABLE);
+		createEAttribute(lEntityEClass, LENTITY__HISTORIZED);
+		createEAttribute(lEntityEClass, LENTITY__TIMEDEPENDENT);
+		createEAttribute(lEntityEClass, LENTITY__TIMEDEPENDENT_DATE_TYPE);
+		createEAttribute(lEntityEClass, LENTITY__MAPPED_SUPERCLASS);
+		createEReference(lEntityEClass, LENTITY__PERSISTENCE_INFO);
+		createEReference(lEntityEClass, LENTITY__INHERITANCE_STRATEGY);
+		createEReference(lEntityEClass, LENTITY__FEATURES);
+		createEReference(lEntityEClass, LENTITY__INDEXES);
+		createEReference(lEntityEClass, LENTITY__SUPER_TYPE);
+		createEReference(lEntityEClass, LENTITY__SUPER_TYPE_JVM);
+		createEReference(lEntityEClass, LENTITY__SUB_TYPES);
+		createEAttribute(lEntityEClass, LENTITY__PERSISTENCE_UNIT);
+		createEOperation(lEntityEClass, LENTITY___GET_OPERATIONS);
+		createEOperation(lEntityEClass, LENTITY___GET_REFERENCES);
+		createEOperation(lEntityEClass, LENTITY___GET_ATTRIBUTES);
+		createEOperation(lEntityEClass, LENTITY___GET_ALL_FEATURES);
+		createEOperation(lEntityEClass, LENTITY___GET_ALL_ATTRIBUTES);
+		createEOperation(lEntityEClass, LENTITY___GET_ALL_REFERENCES);
+		createEOperation(lEntityEClass, LENTITY___COLLECT_ALL_OSBP_FEATURES__LENTITY_LIST);
+
+		lEntityPersistenceInfoEClass = createEClass(LENTITY_PERSISTENCE_INFO);
+		createEAttribute(lEntityPersistenceInfoEClass, LENTITY_PERSISTENCE_INFO__SCHEMA_NAME);
+		createEAttribute(lEntityPersistenceInfoEClass, LENTITY_PERSISTENCE_INFO__TABLE_NAME);
+
+		lEntityColumnPersistenceInfoEClass = createEClass(LENTITY_COLUMN_PERSISTENCE_INFO);
+		createEAttribute(lEntityColumnPersistenceInfoEClass, LENTITY_COLUMN_PERSISTENCE_INFO__COLUMN_NAME);
+
+		lEntityInheritanceStrategyEClass = createEClass(LENTITY_INHERITANCE_STRATEGY);
+
+		lTablePerClassStrategyEClass = createEClass(LTABLE_PER_CLASS_STRATEGY);
+		createEAttribute(lTablePerClassStrategyEClass, LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN);
+		createEAttribute(lTablePerClassStrategyEClass, LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE);
+		createEAttribute(lTablePerClassStrategyEClass, LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_VALUE);
+
+		lTablePerSubclassStrategyEClass = createEClass(LTABLE_PER_SUBCLASS_STRATEGY);
+		createEAttribute(lTablePerSubclassStrategyEClass, LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN);
+		createEAttribute(lTablePerSubclassStrategyEClass, LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE);
+		createEAttribute(lTablePerSubclassStrategyEClass, LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_VALUE);
+
+		lEntityFeatureEClass = createEClass(LENTITY_FEATURE);
+		createEReference(lEntityFeatureEClass, LENTITY_FEATURE__PERSISTENCE_INFO);
+		createEOperation(lEntityFeatureEClass, LENTITY_FEATURE___GET_ENTITY);
+
+		lEntityAttributeEClass = createEClass(LENTITY_ATTRIBUTE);
+		createEReference(lEntityAttributeEClass, LENTITY_ATTRIBUTE__OPPOSITE);
+		createEAttribute(lEntityAttributeEClass, LENTITY_ATTRIBUTE__TYPED_NAME);
+
+		lEntityReferenceEClass = createEClass(LENTITY_REFERENCE);
+		createEReference(lEntityReferenceEClass, LENTITY_REFERENCE__TYPE);
+		createEReference(lEntityReferenceEClass, LENTITY_REFERENCE__TYPE_JVM);
+		createEReference(lEntityReferenceEClass, LENTITY_REFERENCE__OPPOSITE);
+		createEReference(lEntityReferenceEClass, LENTITY_REFERENCE__RESULT_FILTERS);
+
+		lBeanFeatureEClass = createEClass(LBEAN_FEATURE);
+		createEOperation(lBeanFeatureEClass, LBEAN_FEATURE___GET_BEAN);
+
+		lBeanAttributeEClass = createEClass(LBEAN_ATTRIBUTE);
+		createEAttribute(lBeanAttributeEClass, LBEAN_ATTRIBUTE__TYPED_NAME);
+
+		lBeanReferenceEClass = createEClass(LBEAN_REFERENCE);
+		createEReference(lBeanReferenceEClass, LBEAN_REFERENCE__TYPE);
+		createEReference(lBeanReferenceEClass, LBEAN_REFERENCE__OPPOSITE);
+		createEReference(lBeanReferenceEClass, LBEAN_REFERENCE__TYPE_JVM);
+		createEReference(lBeanReferenceEClass, LBEAN_REFERENCE__RESULT_FILTERS);
+
+		lIndexEClass = createEClass(LINDEX);
+		createEAttribute(lIndexEClass, LINDEX__UNIQUE);
+		createEAttribute(lIndexEClass, LINDEX__NAME);
+		createEReference(lIndexEClass, LINDEX__FEATURES);
+
+		lOperationEClass = createEClass(LOPERATION);
+
+		// Create enums
+		lDiscriminatorTypeEEnum = createEEnum(LDISCRIMINATOR_TYPE);
+
+		// Create data types
+		internalEObjectEDataType = createEDataType(INTERNAL_EOBJECT);
+		operationsListEDataType = createEDataType(OPERATIONS_LIST);
+		entityFeatureListEDataType = createEDataType(ENTITY_FEATURE_LIST);
+		entityReferenceListEDataType = createEDataType(ENTITY_REFERENCE_LIST);
+		entityAttributeListEDataType = createEDataType(ENTITY_ATTRIBUTE_LIST);
+		beanFeatureListEDataType = createEDataType(BEAN_FEATURE_LIST);
+		beanReferenceListEDataType = createEDataType(BEAN_REFERENCE_LIST);
+		beanAttributeListEDataType = createEDataType(BEAN_ATTRIBUTE_LIST);
+	}
+
+	/**
+	 * <!-- 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
+		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		lBeanEClass.getESuperTypes().add(theOSBPTypesPackage.getLClass());
+		lBeanEClass.getESuperTypes().add(theOSBPTypesPackage.getLScalarType());
+		lBeanEClass.getESuperTypes().add(theOSBPTypesPackage.getLFeaturesHolder());
+		lEntityEClass.getESuperTypes().add(theOSBPTypesPackage.getLClass());
+		lEntityEClass.getESuperTypes().add(theOSBPTypesPackage.getLFeaturesHolder());
+		lEntityPersistenceInfoEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lEntityColumnPersistenceInfoEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lEntityInheritanceStrategyEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lTablePerClassStrategyEClass.getESuperTypes().add(this.getLEntityInheritanceStrategy());
+		lTablePerSubclassStrategyEClass.getESuperTypes().add(this.getLEntityInheritanceStrategy());
+		lEntityFeatureEClass.getESuperTypes().add(theOSBPTypesPackage.getLFeature());
+		lEntityAttributeEClass.getESuperTypes().add(this.getLEntityFeature());
+		lEntityAttributeEClass.getESuperTypes().add(theOSBPTypesPackage.getLAttribute());
+		lEntityReferenceEClass.getESuperTypes().add(this.getLEntityFeature());
+		lEntityReferenceEClass.getESuperTypes().add(theOSBPTypesPackage.getLReference());
+		lBeanFeatureEClass.getESuperTypes().add(theOSBPTypesPackage.getLFeature());
+		lBeanAttributeEClass.getESuperTypes().add(this.getLBeanFeature());
+		lBeanAttributeEClass.getESuperTypes().add(theOSBPTypesPackage.getLAttribute());
+		lBeanReferenceEClass.getESuperTypes().add(this.getLBeanFeature());
+		lBeanReferenceEClass.getESuperTypes().add(theOSBPTypesPackage.getLReference());
+		lOperationEClass.getESuperTypes().add(theOSBPTypesPackage.getLOperation());
+		lOperationEClass.getESuperTypes().add(this.getLBeanFeature());
+		lOperationEClass.getESuperTypes().add(this.getLEntityFeature());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(lEntityModelEClass, LEntityModel.class, "LEntityModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLEntityModel_Packages(), theOSBPTypesPackage.getLTypedPackage(), null, "packages", null, 0, -1, LEntityModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lBeanEClass, LBean.class, "LBean", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLBean_Features(), this.getLBeanFeature(), null, "features", null, 0, -1, LBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLBean_SuperType(), this.getLBean(), this.getLBean_SubTypes(), "superType", null, 0, 1, LBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLBean_SuperTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "superTypeJvm", null, 0, 1, LBean.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLBean_SubTypes(), this.getLBean(), this.getLBean_SuperType(), "subTypes", null, 0, -1, LBean.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLBean__GetOperations(), this.getOperationsList(), "getOperations", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLBean__GetReferences(), this.getBeanReferenceList(), "getReferences", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLBean__GetAttributes(), this.getBeanAttributeList(), "getAttributes", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLBean__GetAllFeatures(), this.getBeanFeatureList(), "getAllFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLBean__GetAllAttributes(), this.getBeanAttributeList(), "getAllAttributes", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLBean__GetAllReferences(), this.getBeanReferenceList(), "getAllReferences", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		EOperation op = initEOperation(getLBean__CollectAllOSBPFeatures__LBean_List(), null, "collectAllOSBPFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getLBean(), "current", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getBeanFeatureList(), "result", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lEntityEClass, LEntity.class, "LEntity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLEntity_Cacheable(), theEcorePackage.getEBoolean(), "cacheable", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntity_Historized(), theEcorePackage.getEBoolean(), "historized", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntity_Timedependent(), theEcorePackage.getEBoolean(), "timedependent", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntity_TimedependentDateType(), theOSBPTypesPackage.getLDateType(), "timedependentDateType", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntity_MappedSuperclass(), theEcorePackage.getEBoolean(), "mappedSuperclass", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_PersistenceInfo(), this.getLEntityPersistenceInfo(), null, "persistenceInfo", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_InheritanceStrategy(), this.getLEntityInheritanceStrategy(), null, "inheritanceStrategy", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_Features(), this.getLEntityFeature(), null, "features", null, 0, -1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_Indexes(), this.getLIndex(), null, "indexes", null, 0, -1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_SuperType(), this.getLEntity(), this.getLEntity_SubTypes(), "superType", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_SuperTypeJvm(), theTypesPackage.getJvmTypeReference(), null, "superTypeJvm", null, 0, 1, LEntity.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntity_SubTypes(), this.getLEntity(), this.getLEntity_SuperType(), "subTypes", null, 0, -1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntity_PersistenceUnit(), theEcorePackage.getEString(), "persistenceUnit", null, 0, 1, LEntity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLEntity__GetOperations(), this.getOperationsList(), "getOperations", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLEntity__GetReferences(), this.getEntityReferenceList(), "getReferences", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLEntity__GetAttributes(), this.getEntityAttributeList(), "getAttributes", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLEntity__GetAllFeatures(), this.getEntityFeatureList(), "getAllFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLEntity__GetAllAttributes(), this.getEntityAttributeList(), "getAllAttributes", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getLEntity__GetAllReferences(), this.getEntityReferenceList(), "getAllReferences", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		op = initEOperation(getLEntity__CollectAllOSBPFeatures__LEntity_List(), null, "collectAllOSBPFeatures", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getLEntity(), "current", 0, 1, !IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, this.getEntityFeatureList(), "result", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lEntityPersistenceInfoEClass, LEntityPersistenceInfo.class, "LEntityPersistenceInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLEntityPersistenceInfo_SchemaName(), theEcorePackage.getEString(), "schemaName", null, 0, 1, LEntityPersistenceInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntityPersistenceInfo_TableName(), theEcorePackage.getEString(), "tableName", null, 0, 1, LEntityPersistenceInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lEntityColumnPersistenceInfoEClass, LEntityColumnPersistenceInfo.class, "LEntityColumnPersistenceInfo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLEntityColumnPersistenceInfo_ColumnName(), theEcorePackage.getEString(), "columnName", null, 0, 1, LEntityColumnPersistenceInfo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lEntityInheritanceStrategyEClass, LEntityInheritanceStrategy.class, "LEntityInheritanceStrategy", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lTablePerClassStrategyEClass, LTablePerClassStrategy.class, "LTablePerClassStrategy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLTablePerClassStrategy_DiscriminatorColumn(), theEcorePackage.getEString(), "discriminatorColumn", null, 0, 1, LTablePerClassStrategy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLTablePerClassStrategy_DiscriminatorType(), this.getLDiscriminatorType(), "discriminatorType", null, 0, 1, LTablePerClassStrategy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLTablePerClassStrategy_DiscriminatorValue(), theEcorePackage.getEString(), "discriminatorValue", null, 0, 1, LTablePerClassStrategy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lTablePerSubclassStrategyEClass, LTablePerSubclassStrategy.class, "LTablePerSubclassStrategy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLTablePerSubclassStrategy_DiscriminatorColumn(), theEcorePackage.getEString(), "discriminatorColumn", null, 0, 1, LTablePerSubclassStrategy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLTablePerSubclassStrategy_DiscriminatorType(), this.getLDiscriminatorType(), "discriminatorType", null, 0, 1, LTablePerSubclassStrategy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLTablePerSubclassStrategy_DiscriminatorValue(), theEcorePackage.getEString(), "discriminatorValue", null, 0, 1, LTablePerSubclassStrategy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lEntityFeatureEClass, LEntityFeature.class, "LEntityFeature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLEntityFeature_PersistenceInfo(), this.getLEntityColumnPersistenceInfo(), null, "persistenceInfo", null, 0, 1, LEntityFeature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getLEntityFeature__GetEntity(), this.getLEntity(), "getEntity", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lEntityAttributeEClass, LEntityAttribute.class, "LEntityAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLEntityAttribute_Opposite(), this.getLBeanReference(), null, "opposite", null, 0, 1, LEntityAttribute.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLEntityAttribute_TypedName(), theEcorePackage.getEString(), "typedName", null, 0, 1, LEntityAttribute.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+		initEClass(lEntityReferenceEClass, LEntityReference.class, "LEntityReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLEntityReference_Type(), this.getLEntity(), null, "type", null, 0, 1, LEntityReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntityReference_TypeJvm(), theTypesPackage.getJvmTypeReference(), null, "typeJvm", null, 0, 1, LEntityReference.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntityReference_Opposite(), this.getLEntityReference(), null, "opposite", null, 0, 1, LEntityReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLEntityReference_ResultFilters(), theOSBPTypesPackage.getLResultFilters(), null, "resultFilters", null, 0, 1, LEntityReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lBeanFeatureEClass, LBeanFeature.class, "LBeanFeature", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getLBeanFeature__GetBean(), this.getLBean(), "getBean", 0, 1, !IS_UNIQUE, IS_ORDERED);
+
+		initEClass(lBeanAttributeEClass, LBeanAttribute.class, "LBeanAttribute", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLBeanAttribute_TypedName(), theEcorePackage.getEString(), "typedName", null, 0, 1, LBeanAttribute.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+		initEClass(lBeanReferenceEClass, LBeanReference.class, "LBeanReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLBeanReference_Type(), theOSBPTypesPackage.getLType(), null, "type", null, 0, 1, LBeanReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLBeanReference_Opposite(), theOSBPTypesPackage.getLFeature(), null, "opposite", null, 0, 1, LBeanReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLBeanReference_TypeJvm(), theTypesPackage.getJvmTypeReference(), null, "typeJvm", null, 0, 1, LBeanReference.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLBeanReference_ResultFilters(), theOSBPTypesPackage.getLResultFilters(), null, "resultFilters", null, 0, 1, LBeanReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lIndexEClass, LIndex.class, "LIndex", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLIndex_Unique(), theEcorePackage.getEBoolean(), "unique", null, 0, 1, LIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLIndex_Name(), theEcorePackage.getEString(), "name", null, 0, 1, LIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLIndex_Features(), this.getLEntityFeature(), null, "features", null, 0, -1, LIndex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lOperationEClass, LOperation.class, "LOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Initialize enums and add enum literals
+		initEEnum(lDiscriminatorTypeEEnum, LDiscriminatorType.class, "LDiscriminatorType");
+		addEEnumLiteral(lDiscriminatorTypeEEnum, LDiscriminatorType.INHERIT);
+		addEEnumLiteral(lDiscriminatorTypeEEnum, LDiscriminatorType.STRING);
+		addEEnumLiteral(lDiscriminatorTypeEEnum, LDiscriminatorType.CHAR);
+		addEEnumLiteral(lDiscriminatorTypeEEnum, LDiscriminatorType.INTEGER);
+
+		// Initialize data types
+		initEDataType(internalEObjectEDataType, InternalEObject.class, "InternalEObject", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(operationsListEDataType, List.class, "OperationsList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LOperation>");
+		initEDataType(entityFeatureListEDataType, List.class, "EntityFeatureList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LEntityFeature>");
+		initEDataType(entityReferenceListEDataType, List.class, "EntityReferenceList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LEntityReference>");
+		initEDataType(entityAttributeListEDataType, List.class, "EntityAttributeList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute>");
+		initEDataType(beanFeatureListEDataType, List.class, "BeanFeatureList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LBeanFeature>");
+		initEDataType(beanReferenceListEDataType, List.class, "BeanReferenceList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LBeanReference>");
+		initEDataType(beanAttributeListEDataType, List.class, "BeanAttributeList", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS, "java.util.List<org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute>");
+
+		// 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", "entity"
+		   });
+	}
+
+} //OSBPEntityPackageImpl
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/util/OSBPEntityAdapterFactory.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/util/OSBPEntityAdapterFactory.java
new file mode 100644
index 0000000..6cd8ebe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/util/OSBPEntityAdapterFactory.java
@@ -0,0 +1,591 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.entity.*;
+
+/**
+ * <!-- 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.dsl.semantic.entity.OSBPEntityPackage
+ * @generated
+ */
+public class OSBPEntityAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPEntityPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPEntityAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = OSBPEntityPackage.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 OSBPEntitySwitch<Adapter> modelSwitch =
+		new OSBPEntitySwitch<Adapter>() {
+			@Override
+			public Adapter caseLEntityModel(LEntityModel object) {
+				return createLEntityModelAdapter();
+			}
+			@Override
+			public Adapter caseLBean(LBean object) {
+				return createLBeanAdapter();
+			}
+			@Override
+			public Adapter caseLEntity(LEntity object) {
+				return createLEntityAdapter();
+			}
+			@Override
+			public Adapter caseLEntityPersistenceInfo(LEntityPersistenceInfo object) {
+				return createLEntityPersistenceInfoAdapter();
+			}
+			@Override
+			public Adapter caseLEntityColumnPersistenceInfo(LEntityColumnPersistenceInfo object) {
+				return createLEntityColumnPersistenceInfoAdapter();
+			}
+			@Override
+			public Adapter caseLEntityInheritanceStrategy(LEntityInheritanceStrategy object) {
+				return createLEntityInheritanceStrategyAdapter();
+			}
+			@Override
+			public Adapter caseLTablePerClassStrategy(LTablePerClassStrategy object) {
+				return createLTablePerClassStrategyAdapter();
+			}
+			@Override
+			public Adapter caseLTablePerSubclassStrategy(LTablePerSubclassStrategy object) {
+				return createLTablePerSubclassStrategyAdapter();
+			}
+			@Override
+			public Adapter caseLEntityFeature(LEntityFeature object) {
+				return createLEntityFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLEntityAttribute(LEntityAttribute object) {
+				return createLEntityAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLEntityReference(LEntityReference object) {
+				return createLEntityReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLBeanFeature(LBeanFeature object) {
+				return createLBeanFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLBeanAttribute(LBeanAttribute object) {
+				return createLBeanAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLBeanReference(LBeanReference object) {
+				return createLBeanReferenceAdapter();
+			}
+			@Override
+			public Adapter caseLIndex(LIndex object) {
+				return createLIndexAdapter();
+			}
+			@Override
+			public Adapter caseLOperation(LOperation object) {
+				return createLOperationAdapter();
+			}
+			@Override
+			public Adapter caseLLazyResolver(LLazyResolver object) {
+				return createLLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseLAnnotationTarget(LAnnotationTarget object) {
+				return createLAnnotationTargetAdapter();
+			}
+			@Override
+			public Adapter caseLType(LType object) {
+				return createLTypeAdapter();
+			}
+			@Override
+			public Adapter caseLClass(LClass object) {
+				return createLClassAdapter();
+			}
+			@Override
+			public Adapter caseLScalarType(LScalarType object) {
+				return createLScalarTypeAdapter();
+			}
+			@Override
+			public Adapter caseLFeaturesHolder(LFeaturesHolder object) {
+				return createLFeaturesHolderAdapter();
+			}
+			@Override
+			public Adapter caseLFeature(LFeature object) {
+				return createLFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLAttribute(LAttribute object) {
+				return createLAttributeAdapter();
+			}
+			@Override
+			public Adapter caseLReference(LReference object) {
+				return createLReferenceAdapter();
+			}
+			@Override
+			public Adapter caseOSBPTypes_LOperation(org.eclipse.osbp.dsl.semantic.common.types.LOperation object) {
+				return createOSBPTypes_LOperationAdapter();
+			}
+			@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.dsl.semantic.entity.LEntityModel <em>LEntity 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.dsl.semantic.entity.LEntityModel
+	 * @generated
+	 */
+	public Adapter createLEntityModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LBean <em>LBean</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.entity.LBean
+	 * @generated
+	 */
+	public Adapter createLBeanAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntity <em>LEntity</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.entity.LEntity
+	 * @generated
+	 */
+	public Adapter createLEntityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo <em>LEntity Persistence Info</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.entity.LEntityPersistenceInfo
+	 * @generated
+	 */
+	public Adapter createLEntityPersistenceInfoAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo <em>LEntity Column Persistence Info</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.entity.LEntityColumnPersistenceInfo
+	 * @generated
+	 */
+	public Adapter createLEntityColumnPersistenceInfoAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy <em>LEntity Inheritance Strategy</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.entity.LEntityInheritanceStrategy
+	 * @generated
+	 */
+	public Adapter createLEntityInheritanceStrategyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy <em>LTable Per Class Strategy</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.entity.LTablePerClassStrategy
+	 * @generated
+	 */
+	public Adapter createLTablePerClassStrategyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy <em>LTable Per Subclass Strategy</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.entity.LTablePerSubclassStrategy
+	 * @generated
+	 */
+	public Adapter createLTablePerSubclassStrategyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityFeature <em>LEntity Feature</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.entity.LEntityFeature
+	 * @generated
+	 */
+	public Adapter createLEntityFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute <em>LEntity Attribute</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.entity.LEntityAttribute
+	 * @generated
+	 */
+	public Adapter createLEntityAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LEntityReference <em>LEntity 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.dsl.semantic.entity.LEntityReference
+	 * @generated
+	 */
+	public Adapter createLEntityReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanFeature <em>LBean Feature</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.entity.LBeanFeature
+	 * @generated
+	 */
+	public Adapter createLBeanFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute <em>LBean Attribute</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.entity.LBeanAttribute
+	 * @generated
+	 */
+	public Adapter createLBeanAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LBeanReference <em>LBean 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.dsl.semantic.entity.LBeanReference
+	 * @generated
+	 */
+	public Adapter createLBeanReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LIndex <em>LIndex</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.entity.LIndex
+	 * @generated
+	 */
+	public Adapter createLIndexAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.entity.LOperation <em>LOperation</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.entity.LOperation
+	 * @generated
+	 */
+	public Adapter createLOperationAdapter() {
+		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.LAnnotationTarget <em>LAnnotation Target</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.LAnnotationTarget
+	 * @generated
+	 */
+	public Adapter createLAnnotationTargetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LType <em>LType</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.LType
+	 * @generated
+	 */
+	public Adapter createLTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass <em>LClass</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.LClass
+	 * @generated
+	 */
+	public Adapter createLClassAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LScalarType <em>LScalar 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.dsl.semantic.common.types.LScalarType
+	 * @generated
+	 */
+	public Adapter createLScalarTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder <em>LFeatures Holder</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.LFeaturesHolder
+	 * @generated
+	 */
+	public Adapter createLFeaturesHolderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</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.LFeature
+	 * @generated
+	 */
+	public Adapter createLFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LAttribute <em>LAttribute</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.LAttribute
+	 * @generated
+	 */
+	public Adapter createLAttributeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LReference <em>LReference</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.LReference
+	 * @generated
+	 */
+	public Adapter createLReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation <em>LOperation</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.LOperation
+	 * @generated
+	 */
+	public Adapter createOSBPTypes_LOperationAdapter() {
+		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;
+	}
+
+} //OSBPEntityAdapterFactory
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/util/OSBPEntitySwitch.java b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/util/OSBPEntitySwitch.java
new file mode 100644
index 0000000..6988a58
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src-gen/org/eclipse/osbp/dsl/semantic/entity/util/OSBPEntitySwitch.java
@@ -0,0 +1,646 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *    
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.entity.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.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeaturesHolder;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.entity.*;
+
+/**
+ * <!-- 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.dsl.semantic.entity.OSBPEntityPackage
+ * @generated
+ */
+public class OSBPEntitySwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPEntityPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPEntitySwitch() {
+		if (modelPackage == null) {
+			modelPackage = OSBPEntityPackage.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 OSBPEntityPackage.LENTITY_MODEL: {
+				LEntityModel lEntityModel = (LEntityModel)theEObject;
+				T result = caseLEntityModel(lEntityModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LBEAN: {
+				LBean lBean = (LBean)theEObject;
+				T result = caseLBean(lBean);
+				if (result == null) result = caseLClass(lBean);
+				if (result == null) result = caseLScalarType(lBean);
+				if (result == null) result = caseLFeaturesHolder(lBean);
+				if (result == null) result = caseLType(lBean);
+				if (result == null) result = caseLAnnotationTarget(lBean);
+				if (result == null) result = caseLLazyResolver(lBean);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY: {
+				LEntity lEntity = (LEntity)theEObject;
+				T result = caseLEntity(lEntity);
+				if (result == null) result = caseLClass(lEntity);
+				if (result == null) result = caseLFeaturesHolder(lEntity);
+				if (result == null) result = caseLType(lEntity);
+				if (result == null) result = caseLAnnotationTarget(lEntity);
+				if (result == null) result = caseLLazyResolver(lEntity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY_PERSISTENCE_INFO: {
+				LEntityPersistenceInfo lEntityPersistenceInfo = (LEntityPersistenceInfo)theEObject;
+				T result = caseLEntityPersistenceInfo(lEntityPersistenceInfo);
+				if (result == null) result = caseLLazyResolver(lEntityPersistenceInfo);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY_COLUMN_PERSISTENCE_INFO: {
+				LEntityColumnPersistenceInfo lEntityColumnPersistenceInfo = (LEntityColumnPersistenceInfo)theEObject;
+				T result = caseLEntityColumnPersistenceInfo(lEntityColumnPersistenceInfo);
+				if (result == null) result = caseLLazyResolver(lEntityColumnPersistenceInfo);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY_INHERITANCE_STRATEGY: {
+				LEntityInheritanceStrategy lEntityInheritanceStrategy = (LEntityInheritanceStrategy)theEObject;
+				T result = caseLEntityInheritanceStrategy(lEntityInheritanceStrategy);
+				if (result == null) result = caseLLazyResolver(lEntityInheritanceStrategy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LTABLE_PER_CLASS_STRATEGY: {
+				LTablePerClassStrategy lTablePerClassStrategy = (LTablePerClassStrategy)theEObject;
+				T result = caseLTablePerClassStrategy(lTablePerClassStrategy);
+				if (result == null) result = caseLEntityInheritanceStrategy(lTablePerClassStrategy);
+				if (result == null) result = caseLLazyResolver(lTablePerClassStrategy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LTABLE_PER_SUBCLASS_STRATEGY: {
+				LTablePerSubclassStrategy lTablePerSubclassStrategy = (LTablePerSubclassStrategy)theEObject;
+				T result = caseLTablePerSubclassStrategy(lTablePerSubclassStrategy);
+				if (result == null) result = caseLEntityInheritanceStrategy(lTablePerSubclassStrategy);
+				if (result == null) result = caseLLazyResolver(lTablePerSubclassStrategy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY_FEATURE: {
+				LEntityFeature lEntityFeature = (LEntityFeature)theEObject;
+				T result = caseLEntityFeature(lEntityFeature);
+				if (result == null) result = caseLFeature(lEntityFeature);
+				if (result == null) result = caseLAnnotationTarget(lEntityFeature);
+				if (result == null) result = caseLLazyResolver(lEntityFeature);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY_ATTRIBUTE: {
+				LEntityAttribute lEntityAttribute = (LEntityAttribute)theEObject;
+				T result = caseLEntityAttribute(lEntityAttribute);
+				if (result == null) result = caseLEntityFeature(lEntityAttribute);
+				if (result == null) result = caseLAttribute(lEntityAttribute);
+				if (result == null) result = caseLFeature(lEntityAttribute);
+				if (result == null) result = caseLAnnotationTarget(lEntityAttribute);
+				if (result == null) result = caseLLazyResolver(lEntityAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LENTITY_REFERENCE: {
+				LEntityReference lEntityReference = (LEntityReference)theEObject;
+				T result = caseLEntityReference(lEntityReference);
+				if (result == null) result = caseLEntityFeature(lEntityReference);
+				if (result == null) result = caseLReference(lEntityReference);
+				if (result == null) result = caseLFeature(lEntityReference);
+				if (result == null) result = caseLAnnotationTarget(lEntityReference);
+				if (result == null) result = caseLLazyResolver(lEntityReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LBEAN_FEATURE: {
+				LBeanFeature lBeanFeature = (LBeanFeature)theEObject;
+				T result = caseLBeanFeature(lBeanFeature);
+				if (result == null) result = caseLFeature(lBeanFeature);
+				if (result == null) result = caseLAnnotationTarget(lBeanFeature);
+				if (result == null) result = caseLLazyResolver(lBeanFeature);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LBEAN_ATTRIBUTE: {
+				LBeanAttribute lBeanAttribute = (LBeanAttribute)theEObject;
+				T result = caseLBeanAttribute(lBeanAttribute);
+				if (result == null) result = caseLBeanFeature(lBeanAttribute);
+				if (result == null) result = caseLAttribute(lBeanAttribute);
+				if (result == null) result = caseLFeature(lBeanAttribute);
+				if (result == null) result = caseLAnnotationTarget(lBeanAttribute);
+				if (result == null) result = caseLLazyResolver(lBeanAttribute);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LBEAN_REFERENCE: {
+				LBeanReference lBeanReference = (LBeanReference)theEObject;
+				T result = caseLBeanReference(lBeanReference);
+				if (result == null) result = caseLBeanFeature(lBeanReference);
+				if (result == null) result = caseLReference(lBeanReference);
+				if (result == null) result = caseLFeature(lBeanReference);
+				if (result == null) result = caseLAnnotationTarget(lBeanReference);
+				if (result == null) result = caseLLazyResolver(lBeanReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LINDEX: {
+				LIndex lIndex = (LIndex)theEObject;
+				T result = caseLIndex(lIndex);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPEntityPackage.LOPERATION: {
+				LOperation lOperation = (LOperation)theEObject;
+				T result = caseLOperation(lOperation);
+				if (result == null) result = caseOSBPTypes_LOperation(lOperation);
+				if (result == null) result = caseLBeanFeature(lOperation);
+				if (result == null) result = caseLEntityFeature(lOperation);
+				if (result == null) result = caseLFeature(lOperation);
+				if (result == null) result = caseLAnnotationTarget(lOperation);
+				if (result == null) result = caseLLazyResolver(lOperation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity 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>LEntity Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityModel(LEntityModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LBean</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>LBean</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLBean(LBean object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity</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>LEntity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntity(LEntity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity Persistence Info</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>LEntity Persistence Info</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityPersistenceInfo(LEntityPersistenceInfo object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity Column Persistence Info</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>LEntity Column Persistence Info</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityColumnPersistenceInfo(LEntityColumnPersistenceInfo object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity Inheritance Strategy</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>LEntity Inheritance Strategy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityInheritanceStrategy(LEntityInheritanceStrategy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LTable Per Class Strategy</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>LTable Per Class Strategy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLTablePerClassStrategy(LTablePerClassStrategy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LTable Per Subclass Strategy</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>LTable Per Subclass Strategy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLTablePerSubclassStrategy(LTablePerSubclassStrategy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity Feature</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>LEntity Feature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityFeature(LEntityFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity Attribute</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>LEntity Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityAttribute(LEntityAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LEntity 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>LEntity Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLEntityReference(LEntityReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LBean Feature</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>LBean Feature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLBeanFeature(LBeanFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LBean Attribute</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>LBean Attribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLBeanAttribute(LBeanAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LBean 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>LBean Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLBeanReference(LBeanReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LIndex</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>LIndex</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLIndex(LIndex object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LOperation</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>LOperation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLOperation(LOperation 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>LAnnotation Target</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>LAnnotation Target</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAnnotationTarget(LAnnotationTarget object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LType</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>LType</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLType(LType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LClass</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>LClass</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLClass(LClass object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LScalar 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>LScalar Type</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLScalarType(LScalarType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeatures Holder</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>LFeatures Holder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeaturesHolder(LFeaturesHolder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeature</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>LFeature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeature(LFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LAttribute</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>LAttribute</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAttribute(LAttribute object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LReference</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>LReference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLReference(LReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LOperation</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>LOperation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOSBPTypes_LOperation(org.eclipse.osbp.dsl.semantic.common.types.LOperation 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;
+	}
+
+} //OSBPEntitySwitch
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/Entity.xtext b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/Entity.xtext
new file mode 100644
index 0000000..a3a6072
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/Entity.xtext
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg), Robert Handschmann (Vienna)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ * 		Robert Handschmann - V2
+ */
+grammar org.eclipse.osbp.dsl.entity.xtext.EntityGrammar with org.eclipse.osbp.dsl.common.xtext.CommonGrammar
+
+import "http://osbp.eclipse.org/dsl/common/types/v1"
+import "http://osbp.eclipse.org/dsl/entity/v1" as entity
+import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
+import "http://www.eclipse.org/xtext/xbase/Xtype" as xtype
+import "http://www.eclipse.org/Xtext/Xbase/XAnnotations" as xannotation
+import "http://www.eclipse.org/xtext/common/JavaVMTypes" as types
+
+EntityModel returns entity::LEntityModel:
+	packages+=TypedPackage*;
+
+Class returns LClass:
+	{LClass} annotations+=AnnotationDef*
+	({entity::LEntity.annotationInfo=current}
+	((abstract?='abstract')? &
+	((historized?='historized')
+	|
+	(timedependent?='timedependent' ('(' timedependentDateType=LHistorizedDateType ')')?))? &
+	(cacheable?="cacheable")?)
+	'entity' name=TRANSLATABLEID ('extends' superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+	'{'
+	(persistenceInfo=EntityPersistenceInfo)
+	(inheritanceStrategy=EntityInheritanceStrategy)?
+	('persistenceUnit' persistenceUnit=STRING ';'?)?
+	
+	features+=EntityFeature*
+	(indexes+=Index)*
+	'}'
+	|
+	{entity::LEntity.annotationInfo=current}
+	mappedSuperclass?='mapped superclass' ('extends' superType=[entity::LEntity|TYPE_CROSS_REFERENCE])?
+	name=ValidIDWithKeywords
+	'{'
+	('persistenceUnit' persistenceUnit=STRING ';'?)?
+	features+=EntityFeature*
+	'}'
+	|
+	{entity::LBean.annotationInfo=current}
+	'bean' name=TRANSLATABLEID ('extends' superType=[entity::LBean|TYPE_CROSS_REFERENCE])?
+	'{'
+	features+=BeanFeature*
+	'}');
+
+Index returns entity::LIndex:
+	(unique?='unique')? 'index' name=ID '{'
+	features+=[entity::LEntityFeature] (', ' features+=[entity::LEntityFeature])*
+	'}';
+
+EntityPersistenceInfo returns entity::LEntityPersistenceInfo:
+	{entity::LEntityPersistenceInfo}
+	(('schemaName' schemaName=ValidIDWithKeywords ';'?)? &
+	('tableName' tableName=ValidIDWithKeywords ';'?)?);
+
+ColumnPersistenceInfo returns entity::LEntityColumnPersistenceInfo:
+	{entity::LEntityColumnPersistenceInfo}
+	'(' columnName=ValidIDWithKeywords ')';
+
+EntityFeature returns entity::LEntityFeature:
+	{entity::LEntityFeature}
+	annotations+=AnnotationDef*
+	(({entity::LEntityReference.annotationInfo=current}
+	('ref' (cascading?='cascade')? type=[entity::LEntity|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')? name=TRANSLATABLEID
+	(persistenceInfo=ColumnPersistenceInfo)?
+	('opposite' opposite=[entity::LEntityReference|LFQN])? ('properties' '(' properties+=KeyAndValue (', '
+	properties+=KeyAndValue)* ')')? (resultFilters=ResultFilters | ';'?)))
+	|
+	({entity::LEntityAttribute.annotationInfo=current}
+	((transient?='transient' type=[LScalarType|TYPE_CROSS_REFERENCE] ('['constraints+=AllConstraints* ']')? name=TRANSLATABLEID ('properties' '(' properties+=KeyAndValue (', '
+	properties+=KeyAndValue)* ')')? ';'?)
+	|
+	(derived?='derived' (domainDescription?='domainDescription')? type=[LScalarType|TYPE_CROSS_REFERENCE] name=TRANSLATABLEID ('properties' '('
+	properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?
+	derivedGetterExpression=XBlockExpression)
+	|
+	(('var' | id?='id' | uuid?='uuid' | version?="version" | domainDescription?='domainDescription' |
+	domainKey?='domainKey') type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')?
+	name=TRANSLATABLEID (persistenceInfo=ColumnPersistenceInfo)? ('opposite' opposite=[entity::LBeanReference|LFQN])?
+	('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?
+	';'?)))
+	|
+	({entity::LOperation.annotationInfo=current}
+	('def' type=JvmTypeReference name=TRANSLATABLEID
+	'(' (params+=FullJvmFormalParameter (', ' params+=FullJvmFormalParameter)*)? ')'
+	body=XExpression)));
+
+BeanFeature returns entity::LBeanFeature:
+	{entity::LBeanFeature}
+	annotations+=AnnotationDef*
+	(({entity::LBeanReference.annotationInfo=current}
+	('ref' (cascading?='cascade')? type=[LType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')? name=TRANSLATABLEID
+	('opposite' opposite=[LReference|LFQN])? ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)*
+	')')? (resultFilters=ResultFilters | ';'?)))
+	|
+	({entity::LBeanAttribute.annotationInfo=current}
+	((transient?='transient' type=[LScalarType|TYPE_CROSS_REFERENCE] ('['constraints+=AllConstraints* ']')? name=TRANSLATABLEID ('properties' '(' properties+=KeyAndValue (', '
+	properties+=KeyAndValue)* ')')?)
+	|
+	(('var' | id?='id' | version?="version") type=[LScalarType|TYPE_CROSS_REFERENCE] multiplicity=Multiplicity? ('['constraints+=AllConstraints* ']')?
+	name=TRANSLATABLEID ('properties' '(' properties+=KeyAndValue (', ' properties+=KeyAndValue)* ')')?
+	';'?)))
+	|
+	({entity::LOperation.annotationInfo=current}
+	('def' type=JvmTypeReference name=TRANSLATABLEID
+	'(' (params+=FullJvmFormalParameter (',' params+=FullJvmFormalParameter)*)? ')'
+	body=XExpression)));
+
+EntityInheritanceStrategy returns entity::LEntityInheritanceStrategy:
+	TablePerClassStrategy | TablePerSubclassStrategy;
+
+TablePerClassStrategy returns entity::LTablePerClassStrategy:
+	{entity::LTablePerClassStrategy}
+	'inheritance per class' '{'
+	(('discriminatorColumn' discriminatorColumn=ValidIDWithKeywords ';'?)? & ('discriminatorType'
+	discriminatorType=DiscriminatorType ';'?)? & ('discriminatorValue'
+	discriminatorValue=ValidIDWithKeywords ';'?)?) '}';
+
+TablePerSubclassStrategy returns entity::LTablePerSubclassStrategy:
+	{entity::LTablePerSubclassStrategy} 'inheritance per subclass' '{'
+	(('discriminatorColumn' discriminatorColumn=ValidIDWithKeywords ';'?)? & ('discriminatorType'
+	discriminatorType=DiscriminatorType ';'?)? & ('discriminatorValue'
+	discriminatorValue=ValidIDWithKeywords ';'?)?) '}';
+
+enum DiscriminatorType returns entity::LDiscriminatorType:
+	INHERIT="INHERIT" | STRING="STRING" | CHAR="CHAR" | INTEGER="INT";
+
+enum LHistorizedDateType returns LDateType:
+	DATE="DATE" | TIMESTAMP="TIMESTAMP";
+
+TRANSLATABLEID:
+	ValidIDWithKeywords;
+
+TRANSLATABLESTRING:
+	STRING;
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarBundleSpaceModule.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarBundleSpaceModule.java
new file mode 100644
index 0000000..e06b3c3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarBundleSpaceModule.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+@SuppressWarnings("restriction")
+public class EntityGrammarBundleSpaceModule extends
+		EntityGrammarRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	public Class<? extends AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarBundleSpaceSetup.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarBundleSpaceSetup.java
new file mode 100644
index 0000000..a59558d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarBundleSpaceSetup.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+/**
+ * The Class EntityGrammarBundleSpaceSetup.
+ */
+@SuppressWarnings("restriction")
+public class EntityGrammarBundleSpaceSetup extends
+		EntityGrammarStandaloneSetup {
+
+	/**
+	 * Do setup.
+	 *
+	 * @return the injector
+	 */
+	public static Injector doSetup() {
+		return new EntityGrammarBundleSpaceSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.dsl.entity.xtext.EntityGrammarStandaloneSetup#createInjectorAndDoEMFRegistration()
+	 */
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarBundleSpaceSetup
+				.doSetup();
+		
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.dsl.entity.xtext.EntityGrammarStandaloneSetupGenerated#createInjector()
+	 */
+	public Injector createInjector() {
+		return Guice.createInjector(new EntityGrammarBundleSpaceModule());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarInjectorSingleton.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarInjectorSingleton.java
new file mode 100644
index 0000000..5a219bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarInjectorSingleton.java
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+import com.google.inject.Injector;
+
+public class EntityGrammarInjectorSingleton {
+	public final static Injector INJECTOR = new EntityGrammarStandaloneSetup()
+			.createInjectorAndDoEMFRegistration();
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarRuntimeModule.java
new file mode 100644
index 0000000..1b5ceb5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarRuntimeModule.java
@@ -0,0 +1,161 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.formatting.IFormatter;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.EntityTypesBuilder;
+import org.eclipse.osbp.dsl.entity.xtext.formatting.EntityGrammarFormatter;
+import org.eclipse.osbp.dsl.entity.xtext.generator.Generator;
+import org.eclipse.osbp.dsl.entity.xtext.generator.OutputConfigurationProvider;
+import org.eclipse.osbp.dsl.entity.xtext.linker.EntityJvmLinkingHelper;
+import org.eclipse.osbp.dsl.entity.xtext.linker.EntityLinker;
+import org.eclipse.osbp.dsl.entity.xtext.scope.EntityBatchScopeProvider;
+import org.eclipse.osbp.dsl.entity.xtext.scope.EntityImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.osbp.dsl.entity.xtext.scope.EntityScopeProvider;
+import org.eclipse.osbp.dsl.entity.xtext.serializer.EntityGrammarTransientValueService;
+import org.eclipse.osbp.dsl.entity.xtext.valueconverter.EntityQualifiedNameProvider;
+import org.eclipse.osbp.dsl.entity.xtext.valueconverter.EntityValueConverterService;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexDerivedStateComputer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexModelAssociator;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.FastLinkingService;
+import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+@SuppressWarnings("restriction")
+public class EntityGrammarRuntimeModule extends
+		org.eclipse.osbp.dsl.entity.xtext.AbstractEntityGrammarRuntimeModule {
+
+	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return EntityQualifiedNameProvider.class;
+	}
+
+	@Override
+	public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return EntityBatchScopeProvider.class;
+	}
+
+	@Override
+	public Class<? extends IScopeProvider> bindIScopeProvider() {
+		return EntityScopeProvider.class;
+	}
+
+	@Override
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class)
+				.annotatedWith(
+						Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+				.to(EntityImportedNamespaceAwareLocalScopeProvider.class);
+	}
+
+	public Class<? extends IFormatter> bindIFormatter() {
+		return EntityGrammarFormatter.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.jvmmodel.AnnotationCompiler> bindAnnotationCompiler() {
+		return org.eclipse.osbp.dsl.entity.xtext.jvmmodel.AnnotationCompiler.class;
+	}
+
+	public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder() {
+		return EntityTypesBuilder.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions> bindModelExtensions() {
+		return org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return EntityLinker.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return Generator.class;
+	}
+
+	public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
+		return OutputConfigurationProvider.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return EntityGrammarTransientValueService.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	public Class<? extends LazyJvmTypeLinkingHelper> bindJvmLinkingHelper() {
+		return EntityJvmLinkingHelper.class;
+	}
+
+	@Override
+	public void configureSerializerIScopeProvider(Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+				.annotatedWith(
+						org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class)
+				.to(EntityScopeProvider.class);
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends ILinkingService> bindILinkingService() {
+		return FastLinkingService.class;
+	}
+
+	// public void configureIJvmModelAssociations(Binder binder) {
+	// binder.bind(IJvmModelAssociations.class)
+	// .to(IIndexModelAssociator.class);
+	// }
+
+	public Class<? extends IIndexModelAssociator> bindIIndexModelAssociator() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IJvmModelAssociator> bindIJvmModelAssociator() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IJvmModelAssociations> bindIJvmModelAssociations() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IValueConverterService> bindIValueConverterService() {
+		return EntityValueConverterService.class;
+	}
+
+	public Class<? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
+		return EntityResourceDescriptionStrategy.class;
+	}
+	
+	// public Class<? extends
+	// org.eclipse.xtext.validation.CancelableDiagnostician>
+	// bindCancelableDiagnostician() {
+	// return JvmLinkAwareDiagnostician.class;
+	// }
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarStandaloneSetup.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarStandaloneSetup.java
new file mode 100644
index 0000000..3be5c6d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityGrammarStandaloneSetup.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom;
+
+import com.google.inject.Injector;
+
+/**
+ * Initialization support for running Xtext languages without equinox extension
+ * registry
+ */
+public class EntityGrammarStandaloneSetup extends
+		EntityGrammarStandaloneSetupGenerated {
+
+	public static Injector doSetup() {
+		return new EntityGrammarStandaloneSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	public void register(Injector injector) {
+		if (!EPackage.Registry.INSTANCE
+				.containsKey("http://osbp.eclipse.org/entity/v1")) {
+			EPackage.Registry.INSTANCE.put(
+					"http://osbp.eclipse.org/dsl/entity/v1",
+					OSBPEntityPackage.eINSTANCE);
+			OSBPEntityPackage.eINSTANCE
+					.setEFactoryInstance(new EntityFactoryImplCustom());
+		}
+
+		if (!EPackage.Registry.INSTANCE
+				.containsKey("http://osbp.eclipse.org/dsl/common/types/v1")) {
+			EPackage.Registry.INSTANCE.put(
+					"http://osbp.eclipse.org/dsl/common/types/v1",
+					OSBPTypesPackage.eINSTANCE);
+		}
+
+		super.register(injector);
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityResourceDescriptionStrategy.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityResourceDescriptionStrategy.java
new file mode 100644
index 0000000..db8eb54
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/EntityResourceDescriptionStrategy.java
@@ -0,0 +1,52 @@
+package org.eclipse.osbp.dsl.entity.xtext;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.CompilerPhases;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy;
+import org.eclipse.xtext.util.IAcceptor;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class EntityResourceDescriptionStrategy extends DefaultResourceDescriptionStrategy {
+
+	private static final Logger LOG = Logger.getLogger(EntityResourceDescriptionStrategy.class);
+
+	public static final String ENTITY_FQN = "entityFqn";
+	public static final String ENTITY_IS_MAPPED_SUPER_CLASS = "entityIsMappedSuperClass";
+	public static final String ENTITY_SUPER_TYPE = "entitySuperType";
+	public static final String ENTITY_INHERITED_CLASS = "entityInheritedClass";
+
+	@Inject
+	CompilerPhases compilerPhases;
+
+	@Override
+	public boolean createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) {
+		if (eObject instanceof LEntity) {
+			QualifiedName qualifiedName = getQualifiedNameProvider().getFullyQualifiedName(eObject);
+			if (qualifiedName != null) {
+				if (!qualifiedName.isEmpty()) {
+					LEntity entity = (LEntity) eObject;
+					Map<String, String> userData = Maps.newHashMapWithExpectedSize(2);
+					userData.put(ENTITY_FQN, qualifiedName.toString());
+					userData.put(ENTITY_IS_MAPPED_SUPER_CLASS, new Boolean(entity.isMappedSuperclass()).toString());
+					IEObjectDescription description = EObjectDescription.create(qualifiedName, eObject, userData);
+					acceptor.accept(description);
+					LOG.debug("Created Entity-EObjectDescription " + eObject.eClass().getName() + ": " + description.getQualifiedName());
+				}
+				return true;
+			}
+		}
+		return super.createEObjectDescriptions(eObject, acceptor);
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/GenerateEntity.mwe2 b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/GenerateEntity.mwe2
new file mode 100644
index 0000000..46b8e60
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/GenerateEntity.mwe2
@@ -0,0 +1,133 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+module org.eclipse.osbp.dsl.entity.xtext.GenerateEntity
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.xtext.generator.parser.antlr.*
+import org.eclipse.xtext.resource.XtextResourceSet
+
+var fileExtensions = "entity"
+var projectName = "org.eclipse.osbp.dsl.entity.xtext"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/dsl/entity/xtext/Entity.xtext"
+var runtimeProject = "../${projectName}"
+var backtrack = false
+var memoize = false 
+
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+	bean = org.eclipse.osbp.dsl.mwe.SemanticModelSetupComponent {
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/common/types/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl"
+		}
+
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/entity/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom"
+		}
+	}
+
+	bean = StandaloneSetup {
+		resourceSet = org.eclipse.xtext.resource.XtextResourceSet : theResourceSet {}
+
+		scanClassPath = true
+		platformUri = "${runtimeProject}/.."
+		registerGenModelFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.genmodel"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xbase.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/XAnnotations.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.xtext.xbase/model/Xtype.ecore"
+		registerEcoreFile = "platform:/resource/org.eclipse.emf.ecore.xcore/model/Xcore.ecore"
+		registerGenModelFile = "platform:/resource/org.eclipse.emf.ecore.xcore/model/Xcore.genmodel"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+		registerEcoreFile = "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.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}/src-gen"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		encoding = "UTF-8"
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		pathTestProject = "${runtimeProject}.tests"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			forcedResourceSet = theResourceSet
+			uri = grammarURI
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "150"
+					methodsPerClass = "300"
+				}
+			}
+			fragment = DebugAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			fragment = validation.JavaValidatorFragment {}
+			fragment = generator.GeneratorFragment {}
+			fragment = scoping.ImportNamespacesScopingFragment {}
+			fragment = builder.BuilderIntegrationFragment {}
+			fragment = quickfix.QuickfixProviderFragment {}
+			fragment = labeling.LabelProviderFragment {
+				generateStub = false
+			}
+			fragment = outline.OutlineTreeProviderFragment {}
+			fragment = outline.QuickOutlineFragment {}
+			fragment = compare.CompareFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "100"
+					methodsPerClass = "200"
+				}
+			}
+			fragment = refactoring.RefactorElementNameFragment {
+				useJdtRefactoring = true
+			}
+			fragment = types.TypesGeneratorFragment {}
+			fragment = xbase.XbaseGeneratorFragment {
+				generateXtendInferrer = true
+			}
+			fragment = templates.CodetemplatesGeneratorFragment {}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/compiler/batch/EntityGrammarBatchCompiler.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/compiler/batch/EntityGrammarBatchCompiler.java
new file mode 100644
index 0000000..a6bf8cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/compiler/batch/EntityGrammarBatchCompiler.java
@@ -0,0 +1,767 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.compiler.batch;
+
+import static com.google.common.collect.Iterables.addAll;
+import static com.google.common.collect.Iterables.concat;
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.toArray;
+import static com.google.common.collect.Lists.newArrayList;
+import static com.google.common.collect.Lists.transform;
+import static java.util.Arrays.asList;
+import static org.eclipse.xtext.util.Strings.concat;
+import static org.eclipse.xtext.util.Strings.emptyIfNull;
+import static org.eclipse.xtext.util.Strings.isEmpty;
+import static org.eclipse.xtext.util.Strings.split;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.Writer;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.jdt.core.compiler.batch.BatchCompiler;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.common.types.access.impl.ClasspathTypeProvider;
+import org.eclipse.xtext.common.types.access.impl.IndexedJvmTypeAccess;
+import org.eclipse.xtext.common.types.descriptions.IStubGenerator;
+import org.eclipse.xtext.common.types.descriptions.JvmTypesResourceDescriptionStrategy;
+import org.eclipse.xtext.diagnostics.Severity;
+import org.eclipse.xtext.generator.JavaIoFileSystemAccess;
+import org.eclipse.xtext.mwe.NameBasedFilter;
+import org.eclipse.xtext.mwe.PathTraverser;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.parser.IEncodingProvider;
+import org.eclipse.xtext.parser.IParseResult;
+import org.eclipse.xtext.resource.CompilerPhases;
+import org.eclipse.xtext.resource.DerivedStateAwareResource;
+import org.eclipse.xtext.resource.FileExtensionProvider;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceServiceProvider;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
+import org.eclipse.xtext.util.Strings;
+import org.eclipse.xtext.validation.CheckMode;
+import org.eclipse.xtext.validation.IResourceValidator;
+import org.eclipse.xtext.validation.Issue;
+import org.eclipse.xtext.xbase.compiler.IGeneratorConfigProvider;
+import org.eclipse.xtext.xbase.compiler.JvmModelGenerator;
+import org.eclipse.xtext.xbase.file.ProjectConfig;
+import org.eclipse.xtext.xbase.file.RuntimeWorkspaceConfigProvider;
+import org.eclipse.xtext.xbase.file.WorkspaceConfig;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+
+import com.google.common.base.Function;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Multimap;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+@SuppressWarnings("restriction")
+public class EntityGrammarBatchCompiler {
+
+	private final static class SeverityFilter implements Predicate<Issue> {
+		private static final SeverityFilter WARNING = new SeverityFilter(
+				Severity.WARNING);
+		private static final SeverityFilter ERROR = new SeverityFilter(
+				Severity.ERROR);
+		private Severity severity;
+
+		private SeverityFilter(Severity severity) {
+			this.severity = severity;
+		}
+
+		public boolean apply(Issue issue) {
+			return this.severity == issue.getSeverity();
+		}
+	}
+
+	private final static Logger log = Logger
+			.getLogger(EntityGrammarBatchCompiler.class.getName());
+
+	protected static final FileFilter ACCEPT_ALL_FILTER = new FileFilter() {
+		public boolean accept(File pathname) {
+			return true;
+		}
+	};
+
+	private Provider<ResourceSet> resourceSetProvider;
+	@Inject
+	private Provider<JavaIoFileSystemAccess> javaIoFileSystemAccessProvider;
+	@Inject
+	private FileExtensionProvider fileExtensionProvider;
+	@Inject
+	private Provider<ResourceSetBasedResourceDescriptions> resourceSetDescriptionsProvider;
+	@Inject
+	private JvmModelGenerator generator;
+	@Inject
+	private IQualifiedNameProvider qualifiedNameProvider;
+	@Inject
+	private IndexedJvmTypeAccess indexedJvmTypeAccess;
+	@Inject
+	private IGeneratorConfigProvider generatorConfigprovider;
+	@Inject
+	private IEncodingProvider.Runtime encodingProvider;
+	@Inject
+	private IResourceDescription.Manager resourceDescriptionManager;
+	@Inject
+	private RuntimeWorkspaceConfigProvider workspaceConfigProvider;
+	@Inject
+	private CompilerPhases compilerPhases;
+	@Inject
+	private IStubGenerator stubGenerator;
+
+	private Writer outputWriter;
+	private Writer errorWriter;
+	private String sourcePath;
+	private String classPath;
+	private boolean useCurrentClassLoaderAsParent;
+	private String outputPath;
+	private String fileEncoding;
+	private String complianceLevel = "1.5";
+	private boolean verbose = false;
+	private String tempDirectory = System.getProperty("java.io.tmpdir");
+	private boolean deleteTempDirectory = true;
+	private List<File> tempFolders = Lists.newArrayList();
+	private boolean writeTraceFiles = true;
+	private ClassLoader currentClassLoader = getClass().getClassLoader();
+
+	public void setCurrentClassLoader(ClassLoader currentClassLoader) {
+		this.currentClassLoader = currentClassLoader;
+	}
+
+	public void setUseCurrentClassLoaderAsParent(
+			boolean useCurrentClassLoaderAsParent) {
+		this.useCurrentClassLoaderAsParent = useCurrentClassLoaderAsParent;
+	}
+
+	public String getTempDirectory() {
+		return tempDirectory;
+	}
+
+	public void setTempDirectory(String tempDirectory) {
+		this.tempDirectory = tempDirectory;
+	}
+
+	public boolean isWriteTraceFiles() {
+		return writeTraceFiles;
+	}
+
+	public void setWriteTraceFiles(boolean writeTraceFiles) {
+		this.writeTraceFiles = writeTraceFiles;
+	}
+
+	@Inject
+	public void setResourceSetProvider(Provider<ResourceSet> resourceSetProvider) {
+		this.resourceSetProvider = resourceSetProvider;
+	}
+
+	public boolean isDeleteTempDirectory() {
+		return deleteTempDirectory;
+	}
+
+	public void setDeleteTempDirectory(boolean deletetempDirectory) {
+		this.deleteTempDirectory = deletetempDirectory;
+	}
+
+	public Writer getOutputWriter() {
+		if (outputWriter == null) {
+			outputWriter = new Writer() {
+				@Override
+				public void write(char[] data, int offset, int count)
+						throws IOException {
+					String message = String.copyValueOf(data, offset, count);
+					if (!Strings.isEmpty(message.trim())) {
+						log.debug(message);
+					}
+				}
+
+				@Override
+				public void flush() throws IOException {
+				}
+
+				@Override
+				public void close() throws IOException {
+				}
+			};
+		}
+		return outputWriter;
+	}
+
+	public void setOutputWriter(Writer ouputWriter) {
+		this.outputWriter = ouputWriter;
+	}
+
+	public Writer getErrorWriter() {
+		if (errorWriter == null) {
+			errorWriter = new Writer() {
+				@Override
+				public void write(char[] data, int offset, int count)
+						throws IOException {
+					String message = String.copyValueOf(data, offset, count);
+					if (!Strings.isEmpty(message.trim())) {
+						log.debug(message);
+					}
+				}
+
+				@Override
+				public void flush() throws IOException {
+				}
+
+				@Override
+				public void close() throws IOException {
+				}
+			};
+		}
+		return errorWriter;
+	}
+
+	public void setErrorWriter(Writer errorWriter) {
+		this.errorWriter = errorWriter;
+	}
+
+	public void setClassPath(String classPath) {
+		this.classPath = classPath;
+	}
+
+	public void setOutputPath(String outputPath) {
+		this.outputPath = outputPath;
+	}
+
+	public void setSourcePath(String sourcePath) {
+		this.sourcePath = sourcePath;
+	}
+
+	protected String getComplianceLevel() {
+		return complianceLevel;
+	}
+
+	public void setVerbose(boolean verbose) {
+		this.verbose = verbose;
+	}
+
+	protected boolean isVerbose() {
+		return verbose;
+	}
+
+	public String getFileEncoding() {
+		return fileEncoding;
+	}
+
+	public void setFileEncoding(String encoding) {
+		this.fileEncoding = encoding;
+	}
+
+	public boolean configureWorkspace() {
+		List<File> sourceFileList = getSourcePathFileList();
+		File outputFile = getOutputPathFile();
+		if (sourceFileList == null || outputFile == null) {
+			return false;
+		}
+
+		File commonRoot = determineCommonRoot(outputFile, sourceFileList);
+
+		// We don't want to use root ("/") as a workspace folder, didn't we?
+		if (commonRoot == null || commonRoot.getParent() == null
+				|| commonRoot.getParentFile().getParent() == null) {
+			log.error("All source folders and the output folder should have "
+					+ "a common parent non-top level folder (like project folder)");
+			for (File sourceFile : sourceFileList) {
+				log.error("(Source folder: '" + sourceFile + "')");
+			}
+			log.error("(Output folder: '" + outputFile + "')");
+			return false;
+		}
+
+		WorkspaceConfig workspaceConfig = new WorkspaceConfig(commonRoot
+				.getParent().toString());
+		ProjectConfig projectConfig = new ProjectConfig(commonRoot.getName());
+
+		java.net.URI commonURI = commonRoot.toURI();
+		java.net.URI relativizedTarget = commonURI.relativize(outputFile
+				.toURI());
+		if (relativizedTarget.isAbsolute()) {
+			log.error("Target folder '" + outputFile
+					+ "' must be a child of the project folder '" + commonRoot
+					+ "'");
+			return false;
+		}
+
+		for (File source : sourceFileList) {
+			java.net.URI relativizedSrc = commonURI.relativize(source.toURI());
+			if (relativizedSrc.isAbsolute()) {
+				log.error("Source folder '" + source
+						+ "' must be a child of the project folder '"
+						+ commonRoot + "'");
+				return false;
+			}
+			projectConfig.addSourceFolderMapping(relativizedSrc.getPath(),
+					relativizedTarget.getPath());
+		}
+		workspaceConfig.addProjectConfig(projectConfig);
+		workspaceConfigProvider.setWorkspaceConfig(workspaceConfig);
+		return true;
+	}
+
+	private File getOutputPathFile() {
+		try {
+			return new File(outputPath).getCanonicalFile();
+		} catch (IOException e) {
+			log.error("Invalid target folder '" + outputPath + "' ("
+					+ e.getMessage() + ")");
+			return null;
+		}
+	}
+
+	private List<File> getSourcePathFileList() {
+		List<File> sourceFileList = new ArrayList<File>();
+		for (String path : getSourcePathDirectories()) {
+			try {
+				sourceFileList.add(new File(path).getCanonicalFile());
+			} catch (IOException e) {
+				log.error("Invalid source folder '" + path + "' ("
+						+ e.getMessage() + ")");
+				return null;
+			}
+		}
+		return sourceFileList;
+	}
+
+	private File determineCommonRoot(File outputFile, List<File> sourceFileList) {
+		List<File> pathList = new ArrayList<File>(sourceFileList);
+		pathList.add(outputFile);
+
+		List<List<File>> pathParts = new ArrayList<List<File>>();
+
+		for (File path : pathList) {
+			List<File> partsList = new ArrayList<File>();
+			File subdir = path;
+			while (subdir != null) {
+				partsList.add(subdir);
+				subdir = subdir.getParentFile();
+			}
+			pathParts.add(partsList);
+		}
+		int i = 1;
+		File result = null;
+		while (true) {
+			File compareWith = null;
+			for (List<File> parts : pathParts) {
+				if (parts.size() < i) {
+					return result;
+				}
+				File part = parts.get(parts.size() - i);
+				if (compareWith == null) {
+					compareWith = part;
+				} else {
+					if (!compareWith.equals(part)) {
+						return result;
+					}
+				}
+			}
+			result = compareWith;
+			i++;
+		}
+	}
+
+	public boolean compile() {
+		try {
+			if (workspaceConfigProvider.getWorkspaceConfig() == null) {
+				if (!configureWorkspace()) {
+					return false;
+				}
+			}
+			ResourceSet resourceSet = resourceSetProvider.get();
+			File classDirectory = createTempDir("classes");
+			try {
+				compilerPhases.setIndexing(resourceSet, true);
+				// install a type provider without index lookup for the first
+				// phase
+				installJvmTypeProvider(resourceSet, classDirectory, false);
+				loadentityGrammarFiles(resourceSet);
+				File sourceDirectory = createStubs(resourceSet);
+				if (!preCompileStubs(sourceDirectory, classDirectory)) {
+					log.debug("Compilation of stubs and existing Java code had errors. This is expected and usually is not a probblem.");
+				}
+			} finally {
+				compilerPhases.setIndexing(resourceSet, false);
+			}
+			// install a fresh type provider for the second phase, so we clear
+			// all previously cached classes and misses.
+			installJvmTypeProvider(resourceSet, classDirectory, false);
+			EcoreUtil.resolveAll(resourceSet);
+			List<Issue> issues = validate(resourceSet);
+			Iterable<Issue> errors = Iterables.filter(issues,
+					SeverityFilter.ERROR);
+			Iterable<Issue> warnings = Iterables.filter(issues,
+					SeverityFilter.WARNING);
+			reportIssues(Iterables.concat(errors, warnings));
+			if (!Iterables.isEmpty(errors)) {
+				return false;
+			}
+			generateJavaFiles(resourceSet);
+		} finally {
+			if (isDeleteTempDirectory()) {
+				deleteTmpFolders();
+			}
+		}
+		return true;
+	}
+
+	protected ResourceSet loadentityGrammarFiles(final ResourceSet resourceSet) {
+		encodingProvider.setDefaultEncoding(getFileEncoding());
+		final NameBasedFilter nameBasedFilter = new NameBasedFilter();
+		nameBasedFilter.setExtension(fileExtensionProvider
+				.getPrimaryFileExtension());
+		PathTraverser pathTraverser = new PathTraverser();
+		List<String> sourcePathDirectories = getSourcePathDirectories();
+		Multimap<String, URI> pathes = pathTraverser.resolvePathes(
+				sourcePathDirectories, new Predicate<URI>() {
+					public boolean apply(URI input) {
+						boolean matches = nameBasedFilter.matches(input);
+						return matches;
+					}
+				});
+		for (String src : pathes.keySet()) {
+			for (URI uri : pathes.get(src)) {
+				if (log.isDebugEnabled()) {
+					log.debug("load entityGrammar file '" + uri + "'");
+				}
+				resourceSet.getResource(uri, true);
+			}
+		}
+		return resourceSet;
+	}
+
+	@Deprecated
+	protected ResourceSet loadentityGrammarFiles() {
+		final ResourceSet resourceSet = resourceSetProvider.get();
+		return loadentityGrammarFiles(resourceSet);
+	}
+
+	protected File createStubs(ResourceSet resourceSet) {
+		File outputDirectory = createTempDir("stubs");
+		JavaIoFileSystemAccess fileSystemAccess = javaIoFileSystemAccessProvider
+				.get();
+		fileSystemAccess.setOutputPath(outputDirectory.toString());
+		List<Resource> resources = Lists.newArrayList(resourceSet
+				.getResources());
+		for (Resource resource : resources) {
+			if (resource instanceof DerivedStateAwareResource) {
+				IResourceDescription description = resourceDescriptionManager
+						.getResourceDescription(resource);
+				stubGenerator.doGenerateStubs(fileSystemAccess, description);
+			}
+		}
+		return outputDirectory;
+	}
+
+	protected boolean preCompileStubs(File tmpSourceDirectory,
+			File classDirectory) {
+		List<String> commandLine = Lists.newArrayList();
+		// todo args
+		if (isVerbose()) {
+			commandLine.add("-verbose");
+		}
+		if (!isEmpty(classPath)) {
+			commandLine.add("-cp \""
+					+ concat(File.pathSeparator, getClassPathEntries()) + "\"");
+		}
+		commandLine.add("-d \"" + classDirectory.toString() + "\"");
+		commandLine.add("-" + getComplianceLevel());
+		commandLine.add("-proceedOnError");
+		List<String> sourceDirectories = newArrayList(getSourcePathDirectories());
+		sourceDirectories.add(tmpSourceDirectory.toString());
+		commandLine.add(concat(" ",
+				transform(sourceDirectories, new Function<String, String>() {
+
+					public String apply(String path) {
+						return "\"" + path + "\"";
+					}
+				})));
+		if (log.isDebugEnabled()) {
+			log.debug("invoke batch compiler with '" + concat(" ", commandLine)
+					+ "'");
+		}
+		return BatchCompiler.compile(concat(" ", commandLine), new PrintWriter(
+				getOutputWriter()), new PrintWriter(getErrorWriter()), null);
+	}
+
+	protected List<Issue> validate(ResourceSet resourceSet) {
+		List<Issue> issues = Lists.newArrayList();
+		List<Resource> resources = Lists.newArrayList(resourceSet
+				.getResources());
+		for (Resource resource : resources) {
+			IResourceServiceProvider resourceServiceProvider = IResourceServiceProvider.Registry.INSTANCE
+					.getResourceServiceProvider(resource.getURI());
+			if (resourceServiceProvider != null) {
+				IResourceValidator resourceValidator = resourceServiceProvider
+						.getResourceValidator();
+				List<Issue> result = resourceValidator.validate(resource,
+						CheckMode.ALL, null);
+				addAll(issues, result);
+			}
+		}
+		return issues;
+	}
+
+	/**
+	 * Installs the complete JvmTypeProvider including index access into the
+	 * {@link ResourceSet}. The lookup classpath is enhanced with the given tmp
+	 * directory.
+	 * 
+	 * @deprecated use the explicit variant
+	 *             {@link #installJvmTypeProvider(ResourceSet, File, boolean)}
+	 *             instead.
+	 */
+	@Deprecated
+	protected void installJvmTypeProvider(ResourceSet resourceSet,
+			File tmpClassDirectory) {
+		internalInstallJvmTypeProvider(resourceSet, tmpClassDirectory, false);
+	}
+
+	/**
+	 * Installs the JvmTypeProvider optionally including index access into the
+	 * {@link ResourceSet}. The lookup classpath is enhanced with the given tmp
+	 * directory.
+	 */
+	protected void installJvmTypeProvider(ResourceSet resourceSet,
+			File tmpClassDirectory, boolean skipIndexLookup) {
+		if (skipIndexLookup) {
+			internalInstallJvmTypeProvider(resourceSet, tmpClassDirectory,
+					skipIndexLookup);
+		} else {
+			// delegate to the deprecated signature in case it was overridden by
+			// clients
+			installJvmTypeProvider(resourceSet, tmpClassDirectory);
+		}
+	}
+
+	/**
+	 * Performs the actual installation of the JvmTypeProvider.
+	 */
+	private void internalInstallJvmTypeProvider(ResourceSet resourceSet,
+			File tmpClassDirectory, boolean skipIndexLookup) {
+		Iterable<String> classPathEntries = concat(getClassPathEntries(),
+				getSourcePathDirectories(),
+				asList(tmpClassDirectory.toString()));
+		classPathEntries = filter(classPathEntries, new Predicate<String>() {
+			public boolean apply(String input) {
+				return !Strings.isEmpty(input.trim());
+			}
+		});
+		Iterable<URL> classPathUrls = Iterables.transform(classPathEntries,
+				new Function<String, URL>() {
+					public URL apply(String from) {
+						try {
+							return new File(from).toURI().toURL();
+						} catch (MalformedURLException e) {
+							throw new RuntimeException(e);
+						}
+					}
+				});
+		if (log.isDebugEnabled()) {
+			log.debug("classpath used for entityGrammar compilation : "
+					+ classPathUrls);
+		}
+		URLClassLoader urlClassLoader = new URLClassLoader(toArray(
+				classPathUrls, URL.class),
+				useCurrentClassLoaderAsParent ? currentClassLoader : null);
+		new ClasspathTypeProvider(urlClassLoader, resourceSet,
+				skipIndexLookup ? null : indexedJvmTypeAccess);
+		((XtextResourceSet) resourceSet).setClasspathURIContext(urlClassLoader);
+	}
+
+	protected void reportIssues(Iterable<Issue> issues) {
+		for (Issue issue : issues) {
+			StringBuilder issueBuilder = createIssueMessage(issue);
+			if (Severity.ERROR == issue.getSeverity()) {
+				log.error(issueBuilder.toString());
+			} else if (Severity.WARNING == issue.getSeverity()) {
+				log.warn(issueBuilder.toString());
+			}
+		}
+	}
+
+	private StringBuilder createIssueMessage(Issue issue) {
+		StringBuilder issueBuilder = new StringBuilder("\n");
+		issueBuilder.append(issue.getSeverity()).append(": \t");
+		URI uriToProblem = issue.getUriToProblem();
+		if (uriToProblem != null) {
+			URI resourceUri = uriToProblem.trimFragment();
+			issueBuilder.append(resourceUri.lastSegment()).append(" - ");
+			if (resourceUri.isFile()) {
+				issueBuilder.append(resourceUri.toFileString());
+			}
+		}
+		issueBuilder.append("\n").append(issue.getLineNumber()).append(": ")
+				.append(issue.getMessage());
+		return issueBuilder;
+	}
+
+	protected void generateJavaFiles(ResourceSet resourceSet) {
+		JavaIoFileSystemAccess javaIoFileSystemAccess = javaIoFileSystemAccessProvider
+				.get();
+		javaIoFileSystemAccess.setOutputPath(outputPath);
+		javaIoFileSystemAccess.setWriteTrace(writeTraceFiles);
+		ResourceSetBasedResourceDescriptions resourceDescriptions = getResourceDescriptions(resourceSet);
+		Iterable<IEObjectDescription> exportedObjectsByType = resourceDescriptions
+				.getExportedObjectsByType(TypesPackage.Literals.JVM_DECLARED_TYPE);
+		if (log.isInfoEnabled()) {
+			int size = Iterables.size(exportedObjectsByType);
+			if (size == 0) {
+				log.info("No sources to compile in '" + sourcePath + "'");
+			} else {
+				log.info("Compiling " + size + " source "
+						+ (size == 1 ? "file" : "files") + " to " + outputPath);
+			}
+		}
+		for (IEObjectDescription eObjectDescription : exportedObjectsByType) {
+			if (eObjectDescription
+					.getUserData(JvmTypesResourceDescriptionStrategy.IS_NESTED_TYPE) != null) {
+				continue;
+			}
+			JvmDeclaredType jvmGenericType = (JvmDeclaredType) eObjectDescription
+					.getEObjectOrProxy();
+			
+			CharSequence generatedType = generator.generateType(jvmGenericType,
+					generatorConfigprovider.get(jvmGenericType));
+			QualifiedName qualifiedName = qualifiedNameProvider
+					.getFullyQualifiedName(jvmGenericType);
+			if (log.isDebugEnabled()) {
+				log.debug("write '" + outputPath + File.separator
+						+ getJavaFileName(qualifiedName) + "'");
+			}
+			javaIoFileSystemAccess.generateFile(getJavaFileName(qualifiedName),
+					generatedType);
+		}
+	}
+
+	protected ResourceSetBasedResourceDescriptions getResourceDescriptions(
+			ResourceSet resourceSet) {
+		ResourceSetBasedResourceDescriptions resourceDescriptions = resourceSetDescriptionsProvider
+				.get();
+		resourceDescriptions.setContext(resourceSet);
+		resourceDescriptions
+				.setRegistry(IResourceServiceProvider.Registry.INSTANCE);
+		return resourceDescriptions;
+	}
+
+	private String getJavaFileName(QualifiedName typeName) {
+		return Strings.concat("/", typeName.getSegments()) + ".java";
+	}
+
+	protected LEntityModel getEntityGrammarFile(Resource resource) {
+		XtextResource xtextResource = (XtextResource) resource;
+		IParseResult parseResult = xtextResource.getParseResult();
+		if (parseResult != null) {
+			EObject model = parseResult.getRootASTElement();
+			if (model instanceof LEntityModel) {
+				LEntityModel entityGrammarFile = (LEntityModel) model;
+				return entityGrammarFile;
+			}
+		}
+		return null;
+	}
+
+	protected List<String> getClassPathEntries() {
+		return getDirectories(classPath);
+	}
+
+	protected List<String> getSourcePathDirectories() {
+		return getDirectories(sourcePath);
+	}
+
+	protected List<String> getDirectories(String path) {
+		if (Strings.isEmpty(path)) {
+			return Lists.newArrayList();
+		}
+		final List<String> split = split(emptyIfNull(path), File.pathSeparator);
+		return transform(split, new Function<String, String>() {
+			public String apply(String from) {
+				try {
+					return new File(from).getCanonicalPath();
+				} catch (IOException e) {
+					throw new WrappedException("Invalid source path: '" + from
+							+ "'", e);
+				}
+			}
+		});
+	}
+
+	protected File createTempDir(String prefix) {
+		File tempDir = new File(getTempDirectory(), prefix + System.nanoTime());
+		cleanFolder(tempDir, ACCEPT_ALL_FILTER, true, true);
+		if (!tempDir.mkdirs()) {
+			throw new RuntimeException("Error creating temp directory '"
+					+ tempDir.getAbsolutePath() + "'");
+		}
+		tempFolders.add(tempDir);
+		return tempDir;
+	}
+
+	protected void deleteTmpFolders() {
+		for (File file : tempFolders) {
+			cleanFolder(file, ACCEPT_ALL_FILTER, true, true);
+		}
+	}
+
+	protected static boolean cleanFolder(File parentFolder, FileFilter filter,
+			boolean continueOnError, boolean deleteParentFolder) {
+		if (!parentFolder.exists()) {
+			return true;
+		}
+		if (filter == null)
+			filter = ACCEPT_ALL_FILTER;
+		log.debug("Cleaning folder " + parentFolder.toString());
+		final File[] contents = parentFolder.listFiles(filter);
+		for (int j = 0; j < contents.length; j++) {
+			final File file = contents[j];
+			if (file.isDirectory()) {
+				if (!cleanFolder(file, filter, continueOnError, true)
+						&& !continueOnError)
+					return false;
+			} else {
+				if (!file.delete()) {
+					log.error("Couldn't delete " + file.getAbsolutePath());
+					if (!continueOnError)
+						return false;
+				}
+			}
+		}
+		if (deleteParentFolder) {
+			if (parentFolder.list().length == 0 && !parentFolder.delete()) {
+				log.error("Couldn't delete " + parentFolder.getAbsolutePath());
+				return false;
+			}
+		}
+		return true;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/AnnotationExtension.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/AnnotationExtension.xtend
new file mode 100644
index 0000000..c279745
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/AnnotationExtension.xtend
@@ -0,0 +1,259 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.extensions
+
+import javax.persistence.Cacheable
+import javax.persistence.Column
+import javax.persistence.Embeddable
+import javax.persistence.Embedded
+import javax.persistence.Entity
+import javax.persistence.GeneratedValue
+import javax.persistence.Id
+import javax.persistence.Inheritance
+import javax.persistence.JoinColumn
+import javax.persistence.ManyToOne
+import javax.persistence.MappedSuperclass
+import javax.persistence.OneToMany
+import javax.persistence.OneToOne
+import javax.persistence.Version
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmAnnotationTarget
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+ 
+class AnnotationExtension extends org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension {
+
+	def boolean isEntityAnnoExcluded(LClass lEntity) {
+		return typeof(Entity).isExcluded(lEntity.getAnnotations)
+	}
+
+	def boolean isEntityAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Entity), context)
+	}
+
+	def boolean isEntityAnnoRedefined(LClass lEntity) {
+		return typeof(Entity).isRedefined(lEntity.getAnnotations)
+	}
+
+	def LAnnotationDef getEntityAnnoRedefine(LClass lEntity) {
+		return typeof(Entity).getRedefined(lEntity.getAnnotations)
+	}
+
+	def boolean isOneToManyAnnoExcluded(LFeature member) {
+		return typeof(OneToMany).isExcluded(member.annotations)
+	}
+
+	def boolean isOneToManyAnnoRedefined(LFeature member) {
+		return typeof(OneToMany).isRedefined(member.annotations)
+	}
+
+	def boolean isOneToManyValueAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(OneToMany), context)
+	}
+
+	def LAnnotationDef getOneToManyAnnoRedefine(LFeature member) {
+		return typeof(OneToMany).getRedefined(member.annotations)
+	}
+
+	def boolean isOneToOneAnnoExcluded(LFeature member) {
+		return typeof(OneToOne).isExcluded(member.annotations)
+	}
+
+	def boolean isOneToOneAnnoRedefined(LFeature member) {
+		return typeof(OneToOne).isRedefined(member.annotations)
+	}
+
+	def boolean isOneToOneAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(OneToOne), context)
+	}
+
+	def LAnnotationDef getOneToOneAnnoRedefine(LFeature member) {
+		return typeof(OneToOne).getRedefined(member.annotations)
+	}
+
+	def boolean isManyToOneAnnoExcluded(LFeature member) {
+		return typeof(ManyToOne).isExcluded(member.annotations)
+	}
+
+	def boolean isManyToOneAnnoRedefined(LFeature member) {
+		return typeof(ManyToOne).isRedefined(member.annotations)
+	}
+
+	def boolean isManyToOneValueAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(ManyToOne), context)
+	}
+
+	def LAnnotationDef getManyToOneAnnoRedefine(LFeature member) {
+		return typeof(ManyToOne).getRedefined(member.annotations)
+	}
+
+	def boolean isIdAnnoExcluded(LFeature member) {
+		return typeof(Id).isExcluded(member.annotations)
+	}
+
+	def boolean isIdAnnoRedefined(LFeature member) {
+		return typeof(Id).isRedefined(member.annotations)
+	}
+
+	def LAnnotationDef getIdAnnoRedefine(LFeature member) {
+		return typeof(Id).getRedefined(member.annotations)
+	}
+
+	def boolean isIdAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		val result = target.containsAnnotation(typeof(Id), context)
+		return result
+	}
+
+	def boolean isVersionAnnoExcluded(LFeature member) {
+		return typeof(Version).isExcluded(member.annotations)
+	}
+
+	def boolean isVersionAnnoRedefined(LFeature member) {
+		return typeof(Version).isRedefined(member.annotations)
+	}
+
+	def boolean isVersionAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Version), context)
+	}
+
+	def LAnnotationDef getVersionAnnoRedefine(LFeature member) {
+		return typeof(Version).getRedefined(member.annotations)
+	}
+
+	def boolean isGeneratedValueAnnoExcluded(LFeature member) {
+		return typeof(GeneratedValue).isExcluded(member.annotations)
+	}
+
+	def boolean isGeneratedValueAnnoRedefined(LFeature member) {
+		return typeof(GeneratedValue).isRedefined(member.annotations)
+	}
+
+	def boolean isGeneratedValueAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(GeneratedValue), context)
+	}
+
+	def LAnnotationDef getGeneratedValueAnnoRedefine(LFeature member) {
+		return typeof(GeneratedValue).getRedefined(member.annotations)
+	}
+
+	def boolean isCachableAnnoExcluded(LClass member) {
+		return typeof(Cacheable).isExcluded(member.getAnnotations)
+	}
+
+	def boolean isCacheableAnnoRedefined(LClass member) {
+		return typeof(Cacheable).isRedefined(member.getAnnotations)
+	}
+
+	def LAnnotationDef getCacheableAnnoRedefine(LClass member) {
+		return typeof(Cacheable).getRedefined(member.getAnnotations)
+	}
+
+	def boolean isCacheableAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Cacheable), context)
+	}
+
+	def boolean isEmbeddedAnnoExcluded(LFeature member) {
+		return typeof(Embedded).isExcluded(member.annotations)
+	}
+
+	def boolean isEmbeddedAnnoRedefined(LFeature member) {
+		return typeof(Embedded).isRedefined(member.annotations)
+	}
+
+	def LAnnotationDef getEmbeddedAnnoRedefine(LFeature member) {
+		return typeof(Embedded).getRedefined(member.annotations)
+	}
+
+	def boolean isEmbeddedAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Embedded), context)
+	}
+
+	def boolean isEmbeddableAnnoExcluded(LClass member) {
+		return typeof(Embeddable).isExcluded(member.getAnnotations)
+	}
+
+	def boolean isEmbeddableAnnoRedefined(LClass member) {
+		return typeof(Embeddable).isRedefined(member.getAnnotations)
+	}
+
+	def LAnnotationDef getEmbeddableAnnoRedefine(LClass member) {
+		return typeof(Embeddable).getRedefined(member.getAnnotations)
+	}
+
+	def boolean isEmbeddableAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Embeddable), context)
+	}
+
+	def boolean isColumnAnnoExcluded(LFeature member) {
+		return typeof(Column).isExcluded(member.annotations)
+	}
+
+	def boolean isColumnAnnoRedefined(LFeature member) {
+		return typeof(Column).isRedefined(member.annotations)
+	}
+
+	def boolean isColumnAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Column), context)
+	}
+
+	def LAnnotationDef getColumnAnnoRedefine(LFeature member) {
+		return typeof(Column).getRedefined(member.annotations)
+	}
+
+	def boolean isJoinColumnAnnoExcluded(LFeature member) {
+		return typeof(JoinColumn).isExcluded(member.annotations)
+	}
+
+	def boolean isJoinColumnAnnoRedefined(LFeature member) {
+		return typeof(JoinColumn).isRedefined(member.annotations)
+	}
+
+	def boolean isJoinColumnAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(JoinColumn), context)
+	}
+
+	def LAnnotationDef getJoinColumnAnnoRedefine(LFeature member) {
+		return typeof(JoinColumn).getRedefined(member.annotations)
+	}
+
+	def boolean isMappedSuperclassAnnoExcluded(LClass entity) {
+		return typeof(MappedSuperclass).isExcluded(entity.getAnnotations)
+	}
+
+	def boolean isMappedSuperclassAnnoRedefined(LClass entity) {
+		return typeof(MappedSuperclass).isRedefined(entity.getAnnotations)
+	}
+
+	def boolean isMappedSuperclassAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(MappedSuperclass), context)
+	}
+
+	def LAnnotationDef getMappedSuperclassAnnoRedefine(LClass entity) {
+		return typeof(MappedSuperclass).getRedefined(entity.getAnnotations)
+	}
+
+	def boolean isInheritanceAnnoExcluded(LClass entity) {
+		return typeof(Inheritance).isExcluded(entity.getAnnotations)
+	}
+
+	def boolean isInheritanceAnnoRedefined(LClass entity) {
+		return typeof(Inheritance).isRedefined(entity.getAnnotations)
+	}
+
+	def boolean isInheritanceAnnoCreated(JvmAnnotationTarget target, EObject context) {
+		return target.containsAnnotation(typeof(Inheritance), context)
+	}
+
+	def LAnnotationDef getInheritanceAnnoRedefine(LClass entity) {
+		return typeof(Inheritance).getRedefined(entity.getAnnotations)
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/Constants.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/Constants.xtend
new file mode 100644
index 0000000..2a5dd6a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/Constants.xtend
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.entity.xtext.extensions
+
+class Constants {
+	public static final String PROP__VALID_UNTIL = "validUntil";
+	public static final String PROP__VALID_FROM = "validFrom";
+	// object id
+	public static final String PROP__OID = "objId";
+	// object version
+	public static final String PROP__VERSION = "objVersion";
+	// current record of historized records
+	public static final String PROP__ISCURRENT = "objCurrent";
+	public static final String DT_INTERNAL_VALID_FROM = "$internal_validFrom";
+	public static final String DT_INTERNAL_VALID_UNTIL = "$internal_validUntil";
+	public static final String DT_INTERNAL_OBJECT_ID = "$internal_objectId";
+	public static final String DT_INTERNAL_OBJECT_VERSION = "$internal_objectVersion";
+	public static final String DT_INTERNAL_IS_CURRENT_VERSION = "$internal_isCurrentVersion";
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/EntityTypesBuilder.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/EntityTypesBuilder.xtend
new file mode 100644
index 0000000..e4b8667
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/EntityTypesBuilder.xtend
@@ -0,0 +1,716 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.ArrayList
+import javax.persistence.PreRemove
+import org.eclipse.osbp.dsl.common.xtext.extensions.TreeAppendableExtensions
+import org.eclipse.osbp.dsl.common.xtext.jvmmodel.CommonTypesBuilder
+import org.eclipse.osbp.dsl.entity.xtext.jvmmodel.AnnotationCompiler
+import org.eclipse.osbp.dsl.entity.xtext.linker.EntityLinker
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+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.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.dsl.semantic.entity.LOperation
+import org.eclipse.xtext.common.types.JvmField
+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.TypesFactory
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.util.EcoreGenericsUtil
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1
+
+class EntityTypesBuilder extends CommonTypesBuilder {
+
+	@Inject extension ModelExtensions
+	@Inject extension NamingExtensions
+	@Inject extension TreeAppendableExtensions
+
+	@Inject AnnotationCompiler annotationCompiler
+	@Inject TypesFactory typesFactory;
+	@Inject TypeReferences references;
+
+	@Inject EcoreGenericsUtil ecoreGenericsUtil;
+	@Inject EntityLinker linker;
+
+	def htmlCode(CharSequence s) {
+		"<code>".concat(String::valueOf(s)).concat("</code>")
+	}
+
+	def dispatch JvmOperation toDispose(LEntity lClass) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, lClass)
+		op.simpleName = "dispose"
+
+		annotationCompiler.addDisposeFieldAnnotation(lClass, op)
+
+		op.documentation = '''
+		Calling dispose will destroy that instance. The internal state will be 
+		set to 'disposed' and methods of that object must not be used anymore. 
+		Each call will result in runtime exceptions.<br>
+		If this object keeps composition containments, these will be disposed too. 
+		So the whole composition containment tree will be disposed on calling this method.'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(lClass)
+				p >> '''
+					if (isDisposed()) {
+					  return;
+					}
+				'''
+				val compositionContainmentProps = lClass.features.filter[cascading]
+				if (!compositionContainmentProps.empty) {
+					p >> "try " >>> "{"
+					p >> "// Dispose all the composition references.\n"
+					for (prop : compositionContainmentProps) {
+						val fieldRef = "this.".concat(prop.toName.toFirstLower)
+						val typeName = prop.typeName
+						val typeVar = typeName.toFirstLower
+						if (prop.toMany) {
+							p >> '''
+								if («fieldRef» != null) {
+								  for («typeName» «typeVar» : «fieldRef») {
+								    «typeVar».dispose();
+								  }
+								  «fieldRef» = null;
+								}
+							'''
+						} else {
+							p >> '''
+								if («fieldRef» != null) {
+								  «fieldRef».dispose();
+								  «fieldRef» = null;
+								}
+							'''
+						}
+					}
+					p <<< "}"
+					p >>> "finally {"
+
+				//p.increaseIndentation
+				}
+				if (lClass.superType != null) {
+					p >> "super.dispose();"
+				} else {
+					p >> "disposed = true;"
+				}
+				if (!compositionContainmentProps.empty) {
+					p <<< "}"
+				}
+			])
+
+		associate(lClass, op)
+	}
+
+	def dispatch JvmOperation toDispose(LBean lClass) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, lClass)
+		op.simpleName = "dispose"
+
+		annotationCompiler.addDisposeFieldAnnotation(lClass, op)
+
+		op.documentation = '''
+		Calling dispose will destroy that instance. The internal state will be 
+		set to 'disposed' and methods of that object must not be used anymore. 
+		Each call will result in runtime exceptions.<br>
+		If this object keeps composition containments, these will be disposed too. 
+		So the whole composition containment tree will be disposed on calling this method.'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(lClass)
+				p >> '''
+					if (isDisposed()) {
+					  return;
+					}
+				'''
+				val compositionContainmentProps = lClass.features.filter[cascading]
+				if (!compositionContainmentProps.empty) {
+					p >> "try " >>> "{"
+					p >> "// Dispose all the composition references.\n"
+					for (prop : compositionContainmentProps) {
+						val fieldRef = "this.".concat(prop.toName.toFirstLower)
+						val typeName = prop.typeName
+						val typeVar = typeName.toFirstLower
+						if (prop.toMany) {
+							p >> '''
+								if («fieldRef» != null) {
+								  for («typeName» «typeVar» : «fieldRef») {
+								    «typeVar».dispose();
+								  }
+								  «fieldRef» = null;
+								}
+							'''
+						} else {
+							p >> '''
+								if («fieldRef» != null) {
+								  «fieldRef».dispose();
+								  «fieldRef» = null;
+								}
+							'''
+						}
+					}
+					p <<< "}"
+					p >>> "finally {"
+
+				//p.increaseIndentation
+				}
+				if (lClass.superType != null) {
+					p >> "super.dispose();"
+				} else {
+					p >> "disposed = true;"
+				}
+				if (!compositionContainmentProps.empty) {
+					p <<< "}"
+				}
+			])
+
+		associate(lClass, op)
+	}
+
+	override JvmField toField(LFeature prop) {
+		prop.internalToField
+	}
+
+	def dispatch JvmField internalToField(LBeanFeature prop) {
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+
+		jvmField.type = cloneWithProxies(prop.toTypeReferenceWithMultiplicity)
+		jvmField.documentation = prop.getDocumentation
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def dispatch JvmField internalToField(LBeanReference prop) {
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+
+		jvmField.type = prop.toTypeReferenceWithMultiplicity
+		jvmField.documentation = prop.getDocumentation
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def dispatch JvmField internalToField(LEntityFeature prop) {
+		val LEntity entity = prop.entity
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+
+		jvmField.type = cloneWithProxies(prop.toTypeReferenceWithMultiplicity)
+		jvmField.documentation = prop.getDocumentation
+
+		// if uuid or historized entity and property name == oid AND a uuid property is present too
+		if (prop.isUUID || ((entity.timedependent || entity.historized) && prop.toName.equals(Constants::PROP__OID) &&
+			entity.uuidPresent)) {
+			jvmField.setInitializer [
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> '''java.util.UUID.randomUUID().toString()'''
+			]
+		}
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def dispatch JvmField internalToField(LEntityReference prop) {
+		val LEntity entity = prop.entity
+		val JvmField jvmField = typesFactory.createJvmField();
+		jvmField.simpleName = prop.toName
+		jvmField.visibility = JvmVisibility::PRIVATE
+
+		jvmField.type = prop.toTypeReferenceWithMultiplicity
+		jvmField.documentation = prop.getDocumentation
+
+		// if uuid or historized entity and property name == oid AND a uuid property is present too
+		if (prop.isUUID || ((entity.timedependent || entity.historized) && prop.toName.equals(Constants::PROP__OID) &&
+			entity.uuidPresent)) {
+			jvmField.setInitializer [
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> '''java.util.UUID.randomUUID().toString()'''
+			]
+		}
+
+		annotationCompiler.processAnnotation(prop, jvmField);
+		associate(prop, jvmField);
+	}
+
+	def boolean uuidPresent(LEntity entity) {
+		entity.allAttributes.exists[it.uuid]
+	}
+
+	def JvmOperation toMethod(LOperation sourceElement, String name, JvmTypeReference returnType,
+		Procedure1<? super JvmOperation> initializer) {
+		val op = typesFactory.createJvmOperation()
+		op.simpleName = name
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = cloneWithProxies(returnType)
+
+		annotationCompiler.processAnnotation(sourceElement, op);
+		associate(sourceElement, op);
+
+		initializeSafely(op, initializer);
+	}
+
+	def JvmOperation toSetter(LEntityFeature prop) {
+		if (prop.toMany) {
+			throw new RuntimeException("toMany-References not allowed for setters!");
+		}
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toTypeReference
+		val opposite = if(prop instanceof LEntityReference) (prop as LEntityReference).resolvedOpposite else null
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toSetterName
+		op.parameters += prop.toParameter(paramName, typeRef)
+		op.documentation = "Sets the " + paramName + " property to this instance." + if (opposite != null) {
+			"\nSince the reference is a container reference, the opposite reference " + "(" + prop.typeName + "." +
+				opposite.name.toFirstLower + ")\n" + "of the " + paramName +
+				" will be handled automatically and no further coding is required to keep them in sync.\n" +
+				"See {@link " + prop.typeName + "#" + opposite.toSetterName + "(" + prop.typeName + ")}."
+		} else
+			""
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p >> prop.toCheckDisposedCall()
+				val fieldRef = "this." + prop.toName
+				if (opposite == null) {
+					p >> fieldRef + " = " + paramName + ";"
+				} else {
+					p >> "if (" + fieldRef + " != null) " >>> "{"
+					if (opposite.toMany) {
+						p >> fieldRef + "." + opposite.toCollectionInternalRemoverName + "(this);"
+					} else {
+						p >> fieldRef + "." + opposite.toInternalSetterName + "(null);"
+					}
+					p <<< "}"
+//					p >> fieldRef + " = " + paramName + ";\n"
+					p >> "internalSet" + prop.toName.toFirstUpper+"(" + paramName +");\n"					
+					p >> "if (" + fieldRef + " != null) " >>> "{"
+					if (opposite.toMany) {
+						p >> fieldRef + "." + opposite.toCollectionInternalAdderName + "(this);"
+					} else {
+						p >> fieldRef + "." + opposite.toInternalSetterName + "(this);"
+					}
+					p <<< "}"
+				}
+			])
+
+		return associate(prop, op);
+	}
+
+	def JvmOperation toSetter(LBeanFeature prop) {
+		if (prop.toMany) {
+			throw new RuntimeException("toMany-References not allowed for setters!");
+		}
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toTypeReference
+		val opposite = if(prop instanceof LBeanReference) (prop as LBeanReference).resolvedOpposite else null
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toSetterName
+		op.parameters += prop.toParameter(paramName, typeRef)
+		op.documentation = "Sets the " + paramName + " property to this instance." + if (opposite != null) {
+			"\nSince the reference is a container reference, the opposite reference " + "(" + prop.typeName + "." +
+				opposite.name.toFirstLower + ")\n" + "of the " + paramName +
+				" will be handled automatically and no further coding is required to keep them in sync.\n" +
+				"See {@link " + prop.typeName + "#" + opposite.toSetterName + "(" + prop.typeName + ")}."
+		} else
+			""
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p >> prop.toCheckDisposedCall()
+				val fieldRef = "this." + prop.toName
+				if (opposite == null) {
+					p >> fieldRef + " = " + paramName + ";"
+				} else {
+					p >> "if (" + fieldRef + " != null) " >>> "{"
+					if (opposite.toMany) {
+						p >> fieldRef + "." + opposite.toCollectionInternalRemoverName + "(this);"
+					} else {
+						p >> fieldRef + "." + opposite.toInternalSetterName + "(null);"
+					}
+					p <<< "}"
+					p >> fieldRef + " = " + paramName + ";\n"
+					p >> "if (" + fieldRef + " != null) " >>> "{"
+					if (opposite.toMany) {
+						p >> fieldRef + "." + opposite.toCollectionInternalAdderName + "(this);"
+					} else {
+						p >> fieldRef + "." + opposite.toInternalSetterName + "(this);"
+					}
+					p <<< "}"
+
+				//                if (this.«fieldName» != null) {
+				//                  «IF ref.opposite.toMany»
+				//                    this.«fieldName».«ref.opposite.toCollectionInternalRemoverName»(this);
+				//                  «ELSE»
+				//                    this.«fieldName».«ref.opposite.toInternalSetterName»(null);
+				//                  «ENDIF»
+				//                }
+				//                this.«fieldName» = «localVarName»;
+				//                if (this.«fieldName» != null) {
+				//                  «IF ref.opposite.toMany»
+				//                    this.«fieldName».«ref.opposite.toCollectionInternalAdderName»(this);
+				//                  «ELSE»
+				//                    this.«fieldName».«ref.opposite.toInternalSetterName»(this);
+				//                  «ENDIF»
+				//                }
+				}
+			])
+
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds an adder method for a *toMany relation like
+     * <code>Order.addToOrderLines(OrderLine orderLine)</code>.
+     */
+	def dispatch JvmOperation toAdder(LEntityFeature prop, String propertyName) {
+		val paramName = prop.typeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionAdderName
+		if (prop.toTypeReference != null) {
+			op.parameters += prop.toParameter(paramName, prop.toTypeReference)
+		}
+
+		op.documentation = '''
+		Adds the given «paramName» to this object. <p>
+		«IF prop.opposite != null»
+			Since the reference is a composition reference, the opposite reference («prop.typeName».«prop.opposite.name.
+			toFirstLower»)
+			of the «paramName» will be handled automatically and no further coding is required to keep them in sync. 
+			See {@link «prop.typeName»#«prop.opposite.toSetterName»(«prop.typeName»)}.
+		«ELSE»
+			ATTENTION:<br>
+			The reference is a composition reference, but no opposite is available.
+			So the opposite will NOT be handled. Therefore you have to ensure that the parent of the reference
+			is set properly.
+		«ENDIF»'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p += prop.toCheckDisposedCall()
+				if (prop.opposite != null) {
+					p >> paramName + "." + prop.opposite.toSetterName + "(this);"
+				} else {
+					p >> "if (!" + prop.toCollectionInternalGetterName + "().contains(" + paramName + "))" >>> "{"
+					{
+						p >> prop.toCollectionInternalAdderName + "(" + paramName + ");"
+					}
+					p <<< "}"
+				}
+			])
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds an adder method for a *toMany relation like
+     * <code>Order.addToOrderLines(OrderLine orderLine)</code>.
+     */
+	def dispatch JvmOperation toAdder(LBeanFeature prop, String propertyName) {
+		val paramName = prop.typeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionAdderName
+		if (prop.toTypeReference != null) {
+			op.parameters += prop.toParameter(paramName, prop.toTypeReference)
+		}
+
+		op.documentation = '''
+		Adds the given «paramName» to this object. <p>
+		«IF prop.opposite != null»
+			Since the reference is a composition reference, the opposite reference («prop.typeName».«prop.opposite.name.
+			toFirstLower»)
+			of the «paramName» will be handled automatically and no further coding is required to keep them in sync. 
+			See {@link «prop.typeName»#«prop.opposite.toSetterName»(«prop.typeName»)}.
+		«ELSEIF !(prop.type instanceof LBean)»
+			ATTENTION:<br>
+			The reference is a composition reference, but no opposite is available.
+			So the opposite will NOT be handled. Therefore you have to ensure that the parent of the reference
+			is set properly.
+		«ENDIF»'''
+
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p += prop.toCheckDisposedCall()
+				if (prop.opposite != null) {
+					p >> paramName + "." + prop.opposite.toSetterName + "(this);"
+				} else {
+					p >> "if (!" + prop.toGetterName + "().contains(" + paramName + "))" >>> "{"
+					{
+						p >> prop.toCollectionInternalAdderName + "(" + paramName + ");"
+					}
+					p <<< "}"
+				}
+			])
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds a setter method for a *toMany relation like
+     * <code>Order.setOrderLines(List&lt;OrderLine&gt; orderLines)</code>.
+     */
+	def JvmOperation toCollectionSetter(LFeature prop, String propertyName) {
+		val paramName = prop.typeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toSetterName
+		if (prop.toTypeReference != null) {
+			op.parameters += prop.toParameter(propertyName, prop.toTypeReferenceWithMultiplicity)
+		}
+		op.documentation = '''
+		Sets the given «propertyName» to the object. Currently contained «propertyName» instances will be removed.
+		
+		@param «propertyName» the list of new instances'''
+		op.body = '''
+			// remove the old «paramName»
+			for(«prop.typeName» oldElement : new ArrayList<«prop.typeName»>(this.«prop.toCollectionInternalGetterName»())){
+			  «prop.toCollectionRemoverName»(oldElement);
+			}
+			
+			// add the new «paramName»
+			for(«prop.typeName» newElement : «propertyName»){
+			  «prop.toCollectionAdderName»(newElement);
+			}
+		'''
+		return associate(prop, op);
+	}
+
+	/**
+     * Builds a setter method for a *toMany relation like
+     * <code>Order.setOrderLines(List&lt;OrderLine&gt; orderLines)</code>.
+     */
+	def JvmOperation toPreRemove(LEntity entity) {
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PROTECTED
+		op.returnType = references.getTypeForName(Void::TYPE, entity)
+		op.simpleName = "preRemove"
+		op.documentation = '''Iterates all cross references and removes them from the parent to avoid ConstraintViolationException'''
+		op.annotations += entity.toAnnotation(typeof(PreRemove))
+		
+		op.body = '''
+			«FOR ref : entity.references»
+				«IF !ref.cascading && ref.opposite != null && ref.bounds.toMany»
+					// remove the «ref.name»
+					for(«ref.typeName» oldElement : new ArrayList<«ref.typeName»>(this.«ref.toCollectionInternalGetterName»())){
+					  «ref.toCollectionRemoverName»(oldElement);
+					}
+				«ENDIF»
+			«ENDFOR»
+		'''
+		return associate(entity, op);
+	}
+
+	def JvmVisibility getInternalMethodVisibility(LFeature ref) {
+		val LPackage ownerPackage = (ref.eContainer() as LType).package;
+		val LPackage refPackage = ref.type.package;
+		if (ownerPackage.equals(refPackage)) {
+			null // package visibility
+		} else {
+			JvmVisibility::PUBLIC
+		}
+	}
+
+	override JvmOperation toIsDisposed(LClass lClass) {
+		val op = super.toIsDisposed(lClass)
+		annotationCompiler.addDisposeFieldAnnotation(lClass, op)
+		return op
+	}
+
+	def JvmField toDiposeField(LType sourceElement) {
+		val JvmField field = sourceElement.toPrimitiveTypeField("disposed", Boolean::TYPE)
+		associate(sourceElement, field)
+		annotationCompiler.addDisposeFieldAnnotation(sourceElement, field)
+		return field
+	}
+
+	def JvmOperation toInternalSetter(LFeature prop) {
+		val paramName = prop.toMethodParamName
+		val typeRef = prop.toTypeReference
+		val JvmOperation result = typesFactory.createJvmOperation();
+		result.visibility = JvmVisibility::PUBLIC
+		result.returnType = references.getTypeForName(Void::TYPE, prop)
+		result.simpleName = prop.toInternalSetterName
+		result.parameters += prop.toParameter(paramName, typeRef)
+
+		result.documentation = '''For internal use only!'''
+
+		setBody(result,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> "this." + prop.toName + " = " + paramName + ";"
+			])
+		return associate(prop, result);
+	}
+
+	def JvmOperation toInternalAdder(LFeature prop) {
+		val paramName = prop.typeName.toFirstLower
+		val typeRef = prop.toTypeReference
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionInternalAdderName
+
+		val param = prop.toParameter(paramName, typeRef);
+		if (param != null) {
+			op.parameters += param
+		}
+
+		op.documentation = '''For internal use only!'''
+
+		op.body = '''
+		if(«paramName» == null) {
+			return;
+		}
+		
+		if(!«prop.toCollectionInternalGetterName»().contains(«paramName»)) {
+			«prop.toCollectionInternalGetterName»().add(«paramName»);
+		}
+		'''
+		return associate(prop, op);
+	}
+
+	def JvmOperation toInternalRemover(LFeature prop) {
+		val paramName = prop.typeName.toFirstLower
+		val typeRef = prop.toTypeReference
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionInternalRemoverName
+
+		val param = prop.toParameter(paramName, typeRef);
+		if (param != null) {
+			op.parameters += param
+		}
+
+		op.documentation = '''For internal use only!'''
+
+		setBody(op,
+			[ //ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop)
+				p >> prop.toCollectionInternalGetterName + "()" + ".remove(" + paramName + ");"
+			])
+		return associate(prop, op)
+	}
+
+	def JvmOperation toInternalCollectionGetter(LFeature prop, String name) {
+		val fieldName = name.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation()
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = prop.toTypeReferenceWithMultiplicity
+		op.simpleName = prop.toCollectionInternalGetterName
+		op.documentation = "For internal use only! Returns the list of " + htmlCode(prop.typeName) +
+			"s thereby lazy initializing it."
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return;
+				var p = it.trace(prop);
+				val fieldRef = "this." + fieldName
+				p >> "if (" + fieldRef + " == null)" >>> " {"
+				{
+					p >> fieldRef >> " = new " >> newTypeRef(prop, typeof(ArrayList), prop.toTypeReference) >>
+						"();"
+				}
+				p <<< "}"
+				p >> "return " + fieldRef + ";"
+			])
+		prop.associate(op)
+	}
+
+	/**
+     * Builds a remover method for a *toMany relation like
+     * <code>Order.removeFromOrderLines(OrderLine orderLine)</code>.
+     */
+	def JvmOperation toRemover(LFeature prop, String propertyName) {
+		val paramName = prop.typeName.toFirstLower
+		val JvmOperation op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, prop)
+		op.simpleName = prop.toCollectionRemoverName
+		if (prop.toTypeReference != null) {
+			op.parameters += prop.toParameter(paramName, prop.toTypeReference)
+		}
+		if (prop.opposite != null) {
+			op.documentation = '''
+			Removes the given «paramName» from this object. <p>
+			«IF prop.cascading»
+				Since the reference is a cascading reference, the opposite reference («prop.typeName».«prop.opposite.name.
+				toFirstLower»)
+				of the «paramName» will be handled automatically and no further coding is required to keep them in sync. 
+				See {@link «prop.typeName»#«prop.opposite.toSetterName»(«prop.typeName»)}.
+			«ENDIF»'''
+		}
+		setBody(op,
+			[ // ITreeAppendable
+				if(it == null) return
+				val p = it.trace(prop);
+				p += prop.toCheckDisposedCall()
+				if (prop.opposite != null) {
+					p >> paramName + "." + prop.opposite.toSetterName + "(null);"
+				} else {
+					p >> prop.toCollectionInternalGetterName + "().remove(" + paramName + ");"
+				}
+			])
+		return associate(prop, op);
+	}
+
+//	def EObject createOSBPJvmProxy(EObject obj, EReference eRef, EReference eJvmRef,
+//		SemanticLoadingResource resource) {
+//		if (resource == null)
+//			throw new IllegalStateException("object must be contained in a resource");
+//		val InternalEObject target = (obj as InternalEObject).eGet(eRef, false, false) as InternalEObject;
+//		val URI jvmTypeURI = resource.getJvmTypeURI(target.eProxyURI)
+//		val JvmParameterizedTypeReference typeRef = TypesFactory.eINSTANCE.createJvmParameterizedTypeReference();
+//		val JvmType proxy = TypesFactory.eINSTANCE.createJvmGenericType();
+//		typeRef.setType(proxy);
+//		(proxy as InternalEObject).eSetProxyURI(jvmTypeURI);
+//		return typeRef;
+//	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/ModelExtensions.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/ModelExtensions.xtend
new file mode 100644
index 0000000..9da98d0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/ModelExtensions.xtend
@@ -0,0 +1,336 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.List
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.dsl.semantic.entity.LOperation
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory
+
+class ModelExtensions extends org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions {
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension JvmTypesBuilder
+	@Inject extension NamingExtensions
+
+	@Inject TypeReferences references;
+
+	def dispatch JvmTypeReference toTypeReference(LEntityReference prop) {
+		return prop.typeJvm?.cloneWithProxies
+	}
+
+	def dispatch JvmTypeReference toTypeReference(LEntityAttribute prop) {
+		val lType = prop.type
+		if (lType instanceof LEntity || lType instanceof LBean || lType instanceof LEnum) {
+			return prop.typeJvm?.cloneWithProxies
+		}
+		return prop.type?.toTypeReference
+	}
+
+	def dispatch JvmTypeReference toTypeReference(LBeanReference prop) {
+		return prop.typeJvm?.cloneWithProxies
+	}
+
+	def dispatch JvmTypeReference toTypeReference(LOperation prop) {
+		prop.type.cloneWithProxies
+	}
+
+	override JvmTypeReference toSyntheticTypeReference(LDataType type) {
+		switch (type.syntheticSelector) {
+			case Constants::DT_INTERNAL_IS_CURRENT_VERSION:
+				references.findDeclaredType(Boolean::TYPE, type).newTypeRef()
+			case Constants::DT_INTERNAL_OBJECT_VERSION:
+				references.findDeclaredType(Integer::TYPE, type).newTypeRef()
+			case Constants::DT_INTERNAL_OBJECT_ID:
+				if (type.syntheticType != null) {
+					for (att : (type.syntheticType as LEntity).allAttributes) {
+						if (att.id || att.uuid) {
+							return att.toTypeReference
+						}
+					}
+				}
+		}
+	}
+
+	def dispatch boolean isCascading(LEntityReference prop) {
+		prop.cascading || if(prop.opposite != null) prop.opposite.cascading else false
+	}
+
+	def dispatch boolean isCascading(LBeanReference prop) {
+		prop.cascading || if(prop.opposite != null) prop.opposite.cascadingSimple else false
+	}
+
+	def dispatch boolean isCascadingSimple(LBeanReference prop) {
+		prop.cascading
+	}
+
+	def dispatch boolean isCascadingSimple(LEntityReference prop) {
+		isCascading(prop)
+	}
+
+	def dispatch boolean isCascadingSimple(LEntityAttribute prop) {
+		isCascading(prop)
+	}
+
+	def dispatch boolean isCascading(LOperation prop) {
+		return false
+	}
+
+	def dispatch boolean isUUID(LFeature prop) {
+		false
+	}
+
+	def dispatch boolean isUUID(LEntityAttribute prop) {
+		prop.uuid
+	}
+
+	def dispatch getResolvedOpposite(LEntityReference prop) {
+
+		// For a toMany that has already an opposite, return it.
+		// Otherwise search in the referenced type for the property with the owner type.
+		if (prop.getOpposite() != null) {
+			return prop.getOpposite()
+		} else if (prop.type instanceof LEntity) {
+			val LEntity ref = prop.type as LEntity
+			ref.references.findFirst[it.opposite == prop]
+		}
+	}
+
+	def dispatch getResolvedOpposite(LBeanReference prop) {
+
+		// For a toMany that has already an opposite, return it.
+		// Otherwise search in the referenced type for the property with the owner type.
+		if (prop.getOpposite() != null) {
+			return prop.getOpposite()
+		} else if (prop.type instanceof LBean) {
+			val LBean ref = prop.type as LBean
+			ref.references.findFirst[it.opposite == prop]
+		}
+	}
+
+	/**
+   	 * Returns true, if toCheck can be cast to superType
+   	 */
+	def dispatch boolean isCastable(LEntity toCheck, LEntity superType) {
+		val String toCheckFqn = toCheck.fullyQualifiedName.toString
+		val String superTypeFqn = superType.fullyQualifiedName.toString
+
+		if (toCheckFqn.equals(superTypeFqn)) {
+			return true
+		} else {
+			val LClass toCheckSuperType = toCheck.getSuperType
+			if (toCheckSuperType != null) {
+				return toCheckSuperType.isCastable(superType)
+			} else {
+				return false;
+			}
+		}
+	}
+
+	/**
+   	 * Returns true, if toCheck can be cast to superType
+   	 */
+	def dispatch boolean isCastable(LBean toCheck, LBean superType) {
+		val String toCheckFqn = toCheck.fullyQualifiedName.toString
+		val String superTypeFqn = superType.fullyQualifiedName.toString
+
+		if (toCheckFqn.equals(superTypeFqn)) {
+			return true
+		} else {
+			val LClass toCheckSuperType = toCheck.getSuperType
+			if (toCheckSuperType != null) {
+				return toCheckSuperType.isCastable(superType)
+			} else {
+				return false;
+			}
+		}
+	}
+
+	/**
+	 * The binary <code>+</code> operator that concatenates two strings.
+	 * 
+	 * @param a
+	 *            a string.
+	 * @param b
+	 *            another string.
+	 * @return <code>a + b</code>
+	 */
+	def static String operator_plus(String a, String b) {
+		return a + b;
+	}
+
+	def dispatch String typeName(LEntityAttribute prop) {
+		prop.type.name
+	}
+
+	def dispatch String typeName(LEntityReference prop) {
+		prop.type.name
+	}
+
+	def dispatch String typeName(LBeanAttribute prop) {
+		prop.type.name
+	}
+
+	def dispatch String typeName(LBeanReference prop) {
+		prop.type.name
+	}
+
+	def dispatch type(LEntityAttribute prop) {
+		prop.type
+	}
+
+	def dispatch type(LEntityReference prop) {
+		prop.type
+	}
+
+	def dispatch type(LBeanAttribute prop) {
+		prop.type
+	}
+
+	def dispatch type(LBeanReference prop) {
+		prop.type
+	}
+
+	def dispatch opposite(LEntityAttribute prop) {
+		null
+	}
+
+	def dispatch opposite(LEntityReference prop) {
+		prop.opposite
+	}
+
+	def dispatch opposite(LBeanAttribute prop) {
+		null
+	}
+
+	def dispatch opposite(LBeanReference prop) {
+		prop.opposite
+	}
+
+	def List<LEntityInheritanceStrategy> collectAllInheritanceStrategies(LEntity entity) {
+		return entity.collectAllInheritanceStrategies(newArrayList())
+	}
+
+	def protected List<LEntityInheritanceStrategy> collectAllInheritanceStrategies(LEntity entity,
+		List<LEntityInheritanceStrategy> result) {
+		if (entity == null) {
+			return result
+		}
+		result += entity.toInheritanceStrategy
+
+		return entity.superType.collectAllInheritanceStrategies(result)
+	}
+
+	def toInheritanceStrategy(LEntity entity) {
+		var LEntityInheritanceStrategy strategy = entity.inheritanceStrategy
+		if (strategy != null) {
+			strategy = EcoreUtil::copy(strategy)
+		}
+
+		if (strategy == null) {
+			strategy = entity.findStrategyFromSuper
+			strategy?.resetInheritancePropsFromSuper(entity)
+		}
+
+		if (strategy == null) {
+			strategy = OSBPEntityFactory::eINSTANCE.createLTablePerSubclassStrategy
+		}
+
+		strategy.fillInheritanceDefaults(entity)
+
+		return strategy
+	}
+
+	def dispatch void fillInheritanceDefaults(LTablePerClassStrategy strategy, LEntity entity) {
+		if (strategy.discriminatorColumn == null) {
+			strategy.discriminatorColumn = "DISC"
+		}
+
+		if (strategy.discriminatorType == LDiscriminatorType::INHERIT) {
+			strategy.discriminatorType = LDiscriminatorType::STRING
+		}
+
+		if (strategy.discriminatorValue == null) {
+			strategy.discriminatorValue = entity.toTableName
+		}
+	}
+
+	def dispatch void fillInheritanceDefaults(LTablePerSubclassStrategy strategy, LEntity entity) {
+		if (strategy.discriminatorColumn == null) {
+			strategy.discriminatorColumn = "DISC"
+		}
+
+		if (strategy.discriminatorType == LDiscriminatorType::INHERIT) {
+			strategy.discriminatorType = LDiscriminatorType::STRING
+		}
+
+		if (strategy.discriminatorValue == null) {
+			strategy.discriminatorValue = entity.toTableName
+		}
+	}
+
+	def dispatch void resetInheritancePropsFromSuper(LTablePerClassStrategy strategy, LEntity entity) {
+		strategy.discriminatorValue = null
+	}
+
+	def dispatch void resetInheritancePropsFromSuper(LTablePerSubclassStrategy strategy, LEntity entity) {
+		strategy.discriminatorValue = null
+	}
+
+	def dispatch String toDiscriminatorValue(LTablePerClassStrategy strategy) {
+		strategy.discriminatorValue
+	}
+
+	def dispatch String toDiscriminatorValue(LTablePerSubclassStrategy strategy) {
+		strategy.discriminatorValue
+	}
+
+	def LEntityInheritanceStrategy findStrategyFromSuper(LEntity entity) {
+		if (entity.inheritanceStrategy != null) {
+			return EcoreUtil::copy(entity.inheritanceStrategy)
+		}
+		if (entity != entity.superType && entity.superType != null) {
+			return entity.superType.findStrategyFromSuper
+		}
+		return null
+	}
+
+	def boolean isStrategyFromSuperPresent(LEntity entity) {
+		return entity.findStrategyFromSuper != null
+	}
+
+	def boolean isStrategyPerSubclass(LEntity entity) {
+		return entity.toInheritanceStrategy instanceof LTablePerSubclassStrategy
+	}
+
+	def boolean checkIsMappedSuperclass(LEntity entity) {
+		return if(entity == null) false else entity.mappedSuperclass
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/NamingExtensions.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/NamingExtensions.xtend
new file mode 100644
index 0000000..ff12855
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/extensions/NamingExtensions.xtend
@@ -0,0 +1,108 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.extensions
+
+import com.google.inject.Inject
+import org.eclipse.osbp.dsl.entity.xtext.util.PersistenceNamingUtils
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+
+class NamingExtensions extends org.eclipse.osbp.dsl.common.xtext.extensions.NamingExtensions {
+
+	@Inject extension ModelExtensions;
+
+	// ### Might move to PersistenceExtensions
+	def dispatch toColumnName(LAttribute prop) {
+		var columnBaseName = prop.name
+		if (columnBaseName.nullOrEmpty) {
+			columnBaseName = PersistenceNamingUtils::camelCaseToUpperCase(prop.toName)
+		}
+
+		// Compute the final column name using some settings. 
+		// E.g. to add some prefix like the shortName of the Entity.
+		// ### not yet implemented
+		columnBaseName
+	}
+
+	// ### Might move to PersistenceExtensions
+	def dispatch toColumnName(LEntityAttribute prop) {
+		var columnBaseName = prop.persistenceInfo?.columnName
+		if (columnBaseName.nullOrEmpty) {
+			columnBaseName = PersistenceNamingUtils::camelCaseToUpperCase(prop.toName)
+		} else {
+			columnBaseName = PersistenceNamingUtils::camelCaseToUpperCase(columnBaseName)
+		}
+
+		// Compute the final column name using some settings. 
+		// E.g. to add some prefix like the shortName of the Entity.
+		// ### not yet implemented
+		columnBaseName
+	}
+
+	// ### Might move to PersistenceExtensions
+	def dispatch toColumnName(LEntityReference prop) {
+		var columnBaseName = prop.persistenceInfo?.columnName
+		if (columnBaseName.nullOrEmpty) {
+			columnBaseName = PersistenceNamingUtils::camelCaseToUpperCase(prop.toName) + "_ID"
+		} else {
+			columnBaseName = PersistenceNamingUtils::camelCaseToUpperCase(columnBaseName)
+		}
+
+		// Compute the final column name using some settings. 
+		// E.g. to add some prefix like the shortName of the Entity.
+		// ### not yet implemented
+		columnBaseName
+	}
+
+	// ### Might move to PersistenceExtensions
+	def dispatch toColumnName(LBeanReference prop) {
+		var columnBaseName = prop.name
+		if (columnBaseName.nullOrEmpty) {
+			columnBaseName = PersistenceNamingUtils::camelCaseToUpperCase(prop.toName)
+		}
+
+		// Compute the final column name using some settings. 
+		// E.g. to add some prefix like the shortName of the Entity.
+		// ### not yet implemented
+		columnBaseName
+	}
+
+	def toTableName(LEntity entity) {
+		var tableBaseName = entity.persistenceInfo?.tableName
+		if (tableBaseName.nullOrEmpty) {
+			tableBaseName = PersistenceNamingUtils::camelCaseToUpperCase(entity.toName)
+		} else {
+			tableBaseName = PersistenceNamingUtils::camelCaseToUpperCase(tableBaseName)
+		}
+
+		// Compute the final column name using some settings. 
+		// E.g. to add some prefix like the shortName of the Entity.
+		// ### not yet implemented
+		tableBaseName
+	}
+
+	def toSchemaName(LEntity entity) {
+		entity.persistenceInfo.toSchemaName
+	}
+
+	def toSchemaName(LEntityPersistenceInfo info) {
+		var schemaName = info.schemaName
+		if (!schemaName.nullOrEmpty) {
+			schemaName = PersistenceNamingUtils::camelCaseToUpperCase(schemaName)
+		}
+
+		schemaName
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/formatting/EntityGrammarFormatter.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/formatting/EntityGrammarFormatter.java
new file mode 100644
index 0000000..41d7b95
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/formatting/EntityGrammarFormatter.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.formatting;
+
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.osbp.dsl.common.xtext.formatting.CommonGrammarFormatter;
+import org.eclipse.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+import org.eclipse.osbp.dsl.entity.xtext.services.EntityGrammarGrammarAccess;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ * 
+ * Also see org.eclipse.xtext.xtext.XtextFormattingTokenSerializer as an
+ * example
+ */
+public class EntityGrammarFormatter extends CommonGrammarFormatter {
+
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		configure(c, (EntityGrammarGrammarAccess) getGrammarAccess());
+	}
+
+	public void configure(FormattingConfig c, EntityGrammarGrammarAccess ga) {
+		EntityGrammarGrammarAccess f = (EntityGrammarGrammarAccess) getGrammarAccess();
+
+		super.configure(c, ga.getCommonGrammarGrammarAccess());
+
+		configureClassDef(c, f.getClassAccess());
+		configureEntityDef(c, f.getEntityFeatureAccess());
+		configureBeanDef(c, f.getBeanFeatureAccess());
+		configureMultiplicityDef(c, f.getMultiplicityAccess());
+		configureEnumDef(c, f.getEnumAccess());
+		configureEnumLiteralDef(c, f.getEnumLiteralAccess());
+		configureIndex(c, f.getIndexAccess());
+
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).after(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(1, 1, 1).after(f.getML_COMMENTRule());
+
+		for (Keyword kw : ga.findKeywords("@")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(")")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(";")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(",")) {
+			c.setNoSpace().before(kw);
+		}
+	}
+
+	protected void configureClassDef(FormattingConfig c,
+			EntityGrammarGrammarAccess.ClassElements ele) {
+
+		// entity
+		c.setIndentationIncrement().after(
+				ele.getLeftCurlyBracketKeyword_2_0_5());
+		c.setIndentationDecrement().before(
+				ele.getRightCurlyBracketKeyword_2_0_11());
+		c.setLinewrap(2).after(ele.getRightCurlyBracketKeyword_2_0_11());
+
+		// bean
+		c.setIndentationIncrement().after(
+				ele.getLeftCurlyBracketKeyword_2_1_4());
+		c.setIndentationIncrement().after(
+				ele.getLeftCurlyBracketKeyword_2_2_4());
+		c.setIndentationDecrement().before(
+				ele.getRightCurlyBracketKeyword_2_2_6());
+		c.setIndentationDecrement().before(
+				ele.getRightCurlyBracketKeyword_2_1_7());
+		c.setLinewrap(2).after(ele.getRightCurlyBracketKeyword_2_1_7());
+		c.setLinewrap().before(ele.getPersistenceUnitKeyword_2_0_8_0());
+		c.setLinewrap().before(ele.getPersistenceInfoAssignment_2_0_6());
+	}
+
+	protected void configureEntityDef(FormattingConfig c,
+			EntityGrammarGrammarAccess.EntityFeatureElements ele) {
+		c.setLinewrap(1, 1, 2).around(ele.getRule());
+	}
+
+	protected void configureBeanDef(FormattingConfig c,
+			EntityGrammarGrammarAccess.BeanFeatureElements ele) {
+		c.setLinewrap(1, 1, 2).around(ele.getRule());
+	}
+
+	protected void configureMultiplicityDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.MultiplicityElements ele) {
+		c.setNoSpace().after(ele.getLeftSquareBracketKeyword_0());
+		c.setNoSpace().before(ele.getRightSquareBracketKeyword_3());
+	}
+
+	protected void configureEnumDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.EnumElements ele) {
+
+		c.setLinewrap(2).before(ele.getEnumKeyword_0());
+		c.setLinewrap().after(ele.getLeftCurlyBracketKeyword_2());
+		c.setLinewrap().before(ele.getRightCurlyBracketKeyword_5());
+		c.setNoSpace().before(ele.getCommaSpaceKeyword_4_0());
+		c.setSpace(null).after(ele.getCommaSpaceKeyword_4_0());
+
+		// Einzug for Enum
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_2());
+		c.setIndentationDecrement().before(ele.getRightCurlyBracketKeyword_5());
+	}
+
+	protected void configureEnumLiteralDef(FormattingConfig c,
+			CommonGrammarGrammarAccess.EnumLiteralElements ele) {
+
+	}
+
+	protected void configureIndex(FormattingConfig c,
+			EntityGrammarGrammarAccess.IndexElements ele) {
+
+		c.setLinewrap(2).around(ele.getRule());
+		c.setLinewrap().after(ele.getLeftCurlyBracketKeyword_3());
+		c.setLinewrap().before(ele.getRightCurlyBracketKeyword_6());
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_3());
+		c.setIndentationDecrement().before(ele.getRightCurlyBracketKeyword_6());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/DtosFileGenerator.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/DtosFileGenerator.xtend
new file mode 100644
index 0000000..bd27a86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/DtosFileGenerator.xtend
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.generator
+
+import com.google.inject.Inject
+import java.util.Collections
+import java.util.HashSet
+import java.util.List
+import java.util.Set
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.naming.IQualifiedNameConverter
+import org.eclipse.xtext.naming.QualifiedName
+import org.eclipse.xtext.resource.IResourceDescriptions
+import org.eclipse.xtext.resource.XtextResource
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
+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.LDateType
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LImport
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+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
+
+/**
+ *  This generator automatically creates a generic .dtos-file from a given entity model.
+ * 	Imports, datatype declarations, enums and comments are carried over to the .dtos file, 
+ * 	while bean and entity declarations are translated to DTO declarations with the
+ *  appropriate inheritance information. Attributes and references are defined as inherited
+ *  in this default conversion.
+ */
+class DtosFileGenerator {
+
+	@Inject extension JvmTypesBuilder
+	@Inject extension ModelExtensions
+	@Inject extension IQualifiedNameConverter
+	@Inject
+	private ResourceDescriptionsProvider provider;
+
+	IResourceDescriptions descriptions
+
+	def getContent(LTypedPackage pkg) {
+
+		descriptions = provider.getResourceDescriptions(pkg.eResource)
+
+		return pkg.doGetContent
+	}
+
+	def doGetContent(LTypedPackage pkg) '''
+		«pkg.toDocu»
+		package «pkg.toDtoPackageName» {
+			
+			/* Imports the required artifacts */
+			«pkg.toImports»
+		
+			«FOR LDataType lDatatype : pkg.datatypes»
+				«lDatatype.toDocu»
+				«lDatatype.toDataType»
+			«ENDFOR»
+		
+			«FOR LEntity lEntity : pkg.entities»
+				«lEntity.toDocu»
+				«lEntity.toEntityDeclaration»
+					«FOR LEntityFeature feature : lEntity.features.filter[
+			(it instanceof LAttribute && !(it as LAttribute).derived) || (it instanceof LReference)]»
+						«feature.toFeature»
+					«ENDFOR»
+					«FOR LEntityFeature feature : lEntity.features.filter[(it instanceof LAttribute && (it as LAttribute).derived)]»
+						«(feature as LAttribute).toDerivedAttribute»
+					«ENDFOR»
+				}
+				
+			«ENDFOR»
+			«FOR LBean lBean : pkg.beans»
+				«lBean.toDocu»
+				«lBean.toBeanDeclaration»
+					«FOR LBeanFeature feature : lBean.features.filter[
+			(it instanceof LAttribute && !(it as LAttribute).derived) || (it instanceof LReference)]»
+						«feature.toFeature»
+					«ENDFOR»
+				}
+				
+			«ENDFOR»
+			«FOR LEnum lEnum : pkg.enums»
+				enum «lEnum.name» {
+					«lEnum.toLiterals»
+				}
+				
+			«ENDFOR»
+		}
+	'''
+
+	def toEntityDeclaration(LEntity lEntity) {
+		return '''
+			«IF lEntity.abstract»abstract «ENDIF»autoDto «lEntity.name»Dto «IF lEntity.superType != null»extends «lEntity.
+				superType.name»Dto «ENDIF»wraps «lEntity.name» {
+		'''
+	}
+
+	def String toImports(LTypedPackage pkg) {
+		val Set<String> imports = new HashSet()
+
+		for (LImport lImport : pkg.imports) {
+			imports += lImport.importedNamespace.findProper
+		}
+
+		for (EObject element : pkg.eAllContents.toIterable) {
+			switch (element) {
+				LEntity: {
+					val LTypedPackage lPkg = element.eContainer as LTypedPackage;
+					imports += lPkg.name + ".*"
+					imports += lPkg.toDtoPackageName + ".*"
+					imports += lPkg.toDtoPackageName + ".mapper.*"
+
+					if (element.superType != null) {
+						val LTypedPackage lSuperPkg = element.superType.eContainer as LTypedPackage;
+						imports += lSuperPkg.toDtoPackageName + ".*"
+						imports += lPkg.toDtoPackageName + ".mapper.*"
+					}
+				}
+				LBean: {
+					val LTypedPackage lPkg = element.eContainer as LTypedPackage;
+					imports += lPkg.name + ".*"
+					imports += lPkg.toDtoPackageName + ".*"
+					imports += lPkg.toDtoPackageName + ".mapper.*"
+					if (element.superType != null) {
+						val LTypedPackage lSuperPkg = element.superType.eContainer as LTypedPackage;
+						imports += lSuperPkg.toDtoPackageName + ".*"
+						imports += lPkg.toDtoPackageName + ".mapper.*"
+					}
+				}
+				LEnum: {
+					val LTypedPackage lPkg = element.eContainer as LTypedPackage;
+					imports += lPkg.name + ".*"
+					imports += lPkg.toDtoPackageName + ".*"
+					imports += lPkg.toDtoPackageName + ".mapper.*"
+				}
+				LEntityReference: {
+					val LEntity lEntity = element.type
+					val LTypedPackage lPkg = lEntity.eContainer as LTypedPackage;
+					imports += lPkg.name + ".*"
+					imports += lPkg.toDtoPackageName + ".*"
+					imports += lPkg.toDtoPackageName + ".mapper.*"
+				}
+				LEntityAttribute: {
+					if (element.type instanceof LBean) {
+						val LBean lBean = element.type as LBean
+						val LTypedPackage lPkg = lBean.eContainer as LTypedPackage;
+						imports += lPkg.name + ".*"
+						imports += lPkg.toDtoPackageName + ".*"
+						imports += lPkg.toDtoPackageName + ".mapper.*"
+					}
+				}
+			}
+		}
+
+		imports.remove(null)
+
+		val List<String> sortable = newArrayList(imports)
+		Collections.sort(sortable)
+
+		val StringBuilder b = new StringBuilder
+		for (String imported : sortable) {
+			b.append("import ")
+			b.append(imported)
+			b.append(";")
+			b.append("\n")
+		}
+
+		return b.toString
+	}
+
+	def findProper(String value) {
+		val fqn = value.toQualifiedName
+
+		// is already a wildcard import
+		if (value.endsWith(".*")) {
+			return value
+		}
+
+		var expected = fqn;
+		while (expected != QualifiedName.EMPTY) {
+			if (isPackage(expected)) {
+				return expected.toString + ".*"
+			} else {
+				expected = expected.skipLast(1)
+			}
+		}
+		return null
+	}
+
+	def boolean isPackage(QualifiedName fqn) {
+		val result = descriptions.getExportedObjects(OSBPTypesPackage.Literals.LTYPED_PACKAGE, fqn, false)
+		return !result.empty
+	}
+
+	def toBeanDeclaration(LBean lBean) {
+		return '''
+			autoDto «lBean.name»Dto «IF lBean.superType != null»extends «lBean.superType.name»Dto «ENDIF»wraps «lBean.name» {
+		'''
+	}
+
+	def toDocu(EObject element) {
+		var docu = element.documentation
+		if (!docu.nullOrEmpty) {
+			var docus = docu.split('\n')
+			if (docus.length > 1) {
+				return '''
+				/**
+				«FOR line : docus»
+					«" * "»«line»
+				«ENDFOR»
+				 */'''.toString
+			} else if (docus.length == 1) {
+				return '''/** «docu» */'''.toString
+			}
+		}
+		return ""
+	}
+
+	def dispatch toFeature(LAttribute att) '''
+		«att.toDocu»
+		inherit var «att.name»;
+	'''
+
+	def dispatch toFeature(LReference att) '''
+		«att.toDocu»
+		inherit ref «att.name»;
+	'''
+
+	def dispatch toFeature(LEntityReference att) '''
+		«att.toDocu»
+		inherit ref «att.name» mapto «att.type.name»Dto;
+	'''
+
+	def dispatch toFeature(LBeanReference att) '''
+		«att.toDocu»
+		inherit ref «att.name» mapto «att.type.name»Dto;
+	'''
+
+	def toDerivedAttribute(LAttribute att) '''
+		«att.toDocu»
+		derived «IF att.domainDescription»domainDescription «ENDIF» «att.type.name» «att.name» «att.blockExpression»
+	'''
+
+	def toLiterals(LEnum lEnum) {
+		var result = new StringBuilder
+		for (lit : lEnum.literals) {
+			result.append(lit.name);
+			result.append(", ");
+		}
+
+		return result.substring(0, result.length - 2)
+	}
+
+	def toDataType(LDataType lDatatype) {
+		'''
+			datatype «lDatatype.name» «IF lDatatype.date»dateType «IF lDatatype.dateType == LDateType.DATE»date«ELSEIF lDatatype.
+				dateType == LDateType.TIME»time«ELSE»timestamp«ENDIF»«ELSEIF lDatatype.asBlob»as blob«ELSE»jvmType «lDatatype.
+				jvmTypeReference.type.qualifiedName»«IF lDatatype.asPrimitive» as primitive«ENDIF»«ENDIF»;
+		'''
+	}
+
+	def String toPackageName(LTypedPackage pkg) {
+		pkg.name + ".dtos"
+	}
+
+	def Iterable<LDataType> datatypes(LTypedPackage pkg) {
+		pkg.types.filter[it instanceof LDataType].map[it as LDataType];
+	}
+
+	def Iterable<LEntity> entities(LTypedPackage pkg) {
+		pkg.types.filter[it instanceof LEntity].map[it as LEntity];
+	}
+
+	def Iterable<LBean> beans(LTypedPackage pkg) {
+		pkg.types.filter[it instanceof LBean].map[it as LBean];
+	}
+
+	def Iterable<LEnum> enums(LTypedPackage pkg) {
+		pkg.types.filter[it instanceof LEnum].map[it as LEnum];
+	}
+
+	def String blockExpression(LAttribute attribute) {
+		val resource = attribute.eResource as XtextResource
+		return resource.serializer.serialize(attribute.derivedGetterExpression)
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/Generator.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/Generator.xtend
new file mode 100644
index 0000000..4659151
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/Generator.xtend
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.generator
+
+import com.google.inject.Inject
+import java.io.StringWriter
+import java.io.Writer
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.emf.ecore.util.EcoreUtil
+import org.eclipse.emf.ecore.xmi.XMLResource
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LCommonModel
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingGenerator
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+class Generator extends DelegatingGenerator {
+
+	static final Logger LOGGER = LoggerFactory.getLogger(typeof(Generator))
+
+	@Inject extension ModelExtensions
+	@Inject extension DtosFileGenerator
+	
+	override dispatch void internalDoGenerate(JvmDeclaredType type, IFileSystemAccess fsa) {
+		val log = TimeLogger.start(typeof(Generator));
+		super._internalDoGenerate(type, fsa)
+		log.stop(LOGGER, "generated " + type.qualifiedName)
+	}
+
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+		super.doGenerate(input, fsa)
+
+//		for (tmp : input.allContents.filter[it instanceof LTypedPackage].toList) {
+//			val log = TimeLogger.start(typeof(Generator));
+//			val LTypedPackage pkg = tmp as LTypedPackage
+//			fsa.deleteFile(input.toDtosFileName);
+//			fsa.generateFile(input.toDtosFileName, "DTOs", pkg.content);
+//			log.stop(LOGGER, "generated " + input.toDtosFileName)
+//		}
+		// persist the entities model
+		toBinary(input, fsa)
+	}
+	
+	def toBinary(Resource input, IFileSystemAccess fsa) {
+		super.doGenerate(input, fsa)
+
+		val XMLResource outputRes = new XMLResourceImpl
+		val LEntityModel lModel = input.contents.get(0) as LEntityModel
+		if(lModel == null) {
+			return
+		}
+		outputRes.contents += EcoreUtil.copy(lModel)
+
+		val Writer writer = new StringWriter
+		outputRes.save(writer, null)
+
+		fsa.generateFile(input.URI.lastSegment + ".entities_bin", "ModelBin", writer.toString)
+	}
+
+	def toDtosFileName(Resource input) {
+		val r = input.URI.lastSegment.replace("entitymodel", "dtos")
+		return r
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/OutputConfigurationProvider.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/OutputConfigurationProvider.java
new file mode 100644
index 0000000..0e233e9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/generator/OutputConfigurationProvider.java
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.entity.xtext.generator;
+
+import java.util.Set;
+
+import org.eclipse.xtext.generator.OutputConfiguration;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingOutputConfigurationProvider;
+
+public class OutputConfigurationProvider extends
+		DelegatingOutputConfigurationProvider {
+
+	/**
+	 * @return a set of {@link OutputConfiguration} available for the generator
+	 */
+	public Set<OutputConfiguration> getOutputConfigurations() {
+		Set<OutputConfiguration> configs = super.getOutputConfigurations();
+
+//		OutputConfiguration servicesOutput = new OutputConfiguration("DTOs");
+//		servicesOutput.setDescription("derived DTOs");
+//		servicesOutput.setOutputDirectory("./dto-models");
+//		servicesOutput.setOverrideExistingResources(true);
+//		servicesOutput.setCreateOutputDirectory(true);
+//		servicesOutput.setKeepLocalHistory(true);
+//		// IMPORTANT - do not change!
+//		servicesOutput.setCanClearOutputDirectory(false);
+//		servicesOutput.setCleanUpDerivedResources(false);
+//		servicesOutput.setSetDerivedProperty(false);
+//		configs.add(servicesOutput);
+		
+		OutputConfiguration binOutput = new OutputConfiguration(
+				"ModelBin");
+		binOutput.setDescription("ModelBin");
+		binOutput.setOutputDirectory("./modelsbin");
+		binOutput.setOverrideExistingResources(true);
+		binOutput.setCreateOutputDirectory(true);
+		binOutput.setCleanUpDerivedResources(true);
+		binOutput.setSetDerivedProperty(true);
+		binOutput.setKeepLocalHistory(true);
+		configs.add(binOutput);
+
+		return configs;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/jvmmodel/AnnotationCompiler.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/jvmmodel/AnnotationCompiler.xtend
new file mode 100644
index 0000000..83f1009
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/jvmmodel/AnnotationCompiler.xtend
@@ -0,0 +1,737 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.util.List
+import javax.persistence.AssociationOverride
+import javax.persistence.AssociationOverrides
+import javax.persistence.AttributeOverride
+import javax.persistence.AttributeOverrides
+import javax.persistence.Basic
+import javax.persistence.Cacheable
+import javax.persistence.CascadeType
+import javax.persistence.Column
+import javax.persistence.DiscriminatorColumn
+import javax.persistence.DiscriminatorType
+import javax.persistence.DiscriminatorValue
+import javax.persistence.ElementCollection
+import javax.persistence.Embeddable
+import javax.persistence.Embedded
+import javax.persistence.Entity
+import javax.persistence.FetchType
+import javax.persistence.GeneratedValue
+import javax.persistence.Id
+import javax.persistence.Index
+import javax.persistence.Inheritance
+import javax.persistence.InheritanceType
+import javax.persistence.JoinColumn
+import javax.persistence.Lob
+import javax.persistence.ManyToOne
+import javax.persistence.MappedSuperclass
+import javax.persistence.OneToMany
+import javax.persistence.OneToOne
+import javax.persistence.Table
+import javax.persistence.Temporal
+import javax.persistence.TemporalType
+import javax.persistence.Transient
+import javax.persistence.Version
+import org.eclipse.osbp.dsl.entity.xtext.extensions.AnnotationExtension
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.entity.xtext.extensions.NamingExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBeanFeature
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityInheritanceStrategy
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.dsl.semantic.entity.LOperation
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy
+import org.eclipse.osbp.runtime.common.annotations.Dispose
+import org.eclipse.osbp.runtime.common.annotations.DomainDescription
+import org.eclipse.osbp.runtime.common.annotations.DomainKey
+import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraint
+import org.eclipse.osbp.runtime.common.annotations.TargetEnumConstraints
+import org.eclipse.xtext.common.types.JvmAnnotationReference
+import org.eclipse.xtext.common.types.JvmAnnotationTarget
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmOperation
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.persistence.annotations.Noncacheable
+
+/** 
+ * This class is responsible to generate the Annotations defined in the entity model
+ */
+class AnnotationCompiler extends org.eclipse.osbp.dsl.common.xtext.jvmmodel.AnnotationCompiler {
+
+	@Inject extension ModelExtensions
+	@Inject extension JvmTypesBuilder
+	@Inject extension AnnotationExtension
+	@Inject extension NamingExtensions
+
+	def protected dispatch void internalProcessAnnotation(LBean bean, JvmGenericType jvmType) {
+		bean.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+
+		bean.addAnno(jvmType, bean.toAnnotation(typeof(Embeddable)))
+	}
+
+	def protected dispatch void internalProcessAnnotation(LOperation member, JvmField jvmOperation) {
+		member.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmOperation);
+	}
+
+	def protected dispatch void internalProcessAnnotation(LEntity entity, JvmGenericType jvmType) {
+		entity.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmType);
+		if (entity.mappedSuperclass) {
+			addAnno(entity, jvmType, entity.toAnnotation(typeof(MappedSuperclass)))
+		} else {
+
+			// @Entity
+			addAnno(entity, jvmType, entity.toAnnotation(typeof(Entity)))
+
+			if (!entity.isStrategyFromSuperPresent || entity.isStrategyPerSubclass) {
+
+				// @Table
+				val tableAnn = entity.toAnnotation(typeof(Table))
+				addAnno(entity, jvmType, tableAnn)
+				val schemaName = entity.toSchemaName
+				if (!schemaName.nullOrEmpty) {
+					tableAnn.addAnnAttr(entity, "schema", schemaName)
+				}
+				tableAnn.addAnnAttr(entity, "name", entity.toTableName)
+
+				// @Index
+				//
+				val List<JvmAnnotationReference> collectedIndizes = newArrayList();
+				for (index : entity.indexes) {
+					val indexAnn = entity.toAnnotation(typeof(Index))
+					addAnno(entity, jvmType, indexAnn)
+
+					indexAnn.addAnnAttr(entity, "name", index.name)
+					if (index.unique) {
+						indexAnn.addAnnAttr(entity, "unique", true)
+					}
+
+					var StringBuilder propList = new StringBuilder;
+					for (name : index.features.map[it.name]) {
+						if (propList != null) {
+							if (propList.length > 0) {
+								propList.append(", ")
+							}
+							propList.append(name);
+						}
+					}
+					indexAnn.addAnnAttr(entity, "columnList", propList.toString)
+					collectedIndizes.add(indexAnn);
+				}
+
+				if (collectedIndizes.size > 0) {
+					val JvmAnnotationReference[] result = collectedIndizes.toArray(newArrayOfSize(collectedIndizes.size));
+					tableAnn.addAnnAttr(entity, "indexes", result)
+				}
+			}
+
+			// @Inheritance
+			val LEntityInheritanceStrategy strategy = entity.toInheritanceStrategy
+			strategy.processInheritance(entity, jvmType)
+
+			// @Cachable
+			if (entity.cacheable) {
+				addAnno(entity, jvmType, entity.toAnnotation(typeof(Cacheable)))
+			}
+		}
+	}
+
+	def protected dispatch void processInheritance(LTablePerClassStrategy strategy, LEntity entity,
+		JvmGenericType jvmType) {
+
+		// Process inheritance.
+		// If the Entity has subclasses, setup @Inheritance
+		val superType = entity.superType
+		if (!entity.subTypes.empty && (superType == null || superType.checkIsMappedSuperclass)) {
+			val annRef = entity.toAnnotation(typeof(Inheritance))
+			annRef.addAnnAttr(entity, "strategy", InheritanceType::SINGLE_TABLE)
+			addAnno(entity, jvmType, annRef)
+
+			val discrColumn = entity.toAnnotation(typeof(DiscriminatorColumn))
+			discrColumn.addAnnAttr(entity, "name", strategy.discriminatorColumn)
+			discrColumn.addAnnAttr(entity, "discriminatorType", strategy.discriminatorType.toDiscriminatorType)
+			addAnno(entity, jvmType, discrColumn)
+		}
+
+		// add the discriminator value only once
+		if (!entity.subTypes.empty || !superType.checkIsMappedSuperclass) {
+			val discrValue = entity.toAnnotation(typeof(DiscriminatorValue))
+			discrValue.addAnnAttr(entity, "value", strategy.discriminatorValue)
+			addAnno(entity, jvmType, discrValue)
+		}
+
+	}
+
+	def protected dispatch void processInheritance(LTablePerSubclassStrategy strategy, LEntity entity,
+		JvmGenericType jvmType) {
+
+		// Process inheritance.
+		// If the Entity has subclasses, setup @Inheritance
+		val superType = entity.superType
+		if (!entity.subTypes.empty && (superType == null || superType.checkIsMappedSuperclass)) {
+			val annRef = entity.toAnnotation(typeof(Inheritance))
+			annRef.addAnnAttr(entity, "strategy", InheritanceType::JOINED)
+			addAnno(entity, jvmType, annRef)
+
+			val discrColumn = entity.toAnnotation(typeof(DiscriminatorColumn))
+			discrColumn.addAnnAttr(entity, "name", strategy.discriminatorColumn)
+			discrColumn.addAnnAttr(entity, "discriminatorType", strategy.discriminatorType.toDiscriminatorType)
+			addAnno(entity, jvmType, discrColumn)
+		}
+
+		// add the discriminator value only once
+		if (!entity.subTypes.empty || !superType.checkIsMappedSuperclass) {
+			val discrValue = entity.toAnnotation(typeof(DiscriminatorValue))
+			discrValue.addAnnAttr(entity, "value", strategy.discriminatorValue)
+			addAnno(entity, jvmType, discrValue)
+		}
+	}
+
+	def DiscriminatorType toDiscriminatorType(LDiscriminatorType type) {
+		switch (type) {
+			case LDiscriminatorType::STRING:
+				return DiscriminatorType::STRING
+			case LDiscriminatorType::CHAR:
+				return DiscriminatorType::CHAR
+			case LDiscriminatorType::INTEGER:
+				return DiscriminatorType::INTEGER
+			default: {
+			}
+		}
+	}
+
+	def protected dispatch void internalProcessAnnotation(LEntityReference prop, JvmField jvmField) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmField);
+
+		if (prop.toMany) {
+
+			// *toMany
+			if (prop.opposite.toMany) {
+
+				// @ManyToMany
+				addManyToManyAnno(prop, jvmField)
+			} else {
+
+				// @OneToMany
+				addOneToManyAnno(prop, jvmField)
+			}
+		} else {
+
+			// *toOne
+			val opposite = prop.resolvedOpposite
+
+			// When we have no opposite, then the master-side has no collection
+			// and we assume a many-to-one relation.
+			// A one-to-one relation needs an "opposite" on both sides.
+			if (opposite != null && !opposite.toMany) {
+
+				// @OneToOne
+				addOneToOneAnno(prop, jvmField)
+			} else {
+
+				// @ManyToOne
+				addManyToOneAnno(prop, jvmField)
+			}
+		}
+
+		if (prop.resultFilters != null) {
+			prop.resultFilters.addConstraintsAnno(jvmField)
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), jvmField)
+
+		toConstraintAnnotations(prop, jvmField)
+	}
+
+	def protected dispatch void internalProcessAnnotation(LEntityAttribute prop, JvmField jvmField) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmField);
+
+		if (prop.id) {
+			jvmField.annotations += prop.toAnnotation(typeof(Id))
+			jvmField.annotations += prop.toAnnotation(typeof(GeneratedValue))
+		} else if (prop.uuid) {
+			jvmField.annotations += prop.toAnnotation(typeof(Id))
+		} else if (prop.version) {
+			jvmField.annotations += prop.toAnnotation(typeof(Version))
+		} else if (prop.transient) {
+			addAnno(prop, jvmField, prop.toAnnotation(typeof(Transient)))
+		} else {
+			if (prop.toMany) {
+				val ann = prop.toAnnotation(typeof(ElementCollection))
+				addAnno(prop, jvmField, ann)
+			} else {
+
+				//
+				// if the propery is a bean, then add AttributeOverride Annotations
+				//
+				if (prop.type instanceof LBean) {
+					addAnno(prop, jvmField, prop.toAnnotation(typeof(Embedded)))
+
+					jvmField.toAttributesOverride(prop)
+				}
+
+				if (prop.domainKey) {
+					addAnno(prop, jvmField, prop.toAnnotation(typeof(DomainKey)))
+				}
+
+				if (prop.domainDescription) {
+					addAnno(prop, jvmField, prop.toAnnotation(typeof(DomainDescription)))
+				}
+			}
+
+			val ann = prop.toAnnotation(typeof(Column))
+			ann.addAnnAttr(prop, "name", prop.toColumnName)
+			if (prop.bounds.required) {
+				ann.addAnnAttr(prop, "nullable", false)
+			}
+			addAnno(prop, jvmField, ann)
+
+			if (prop.type instanceof LDataType) {
+				val LDataType datatype = prop.type as LDataType
+				if (datatype.date) {
+					val temp = prop.toAnnotation(typeof(Temporal))
+					switch (datatype.dateType) {
+						case DATE:
+							temp.addAnnAttr(prop, "value", TemporalType::DATE)
+						case TIME:
+							temp.addAnnAttr(prop, "value", TemporalType::TIME)
+						case TIMESTAMP:
+							temp.addAnnAttr(prop, "value", TemporalType::TIMESTAMP)
+						default: {
+						}
+					}
+					addAnno(prop, jvmField, temp)
+				} else if (datatype.asBlob) {
+					addAnno(prop, jvmField, prop.toAnnotation(typeof(Lob)))
+
+					val basic = prop.toAnnotation(typeof(Basic))
+					basic.addAnnAttr(prop, "fetch", FetchType::LAZY)
+					addAnno(prop, jvmField, basic)
+				}
+			}
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), jvmField)
+
+		toConstraintAnnotations(prop, jvmField)
+	}
+
+	// generate Attribute overrides
+	// @AttributeOverrides({
+	//    @AttributeOverride(name="number", column=@Column(name="ORDER_NUMBER"))
+	//    @AttributeOverride(name="status", column=@Column(name="ORDER_STATUS"))}
+	//	)
+	def protected void toAttributesOverride(JvmField jvmField, LEntityAttribute prop) {
+
+		val List<JvmAnnotationReference> collectedAttributes = newArrayList();
+		val List<JvmAnnotationReference> collectedAssocations = newArrayList();
+
+		for (LBeanFeature f : (prop.type as LBean).allFeatures.filter[!it.toMany]) {
+			if (f instanceof LBeanAttribute) {
+
+				val overrideAttributeAnno = prop.toAnnotation(typeof(AttributeOverride))
+				overrideAttributeAnno.addAnnAttr(f, "name", f.toName)
+				{
+					val colAnno = prop.toAnnotation(typeof(Column))
+					colAnno.addAnnAttr(f, "name", (prop.toName + "_" + f.toName).toUpperCase)
+
+					overrideAttributeAnno.addAnnAttr(f, "column", colAnno)
+				}
+
+				collectedAttributes += overrideAttributeAnno;
+			} else if (f instanceof LBeanReference) {
+				val type = f.type
+				switch (type) {
+					LEntity: {
+						val overrideAssociationAnno = prop.toAnnotation(typeof(AssociationOverride))
+						overrideAssociationAnno.addAnnAttr(f, "name", f.toName)
+						{
+							val colAnno = prop.toAnnotation(typeof(JoinColumn))
+							colAnno.addAnnAttr(f, "name", (prop.toName + "_" + f.toName).toUpperCase)
+							overrideAssociationAnno.addAnnAttr(f, "joinColumns", colAnno)
+						}
+
+						collectedAssocations += overrideAssociationAnno;
+					}
+					LBean: {
+						type.collectNestedAttributeOverride(collectedAttributes, f.toName,
+							(prop.toName + "_" + f.toName).toUpperCase)
+					}
+				}
+			}
+		}
+
+		if (!collectedAttributes.empty) {
+			val overrideAttributesAnno = prop.toAnnotation(typeof(AttributeOverrides))
+			val JvmAnnotationReference[] result = collectedAttributes.toArray(newArrayOfSize(collectedAttributes.size));
+			overrideAttributesAnno.addAnnAttr(prop, "value", result)
+			addAnno(prop, jvmField, overrideAttributesAnno)
+		}
+
+		if (!collectedAssocations.empty) {
+			val overrideAssociationsAnno = prop.toAnnotation(typeof(AssociationOverrides))
+			val JvmAnnotationReference[] result = collectedAssocations.toArray(newArrayOfSize(collectedAssocations.size));
+			overrideAssociationsAnno.addAnnAttr(prop, "value", result)
+			addAnno(prop, jvmField, overrideAssociationsAnno)
+		}
+	}
+
+	/**
+	 * Collects all nested embedded fields to be overridden
+ 	*/
+	def protected void collectNestedAttributeOverride(LBean bean, List<JvmAnnotationReference> collectedReferences,
+		String propertyPath, String persistencePath) {
+		if (bean == null) {
+			return
+		}
+
+		for (LBeanFeature f : bean.allFeatures.filter[!it.toMany]) {
+			if (f instanceof LBeanAttribute) {
+
+				val overrideAttributeAnno = bean.toAnnotation(typeof(AttributeOverride))
+				overrideAttributeAnno.addAnnAttr(f, "name", propertyPath + "." + f.toName)
+				{
+					val colAnno = bean.toAnnotation(typeof(Column))
+					colAnno.addAnnAttr(f, "name", (persistencePath + "_" + f.toName).toUpperCase)
+					overrideAttributeAnno.addAnnAttr(f, "column", colAnno)
+				}
+
+				collectedReferences += overrideAttributeAnno;
+			} else if (f instanceof LBeanReference) {
+				val oppositeType = f.opposite?.type
+				val type = f.type
+				switch (type) {
+					LEntity: {
+						// TODO implement
+					}
+					LBean: {
+						if (oppositeType != bean) {
+							type.collectNestedAttributeOverride(collectedReferences, propertyPath + "." + f.toName,
+								persistencePath + "_" + f.toName.toUpperCase)
+						}
+					}
+				}
+			}
+		}
+	}
+
+	def protected dispatch void internalProcessAnnotation(LBeanAttribute prop, JvmField jvmField) {
+		prop.resolvedAnnotations.filter([! exclude]).map([annotation]).translateAnnotationsTo(jvmField);
+
+		if (prop.transient) {
+			jvmField.annotations += prop.toAnnotation(typeof(Transient))
+		}
+
+		var basicAdded = false;
+		if (prop.type instanceof LDataType) {
+			val LDataType datatype = prop.type as LDataType
+			if (datatype.date) {
+				addAnno(prop, jvmField, prop.toAnnotation(typeof(Basic)))
+				basicAdded = true;
+
+				val temp = prop.toAnnotation(typeof(Temporal))
+				switch (datatype.dateType) {
+					case DATE:
+						temp.addAnnAttr(prop, "value", TemporalType::DATE)
+					case TIME:
+						temp.addAnnAttr(prop, "value", TemporalType::TIME)
+					case TIMESTAMP:
+						temp.addAnnAttr(prop, "value", TemporalType::TIMESTAMP)
+				}
+				addAnno(prop, jvmField, temp)
+			} else if (datatype.asBlob) {
+				addAnno(prop, jvmField, prop.toAnnotation(typeof(Lob)))
+
+				val basic = prop.toAnnotation(typeof(Basic))
+				basic.addAnnAttr(prop, "fetch", FetchType::LAZY)
+				addAnno(prop, jvmField, basic)
+				basicAdded = true;
+			}
+		}
+
+		if (!basicAdded) {
+			addAnno(prop, jvmField, prop.toAnnotation(typeof(Basic)))
+			basicAdded = true
+		}
+
+		if (prop.toMany) {
+			val ann = prop.toAnnotation(typeof(ElementCollection))
+			addAnno(prop, jvmField, ann)
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), jvmField)
+
+		toConstraintAnnotations(prop, jvmField)
+	}
+
+	def dispatch void toConstraintAnnotations(LBeanAttribute prop, JvmField jvmField) {
+
+		if (prop.type.validAllowed) {
+			prop.toValidAnnotation(jvmField)
+		}
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+
+		if (prop.constraints.empty) {
+			super.toDatatypeBasedConstraintAnnotations(prop, jvmField)
+		}
+	}
+
+	def dispatch void toConstraintAnnotations(LBeanReference prop, JvmField jvmField) {
+
+		if (prop.type instanceof LBean) {
+			prop.toValidAnnotation(jvmField)
+		}
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+	}
+
+	def dispatch void toConstraintAnnotations(LEntityAttribute prop, JvmField jvmField) {
+
+		if (prop.type.validAllowed) {
+			prop.toValidAnnotation(jvmField)
+		}
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+
+		if (prop.constraints.empty) {
+			super.toDatatypeBasedConstraintAnnotations(prop, jvmField)
+		}
+	}
+
+	def dispatch void toConstraintAnnotations(LEntityReference prop, JvmField jvmField) {
+
+		if (prop.cascading) {
+			prop.toValidAnnotation(jvmField)
+		}
+
+		for (c : prop.constraints) {
+			c.toConstraintAnnotation(jvmField)
+		}
+	}
+
+	def protected dispatch void internalProcessAnnotation(LBeanReference prop, JvmField jvmField) {
+		prop.resolvedAnnotations.filter([!exclude]).map([annotation]).translateAnnotationsTo(jvmField);
+
+		if (prop.type instanceof LEntity) {
+
+			// its a reference to an entity and so we need to express the relation
+			if (prop.toMany) {
+
+				// *toMany
+				if (prop.opposite.toMany) {
+
+					// @ManyToMany
+					addManyToManyAnno(prop, jvmField)
+				} else {
+
+					// @OneToMany
+					addOneToManyAnno(prop, jvmField)
+				}
+			} else {
+
+				// *toOne
+				val opposite = prop.resolvedOpposite
+
+				// When we have no opposite, then the master-side has no collection
+				// and we assume a many-to-one relation.
+				// A one-to-one relation needs an "opposite" on both sides.
+				if (opposite != null && !opposite.toMany) {
+
+					// @OneToOne
+					addOneToOneAnno(prop, jvmField)
+				} else {
+
+					// @ManyToOne
+					addManyToOneAnno(prop, jvmField)
+				}
+			}
+
+			if (prop.resultFilters != null) {
+				prop.resultFilters.addConstraintsAnno(jvmField)
+			}
+
+		} else {
+
+			// it is a bean and needs @embedded annotations
+			jvmField.annotations += prop.toAnnotation(typeof(Basic))
+			addAnno(prop, jvmField, prop.toAnnotation(typeof(Embedded)))
+			if (prop.toMany) {
+				addAnno(prop, jvmField, prop.toAnnotation(typeof(ElementCollection)))
+			}
+		}
+
+		// create the properties annotations
+		prop.toPropertiesAnnotation(mergeKeyAndValues(prop), jvmField)
+
+		toConstraintAnnotations(prop, jvmField)
+	}
+
+	def private addOneToManyAnno(LReference prop, JvmAnnotationTarget jvmAnnTarget) {
+
+		val col = prop.toAnnotation(typeof(JoinColumn))
+		col.addAnnAttr(prop, "name", prop.toColumnName)
+		if (prop.bounds.required) {
+			col.addAnnAttr(prop, "nullable", false)
+		}
+		addAnno(prop, jvmAnnTarget, col)
+		
+		val ann = prop.toAnnotation(typeof(OneToMany))
+		if (prop.opposite != null) {
+			if (prop.opposite.name == null) {
+				ann.addAnnAttr(prop, "mappedBy", "")
+			} else {
+				ann.addAnnAttr(prop, "mappedBy", prop.opposite.name)
+			}
+		}
+		if (prop.cascading) {
+			ann.addAnnAttr(prop, "cascade", CascadeType::ALL)
+			ann.addAnnAttr(prop, "orphanRemoval", true)
+		} else {
+//			val cascaded = newArrayList(CascadeType::DETACH, CascadeType::MERGE, CascadeType::PERSIST,
+//				CascadeType::REFRESH)
+//				
+//			ann.addAnnAttr(prop, "cascade", cascaded.toArray(<Enum> newArrayOfSize(cascaded.length)))
+//			ann.addAnnAttr(prop, "orphanRemoval", false)
+		}
+		addAnno(prop, jvmAnnTarget, ann)
+		
+		addAnno(prop, jvmAnnTarget, prop.toAnnotation(typeof(Noncacheable)))
+	}
+
+	def private addManyToManyAnno(LReference prop, JvmAnnotationTarget jvmAnnTarget) {
+		//		throw new UnsupportedOperationException("ManyToMany not yet supported");
+	}
+
+	def private addManyToOneAnno(LReference prop, JvmAnnotationTarget jvmAnnTarget) {
+		val manyToOne = prop.toAnnotation(typeof(ManyToOne))
+		if (prop.bounds.required) {
+			manyToOne.addAnnAttr(prop, "optional", !prop.bounds.required)
+		}
+		manyToOne.addAnnAttr(prop, "fetch", FetchType::LAZY)
+
+		val opposite = prop.resolvedOpposite
+		if (opposite != null && opposite.cascading) {
+			val cascaded = newArrayList(CascadeType::DETACH, CascadeType::MERGE, CascadeType::PERSIST,
+				CascadeType::REFRESH)
+			manyToOne.addAnnAttr(prop, "cascade", cascaded.toArray(<Enum> newArrayOfSize(cascaded.length)))
+		}
+		addAnno(prop, jvmAnnTarget, manyToOne)
+
+		val joinColumn = prop.toAnnotation(typeof(JoinColumn))
+		joinColumn.addAnnAttr(prop, "name", prop.toColumnName)
+		if (prop.bounds.required) {
+			joinColumn.addAnnAttr(prop, "nullable", false)
+		}
+		addAnno(prop, jvmAnnTarget, joinColumn)
+	}
+
+	def private addOneToOneAnno(LReference prop, JvmAnnotationTarget jvmAnnTarget) {
+		val oneToOne = prop.toAnnotation(typeof(OneToOne))
+		if (prop.bounds.required) {
+			oneToOne.addAnnAttr(prop, "optional", !prop.bounds.required)
+		}
+		val opposite = prop.resolvedOpposite
+		if (opposite != null && prop.cascading) {
+			oneToOne.addAnnAttr(prop, "mappedBy", if(opposite.name != null) opposite.name else "")
+		}
+		if (prop.cascading) {
+			oneToOne.addAnnAttr(prop, "cascade", CascadeType::ALL)
+			oneToOne.addAnnAttr(prop, "orphanRemoval", true)
+		}
+
+		//oneToOne.addAnnAttr(prop, "fetch", FetchType::LAZY)
+		addAnno(prop, jvmAnnTarget, oneToOne)
+
+		if (opposite != null && opposite.cascading) {
+			val joinColumn = prop.toAnnotation(typeof(JoinColumn))
+			joinColumn.addAnnAttr(prop, "name", prop.toColumnName)
+			if (prop.bounds.required) {
+				joinColumn.addAnnAttr(prop, "nullable", false)
+			}
+			addAnno(prop, jvmAnnTarget, joinColumn)
+		}
+	}
+
+	def void addConstraintsAnno(LResultFilters constraints, JvmField jvmField) {
+
+		// process the LAttributeMatchingConstraint
+		if (!constraints.resultFilters.filter[it instanceof LAttributeMatchingConstraint].empty) {
+
+			// collect all inner annotations
+			val innerAnnotations = newArrayList()
+			constraints.resultFilters.filter[it instanceof LAttributeMatchingConstraint].map[
+				it as LAttributeMatchingConstraint].forEach [
+				val innerAnno = constraints.toAnnotation(typeof(TargetEnumConstraint))
+				innerAnno.addAnnAttr(it, "targetProperty", attribute.name)
+				innerAnno.addAnnAttr(it, "enumClass", attribute.typeJvm.cloneWithProxies)
+				innerAnno.addAnnAttr(it, "enumLiteral", matchingLiteral.name)
+				innerAnnotations += innerAnno
+			]
+
+			// now create the outer annotation and add the array of inner annotations
+			val mainAnno = constraints.toAnnotation(typeof(TargetEnumConstraints))
+			mainAnno.addAnnAttr(constraints, "constraints",
+				innerAnnotations.toArray(<JvmAnnotationReference>newArrayOfSize(innerAnnotations.length)))
+			jvmField.annotations += mainAnno
+		}
+	}
+
+	def dispatch addDisposeFieldAnnotation(LEntity entity, JvmField field) {
+		val anno = entity.toAnnotation(typeof(Transient))
+		addAnno(entity, field, anno)
+
+		addAnno(entity, field, entity.toAnnotation(typeof(Dispose)))
+	}
+
+	def dispatch addDisposeFieldAnnotation(LBean entity, JvmField field) {
+		val anno = entity.toAnnotation(typeof(Transient))
+		addAnno(entity, field, anno)
+
+		addAnno(entity, field, entity.toAnnotation(typeof(Dispose)))
+	}
+
+	def dispatch addDisposeFieldAnnotation(LEntity entity, JvmOperation op) {
+		addAnno(entity, op, entity.toAnnotation(typeof(Dispose)))
+	}
+
+	def dispatch addDisposeFieldAnnotation(LBean entity, JvmOperation op) {
+		addAnno(entity, op, entity.toAnnotation(typeof(Dispose)))
+	}
+
+	def dispatch boolean isValidAllowed(LBean type) {
+		return true;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/jvmmodel/EntityGrammarJvmModelInferrer.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/jvmmodel/EntityGrammarJvmModelInferrer.xtend
new file mode 100644
index 0000000..cf2c3ea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/jvmmodel/EntityGrammarJvmModelInferrer.xtend
@@ -0,0 +1,358 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.io.Serializable
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmField
+import org.eclipse.xtext.common.types.JvmType
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.osbp.dsl.entity.xtext.extensions.EntityTypesBuilder
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.entity.LBean
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.dsl.semantic.entity.LOperation
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexModelInferrer
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.eclipse.osbp.dsl.common.datatypes.IBean
+import org.eclipse.osbp.dsl.common.datatypes.IEntity
+import javax.persistence.PreRemove
+
+/**
+ * This is the main model inferrer that is automatically registered in AbstractEntityRuntimeModule.
+ * It dispatches to specific model inferrers depending on the metamodel element.
+ */
+class EntityGrammarJvmModelInferrer extends IndexModelInferrer {
+
+	protected val Logger log = LoggerFactory::getLogger(getClass())
+
+	@Inject AnnotationCompiler annotationCompiler
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension EntityTypesBuilder;
+	@Inject extension ModelExtensions;
+	@Inject TypeReferences references
+
+	// used for test cases with old derived state computer
+	def dispatch void infer(LEnum enumX, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = enumX.toEnumerationType(enumX.fullyQualifiedName.toString, null)
+		type.inferFullState(enumX, acceptor, isPrelinkingPhase, "")
+	}
+
+	def dispatch void inferTypesOnly(LEnum enumX, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = enumX.toEnumerationType(enumX.fullyQualifiedName.toString, null)
+		type.markAsToBeDerivedLater(enumX, isPrelinkingPhase)
+		acceptor.accept(type);
+
+		// pass inferring to delegates
+		inferTypesOnlyByDelegates(enumX, acceptor, isPrelinkingPhase);
+	}
+
+	def dispatch void inferFullState(JvmDeclaredType type, LEnum enumX, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+
+		acceptor.accept(type).initializeLater [
+			
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			
+			type.markAsDerived
+			fileHeader = (enumX.eContainer as LTypedPackage).documentation
+			documentation = enumX.documentation
+			for (f : enumX.literals) {
+				documentation = f.documentation
+				members += f.toEnumerationLiteral(f.name)
+			}
+			
+			doInferLog.stop(log, "Inferring enum " + enumX.name)
+		]
+	}
+
+	// used for test cases with old derived state computer
+	def dispatch void infer(LBean bean, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = bean.toJvmType;
+		type.inferFullState(bean, acceptor, isPrelinkingPhase, "bean")
+	}
+
+	def dispatch void inferTypesOnly(LBean bean, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = bean.toJvmType;
+		type.markAsToBeDerivedLater(bean, isPrelinkingPhase, "bean")
+		acceptor.accept(type);
+		
+		// pass inferring to delegates
+		inferTypesOnlyByDelegates(bean, acceptor, isPrelinkingPhase);
+	}
+
+	def dispatch void inferFullState(JvmDeclaredType type, LBean bean, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+
+		if(selector == null || !selector.equals("bean")) {
+			return
+		}
+
+		acceptor.accept(type).initializeLater [
+			
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			
+			// mark the type as derived
+			type.markAsDerived()
+			annotationCompiler.processAnnotation(bean, it);
+			fileHeader = (bean.eContainer as LTypedPackage).documentation
+			documentation = bean.getDocumentation
+			if (bean.getSuperType == null) {
+				superTypes += references.getTypeForName(typeof(Serializable), bean, null)
+			}
+			if (bean.getSuperType != null && !bean.getSuperType.fullyQualifiedName.toString.empty) {
+				superTypes += bean.superTypeJvm.cloneWithProxies
+			}
+			
+			superTypes += references.getTypeForName(typeof(IBean), bean, null)
+			
+			// 
+			// Constructor
+			//
+			members += bean.toConstructor()[]
+			if (bean.getSuperType == null) {
+				members += bean.toDiposeField()
+			}
+			//
+			// Fields
+			//
+			for (f : bean.getFeatures) {
+				switch f {
+					LAttribute: {
+						if (!f.derived && f.fullyQualifiedName != null && !f.fullyQualifiedName.toString.empty) {
+							members += f.toField
+						}
+					}
+					LReference: {
+						if (f.fullyQualifiedName != null && !f.fullyQualifiedName.toString.empty) {
+							members += f.toField
+						}
+					}
+				}
+			}
+			//
+			// Field accessors
+			//
+			if (bean.getSuperType == null) {
+				members += bean.toIsDisposed()
+			}
+			members += bean.toCheckDisposed()
+			members += bean.toDispose()
+			for (f : bean.getFeatures) {
+				switch f {
+					LAttribute: {
+						members += f.toGetter()
+						if (!f.derived) {
+							if (f.isToMany) {
+								members += f.toCollectionSetter(f.name)
+								members += f.toInternalCollectionGetter(f.getName)
+								members += f.toAdder(f.getName)
+								members += f.toRemover(f.getName)
+							} else {
+								members += f.toSetter()
+							}
+						}
+					}
+					LReference: {
+						members += f.toGetter()
+						if (f.isToMany) {
+							members += f.toCollectionSetter(f.name)
+							members += f.toInternalCollectionGetter(f.getName)
+							members += f.toAdder(f.getName)
+							members += f.toRemover(f.getName)
+							members += f.toInternalAdder
+							members += f.toInternalRemover
+						} else {
+							members += f.toSetter()
+
+							if (f.isCascading && (f as LBeanReference).getOpposite != null) {
+								members += f.toInternalSetter
+							}
+						}
+					}
+				}
+			}
+			//
+			// Methods. 
+			//    
+			for (op : bean.getOperations) {
+				members += op.toMethod(op.getName, op.getType) [
+					documentation = op.getDocumentation
+					for (p : op.getParams) {
+						parameters += p.toParameter(p.name, p.parameterType)
+					}
+					body = op.getBody
+				]
+			}
+			
+			doInferLog.stop(log, "Inferring bean " + bean.name)
+		]
+	}
+
+	// used for test cases with old derived state computer
+	def dispatch void infer(LEntity entity, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = entity.toJvmType;
+		type.inferFullState(entity, acceptor, isPrelinkingPhase, "")
+	}
+
+	def dispatch void inferTypesOnly(LEntity entity, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = entity.toJvmType;
+		type.markAsToBeDerivedLater(entity, isPrelinkingPhase, "entity")
+		acceptor.accept(type);
+		
+		// pass inferring to delegates
+		inferTypesOnlyByDelegates(entity, acceptor, isPrelinkingPhase);
+	}
+
+	def dispatch void inferFullState(JvmType type, EObject element, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+	}
+
+	def dispatch void inferFullState(JvmDeclaredType type, LEntity entity, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+
+		if(selector == null || !selector.equals("entity")) {
+			return
+		}
+
+		acceptor.accept(type).initializeLater [
+			
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			
+			type.markAsDerived
+			annotationCompiler.processAnnotation(entity, it);
+			var LAttribute idAttribute = null
+			var JvmField idField = null
+			fileHeader = (entity.eContainer as LTypedPackage).documentation
+			documentation = entity.documentation
+			if (entity.getSuperType != null && !entity.getSuperType.fullyQualifiedName.toString.empty) {
+
+				//				superTypes += references.getTypeForName(entity.getSuperType.fullyQualifiedName.toString, entity, null)
+				superTypes += entity.superTypeJvm.cloneWithProxies
+			}
+			
+			superTypes += references.getTypeForName(typeof(IEntity), entity, null)
+			
+			//
+			// Constructor
+			//
+			members += entity.toConstructor()[]
+			if (entity.getSuperType == null) {
+				members += entity.toDiposeField()
+			}
+			//
+			// Fields
+			//
+			for (f : entity.features.filter[!(it instanceof LOperation)]) {
+				switch f {
+					LAttribute: {
+						if (!f.derived && f.fullyQualifiedName != null && !f.fullyQualifiedName.toString.empty) {
+							if (f.id || f.uuid) {
+								idAttribute = f
+								idField = f.toField
+								members += idField
+							} else {
+								members += f.toField
+							}
+						}
+					}
+					LReference: {
+						if (f.fullyQualifiedName != null && !f.fullyQualifiedName.toString.empty) {
+							members += f.toField
+						}
+					}
+				}
+			}
+			//
+			// Field accessors
+			//
+			if (entity.getSuperType == null) {
+				members += entity.toIsDisposed()
+			}
+			members += entity.toCheckDisposed()
+			members += entity.toDispose()
+			for (f : entity.features) {
+				switch f {
+					LAttribute: {
+						members += f.toGetter()
+						if (!f.derived) {
+							if (f.toMany) {
+								members += f.toCollectionSetter(f.name)
+								members += f.toInternalCollectionGetter(f.name)
+								members += f.toAdder(f.name)
+								members += f.toRemover(f.name)
+							} else {
+								members += f.toSetter()
+							}
+						}
+					}
+					LReference: {
+						members += f.toGetter()
+						if (f.toMany) {
+							members += f.toCollectionSetter(f.name)
+							members += f.toInternalCollectionGetter(f.name)
+							members += f.toAdder(f.name)
+							members += f.toRemover(f.name)
+							members += f.toInternalAdder
+							members += f.toInternalRemover
+						} else {
+							members += f.toSetter()
+
+							if (f.cascading || (f as LEntityReference).opposite != null) {
+								members += f.toInternalSetter
+							}
+						}
+					}
+				}
+			}
+			
+			//
+			// Methods.
+			//
+			for (op : entity.operations) {
+				members += op.toMethod(op.name, op.type) [
+					documentation = op.documentation
+					for (p : op.params) {
+						parameters += p.toParameter(p.name, p.parameterType)
+					}
+					body = op.body
+				]
+			}
+			if (idAttribute != null) {
+				members += idAttribute.toEqualsMethod(it, false, idField)
+				members += idAttribute.toHashCodeMethod(false, idField)
+			}
+			
+			members += entity.toPreRemove
+		
+			doInferLog.stop(log, "Inferring entity " + entity.name)
+		]
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/linker/EntityJvmLinkingHelper.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/linker/EntityJvmLinkingHelper.java
new file mode 100644
index 0000000..3ac7e6e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/linker/EntityJvmLinkingHelper.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.linker;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+
+public class EntityJvmLinkingHelper extends LazyJvmTypeLinkingHelper {
+
+	public EntityJvmLinkingHelper() {
+		register(OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE,
+				OSBPEntityPackage.Literals.LENTITY__SUPER_TYPE_JVM);
+		register(OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE,
+				OSBPEntityPackage.Literals.LENTITY_REFERENCE__TYPE_JVM); 
+		register(OSBPTypesPackage.Literals.LATTRIBUTE__TYPE,
+				OSBPTypesPackage.Literals.LATTRIBUTE__TYPE_JVM);
+		register(OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE,
+				OSBPEntityPackage.Literals.LBEAN__SUPER_TYPE_JVM);
+		register(OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE,
+				OSBPEntityPackage.Literals.LBEAN_REFERENCE__TYPE_JVM);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/linker/EntityLinker.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/linker/EntityLinker.java
new file mode 100644
index 0000000..28eaec9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/linker/EntityLinker.java
@@ -0,0 +1,234 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.linker;
+
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.diagnostics.IDiagnosticConsumer;
+import org.eclipse.xtext.util.OnChangeEvictingCache;
+import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.Constants;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+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.LEntityModel;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityFactory;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
+
+import com.google.inject.Inject;
+
+public class EntityLinker extends LazyJvmTypeLinker {
+
+	@Inject
+	private OnChangeEvictingCache cache;
+
+	@Override
+	protected void doLinkModel(final EObject model, IDiagnosticConsumer consumer) {
+		super.doLinkModel(model, consumer);
+
+		cache.execWithoutCacheClear(model.eResource(),
+				new IUnitOfWork.Void<Resource>() {
+					@Override
+					public void process(Resource state) throws Exception {
+						TreeIterator<EObject> iterator = model.eAllContents();
+						while (iterator.hasNext()) {
+							EObject eObject = iterator.next();
+							if (eObject instanceof LEntity) {
+								LEntity entity = (LEntity) eObject;
+								if (entity.isHistorized()) {
+									applyHistorized(entity);
+								} else if (entity.isTimedependent()) {
+									applyTimedependent(entity);
+								}
+							}
+						}
+					}
+				});
+	}
+
+	protected void afterModelLinked(EObject model,
+			IDiagnosticConsumer diagnosticsConsumer) {
+
+		super.afterModelLinked(model, diagnosticsConsumer);
+
+		// load the super types eager to ensure sub types resolving
+		LEntityModel lModel = (LEntityModel) model;
+		for (LTypedPackage lPkg : lModel.getPackages()) {
+			for (LType lType : lPkg.getTypes()) {
+				if (lType instanceof LEntity) {
+					LEntity lEntity = (LEntity) lType;
+					lEntity.getSuperType();
+				} else if (lType instanceof LBean) {
+					LBean lBean = (LBean) lType;
+					lBean.getSuperType();
+				}
+			}
+		}
+	}
+
+	/**
+	 * Applies the synthetic attributes for historized entities.
+	 * 
+	 * @param entity
+	 */
+	protected void applyHistorized(LEntity entity) {
+
+		LTypedPackage pkg = (LTypedPackage) entity.eContainer();
+
+		LEntityAttribute ooid = OSBPEntityFactory.eINSTANCE
+				.createLEntityAttribute();
+		ooid.setName(Constants.PROP__OID);
+		ooid.setType(findInternalOID(entity, pkg));
+		entity.getFeatures().add(ooid);
+
+		LEntityAttribute version = OSBPEntityFactory.eINSTANCE
+				.createLEntityAttribute();
+		version.setName(Constants.PROP__VERSION);
+		version.setType(findInternalDatatype(entity, pkg,
+				Constants.DT_INTERNAL_OBJECT_VERSION));
+		entity.getFeatures().add(version);
+
+		LEntityAttribute current = OSBPEntityFactory.eINSTANCE
+				.createLEntityAttribute();
+		current.setName(Constants.PROP__ISCURRENT);
+		current.setType(findInternalDatatype(entity, pkg,
+				Constants.DT_INTERNAL_IS_CURRENT_VERSION));
+		entity.getFeatures().add(current);
+	}
+
+	/**
+	 * Applies the synthetic attributes for historized entities.
+	 * 
+	 * @param entity
+	 */
+	protected void applyTimedependent(LEntity entity) {
+
+		LTypedPackage pkg = (LTypedPackage) entity.eContainer();
+
+		LEntityAttribute ooid = OSBPEntityFactory.eINSTANCE
+				.createLEntityAttribute();
+		ooid.setName(Constants.PROP__OID);
+		ooid.setType(findInternalOID(entity, pkg));
+		entity.getFeatures().add(ooid);
+
+		LEntityAttribute validFrom = OSBPEntityFactory.eINSTANCE
+				.createLEntityAttribute();
+		validFrom.setName(Constants.PROP__VALID_FROM);
+		validFrom.setType(findInternalValidDate(entity, pkg,
+				Constants.DT_INTERNAL_VALID_FROM));
+		entity.getFeatures().add(validFrom);
+
+		LEntityAttribute validUntil = OSBPEntityFactory.eINSTANCE
+				.createLEntityAttribute();
+		validUntil.setName(Constants.PROP__VALID_UNTIL);
+		validUntil.setType(findInternalValidDate(entity, pkg,
+				Constants.DT_INTERNAL_VALID_UNTIL));
+		entity.getFeatures().add(validUntil);
+	}
+
+	/**
+	 * Tries to find the datatype to be used for valid from and valid until.
+	 * 
+	 * @param entity
+	 * @param pkg
+	 * @return
+	 */
+	private LDataType findInternalValidDate(LEntity entity, LTypedPackage pkg,
+			String dtName) {
+		LDataType datatype = null;
+		for (LType type : pkg.getTypes()) {
+			if (type instanceof LDataType) {
+				LDataType temp = (LDataType) type;
+				if (temp.getName().equals(dtName)) {
+					datatype = temp;
+					break;
+				}
+			}
+		}
+
+		if (datatype == null) {
+			datatype = OSBPTypesFactory.eINSTANCE.createLDataType();
+			datatype.setName(dtName);
+			datatype.setDate(true);
+			datatype.setDateType(entity.getTimedependentDateType());
+			pkg.getTypes().add(datatype);
+		}
+		return datatype;
+	}
+
+	/**
+	 * Tries to find the datatype to be used for valid from and valid until.
+	 * 
+	 * @param entity
+	 * @param pkg
+	 * @return
+	 */
+	private LScalarType findInternalOID(LEntity entity, LTypedPackage pkg) {
+		LDataType datatype = null;
+		for (LType type : pkg.getTypes()) {
+			if (!type.eIsProxy() && type instanceof LDataType) {
+				LDataType temp = (LDataType) type;
+				if (temp.getName().equals(Constants.DT_INTERNAL_OBJECT_ID)) {
+					datatype = temp;
+					break;
+				}
+			}
+		}
+
+		if (datatype == null) {
+			datatype = OSBPTypesFactory.eINSTANCE.createLDataType();
+			datatype.setName(Constants.DT_INTERNAL_OBJECT_ID);
+			datatype.setSyntheticFlag(true);
+			datatype.setSyntheticSelector(Constants.DT_INTERNAL_OBJECT_ID);
+			// will be resolved later to avoid entity.super calls. Entity.super
+			// would resolve cross references too early.
+			datatype.setSyntheticType(entity);
+			pkg.getTypes().add(datatype);
+		}
+		return datatype;
+	}
+
+	/**
+	 * Tries to find the datatype to be used for valid from and valid until.
+	 * 
+	 * @param entity
+	 * @param pkg
+	 * @return
+	 */
+	private LDataType findInternalDatatype(LEntity entity, LTypedPackage pkg,
+			String syntheticType) {
+		LDataType datatype = null;
+		for (LType type : pkg.getTypes()) {
+			if (type instanceof LDataType) {
+				LDataType temp = (LDataType) type;
+				if (temp.getName().equals(syntheticType)) {
+					datatype = temp;
+					break;
+				}
+			}
+		}
+
+		if (datatype == null) {
+			datatype = OSBPTypesFactory.eINSTANCE.createLDataType();
+			datatype.setName(syntheticType);
+			datatype.setSyntheticFlag(true);
+			datatype.setSyntheticSelector(syntheticType);
+			pkg.getTypes().add(datatype);
+		}
+		return datatype;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/BeanRefOppositeScope.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/BeanRefOppositeScope.java
new file mode 100644
index 0000000..a7713d5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/BeanRefOppositeScope.java
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+public class BeanRefOppositeScope extends AbstractScope {
+	private final LBeanReference prop;
+
+	public BeanRefOppositeScope(LBeanReference prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		if (prop.getType() != null && prop.getType() instanceof LClass) {
+			LBean propClass = prop.getBean();
+			// type can be bean or entity
+			LType type = prop.getType();
+			if (type instanceof LBean) {
+				LBean bean = (LBean) type;
+				for (LBeanReference oppositeProp : bean.getReferences()) {
+					if (oppositeProp.getType() == propClass) {
+						String name = oppositeProp.getName();
+						if (name != null) {
+							result.add(new EObjectDescription(QualifiedName
+									.create(name), oppositeProp, null));
+						}
+					}
+				}
+			} else if (type instanceof LEntity) {
+				LEntity entity = (LEntity) type;
+				for (LEntityAttribute oppositeProp : entity.getAttributes()) {
+					if (oppositeProp.getType() == propClass) {
+						String name = oppositeProp.getName();
+						if (name != null) {
+							result.add(new EObjectDescription(QualifiedName
+									.create(name), oppositeProp, null));
+						}
+					}
+				}
+			}
+		}
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/DatatypesScope.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/DatatypesScope.java
new file mode 100644
index 0000000..a6d8531
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/DatatypesScope.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.AbstractScope;
+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.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+
+public class DatatypesScope extends AbstractScope {
+
+	// private final IScope parent;
+	private final LAttribute context;
+	@SuppressWarnings("unused")
+	private final EReference reference;
+
+	public DatatypesScope(IScope parent, final LAttribute context,
+			EReference reference) {
+		super(parent, false);
+		// this.parent = parent;
+		this.context = context;
+		this.reference = reference;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		// Resource resource = context.eResource();
+		List<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+
+		LTypedPackage lPkg = getPackage(context);
+
+		for (LType lType : lPkg.getTypes()) {
+			if (lType instanceof LDataType) {
+				result.add(EObjectDescription.create(lType.getName(), lType));
+			}
+		}
+
+		return result;
+	}
+
+	private LTypedPackage getPackage(EObject context) {
+		if (context instanceof LTypedPackage) {
+			return (LTypedPackage) context;
+		}
+
+		return getPackage(context.eContainer());
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityAttOppositeScope.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityAttOppositeScope.java
new file mode 100644
index 0000000..8cd42d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityAttOppositeScope.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+
+public class EntityAttOppositeScope extends AbstractScope {
+	private final LEntityAttribute prop;
+
+	public EntityAttOppositeScope(LEntityAttribute prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		if (prop.getType() != null) {
+			LEntity propClass = prop.getEntity();
+			LScalarType type = prop.getType();
+			if (type instanceof LBean) {
+				LBean bean = (LBean) type;
+				for (LBeanReference oppositeProp : bean.getReferences()) {
+					if (oppositeProp.getType() == propClass) {
+						String name = oppositeProp.getName();
+						if (name != null) {
+							result.add(new EObjectDescription(QualifiedName
+									.create(name), oppositeProp, null));
+						}
+					}
+				}
+			}
+		}
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityBatchScopeProvider.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityBatchScopeProvider.java
new file mode 100644
index 0000000..9c4d85d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityBatchScopeProvider.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonBatchScopeProvider;
+import org.eclipse.osbp.dsl.common.xtext.scope.ConstraintEnumMatchingLiteralScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * 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 EntityBatchScopeProvider extends CommonBatchScopeProvider {
+	@Override
+	public IScope getScope(final EObject context, EReference reference) {
+		if (reference == OSBPEntityPackage.Literals.LENTITY_REFERENCE__OPPOSITE) {
+			return new EntityRefOppositeScope((LEntityReference) context);
+		} else if (reference == OSBPEntityPackage.Literals.LENTITY_ATTRIBUTE__OPPOSITE) {
+			return new EntityAttOppositeScope((LEntityAttribute) context);
+		} else if (reference == OSBPEntityPackage.Literals.LBEAN_REFERENCE__OPPOSITE) {
+			return new BeanRefOppositeScope((LBeanReference) context);
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE) {
+			return new DatatypesScope(super.getScope(context, reference),
+					(LAttribute) context, reference);
+		} else if (reference == OSBPEntityPackage.Literals.LINDEX__FEATURES) {
+			return new IndexScope((LIndex) context);
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE) {
+			if (context instanceof LResultFilters) {
+				return new EntityConstraintAttributeScope(
+						(LReference) context.eContainer());
+			} else {
+				return new EntityConstraintAttributeScope((LReference) context
+						.eContainer().eContainer());
+			}
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL) {
+			return new ConstraintEnumMatchingLiteralScope(
+					(LAttributeMatchingConstraint) context);
+		}
+		return super.getScope(context, reference);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityConstraintAttributeScope.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityConstraintAttributeScope.java
new file mode 100644
index 0000000..712df6e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityConstraintAttributeScope.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+public class EntityConstraintAttributeScope extends AbstractScope {
+	private final LReference prop;
+
+	public EntityConstraintAttributeScope(LReference reference) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = reference;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		if (getType() != null && getType() instanceof LClass) {
+			LType propClass = getType();
+			if (propClass instanceof LBean) {
+				LBean bean = (LBean) propClass;
+				for (LBeanAttribute property : bean.getAllAttributes()) {
+					String name = property.getName();
+					if (name != null) {
+						result.add(new EObjectDescription(QualifiedName
+								.create(name), property, null));
+					}
+				}
+			} else if (propClass instanceof LEntity) {
+				LEntity entity = (LEntity) propClass;
+				for (LEntityAttribute property : entity.getAllAttributes()) {
+					String name = property.getName();
+					if (name != null) {
+						result.add(new EObjectDescription(QualifiedName
+								.create(name), property, null));
+					}
+				}
+			}
+		}
+		return result;
+	}
+
+	private LType getType() {
+		if (prop instanceof LBeanReference) {
+			return ((LBeanReference) prop).getType();
+		} else if (prop instanceof LEntityReference) {
+			return ((LEntityReference) prop).getType();
+		}
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityImportedNamespaceAwareLocalScopeProvider.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityImportedNamespaceAwareLocalScopeProvider.java
new file mode 100644
index 0000000..23352dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityImportedNamespaceAwareLocalScopeProvider.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.List;
+
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.scoping.impl.ImportNormalizer;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonImportedNamespaceAwareLocalScopeProvider;
+
+import com.google.inject.Inject;
+
+public class EntityImportedNamespaceAwareLocalScopeProvider extends
+		CommonImportedNamespaceAwareLocalScopeProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Override
+	protected List<ImportNormalizer> getImplicitImports(boolean ignoreCase) {
+		List<ImportNormalizer> temp = super.getImplicitImports(ignoreCase);
+		temp.add(new ImportNormalizer(qualifiedNameConverter
+				.toQualifiedName("java.beans"), true, ignoreCase));
+		temp.add(new ImportNormalizer(qualifiedNameConverter
+				.toQualifiedName("org.eclipse.osbp.dsl.common.datatypes"), true,
+				ignoreCase));
+
+		return temp;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityRefOppositeScope.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityRefOppositeScope.java
new file mode 100644
index 0000000..5f1bbe9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityRefOppositeScope.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+public class EntityRefOppositeScope extends AbstractScope {
+	private final LEntityReference prop;
+
+	public EntityRefOppositeScope(LEntityReference prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		if (prop.getType() != null) {
+			LEntity propClass = prop.getEntity();
+			LEntity type = prop.getType();
+			for (LEntityReference oppositeProp : type.getReferences()) {
+				if (oppositeProp.getType() == propClass) {
+					String name = oppositeProp.getName();
+					if (name != null) {
+						result.add(new EObjectDescription(
+								QualifiedName.create(name),
+								oppositeProp, null));
+					}
+				}
+			}
+		}
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityScopeProvider.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityScopeProvider.java
new file mode 100644
index 0000000..1d9ce38
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/EntityScopeProvider.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonScopeProvider;
+import org.eclipse.osbp.dsl.common.xtext.scope.ConstraintEnumMatchingLiteralScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+
+/**
+ * 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 EntityScopeProvider extends CommonScopeProvider {
+	@Override
+	public IScope getScope(final EObject context, EReference reference) {
+		if (reference == OSBPEntityPackage.Literals.LENTITY_REFERENCE__OPPOSITE) {
+			return new EntityRefOppositeScope((LEntityReference) context);
+		} else if (reference == OSBPEntityPackage.Literals.LENTITY_ATTRIBUTE__OPPOSITE) {
+			return new EntityAttOppositeScope((LEntityAttribute) context);
+		} else if (reference == OSBPEntityPackage.Literals.LBEAN_REFERENCE__OPPOSITE) {
+			return new BeanRefOppositeScope((LBeanReference) context);
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE) {
+			return new DatatypesScope(super.getScope(context, reference),
+					(LAttribute) context, reference);
+		} else if (reference == OSBPEntityPackage.Literals.LINDEX__FEATURES) {
+			return new IndexScope((LIndex) context);
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__ATTRIBUTE) {
+			if (context instanceof LResultFilters) {
+				return new EntityConstraintAttributeScope(
+						(LReference) context.eContainer());
+			} else {
+				return new EntityConstraintAttributeScope((LReference) context
+						.eContainer().eContainer());
+			}
+		} else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE_MATCHING_CONSTRAINT__MATCHING_LITERAL) {
+			return new ConstraintEnumMatchingLiteralScope(
+					(LAttributeMatchingConstraint) context);
+		}
+		return super.getScope(context, reference);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/IndexScope.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/IndexScope.java
new file mode 100644
index 0000000..53ce3cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/scope/IndexScope.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.scope;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+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.dsl.semantic.entity.LIndex;
+
+public class IndexScope extends AbstractScope {
+
+	private final LEntity lEntity;
+
+	public IndexScope(final LIndex lIndex) {
+		super(IScope.NULLSCOPE, true);
+		this.lEntity = (LEntity) lIndex.eContainer();
+	}
+
+	@SuppressWarnings("restriction")
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ModelExtensions ext = new ModelExtensions();
+		List<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		for (LEntityFeature feature : lEntity.getAllFeatures()) {
+			if (ext.isToMany(feature) || feature.getName() == null) {
+				continue;
+			}
+			if (feature instanceof LEntityAttribute) {
+				LEntityAttribute attribute = (LEntityAttribute) feature;
+				if (attribute.getType() instanceof LDataType) {
+					if (ext.isPrimitive((LDataType) attribute.getType())) {
+						result.add(new EObjectDescription(QualifiedName
+								.create(feature.getName()), feature, null));
+					} else if(ext.isString((LDataType) attribute.getType())){
+						result.add(new EObjectDescription(QualifiedName
+								.create(feature.getName()), feature, null));
+					} else if(ext.isDate((LDataType) attribute.getType())){
+						result.add(new EObjectDescription(QualifiedName
+								.create(feature.getName()), feature, null));
+					}
+				}
+			} else if (feature instanceof LEntityReference) {
+				result.add(new EObjectDescription(QualifiedName.create(feature
+						.getName()), feature, null));
+			}
+		}
+
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarSemanticSequencer.java
new file mode 100644
index 0000000..e953d11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarSemanticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+public class EntityGrammarSemanticSequencer extends AbstractEntityGrammarSemanticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..bf2dd75
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarSyntacticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+public class EntityGrammarSyntacticSequencer extends AbstractEntityGrammarSyntacticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarTransientValueService.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarTransientValueService.java
new file mode 100644
index 0000000..eed80b9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntityGrammarTransientValueService.java
@@ -0,0 +1,37 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+
+@SuppressWarnings("restriction")
+public class EntityGrammarTransientValueService extends
+LazyJvmTypeTransientValueService {
+
+	@Override
+	public ListTransient isListTransient(EObject semanticObject,
+			EStructuralFeature feature) {
+
+		if (feature == OSBPEntityPackage.Literals.LBEAN__SUB_TYPES
+				|| feature == OSBPEntityPackage.Literals.LENTITY__SUB_TYPES) {
+			return ListTransient.YES;
+		}
+
+		return super.isListTransient(semanticObject, feature);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntitySemanticSequencer.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntitySemanticSequencer.java
new file mode 100644
index 0000000..542e63e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntitySemanticSequencer.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+public class EntitySemanticSequencer extends
+		AbstractEntityGrammarSemanticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntitySyntacticSequencer.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntitySyntacticSequencer.java
new file mode 100644
index 0000000..cbdd64e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/serializer/EntitySyntacticSequencer.java
@@ -0,0 +1,15 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.serializer;
+
+public class EntitySyntacticSequencer extends
+		AbstractEntityGrammarSyntacticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/util/PersistenceNamingUtils.xtend b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/util/PersistenceNamingUtils.xtend
new file mode 100644
index 0000000..b971e37
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/util/PersistenceNamingUtils.xtend
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.entity.xtext.util
+
+class PersistenceNamingUtils {
+
+	/**
+	 * Converts the given <code>String</code>, that contains camel-case
+	 * characters, to uppercase, thereby inserting underline ("_") characters
+	 * before uppercase characters. <br>
+	 * E.g.: "camelCaseToUpperCase" -&gt; "CAMEL_CASE_TO_UPPER_CASE".
+	 * 
+	 * @param pCamelCaseString
+	 *            The <code>String</code> to convert.
+	 * @return The converted <code>String</code>.
+	 */
+	def static String camelCaseToUpperCase(String pCamelCaseString) {
+		if (pCamelCaseString == null) {
+			return "";
+		}
+		if (pCamelCaseString.equals(pCamelCaseString.toUpperCase())) {
+			return pCamelCaseString; // Nothing to do.
+		}
+		val StringBuilder sb = new StringBuilder(pCamelCaseString);
+		val StringBuilder sbOut = new StringBuilder(pCamelCaseString);
+		val maxIndex = sb.length - 1;
+		var offset = 0;
+		for (i : 1 .. (sb.length() - 1)) {
+			try {
+				if (i < maxIndex && sb.charAt(i - 1) != '_' && Character.isUpperCase(sb.charAt(i)) &&
+					!Character.isUpperCase(sb.charAt(i + 1))) {
+					sbOut.insert(i + offset, '_');
+					offset = offset + 1;
+				}
+			} catch (Exception ex) {
+				println(ex)
+			}
+		}
+		return sbOut.toString().toUpperCase();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/validation/EntityGrammarJavaValidator.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/validation/EntityGrammarJavaValidator.java
new file mode 100644
index 0000000..b2eae0c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/validation/EntityGrammarJavaValidator.java
@@ -0,0 +1,815 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.validation;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.persistence.Persistence;
+import javax.persistence.PostPersist;
+import javax.persistence.PostRemove;
+import javax.persistence.PostUpdate;
+import javax.persistence.PrePersist;
+import javax.persistence.PreRemove;
+import javax.persistence.PreUpdate;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.helper.Bounds;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+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.LReference;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LDiscriminatorType;
+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.LEntityInheritanceStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityModel;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+import org.eclipse.osbp.dsl.semantic.entity.LIndex;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerClassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.LTablePerSubclassStrategy;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.xtext.common.types.JvmAnnotationReference;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.JvmOperation;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.common.types.util.TypeReferences;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.resource.IContainer;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.validation.CheckType;
+import org.eclipse.xtext.validation.NamesAreUniqueValidator;
+import org.eclipse.xtext.validation.ValidationMessageAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
+import org.eclipse.xtext.xbase.lib.Extension;
+
+import com.google.inject.Inject;
+
+/**
+ * Custom validation rules.
+ * 
+ * see http://www.eclipse.org/Xtext/documentation.html#validation
+ */
+@SuppressWarnings("restriction")
+public class EntityGrammarJavaValidator extends
+		AbstractEntityGrammarJavaValidator {
+
+	public static final String CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE = "104";
+	public static final String CODE__INHERITANCE_PROPERTY_IGNORED = "105";
+	public static final String CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE = "106";
+	public static final String CODE__DUPLICATE_PERSISTENCE = "106";
+	public static final String CODE__DUPLICATE_ID = "107";
+	public static final String CODE__DUPLICATE_VERSION = "108";
+	public static final String CODE__MISSING_ID = "109";
+	public static final String CODE__DUPLICATE_PROPERTY_NAME = "110";
+	public static final String CODE__MISSING_OPPOSITE_REFERENCE = "111";
+	public static final String CODE__BIDIRECTIONAL_CASCADE_INVALID = "112";
+	public static final String CODE__CASCADE_DIRECTION_INVALID = "113";
+	public static final String CODE__UUID_WRONG_TYPE = "114";
+	public static final String CODE__OPPOSITE_WITHOUT_CASCADE = "115";
+	public static final String CODE__MISSING_ID_FOR_VERSIONED = "116";
+	public static final String CODE__HISTORIZED_IN_SUBCLASS = "117";
+	public static final String CODE__TIMEDEPENDENT_IN_SUBCLASS = "118";
+	private static final String CODE__DUPLICATE_DOMAIN_KEY = "119";
+	private static final String CODE__DUPLICATE_DOMAIN_DESCRIPTION = "120";
+	private static final String CODE__DOMAIN_KEY__NO_MANY = "121";
+	private static final String CODE__DOMAIN_DESCRIPTION__NO_MANY = "122";
+	private static final String CODE__DOMAIN_KEY__TYPE = "123";
+	private static final String CODE__DOMAIN_DESCRIPTION__TYPE = "124";
+	private static final String CODE__BEAN_TO_ENTITY__NO_MANY_RELATION_SUPPORTED = "125";
+	private static final String CODE__BEAN_TO_ENTITY__NO_OPPOSITE_RELATION_SUPPORTED = "126";
+	private static final String CODE__ENTITY_TO_BEAN__NO_OPPOSITE_RELATION_SUPPORTED = "127";
+	private static final String CODE__DUPLICATE__PERSISTENCE_ANNOTATION = "128";
+
+	@Inject
+	private IQualifiedNameProvider qnp;
+	@Inject
+	private ModelExtensions extensions;
+	@Inject
+	private NamesAreUniqueValidator uniqueValidator;
+	@Inject
+	private IContainer.Manager containermanager;
+	@Inject
+	private ResourceDescriptionsProvider resourceDescriptionsProvider;
+	@Inject
+	private IJvmModelAssociations modelAssociations;
+
+	@Check
+	public void checkDatatype_asPrimitive(LDataType dt) {
+		super.checkDatatype_asPrimitive(dt);
+	}
+
+	@Check
+	public void checkJPA_MultiHasOppositeReference(LEntityReference prop) {
+		if (extensions.isToMany(prop) && prop.getOpposite() == null) {
+			error("A 'to-many' association needs an opposite reference.",
+					OSBPEntityPackage.Literals.LENTITY_REFERENCE__OPPOSITE,
+					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+					CODE__MISSING_OPPOSITE_REFERENCE, (String[]) null);
+		}
+	}
+
+	@Check
+	public void checkBean_MultiHasOppositeReference(LBeanReference prop) {
+		// if (prop.getType() instanceof LBean) {
+		// if (extensions.isToMany(prop) && prop.getOpposite() == null) {
+		// error("A bidirectional association needs an opposite reference.",
+		// OSBPEntityPackage.Literals.LBEAN_REFERENCE__OPPOSITE,
+		// ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+		// CODE__MISSING_OPPOSITE_REFERENCE, (String[]) null);
+		// }
+		// } else
+		if (prop.getType() instanceof LEntity) {
+			if (extensions.isToMany(prop)) {
+				error("To-Many-Relations are not supported for bean->entity references.",
+						OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__BEAN_TO_ENTITY__NO_MANY_RELATION_SUPPORTED,
+						(String[]) null);
+			}
+			if (prop.getOpposite() != null) {
+				error("Opposite-Relations are not supported for bean->entity references.",
+						OSBPEntityPackage.Literals.LBEAN_REFERENCE__OPPOSITE,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__BEAN_TO_ENTITY__NO_OPPOSITE_RELATION_SUPPORTED,
+						(String[]) null);
+			}
+		}
+	}
+
+	@Check
+	public void checkEntity_MultiHasOppositeReference(LEntityAttribute prop) {
+		if (prop.getType() instanceof LBean) {
+			if (prop.getOpposite() != null) {
+				error("Opposite-Relations are not supported for embeddables.",
+						OSBPEntityPackage.Literals.LENTITY_ATTRIBUTE__OPPOSITE,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__ENTITY_TO_BEAN__NO_OPPOSITE_RELATION_SUPPORTED,
+						(String[]) null);
+			}
+		}
+	}
+
+	@Check
+	public void checkJPA_OppositeNotAlsoCascading(LEntityReference prop) {
+		if (prop.getOpposite() != null) {
+			if (prop.isCascading() && prop.getOpposite().isCascading()) {
+				error("Only one opposite may be specified as cascade",
+						OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+						CODE__BIDIRECTIONAL_CASCADE_INVALID, (String[]) null);
+			}
+
+			if (extensions.isToMany(prop.getOpposite())) {
+				if (prop.isCascading()) {
+					error("Cascade must not affect the common parent in a many-to-one relation",
+							prop,
+							OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+							CODE__CASCADE_DIRECTION_INVALID, new String[0]);
+				}
+			}
+		}
+	}
+
+	@Check
+	public void checkJPA_Opposite_OneIsCascading(LEntityReference prop) {
+		Bounds propBound = extensions.getBounds(prop);
+		Bounds oppositeBound = extensions.getBounds(prop.getOpposite());
+
+		if (propBound.isToMany() || oppositeBound.isToMany()) {
+			// no check required!
+			return;
+		}
+
+		if (prop.getOpposite() != null) {
+			if (!prop.isCascading() && !prop.getOpposite().isCascading()) {
+				error("Opposite references may only defined for cascading relations.",
+						prop, OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+						CODE__OPPOSITE_WITHOUT_CASCADE, new String[0]);
+			}
+		}
+	}
+
+	@Check
+	public void checkBean_OppositeNotAlsoCascading(LBeanReference prop) {
+		if (prop.getType() instanceof LBean) {
+			if (prop.getOpposite() != null) {
+				if (prop.isCascading() && isCascading(prop)) {
+					error("Only one opposite may be specified as cascade",
+							OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+							CODE__BIDIRECTIONAL_CASCADE_INVALID,
+							(String[]) null);
+				}
+
+				if (extensions.isToMany(prop.getOpposite())) {
+					if (prop.isCascading()) {
+						error("Cascade must not affect the common parent in a many-to-one relation",
+								prop,
+								OSBPTypesPackage.Literals.LREFERENCE__CASCADING,
+								CODE__CASCADE_DIRECTION_INVALID, new String[0]);
+					}
+				}
+			}
+		}
+	}
+
+	protected boolean isCascading(LBeanReference prop) {
+		LFeature opposite = prop.getOpposite();
+		if (opposite instanceof LReference) {
+			return ((LReference) opposite).isCascading();
+		} else {
+			return false;
+		}
+	}
+
+	@Check
+	public void checkProperties_JavaKeyWord(LFeature lprop) {
+		super.checkProperties_JavaKeyWord(lprop);
+	}
+
+	@Check
+	public void checkDuplicatePackages_InFile(LEntityModel lmodel) {
+		Set<String> names = new HashSet<String>();
+		int counter = -1;
+		for (LPackage pkg : lmodel.getPackages()) {
+			counter++;
+			String pkgName = qnp.getFullyQualifiedName(pkg).toString();
+			if (names.contains(pkgName)) {
+				error(String.format("Package %s must not be defined twice!",
+						pkgName),
+						OSBPEntityPackage.Literals.LENTITY_MODEL__PACKAGES,
+						counter, CODE__DUPLICATE_LPACKAGE_IN_FILE,
+						(String[]) null);
+			}
+			names.add(pkgName);
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicateType_InProject(LType type) {
+		if (type instanceof LDataType) {
+			return;
+		}
+		super.checkDuplicateType_InProject(type);
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicateDatatypeInPackage(LTypedPackage pkg) {
+		super.checkDuplicateDatatypeInPackage(pkg);
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicatePackage_InProject(LPackage lPackage) {
+		super.checkDuplicatePackage_InProject(lPackage);
+	}
+
+	@Check
+	public void checkBeanManyToMany(LBeanReference prop) {
+		ModelExtensions extension = new ModelExtensions();
+		if (prop.getOpposite() != null && extension.isToMany(prop)
+				&& extension.isToMany(prop.getOpposite())) {
+			error(String.format("ManyToMany relations are not permitted!", qnp
+					.getFullyQualifiedName(prop).toString()),
+					OSBPEntityPackage.Literals.LBEAN_REFERENCE__OPPOSITE,
+					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+					CODE__MANY_TO_MANY__NOT_SUPPORTED, (String[]) null);
+		}
+	}
+
+	@Check
+	public void checkManyToMany(LEntityReference prop) {
+		ModelExtensions extension = new ModelExtensions();
+		if (prop.getOpposite() != null && extension.isToMany(prop)
+				&& extension.isToMany(prop.getOpposite())) {
+			error(String.format("ManyToMany relations are not permitted!", qnp
+					.getFullyQualifiedName(prop).toString()),
+					OSBPEntityPackage.Literals.LENTITY_REFERENCE__OPPOSITE,
+					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+					CODE__MANY_TO_MANY__NOT_SUPPORTED, (String[]) null);
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_ConsistentInheritanceStrategy(LEntity entity) {
+		// no checks required - inheritance is inherited
+		if (entity.getInheritanceStrategy() == null) {
+			return;
+		}
+
+		LEntityInheritanceStrategy differingSuperStgy = searchDifferingSuperStrategy(
+				entity.getInheritanceStrategy(), entity);
+		if (differingSuperStgy != null) {
+			LEntity superType = (LEntity) differingSuperStgy.eContainer();
+			warning(String.format(
+					"The supertype %s uses the inheritance strategy %s. The inheritance of this entity is ignored!",
+					qnp.getFullyQualifiedName(superType).toString(),
+					getStrategyName(differingSuperStgy)),
+					OSBPEntityPackage.Literals.LENTITY__INHERITANCE_STRATEGY,
+					ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+					CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE, (String[]) null);
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_Features(LEntityAttribute prop) {
+		if (prop.isUuid()) {
+			boolean typeOK = false;
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (typename.equals("java.lang.String")) {
+					typeOK = true;
+				}
+			}
+
+			if (!typeOK) {
+				error("UUIDs must be of type String.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__UUID,
+						CODE__UUID_WRONG_TYPE, new String[0]);
+			}
+		}
+
+		if (prop.isDomainKey()) {
+			if (extensions.isToMany(prop)) {
+				error("DomainKey is not valid for one to many relations.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+						CODE__DOMAIN_KEY__NO_MANY, new String[0]);
+			}
+
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (!typename.equals("java.lang.String")) {
+					error("DomainKey must be of type String.",
+							OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_KEY,
+							CODE__DOMAIN_KEY__TYPE, new String[0]);
+				}
+			}
+		}
+
+		if (prop.isDomainDescription()) {
+			if (extensions.isToMany(prop)) {
+				error("DomainDescription is not valid for one to many relations.",
+						OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+						CODE__DOMAIN_DESCRIPTION__NO_MANY, new String[0]);
+			}
+
+			if (prop.getType() instanceof LDataType) {
+				LDataType type = (LDataType) prop.getType();
+				String typename = type.getJvmTypeReference().getQualifiedName();
+				if (!typename.equals("java.lang.String")) {
+					error("DomainDescription must be of type String.",
+							OSBPTypesPackage.Literals.LATTRIBUTE__DOMAIN_DESCRIPTION,
+							CODE__DOMAIN_DESCRIPTION__TYPE, new String[0]);
+				}
+			}
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_Historized(LEntity entity) {
+		if (entity.isHistorized()) {
+			if (entity.getSuperType() != null
+					&& !entity.getSuperType().isMappedSuperclass()) {
+				error("Keyword historized may only be used in toplevel entities of inheritance hierarchy",
+						OSBPEntityPackage.Literals.LENTITY__HISTORIZED,
+						CODE__HISTORIZED_IN_SUBCLASS, new String[0]);
+			}
+		}
+
+		if (entity.isTimedependent()) {
+			if (entity.getSuperType() != null
+					&& !entity.getSuperType().isMappedSuperclass()) {
+				error("Keyword timedependent may only be used in toplevel entities of inheritance hierarchy",
+						OSBPEntityPackage.Literals.LENTITY__TIMEDEPENDENT,
+						CODE__TIMEDEPENDENT_IN_SUBCLASS, new String[0]);
+			}
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkIndex_Features(LIndex index) {
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkEntity_Index(LEntity entity) {
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_Features(LEntity entity) {
+
+		int idCounter = 0;
+		int versionCounter = 0;
+		int domainKeyCounter = 0;
+		int domainDescriptionCounter = 0;
+		Map<String, Integer> attNames = new HashMap<String, Integer>();
+		for (LEntityFeature feature : entity.getAllFeatures()) {
+			if (feature instanceof LEntityAttribute) {
+				LEntityAttribute att = (LEntityAttribute) feature;
+				if (att.isId() || att.isUuid()) {
+					idCounter++;
+				}
+				if (att.isVersion()) {
+					versionCounter++;
+				}
+				if (att.isDomainKey()) {
+					domainKeyCounter++;
+				}
+				if (att.isDomainDescription()) {
+					domainDescriptionCounter++;
+				}
+			}
+
+			if (!attNames.containsKey(feature.getName())) {
+				attNames.put(feature.getName(), 1);
+			} else {
+				int value = attNames.get(feature.getName());
+				attNames.put(feature.getName(), ++value);
+			}
+		}
+
+		if (idCounter == 0
+				&& (entity.isHistorized() || entity.isTimedependent())) {
+			error("An historized or timedependent entity must have an ID property",
+					OSBPEntityPackage.Literals.LENTITY__FEATURES,
+					CODE__MISSING_ID_FOR_VERSIONED);
+		} else
+
+		if (idCounter == 0) {
+			warning("An entity should have an ID property",
+					OSBPEntityPackage.Literals.LENTITY__FEATURES,
+					CODE__MISSING_ID);
+		} else if (idCounter > 1) {
+			int i = 0;
+			for (LEntityFeature feature : entity.getFeatures()) {
+				if (feature instanceof LEntityAttribute) {
+					if (((LEntityAttribute) feature).isId()
+							|| ((LEntityAttribute) feature).isUuid()) {
+						error("An entity must only have one ID property.",
+								OSBPEntityPackage.Literals.LENTITY__FEATURES,
+								i, CODE__DUPLICATE_ID, new String[0]);
+						break;
+					}
+				}
+
+				i++;
+			}
+		}
+		if (versionCounter > 1) {
+			int i = 0;
+			for (LEntityFeature feature : entity.getFeatures()) {
+				if (feature instanceof LEntityAttribute) {
+					if (((LEntityAttribute) feature).isVersion()) {
+						error("An entity must only have one Version property.",
+								OSBPEntityPackage.Literals.LENTITY__FEATURES,
+								i, CODE__DUPLICATE_VERSION, new String[0]);
+						break;
+					}
+				}
+				i++;
+			}
+		}
+
+		if (domainKeyCounter > 1) {
+			int i = 0;
+			for (LEntityFeature feature : entity.getFeatures()) {
+				if (feature instanceof LEntityAttribute) {
+					if (((LEntityAttribute) feature).isDomainKey()) {
+						error("An entity must only have one DomainKey property.",
+								OSBPEntityPackage.Literals.LENTITY__FEATURES,
+								i, CODE__DUPLICATE_DOMAIN_KEY, new String[0]);
+						break;
+					}
+				}
+				i++;
+			}
+		}
+
+		if (domainDescriptionCounter > 1) {
+			int i = 0;
+			for (LEntityFeature feature : entity.getFeatures()) {
+				if (feature instanceof LEntityAttribute) {
+					if (((LEntityAttribute) feature).isDomainDescription()) {
+						error("An entity must only have one DomainDescription property.",
+								OSBPEntityPackage.Literals.LENTITY__FEATURES,
+								i, CODE__DUPLICATE_DOMAIN_DESCRIPTION,
+								new String[0]);
+						break;
+					}
+				}
+				i++;
+			}
+		}
+
+		for (Map.Entry<String, Integer> entry : attNames.entrySet()) {
+			if (entry.getValue() > 1) {
+				int i = 0;
+				for (LEntityFeature feature : entity.getFeatures()) {
+					if (feature.getName().equals(entry.getKey())) {
+						error(String.format(
+								"The property \"%s\" must only be defined once!",
+								feature.getName()),
+								OSBPEntityPackage.Literals.LENTITY__FEATURES,
+								i, CODE__DUPLICATE_PROPERTY_NAME, new String[0]);
+						break;
+					}
+					i++;
+				}
+			}
+		}
+	}
+
+	protected String getStrategyName(LEntityInheritanceStrategy stgy) {
+		if (LTablePerClassStrategy.class.isAssignableFrom(stgy.getClass())) {
+			return "Table-Per-Class";
+		} else {
+			return "Table-Per-Subclass";
+		}
+	}
+
+	protected LEntityInheritanceStrategy searchDifferingSuperStrategy(
+			LEntityInheritanceStrategy stgy, LEntity entity) {
+		LEntity superEntity = entity.getSuperType();
+		if (superEntity == null) {
+			return null;
+		}
+
+		LEntityInheritanceStrategy superStgy = superEntity
+				.getInheritanceStrategy();
+		if (superStgy == null) {
+			return searchDifferingSuperStrategy(stgy, superEntity);
+		}
+
+		if (!stgy.getClass().getName().equals(superStgy.getClass().getName())) {
+			return superStgy;
+		}
+
+		return searchDifferingSuperStrategy(stgy, superEntity);
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_IgnoredInheritanceStrategyProperties(LEntity entity) {
+		// no checks required - inheritance is inherited
+		LEntityInheritanceStrategy stgy = entity.getInheritanceStrategy();
+		if (stgy == null) {
+			return;
+		}
+
+		if (entity.getSuperType() != null
+				&& !extensions.checkIsMappedSuperclass(entity.getSuperType())) {
+			if (LTablePerClassStrategy.class.isAssignableFrom(stgy.getClass())) {
+				LTablePerClassStrategy castStgy = (LTablePerClassStrategy) stgy;
+				if (castStgy.getDiscriminatorColumn() != null) {
+					sendIgnoredInheritancePropertyWarning(
+							stgy,
+							OSBPEntityPackage.Literals.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_COLUMN);
+				}
+				if (castStgy.getDiscriminatorType() != LDiscriminatorType.INHERIT) {
+					sendIgnoredInheritancePropertyWarning(
+							stgy,
+							OSBPEntityPackage.Literals.LTABLE_PER_CLASS_STRATEGY__DISCRIMINATOR_TYPE);
+				}
+			} else {
+				LTablePerSubclassStrategy castStgy = (LTablePerSubclassStrategy) stgy;
+				if (castStgy.getDiscriminatorColumn() != null) {
+					sendIgnoredInheritancePropertyWarning(
+							stgy,
+							OSBPEntityPackage.Literals.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_COLUMN);
+				}
+				if (castStgy.getDiscriminatorType() != LDiscriminatorType.INHERIT) {
+					sendIgnoredInheritancePropertyWarning(
+							stgy,
+							OSBPEntityPackage.Literals.LTABLE_PER_SUBCLASS_STRATEGY__DISCRIMINATOR_TYPE);
+				}
+			}
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkJPA_InheritanceStrategy_NotUniqueDiscriminatorValue(
+			LEntity entity) {
+		if (entity.getSuperType() == null) {
+			return;
+		}
+
+		String currentValue = extensions.toDiscriminatorValue(extensions
+				.toInheritanceStrategy(entity));
+
+		// collect all super type strategies
+		List<LEntityInheritanceStrategy> stgies = extensions
+				.collectAllInheritanceStrategies(entity.getSuperType());
+
+		for (LEntityInheritanceStrategy stgy : stgies) {
+			String value = extensions.toDiscriminatorValue(stgy);
+			if (value.equals(currentValue)) {
+				error(String
+						.format("The discrimator value %s is already used by supertype!",
+								value),
+						entity,
+						OSBPEntityPackage.Literals.LENTITY__INHERITANCE_STRATEGY,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__INHERITANCE_DISCRIMINATOR_VALUE_NOT_UNIQUE,
+						(String[]) null);
+			}
+		}
+	}
+
+	@Check(CheckType.NORMAL)
+	public void checkDuplicatePersistentFQN_InProject(LEntity entity) {
+		LEntityPersistenceInfo info = entity.getPersistenceInfo();
+		if (info == null) {
+			return;
+		}
+		Map<IContainer, List<LEntityPersistenceInfo>> lTypes = getAllPersistentFQNsFor(info);
+		for (Map.Entry<IContainer, List<LEntityPersistenceInfo>> temp : lTypes
+				.entrySet())
+			if (temp.getValue().size() > 1) {
+				error(String.format("Persistence type %s is already defined!",
+						qnp.getFullyQualifiedName(info).toString()), entity,
+						OSBPEntityPackage.Literals.LENTITY__PERSISTENCE_INFO,
+						ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+						CODE__DUPLICATE_PERSISTENCE, (String[]) null);
+			}
+	}
+
+	private void sendIgnoredInheritancePropertyWarning(
+			LEntityInheritanceStrategy stgy, EAttribute att) {
+		warning("Inherited from parent entity. Will be ignored.", stgy, att,
+				ValidationMessageAcceptor.INSIGNIFICANT_INDEX,
+				CODE__DIFFERING_INHERITANCE_FROM_SUPERTYPE, (String[]) null);
+	}
+
+	public Map<IContainer, List<LEntityPersistenceInfo>> getAllPersistentFQNsFor(
+			LEntityPersistenceInfo info) {
+		Map<IContainer, List<LEntityPersistenceInfo>> allEntities = new HashMap<IContainer, List<LEntityPersistenceInfo>>();
+		IResourceDescriptions resourceDescriptions = resourceDescriptionsProvider
+				.getResourceDescriptions(info.eResource());
+		IResourceDescription resourceDescription = resourceDescriptions
+				.getResourceDescription(info.eResource().getURI());
+		List<IContainer> visiblecontainers = containermanager
+				.getVisibleContainers(resourceDescription, resourceDescriptions);
+		for (IContainer container : visiblecontainers) {
+			List<LEntityPersistenceInfo> types = new ArrayList<LEntityPersistenceInfo>();
+			allEntities.put(container, types);
+			for (IEObjectDescription eObjectDescription : container
+					.getExportedObjects(
+							OSBPEntityPackage.Literals.LENTITY_PERSISTENCE_INFO,
+							qnp.getFullyQualifiedName(info), true)) {
+				types.add((LEntityPersistenceInfo) eObjectDescription
+						.getEObjectOrProxy());
+			}
+		}
+		return allEntities;
+	}
+
+	@Check
+	public void checkClassPath(LTypedPackage entityModel) {
+		TypeReferences typeReferences = getServices().getTypeReferences();
+		final JvmGenericType listType = (JvmGenericType) typeReferences
+				.findDeclaredType(List.class, entityModel);
+		if (listType == null || listType.getTypeParameters().isEmpty()) {
+			error("Couldn't find a JDK 1.5 or higher on the project's classpath.",
+					entityModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__JDK_1_5);
+		}
+		if (typeReferences.findDeclaredType(Persistence.class, entityModel) == null) {
+			error("Couldn't find the mandatory library 'javax.persistence' 2.1.0 or higher on the project's classpath.",
+					entityModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__JAVAX_PERSISTENCE);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.runtime.common.annotations.Dispose",
+				entityModel) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.osbp.runtime.common' on the project's classpath.",
+					entityModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__L_RUNTIME_COMMON);
+		}
+		if (typeReferences.findDeclaredType(Extension.class, entityModel) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.xtext.xbase.lib' 2.7.3 or higher on the project's classpath.",
+					entityModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__XBASE_LIB);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.dsl.common.datatypes.IDatatypeConstants",
+				entityModel) == null) {
+			warning("Couldn't find the optional library 'org.eclipse.osbp.dsl.datatype.lib' on the project's classpath. This may cause resolving problems.",
+					entityModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+		if (typeReferences.findDeclaredType("javax.validation.Valid",
+				entityModel) == null) {
+			error("Couldn't find the library 'javax.validation' on the project's classpath. This may cause resolving problems.",
+					entityModel, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+	}
+
+	@Check
+	public void checkDuplicatePersistenceAnnotation(LEntityModel entityModel) {
+
+		for (JvmGenericType jvmType : EcoreUtil
+				.<JvmGenericType> getObjectsByType(entityModel.eResource()
+						.getContents(), TypesPackage.Literals.JVM_GENERIC_TYPE)) {
+
+			int prePersist = 0;
+			JvmOperation op_prePersist = null;
+			int preUpdate = 0;
+			JvmOperation op_preUpdate = null;
+			int preRemove = 0;
+			JvmOperation op_preRemove = null;
+			int postPersist = 0;
+			JvmOperation op_postPersist = null;
+			int postUpdate = 0;
+			JvmOperation op_postUpdate = null;
+			int postRemove = 0;
+			JvmOperation op_postRemove = null;
+
+			for (JvmOperation op : jvmType.getDeclaredOperations()) {
+				for (JvmAnnotationReference ann : op.getAnnotations()) {
+					String fqn = ann.getAnnotation().getIdentifier();
+					if (fqn.equals(PrePersist.class.getCanonicalName())) {
+						prePersist++;
+						op_prePersist = op;
+					} else if (fqn.equals(PreUpdate.class.getCanonicalName())) {
+						preUpdate++;
+						op_preUpdate = op;
+					} else if (fqn.equals(PreRemove.class.getCanonicalName())) {
+						preRemove++;
+						op_preRemove = op;
+					} else if (fqn.equals(PostPersist.class.getCanonicalName())) {
+						postPersist++;
+						op_postPersist = op;
+					} else if (fqn.equals(PostUpdate.class.getCanonicalName())) {
+						postUpdate++;
+						op_postUpdate = op;
+					} else if (fqn.equals(PostRemove.class.getCanonicalName())) {
+						postRemove++;
+						op_postRemove = op;
+					}
+				}
+			}
+
+			if (prePersist > 1) {
+				error("Only one @PrePersist allowed per entity.",
+						modelAssociations.getPrimarySourceElement(op_prePersist),
+						OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+						CODE__DUPLICATE__PERSISTENCE_ANNOTATION);
+			}
+			if (preUpdate > 1) {
+				error("Only one @PreUpdate allowed per entity.",
+						modelAssociations.getPrimarySourceElement(op_preUpdate),
+						OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+						CODE__DUPLICATE__PERSISTENCE_ANNOTATION);
+			}
+			if (preRemove > 1) {
+				error("Only one @PreRemove allowed per entity.",
+						modelAssociations.getPrimarySourceElement(op_preRemove),
+						OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+						CODE__DUPLICATE__PERSISTENCE_ANNOTATION);
+			}
+			if (postPersist > 1) {
+				error("Only one @PostPersist allowed per entity.",
+						modelAssociations.getPrimarySourceElement(op_postPersist),
+						OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+						CODE__DUPLICATE__PERSISTENCE_ANNOTATION);
+			}
+			if (postUpdate > 1) {
+				error("Only one @PostUpdate allowed per entity.",
+						modelAssociations.getPrimarySourceElement(op_postUpdate),
+						OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+						CODE__DUPLICATE__PERSISTENCE_ANNOTATION);
+			}
+			if (postRemove > 1) {
+				error("Only one @PostRemove allowed per entity.",
+						modelAssociations.getPrimarySourceElement(op_postRemove),
+						OSBPTypesPackage.Literals.LANNOTATION_TARGET__ANNOTATIONS,
+						CODE__DUPLICATE__PERSISTENCE_ANNOTATION);
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/valueconverter/EntityQualifiedNameProvider.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/valueconverter/EntityQualifiedNameProvider.java
new file mode 100644
index 0000000..074dc81
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/valueconverter/EntityQualifiedNameProvider.java
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonQualifiedNameProvider;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.entity.xtext.extensions.NamingExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityColumnPersistenceInfo;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityPersistenceInfo;
+
+import com.google.inject.Inject;
+
+public class EntityQualifiedNameProvider extends CommonQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+	@Inject
+	private ModelExtensions extensions;
+	@Inject
+	private NamingExtensions naming;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+
+		if (obj instanceof LClass) {
+			LPackage pkg = extensions.getPackage((LClass) obj);
+			if (pkg != null) {
+				final String qualifiedName = String.format("%s.%s",
+						pkg.getName(), ((LClass) obj).getName());
+				if (qualifiedName == null)
+					return null;
+				return qualifiedNameConverter.toQualifiedName(qualifiedName);
+			} else {
+				return QualifiedName.create("");
+			}
+		} else if (obj instanceof LEnum) {
+			LPackage pkg = extensions.getPackage((LEnum) obj);
+			if (pkg != null) {
+				final String qualifiedName = String.format("%s.%s",
+						pkg.getName(), ((LEnum) obj).getName());
+				if (qualifiedName == null)
+					return null;
+				return qualifiedNameConverter.toQualifiedName(qualifiedName);
+			} else {
+				return QualifiedName.create("");
+			}
+		} else if (obj instanceof LFeature) {
+			LFeature prop = (LFeature) obj;
+			return prop.getName() != null ? qualifiedNameConverter
+					.toQualifiedName(prop.getName()) : null;
+		} else if (obj instanceof LDataType) {
+
+		} else if (obj instanceof LAnnotationDef) {
+			return super.getFullyQualifiedName(((LAnnotationDef) obj)
+					.getAnnotation());
+		} else if (obj instanceof LEntityPersistenceInfo) {
+			LEntityPersistenceInfo info = (LEntityPersistenceInfo) obj;
+			LEntity entity = (LEntity) info.eContainer();
+			String schemaName = naming
+					.toSchemaName(entity.getPersistenceInfo());
+			if (schemaName == null || schemaName.equals("")) {
+				schemaName = "DEFAULT";
+			}
+			String tableName = naming.toTableName(entity);
+			return QualifiedName.create(schemaName, tableName);
+		} else if (obj instanceof LEntityColumnPersistenceInfo) {
+			LEntityColumnPersistenceInfo info = (LEntityColumnPersistenceInfo) obj;
+			LEntityFeature feature = (LEntityFeature) info.eContainer();
+			LEntity entity = feature.getEntity();
+			QualifiedName parentFQN = getFullyQualifiedName(entity
+					.getPersistenceInfo());
+			String columnName = naming.toColumnName(feature);
+			return parentFQN.append(columnName);
+		}
+		return super.getFullyQualifiedName(obj);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/valueconverter/EntityValueConverterService.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/valueconverter/EntityValueConverterService.java
new file mode 100644
index 0000000..91ecfba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/entity/xtext/valueconverter/EntityValueConverterService.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.entity.xtext.valueconverter;
+
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonValueConverterService;
+
+import com.google.inject.Singleton;
+
+/**
+ * Adds a value conversion for the QualifiedNameWithWildCard rule.
+ */
+@SuppressWarnings("restriction")
+@Singleton
+public class EntityValueConverterService extends CommonValueConverterService {
+
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/Activator.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/Activator.java
new file mode 100644
index 0000000..4348ad9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/Activator.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.entity;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (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.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/EntityFactoryImplCustom.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/EntityFactoryImplCustom.java
new file mode 100644
index 0000000..bf268a3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/EntityFactoryImplCustom.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+
+public class EntityFactoryImplCustom extends OSBPEntityFactoryImpl {
+
+	@Override
+	public LEntity createLEntity() {
+		return new LEntityImplCustom();
+	}
+
+	@Override
+	public LBean createLBean() {
+		return new LBeanImplCustom();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanImplCustom.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanImplCustom.java
new file mode 100644
index 0000000..50e5eda
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/LBeanImplCustom.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+
+public class LBeanImplCustom extends LBeanImpl {
+
+	/**
+	 * Overrides super type to ensure bidirectional proxy resolving
+	 */
+	@Override
+	public LBean getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject) superType;
+			LBean oldSuperEntity = (LBean) oldSuperType;
+			superType = (LBean) eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+
+				// ATENTION: inverse add must be called since bidirectional
+				// references uses proxy resolution for lazy linking. And the
+				// sub_types added to proxy must be added to new superType
+				for (LBean subType : oldSuperEntity.getSubTypes()) {
+					((InternalEObject) superType).eInverseAdd(
+							(InternalEObject) subType,
+							OSBPEntityPackage.LBEAN__SUB_TYPES, LBean.class, null);
+				}
+
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							OSBPEntityPackage.LBEAN__SUPER_TYPE, oldSuperType,
+							superType));
+			}
+		}
+		return superType;
+	}
+	
+	@Override
+	public EList<LAnnotationDef> getAnnotations() {
+		LAnnotationTarget info = getAnnotationInfo();
+		if(info != null){
+			return info.getAnnotations();
+		}
+		return new BasicEList<LAnnotationDef>();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityImplCustom.java b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityImplCustom.java
new file mode 100644
index 0000000..acfbd80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.entity.xtext/src/org/eclipse/osbp/dsl/semantic/entity/impl/LEntityImplCustom.java
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.entity.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+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.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3;
+
+public class LEntityImplCustom extends LEntityImpl {
+
+	/**
+	 * Overrides super type to ensure bidirectional proxy resolving
+	 */
+	@Override
+	public LEntity getSuperType() {
+		if (superType != null && superType.eIsProxy()) {
+			InternalEObject oldSuperType = (InternalEObject) superType;
+			LEntity oldSuperEntity = (LEntity) oldSuperType;
+			superType = (LEntity) eResolveProxy(oldSuperType);
+			if (superType != oldSuperType) {
+				// ATENTION: inverse add must be called since bidirectional
+				// references uses proxy resolution for lazy linking. And the
+				// sub_types added to proxy must be added to new superType
+				for (LEntity subType : oldSuperEntity.getSubTypes()) {
+					((InternalEObject) superType).eInverseAdd(
+							(InternalEObject) subType,
+							OSBPEntityPackage.LENTITY__SUB_TYPES, LEntity.class,
+							null);
+				}
+
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+							OSBPEntityPackage.LENTITY__SUPER_TYPE, oldSuperType,
+							superType));
+			}
+		}
+		return superType;
+	}
+
+	@Override
+	public EList<LAnnotationDef> getAnnotations() {
+		LAnnotationTarget info = getAnnotationInfo();
+		if (info != null) {
+			return info.getAnnotations();
+		}
+		return new BasicEList<LAnnotationDef>();
+	}
+
+	public EObject eResolveProxy(InternalEObject proxy) {
+		if (this.eResource() == null) {
+			return proxy;
+		}
+		return EcoreUtil3.resolve(proxy, this.eResource().getResourceSet());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.example.entity.xtext.delegates/.project b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/.project
new file mode 100644
index 0000000..7d8c412
--- /dev/null
+++ b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.example.entity.xtext.delegates</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.example.entity.xtext.delegates/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..e4283cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/META-INF/MANIFEST.MF
@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.example.entity.xtext.delegates
+Bundle-SymbolicName: org.eclipse.osbp.dsl.example.entity.xtext.delegates;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Require-Bundle: org.eclipse.osbp.dsl.entity.xtext;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.common.xtext;bundle-version="[0.9.0,0.10.0)"
diff --git a/org.eclipse.osbp.dsl.example.entity.xtext.delegates/build.properties b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/build.properties
new file mode 100644
index 0000000..110a2d2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/org.eclipse.osbp.dsl.example.entity.xtext.delegates/plugin.xml b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/plugin.xml
new file mode 100644
index 0000000..e0f1af0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.osbp.dsl.xtext.lazyresolver.inferrerDelegate">
+      <inferrerDelegate
+            grammarName="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar"
+            inferrerDelegateClass="org.eclipse.osbp.dsl.example.entity.xtext.delegates.JvmInferrerDelegate">
+      </inferrerDelegate>
+   </extension>
+   <extension
+         point="org.eclipse.osbp.dsl.xtext.lazyresolver.generatorDelegate">
+      <generatorDelegate
+            generatorDelegateClass="org.eclipse.osbp.dsl.example.entity.xtext.delegates.SampleGeneratorDelegate"
+            grammarName="org.eclipse.osbp.dsl.entity.xtext.EntityGrammar">
+      </generatorDelegate>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.dsl.example.entity.xtext.delegates/src/org/eclipse/osbp/dsl/example/entity/xtext/delegates/JvmInferrerDelegate.xtend b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/src/org/eclipse/osbp/dsl/example/entity/xtext/delegates/JvmInferrerDelegate.xtend
new file mode 100644
index 0000000..e1fcc85
--- /dev/null
+++ b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/src/org/eclipse/osbp/dsl/example/entity/xtext/delegates/JvmInferrerDelegate.xtend
@@ -0,0 +1,66 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.dsl.example.entity.xtext.delegates
+
+import com.google.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.osbp.dsl.entity.xtext.extensions.EntityTypesBuilder
+import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexDerivedStateHelper
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook.IInferrerDelegate
+
+@SuppressWarnings("restriction")
+class JvmInferrerDelegate implements IInferrerDelegate {
+
+	@Inject ModelExtensions modelExt
+	@Inject extension EntityTypesBuilder typesBuilder
+	@Inject extension TypeReferences references
+
+	@Inject
+	IndexDerivedStateHelper stateHelper;
+
+	override void inferTypesOnly(EObject semanticElement, IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase) {
+		if (semanticElement instanceof LEntity) {
+			val LEntity lEntity = semanticElement as LEntity;
+
+			// create a generic type
+			val JvmGenericType type = typesBuilder.toClass(lEntity,
+				"org.eclipse.osbp.samples.inferred.delegate." + lEntity.getName());
+			stateHelper.markAsToBeDerivedLater(type, semanticElement, false, "osbpSample");
+			acceptor.accept(type);
+		}
+	}
+
+	override void inferFullState(JvmDeclaredType jvmType, EObject semanticElement, IJvmDeclaredTypeAcceptor acceptor,
+		boolean preIndexingPhase, String selector) {
+
+		if (selector != null && selector.equals("osbpSample")) {
+			acceptor.accept(jvmType).initializeLater [
+				stateHelper.markAsDerived(jvmType)
+				abstract = true
+				members +=
+					semanticElement.toField("sample", references.getTypeForName(Integer.TYPE, semanticElement, null))
+			]
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.example.entity.xtext.delegates/src/org/eclipse/osbp/dsl/example/entity/xtext/delegates/SampleGeneratorDelegate.xtend b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/src/org/eclipse/osbp/dsl/example/entity/xtext/delegates/SampleGeneratorDelegate.xtend
new file mode 100644
index 0000000..30f5b7f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.example.entity.xtext.delegates/src/org/eclipse/osbp/dsl/example/entity/xtext/delegates/SampleGeneratorDelegate.xtend
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ * 
+ *  This copyright notice shows up in the generated Java code
+ *
+ */
+ 
+package org.eclipse.osbp.dsl.example.entity.xtext.delegates
+
+import java.util.Set
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.generator.OutputConfiguration
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook.IGeneratorDelegate
+
+@SuppressWarnings("restriction")
+class SampleGeneratorDelegate implements IGeneratorDelegate {
+
+	override generate(Resource input, IFileSystemAccess fsa) {
+		fsa.deleteFile("ResourceInfo")
+		fsa.generateFile("ResourceInfo", "OSBPSample", input.toContent)
+	}
+
+	override getOutputConfigurations() {
+		val Set<OutputConfiguration> configs = newHashSet();
+
+		val OutputConfiguration servicesOutput = new OutputConfiguration("OSBPSample")
+		servicesOutput.setDescription("OSBP Sample")
+		servicesOutput.setOutputDirectory("./OSBPSample")
+		servicesOutput.setOverrideExistingResources(true)
+		servicesOutput.setCreateOutputDirectory(true)
+		servicesOutput.setCleanUpDerivedResources(true)
+		servicesOutput.setSetDerivedProperty(true)
+		servicesOutput.setKeepLocalHistory(true)
+		configs.add(servicesOutput)
+
+		return configs
+	}
+
+	def toContent(Resource input) '''
+		The resources «input.URI» contains «input.contents.size» entries..
+	'''
+
+}
diff --git a/org.eclipse.osbp.dsl.examples.dto/.project b/org.eclipse.osbp.dsl.examples.dto/.project
new file mode 100644
index 0000000..3cdc8b4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.examples.dto</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.examples.dto/DTO_DSL_Doku.pdf b/org.eclipse.osbp.dsl.examples.dto/DTO_DSL_Doku.pdf
new file mode 100644
index 0000000..fbf2f85
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/DTO_DSL_Doku.pdf
Binary files differ
diff --git a/org.eclipse.osbp.dsl.examples.dto/META-INF/persistence.xml b/org.eclipse.osbp.dsl.examples.dto/META-INF/persistence.xml
new file mode 100644
index 0000000..f6b7805
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/META-INF/persistence.xml
@@ -0,0 +1,16 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
+	version="1.0">
+	<persistence-unit name="DEFAULT" 
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>org.eclipse.osbp.dsl.examples.dtos.entities.Base</class>
+		<class>org.eclipse.osbp.dsl.examples.dtos.entities.House</class>
+		<class>org.eclipse.osbp.dsl.examples.dtos.entities.Window</class>
+		<class>org.eclipse.osbp.dsl.examples.dtos.entities.Door</class>
+		<class>org.eclipse.osbp.dsl.examples.dtos.entities.Address</class>
+	
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+	</persistence-unit>
+</persistence>
diff --git a/org.eclipse.osbp.dsl.examples.dto/build.properties b/org.eclipse.osbp.dsl.examples.dto/build.properties
new file mode 100644
index 0000000..249343b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/build.properties
@@ -0,0 +1,13 @@
+bin.includes = .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               build.properties,\
+               pom.xml,\
+               src/,\
+               src-gen/,\
+               epl-v10.html,\
+               license.html,\
+               LEGAL_ISSUES.txt,\
+               models/
+
diff --git a/org.eclipse.osbp.dsl.examples.dto/dto-models/entities.dtos b/org.eclipse.osbp.dsl.examples.dto/dto-models/entities.dtos
new file mode 100644
index 0000000..a2f6116
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/dto-models/entities.dtos
@@ -0,0 +1,34 @@
+package org.eclipse.osbp.dsl.examples.dtos.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.examples.dtos.dtos.*;
+	import org.eclipse.osbp.dsl.examples.dtos.dtos.mapper.*;
+	import org.eclipse.osbp.dsl.examples.dtos.entities.*;
+
+
+	autoDto BaseDto wraps Base {
+		inherit var id;
+		inherit var number;
+	}
+	
+	autoDto HouseDto extends BaseDto wraps House {
+		inherit ref windows mapto WindowDto;
+		inherit ref openWindows mapto WindowDto;
+		inherit ref doors mapto DoorDto;
+		inherit var address;
+	}
+	
+	autoDto WindowDto extends BaseDto wraps Window {
+		inherit ref parent mapto HouseDto;
+	}
+	
+	autoDto DoorDto extends BaseDto wraps Door {
+		inherit ref parent mapto HouseDto;
+	}
+	
+	autoDto AddressDto wraps Address {
+		inherit var street;
+		inherit var city;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.dto/epl-v10.html b/org.eclipse.osbp.dsl.examples.dto/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/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.dsl.examples.dto/i18n/I18N.properties b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N.properties
new file mode 100644
index 0000000..a71c772
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N.properties
@@ -0,0 +1,13 @@
+#default
+org.eclipse.osbp.dsl.examples.dtos.entities.address=address
+org.eclipse.osbp.dsl.examples.dtos.entities.city=city
+org.eclipse.osbp.dsl.examples.dtos.entities.door=door
+org.eclipse.osbp.dsl.examples.dtos.entities.doors=doors
+org.eclipse.osbp.dsl.examples.dtos.entities.house=house
+org.eclipse.osbp.dsl.examples.dtos.entities.id=id
+org.eclipse.osbp.dsl.examples.dtos.entities.number=number
+org.eclipse.osbp.dsl.examples.dtos.entities.open_windows=open_windows
+org.eclipse.osbp.dsl.examples.dtos.entities.parent=parent
+org.eclipse.osbp.dsl.examples.dtos.entities.street=street
+org.eclipse.osbp.dsl.examples.dtos.entities.window=window
+org.eclipse.osbp.dsl.examples.dtos.entities.windows=windows
diff --git a/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_de.properties b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_de.properties
new file mode 100644
index 0000000..af6fdef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_de.properties
@@ -0,0 +1 @@
+#de
diff --git a/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_de_AT.properties b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_de_AT.properties
new file mode 100644
index 0000000..6c73e1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_de_AT.properties
@@ -0,0 +1 @@
+#de_AT
diff --git a/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_en.properties b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_en.properties
new file mode 100644
index 0000000..6466fa3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_en.properties
@@ -0,0 +1,13 @@
+#en
+org.eclipse.osbp.dsl.examples.dtos.entities.address=address
+org.eclipse.osbp.dsl.examples.dtos.entities.city=city
+org.eclipse.osbp.dsl.examples.dtos.entities.door=door
+org.eclipse.osbp.dsl.examples.dtos.entities.doors=doors
+org.eclipse.osbp.dsl.examples.dtos.entities.house=house
+org.eclipse.osbp.dsl.examples.dtos.entities.id=identifier
+org.eclipse.osbp.dsl.examples.dtos.entities.number=number
+org.eclipse.osbp.dsl.examples.dtos.entities.open_windows=open windows
+org.eclipse.osbp.dsl.examples.dtos.entities.parent=parent
+org.eclipse.osbp.dsl.examples.dtos.entities.street=street
+org.eclipse.osbp.dsl.examples.dtos.entities.window=window
+org.eclipse.osbp.dsl.examples.dtos.entities.windows=windows
diff --git a/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_en_US.properties b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_en_US.properties
new file mode 100644
index 0000000..d89e21c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_en_US.properties
@@ -0,0 +1 @@
+#en_US
diff --git a/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_fr.properties b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_fr.properties
new file mode 100644
index 0000000..a84da83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/i18n/I18N_fr.properties
@@ -0,0 +1 @@
+#fr
diff --git a/org.eclipse.osbp.dsl.examples.dto/license.html b/org.eclipse.osbp.dsl.examples.dto/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/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.dsl.examples.dto/models/entities.entitymodel b/org.eclipse.osbp.dsl.examples.dto/models/entities.entitymodel
new file mode 100644
index 0000000..54832ad
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/models/entities.entitymodel
@@ -0,0 +1,30 @@
+package org.eclipse.osbp.dsl.examples.dtos.entities {
+	
+	mapped superclass Base {
+		uuid String id;
+		var String number;
+	} 
+	 
+	entity House extends Base {
+		ref cascade Window[*] windows opposite parent;
+		ref Window[*] openWindows opposite parent;
+		
+		ref cascade Door[*] doors opposite parent;
+		
+		var Address address;
+	}
+	  
+	entity Window extends Base {
+		ref House parent opposite windows;
+	}
+	
+	entity Door extends Base {
+		ref House parent opposite doors;
+	}   
+	
+	bean Address {
+		var String street;
+		var String city;
+	}
+	 
+}
diff --git a/org.eclipse.osbp.dsl.examples.dto/pom.xml b/org.eclipse.osbp.dsl.examples.dto/pom.xml
new file mode 100644
index 0000000..402be1e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>	
+	<artifactId>org.eclipse.osbp.dsl.examples.dto</artifactId>
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<resources>
+			<resource>
+				<directory>src-gen</directory>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<version>1.8</version>
+				<executions>
+					<execution>
+						<id>add-source</id>
+						<phase>initialize</phase>
+						<goals>
+							<goal>add-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.osbp.tools.maven</groupId>
+				<artifactId>org.eclipse.osbp.tools.maven.plugin.entity</artifactId>
+				<version>0.9.0-SNAPSHOT</version>
+				<executions>
+					<execution>
+						<goals>
+							<goal>compile</goal>
+							<goal>testCompile</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<outputDirectory>src-gen</outputDirectory>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.examples.dto/src/PLACEHOLDER b/org.eclipse.osbp.dsl.examples.dto/src/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.dto/src/PLACEHOLDER
diff --git a/org.eclipse.osbp.dsl.examples.entity/.project b/org.eclipse.osbp.dsl.examples.entity/.project
new file mode 100644
index 0000000..e7acd77
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/.project
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.examples.entity</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.examples.entity/EntityDSL_Doku.pdf b/org.eclipse.osbp.dsl.examples.entity/EntityDSL_Doku.pdf
new file mode 100644
index 0000000..1f694f1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/EntityDSL_Doku.pdf
Binary files differ
diff --git a/org.eclipse.osbp.dsl.examples.entity/EntityDSL_InstallationGuide.pdf b/org.eclipse.osbp.dsl.examples.entity/EntityDSL_InstallationGuide.pdf
new file mode 100644
index 0000000..a9c981b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/EntityDSL_InstallationGuide.pdf
Binary files differ
diff --git a/org.eclipse.osbp.dsl.examples.entity/META-INF/persistence.xml b/org.eclipse.osbp.dsl.examples.entity/META-INF/persistence.xml
new file mode 100644
index 0000000..bc10ece
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/META-INF/persistence.xml
@@ -0,0 +1,27 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
+	version="1.0">
+	<persistence-unit name="DEFAULT" 
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>org.eclipse.osbp.entitydsl.samples.sample06.Vehicle</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample06.Bike</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample06.Boat</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample05.Item</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample05.Article</class>
+		<class>org.eclipse.osbp.entitydsl.samples.example04.NormalEntity</class>
+		<class>org.eclipse.osbp.entitydsl.samples.example04.ExtendedEntity</class>
+		<class>org.eclipse.osbp.entitydsl.samples.example04.AbstractEntity</class>
+		<class>org.eclipse.osbp.entitydsl.samples.example04.CacheableEntity</class>
+		<class>org.eclipse.osbp.entitydsl.samples.example04.HistorizedEntity</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample03.Worker</class>
+		<class>org.eclipse.osbp.entitydsl.samples.theimporter.Machine</class>
+		<class>org.eclipse.osbp.entitydsl.samples.theimp.BaseEntity</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample01.Foo</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample01.Bar</class>
+		<class>org.eclipse.osbp.entitydsl.samples.sample01.MyEnum</class>
+	
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+	</persistence-unit>
+</persistence>
diff --git a/org.eclipse.osbp.dsl.examples.entity/build.properties b/org.eclipse.osbp.dsl.examples.entity/build.properties
new file mode 100644
index 0000000..249343b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/build.properties
@@ -0,0 +1,13 @@
+bin.includes = .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               build.properties,\
+               pom.xml,\
+               src/,\
+               src-gen/,\
+               epl-v10.html,\
+               license.html,\
+               LEGAL_ISSUES.txt,\
+               models/
+
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example01-package.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example01-package.dtos
new file mode 100644
index 0000000..8e5a940
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example01-package.dtos
@@ -0,0 +1,29 @@
+/**
+ * A minimal example for the Lunifera Entity DSL:
+ * 
+ * The package is the topmost element that contains the other elements such as entities,
+ * beans and enums. Inside a package, import statements an datatype declarations can be placed.
+ * 
+ * Here, the datatype String is declared since it is needed for the UUID property of entity Foo
+ * (Entities are supposed to have an ID property; the preferable implementation is UUID).
+ */
+package org.eclipse.osbp.entitydsl.samples.sample01.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.samples.sample01.*;
+	import org.eclipse.osbp.entitydsl.samples.sample01.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.sample01.dtos.mapper.*;
+
+
+	autoDto FooDto wraps Foo {
+		inherit var id;
+	}
+	
+	autoDto BarDto wraps Bar {
+	}
+	
+	enum MyEnum {
+		FOO, BAR
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example02-imported.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example02-imported.dtos
new file mode 100644
index 0000000..d2243dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example02-imported.dtos
@@ -0,0 +1,21 @@
+/**
+ * Importing packages in the Lunifera Entity DSL:
+ * 
+ * The datatype that is declared here can be accessed in packages that import this one.
+ * 
+ * Entities in other packages can inherit from the BaseEntity declared here.
+ */
+package org.eclipse.osbp.entitydsl.samples.theimp.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.samples.theimp.*;
+	import org.eclipse.osbp.entitydsl.samples.theimp.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.theimp.dtos.mapper.*;
+
+	datatype String jvmType java.lang.String;
+
+	autoDto BaseEntityDto wraps BaseEntity {
+		inherit var id;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example02-importer.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example02-importer.dtos
new file mode 100644
index 0000000..fbb7d17
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example02-importer.dtos
@@ -0,0 +1,23 @@
+/**
+ * Importing packages in the Lunifera Entity DSL:
+ * 
+ * The import statement specifies the package to be imported into this package.
+ * "String" datatype and BaseEntity declaration are found in the imported package.
+ * Since the Machine Entity inherits from the BaseEntity, no ID field is necessary here.
+ * 
+ * Import statements support the use of the *-wildcard.
+ */
+package org.eclipse.osbp.entitydsl.samples.theimporter.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.samples.theimp.*;
+	import org.eclipse.osbp.entitydsl.samples.theimp.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.theimporter.*;
+	import org.eclipse.osbp.entitydsl.samples.theimporter.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.theimporter.dtos.mapper.*;
+
+
+	autoDto MachineDto extends BaseEntityDto wraps Machine {
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example03-datatype.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example03-datatype.dtos
new file mode 100644
index 0000000..902c461
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example03-datatype.dtos
@@ -0,0 +1,37 @@
+/**
+ * Declaring datatypes in the Lunifera Entity DSL:
+ * 
+ * There are three kinds of datatype declarations: jvmTypes, dateTypes and blobs.
+ * 
+ * Declaring a jvmType allows the specification of the JVM Datatype to be used in
+ * the generated Java code. Adding "as primitive" triggers the use of primitive
+ * datatypes (where applicable).
+ * 
+ * Temporal Datetypes can be date, time and timestamp.
+ * 
+ * Blobs can be declared by using the "as blob" keyword and are translated to a
+ * byte array in the Java code.
+ */
+package org.eclipse.osbp.entitydsl.samples.sample03.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.samples.sample03.*;
+	import org.eclipse.osbp.entitydsl.samples.sample03.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.sample03.dtos.mapper.*;
+
+	datatype wrapped_int jvmType java.lang.Integer;
+	datatype dat dateType date;
+	datatype tim dateType timestamp;
+	datatype binarydata as blob;
+
+	autoDto WorkerDto wraps Worker {
+		inherit var id;
+		inherit var name;
+		inherit var employeenumber;
+		inherit var insurancenumber;
+		inherit var birthdate;
+		inherit var lastpromotion;
+		inherit var photo;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example05-persistence-mappedsuperclass.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example05-persistence-mappedsuperclass.dtos
new file mode 100644
index 0000000..903821f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example05-persistence-mappedsuperclass.dtos
@@ -0,0 +1,29 @@
+/**
+ * Example for persistence with the "mapped superclass" strategy
+ * 
+ * The "mapped superclass" strategy means that no database table is created for the
+ * parent in an inheritance situation between entities.
+ * 
+ * The parent's fields are inherited by the children and included as columns
+ * in their tables as if they had been declared in the child entity.
+ */
+package org.eclipse.osbp.entitydsl.samples.sample05.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.samples.sample05.*;
+	import org.eclipse.osbp.entitydsl.samples.sample05.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.sample05.dtos.mapper.*;
+
+
+	autoDto ItemDto wraps Item {
+		inherit var id;
+		inherit var name;
+		inherit var count;
+	}
+	
+	autoDto ArticleDto extends ItemDto wraps Article {
+		inherit var description;
+		inherit var price;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example06-persistence-inheritancebyclass.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example06-persistence-inheritancebyclass.dtos
new file mode 100644
index 0000000..3c8a6f8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example06-persistence-inheritancebyclass.dtos
@@ -0,0 +1,41 @@
+/**
+ * Example for persistence with the "inheritance per class" strategy
+ * 
+ * The "Inheritance per class" strategy causes subclasses to share the database tables
+ * of their parent classes. In order to be able to tell the types of the entries apart, a
+ * discriminator has to be used.
+ * 
+ * Thus, a single table is created that has the columns of all entities that share it (causing
+ * a tradeoff between database size and access speed).
+ * 
+ * "inheritance per class" needs to be declared in the topmost entity that should share the
+ * common table. The setting is then inherited by children.
+ * 
+ * The example below shows the declaration of custom values; inheritance per class
+ * declarations have been added to sub-entities in order to override default values. This would
+ * not have been necessary.
+ */
+package org.eclipse.osbp.entitydsl.samples.sample06.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.entitydsl.samples.sample06.*;
+	import org.eclipse.osbp.entitydsl.samples.sample06.dtos.*;
+	import org.eclipse.osbp.entitydsl.samples.sample06.dtos.mapper.*;
+
+
+	autoDto VehicleDto wraps Vehicle {
+		inherit var id;
+		inherit var name;
+	}
+	
+	autoDto BikeDto extends VehicleDto wraps Bike {
+		inherit var bikedescription;
+		inherit var price;
+	}
+	
+	autoDto BoatDto extends VehicleDto wraps Boat {
+		inherit var boatdescription;
+		inherit var price;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/dto-models/Example99-build.dtos b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example99-build.dtos
new file mode 100644
index 0000000..52e8750
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/dto-models/Example99-build.dtos
@@ -0,0 +1,7 @@
+/** To run a maven build that compiles the entitymodels from /models to src-gen/ -> Please run pom.xml as a maven build. */
+package org.eclipse.osbp.entitydsl.samples.sample99.dtos {
+	
+	/* Imports the required artifacts */
+
+
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/epl-v10.html b/org.eclipse.osbp.dsl.examples.entity/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/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.dsl.examples.entity/i18n/I18N.properties b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N.properties
new file mode 100644
index 0000000..6bccce3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N.properties
@@ -0,0 +1,34 @@
+#default
+org.eclipse.osbp.entitydsl.samples.example04.abstract_entity=abstract_entity
+org.eclipse.osbp.entitydsl.samples.example04.cacheable_entity=cacheable_entity
+org.eclipse.osbp.entitydsl.samples.example04.extended_entity=extended_entity
+org.eclipse.osbp.entitydsl.samples.example04.historized_entity=historized_entity
+org.eclipse.osbp.entitydsl.samples.example04.id=id
+org.eclipse.osbp.entitydsl.samples.example04.normal_entity=normal_entity
+org.eclipse.osbp.entitydsl.samples.sample01.bar=bar
+org.eclipse.osbp.entitydsl.samples.sample01.foo=foo
+org.eclipse.osbp.entitydsl.samples.sample01.id=id
+org.eclipse.osbp.entitydsl.samples.sample03.birthdate=birthdate
+org.eclipse.osbp.entitydsl.samples.sample03.employeenumber=employeenumber
+org.eclipse.osbp.entitydsl.samples.sample03.id=id
+org.eclipse.osbp.entitydsl.samples.sample03.insurancenumber=insurancenumber
+org.eclipse.osbp.entitydsl.samples.sample03.lastpromotion=lastpromotion
+org.eclipse.osbp.entitydsl.samples.sample03.name=name
+org.eclipse.osbp.entitydsl.samples.sample03.photo=photo
+org.eclipse.osbp.entitydsl.samples.sample03.worker=worker
+org.eclipse.osbp.entitydsl.samples.sample05.article=article
+org.eclipse.osbp.entitydsl.samples.sample05.count=count
+org.eclipse.osbp.entitydsl.samples.sample05.description=description
+org.eclipse.osbp.entitydsl.samples.sample05.id=id
+org.eclipse.osbp.entitydsl.samples.sample05.name=name
+org.eclipse.osbp.entitydsl.samples.sample05.price=price
+org.eclipse.osbp.entitydsl.samples.sample06.bike=bike
+org.eclipse.osbp.entitydsl.samples.sample06.bikedescription=bikedescription
+org.eclipse.osbp.entitydsl.samples.sample06.boat=boat
+org.eclipse.osbp.entitydsl.samples.sample06.boatdescription=boatdescription
+org.eclipse.osbp.entitydsl.samples.sample06.id=id
+org.eclipse.osbp.entitydsl.samples.sample06.name=name
+org.eclipse.osbp.entitydsl.samples.sample06.price=price
+org.eclipse.osbp.entitydsl.samples.sample06.vehicle=vehicle
+org.eclipse.osbp.entitydsl.samples.theimp.base_entity=base_entity
+org.eclipse.osbp.entitydsl.samples.theimp.id=id
diff --git a/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_de.properties b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_de.properties
new file mode 100644
index 0000000..af6fdef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_de.properties
@@ -0,0 +1 @@
+#de
diff --git a/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_de_AT.properties b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_de_AT.properties
new file mode 100644
index 0000000..6c73e1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_de_AT.properties
@@ -0,0 +1 @@
+#de_AT
diff --git a/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_en.properties b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_en.properties
new file mode 100644
index 0000000..bb4e28b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_en.properties
@@ -0,0 +1,35 @@
+#en
+org.eclipse.osbp.entitydsl.samples.example04.abstract_entity=abstract entity
+org.eclipse.osbp.entitydsl.samples.example04.cacheable_entity=cacheable entity
+org.eclipse.osbp.entitydsl.samples.example04.extended_entity=extended entity
+org.eclipse.osbp.entitydsl.samples.example04.historized_entity=historized entity
+org.eclipse.osbp.entitydsl.samples.example04.id=identifier
+org.eclipse.osbp.entitydsl.samples.example04.normal_entity=normal entity
+org.eclipse.osbp.entitydsl.samples.sample01.bar=bar
+org.eclipse.osbp.entitydsl.samples.sample01.foo=foo
+org.eclipse.osbp.entitydsl.samples.sample01.id=identifier
+org.eclipse.osbp.entitydsl.samples.sample03.birthdate=birthdate
+org.eclipse.osbp.entitydsl.samples.sample03.employeenumber=employeenumber
+org.eclipse.osbp.entitydsl.samples.sample03.id=identifier
+org.eclipse.osbp.entitydsl.samples.sample03.insurancenumber=insurancenumber
+org.eclipse.osbp.entitydsl.samples.sample03.lastpromotion=lastpromotion
+org.eclipse.osbp.entitydsl.samples.sample03.name=name
+org.eclipse.osbp.entitydsl.samples.sample03.photo=photo
+org.eclipse.osbp.entitydsl.samples.sample03.worker=worker
+org.eclipse.osbp.entitydsl.samples.sample05.article=article
+org.eclipse.osbp.entitydsl.samples.sample05.count=count
+org.eclipse.osbp.entitydsl.samples.sample05.description=description
+org.eclipse.osbp.entitydsl.samples.sample05.id=identifier
+org.eclipse.osbp.entitydsl.samples.sample05.name=name
+org.eclipse.osbp.entitydsl.samples.sample05.price=price
+org.eclipse.osbp.entitydsl.samples.sample06.bike=bike
+org.eclipse.osbp.entitydsl.samples.sample06.bikedescription=bikedescription
+org.eclipse.osbp.entitydsl.samples.sample06.boat=boat
+org.eclipse.osbp.entitydsl.samples.sample06.boatdescription=boatdescription
+org.eclipse.osbp.entitydsl.samples.sample06.id=identifier
+org.eclipse.osbp.entitydsl.samples.sample06.name=name
+org.eclipse.osbp.entitydsl.samples.sample06.price=price
+org.eclipse.osbp.entitydsl.samples.sample06.vehicle=vehicle
+org.eclipse.osbp.entitydsl.samples.theimp.base_entity=base entity
+org.eclipse.osbp.entitydsl.samples.theimp.id=identifier
+org.eclipse.osbp.entitydsl.samples.theimporter.machine=machine
diff --git a/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_en_US.properties b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_en_US.properties
new file mode 100644
index 0000000..d89e21c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_en_US.properties
@@ -0,0 +1 @@
+#en_US
diff --git a/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_fr.properties b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_fr.properties
new file mode 100644
index 0000000..a84da83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/i18n/I18N_fr.properties
@@ -0,0 +1 @@
+#fr
diff --git a/org.eclipse.osbp.dsl.examples.entity/license.html b/org.eclipse.osbp.dsl.examples.entity/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/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.dsl.examples.entity/models/Example01-package.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example01-package.entitymodel
new file mode 100644
index 0000000..9afd0a6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example01-package.entitymodel
@@ -0,0 +1,25 @@
+/**
+ * A minimal example for the Lunifera Entity DSL:
+ * 
+ * The package is the topmost element that contains the other elements such as entities, 
+ * beans and enums. Inside a package, import statements an datatype declarations can be placed.
+ * 
+ * Here, the datatype String is declared since it is needed for the UUID property of entity Foo
+ * (Entities are supposed to have an ID property; the preferable implementation is UUID).
+ * 
+ */
+ 
+package org.eclipse.osbp.entitydsl.samples.sample01 {
+
+	entity Foo {
+		uuid String id ;
+	}
+
+	bean Bar { 
+		
+	}
+
+	enum MyEnum {
+		FOO, BAR
+	}
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example02-imported.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example02-imported.entitymodel
new file mode 100644
index 0000000..91c0148
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example02-imported.entitymodel
@@ -0,0 +1,17 @@
+/**
+ * Importing packages in the Lunifera Entity DSL:
+ * 
+ * The datatype that is declared here can be accessed in packages that import this one.
+ * 
+ * Entities in other packages can inherit from the BaseEntity declared here.
+ * 
+ */
+package org.eclipse.osbp.entitydsl.samples.theimp {
+
+	datatype String jvmType java.lang.String;
+
+	entity BaseEntity {
+		uuid String id;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example02-importer.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example02-importer.entitymodel
new file mode 100644
index 0000000..deaa0ab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example02-importer.entitymodel
@@ -0,0 +1,19 @@
+/**
+ * Importing packages in the Lunifera Entity DSL:
+ * 
+ * The import statement specifies the package to be imported into this package.
+ * "String" datatype and BaseEntity declaration are found in the imported package.
+ * Since the Machine Entity inherits from the BaseEntity, no ID field is necessary here.
+ * 
+ * Import statements support the use of the *-wildcard.
+ * 
+ */
+package org.eclipse.osbp.entitydsl.samples.theimporter {
+
+	import org.eclipse.osbp.entitydsl.samples.theimp.*;
+
+	entity Machine extends BaseEntity {
+		   
+	}  
+
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example03-datatype.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example03-datatype.entitymodel
new file mode 100644
index 0000000..5a7a2bd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example03-datatype.entitymodel
@@ -0,0 +1,38 @@
+/**
+ * Declaring datatypes in the Lunifera Entity DSL:
+ * 
+ * There are three kinds of datatype declarations: jvmTypes, dateTypes and blobs.
+ * 
+ * Declaring a jvmType allows the specification of the JVM Datatype to be used in 
+ * the generated Java code. Adding "as primitive" triggers the use of primitive
+ * datatypes (where applicable).
+ * 
+ * Temporal Datetypes can be date, time and timestamp.
+ * 
+ * Blobs can be declared by using the "as blob" keyword and are translated to a
+ * byte array in the Java code.
+ */
+ 
+package org.eclipse.osbp.entitydsl.samples.sample03 {
+	
+	datatype wrapped_int jvmType java.lang.Integer;
+	datatype dat dateType date;
+	datatype tim dateType timestamp;
+	
+	datatype binarydata as blob;
+
+	entity Worker {
+		uuid String id;
+		
+		var String name;
+		var int employeenumber;
+		var wrapped_int insurancenumber;
+		
+		var dat birthdate;
+		var tim lastpromotion;
+		
+		var binarydata photo;
+		
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example04-entities.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example04-entities.entitymodel
new file mode 100644
index 0000000..76fac6e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example04-entities.entitymodel
@@ -0,0 +1,42 @@
+/**
+ * Entities and their modifications
+ * 
+ * Entities can be declared within a package. There are the following modificators:
+ * 
+ * - abstract: generates an abstract Java class
+ * - cacheable: marks the entity as cacheable for the persistence provider
+ * - historized: adds fields for object ID and object version and a flag to
+ *   mark the current version. One way to deal with multiple database entries
+ *   for a single object (e.g. keeping track of old values when updating)
+ * - timedependent: adds fields for object ID as well as starting and ending
+ *   point of the validity of the database entry. Another way to deal with 
+ *   multiple database entries for a single object; the valid entry is determined
+ *   based on the "valid from" and "valid until" fields; can handle future dates
+ *   (e.g. varying price of a product).
+ * 
+ * - extends: Entities can extend other entities, inheriting their properties and
+ *   persistence settings.
+ */
+
+package org.eclipse.osbp.entitydsl.samples.example04 {
+
+	entity NormalEntity { 
+		uuid String id ;
+	}
+
+	entity ExtendedEntity extends NormalEntity {
+		
+	}
+
+	abstract entity AbstractEntity {
+		uuid String id;
+	}
+
+	cacheable entity CacheableEntity {
+		uuid String id ;
+	}
+
+	historized entity HistorizedEntity {
+		uuid String id ;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example05-persistence-mappedsuperclass.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example05-persistence-mappedsuperclass.entitymodel
new file mode 100644
index 0000000..ab87e1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example05-persistence-mappedsuperclass.entitymodel
@@ -0,0 +1,25 @@
+/**
+ * Example for persistence with the "mapped superclass" strategy
+ * 
+ * The "mapped superclass" strategy means that no database table is created for the 
+ * parent in an inheritance situation between entities. 
+ * 
+ * The parent's fields are inherited by the children and included as columns
+ * in their tables as if they had been declared in the child entity.
+ * 
+ */
+ 
+package org.eclipse.osbp.entitydsl.samples.sample05 {
+
+	mapped superclass Item {
+		uuid String id ;
+		var String name;
+		var int count;
+	}
+
+	entity Article extends Item {
+		var String[*] description;
+		var int price;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example06-persistence-inheritancebyclass.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example06-persistence-inheritancebyclass.entitymodel
new file mode 100644
index 0000000..6d6f4b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example06-persistence-inheritancebyclass.entitymodel
@@ -0,0 +1,49 @@
+/**
+ * Example for persistence with the "inheritance per class" strategy
+ * 
+ * The "Inheritance per class" strategy causes subclasses to share the database tables
+ * of their parent classes. In order to be able to tell the types of the entries apart, a 
+ * discriminator has to be used.
+ * 
+ * Thus, a single table is created that has the columns of all entities that share it (causing
+ * a tradeoff between database size and access speed).
+ * 
+ * "inheritance per class" needs to be declared in the topmost entity that should share the
+ * common table. The setting is then inherited by children.
+ * 
+ * The example below shows the declaration of custom values; inheritance per class
+ * declarations have been added to sub-entities in order to override default values. This would
+ * not have been necessary.
+ * 
+ */
+ 
+package org.eclipse.osbp.entitydsl.samples.sample06 {
+
+	entity Vehicle {
+		inheritance per class {
+			discriminatorColumn TYPE_DISCR_COLUMN;
+			discriminatorType STRING;
+			discriminatorValue VEH;
+		}
+		uuid String id ;
+		var String name;
+	}
+
+	entity Bike extends Vehicle {
+		inheritance per class {
+			discriminatorValue BIKE;
+		}
+		var String[*] bikedescription;
+		var int price;
+	}
+	
+	entity Boat extends Vehicle {
+		inheritance per class {
+			discriminatorValue BOAT;
+		}
+		var String[*] boatdescription;
+		var int price;
+	}
+	
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.examples.entity/models/Example99-build.entitymodel b/org.eclipse.osbp.dsl.examples.entity/models/Example99-build.entitymodel
new file mode 100644
index 0000000..0ba3f04
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/models/Example99-build.entitymodel
@@ -0,0 +1,6 @@
+/**
+ * To run a maven build that compiles the entitymodels from /models to src-gen/ -> Please run pom.xml as a maven build.
+ */
+package org.eclipse.osbp.entitydsl.samples.sample99 {
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.examples.entity/pom.xml b/org.eclipse.osbp.dsl.examples.entity/pom.xml
new file mode 100644
index 0000000..4af9eec
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	<artifactId>org.eclipse.osbp.dsl.examples.entity</artifactId>
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<resources>
+			<resource>
+				<directory>src-gen</directory>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<version>1.8</version>
+				<executions>
+					<execution>
+						<id>add-source</id>
+						<phase>initialize</phase>
+						<goals>
+							<goal>add-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.osbp.tools.maven</groupId>
+				<artifactId>org.eclipse.osbp.tools.maven.plugin.entity</artifactId>
+				<version>0.9.0-SNAPSHOT</version>
+				<executions>
+					<execution>
+						<goals>
+							<goal>compile</goal>
+							<goal>testCompile</goal>
+						</goals>
+					</execution>
+				</executions>
+				<configuration>
+					<outputDirectory>src-gen</outputDirectory>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.1</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.examples.entity/src/PLACEHOLDER b/org.eclipse.osbp.dsl.examples.entity/src/PLACEHOLDER
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/org.eclipse.osbp.dsl.examples.entity/src/PLACEHOLDER
diff --git a/org.eclipse.osbp.dsl.feature.common.headless/.project b/org.eclipse.osbp.dsl.feature.common.headless/.project
new file mode 100644
index 0000000..fc5ce3e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.common.headless</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.dsl.feature.common.headless/LICENSE.txt b/org.eclipse.osbp.dsl.feature.common.headless/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/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.dsl.feature.common.headless/build.properties b/org.eclipse.osbp.dsl.feature.common.headless/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.common.headless/epl-v10.html b/org.eclipse.osbp.dsl.feature.common.headless/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/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.dsl.feature.common.headless/feature.properties b/org.eclipse.osbp.dsl.feature.common.headless/feature.properties
new file mode 100644
index 0000000..dff51d0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/feature.properties
@@ -0,0 +1,170 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = OSBP Modeling Tools - Common DSL Headless Bundles 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.common.headless/feature.xml b/org.eclipse.osbp.dsl.feature.common.headless/feature.xml
new file mode 100644
index 0000000..08d3ce3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/feature.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+      id="org.eclipse.osbp.dsl.feature.common.headless"
+      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.dsl.common.xtext"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.dsl.mwe"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.dsl.datatype.xtext"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.dsl.datatype.lib"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.dsl.common.xtext.edit"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.xtext.basic.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.common.headless/license.html b/org.eclipse.osbp.dsl.feature.common.headless/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/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.dsl.feature.common.headless/pom.xml b/org.eclipse.osbp.dsl.feature.common.headless/pom.xml
new file mode 100644
index 0000000..2efe709
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.common.headless</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.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.semantic.common</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>org.eclipse.osbp.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.common.xtext</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>org.eclipse.osbp.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.datatype.xtext</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 	</dependencies> -->
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.common.headless/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.common.headless/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/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.dsl.feature.common.headless/src/overview.html b/org.eclipse.osbp.dsl.feature.common.headless/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common.headless/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.common/.project b/org.eclipse.osbp.dsl.feature.common/.project
new file mode 100644
index 0000000..1512091
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.common</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.dsl.feature.common/LICENSE.txt b/org.eclipse.osbp.dsl.feature.common/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/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.dsl.feature.common/build.properties b/org.eclipse.osbp.dsl.feature.common/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.common/epl-v10.html b/org.eclipse.osbp.dsl.feature.common/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/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.dsl.feature.common/feature.properties b/org.eclipse.osbp.dsl.feature.common/feature.properties
new file mode 100644
index 0000000..9da4e3b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/feature.properties
@@ -0,0 +1,170 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = OSBP Modeling Tools - Common DSL with UI 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.common/feature.xml b/org.eclipse.osbp.dsl.feature.common/feature.xml
new file mode 100644
index 0000000..33a7f4f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/feature.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Florian Pirchner - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.dsl.feature.common"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName"
+        plugin="org.eclipse.osbp.dsl.common.xtext.ui">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext 2.7.3" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="Kepler" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.common.xtext.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.datatype.xtext.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.xtext.lazyresolver"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.xtext.lazyresolver.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.xtext.lazyresolver.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.common/license.html b/org.eclipse.osbp.dsl.feature.common/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/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.dsl.feature.common/pom.xml b/org.eclipse.osbp.dsl.feature.common/pom.xml
new file mode 100644
index 0000000..d70b2dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/pom.xml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.common</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.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.common.xtext.ui</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>org.eclipse.osbp.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.datatype.xtext.ui</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 	</dependencies> -->
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.common/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.common/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/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.dsl.feature.common/src/overview.html b/org.eclipse.osbp.dsl.feature.common/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.common/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.dto.headless/.project b/org.eclipse.osbp.dsl.feature.dto.headless/.project
new file mode 100644
index 0000000..cd42278
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.dto.headless</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.dsl.feature.dto.headless/LICENSE.txt b/org.eclipse.osbp.dsl.feature.dto.headless/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/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.dsl.feature.dto.headless/build.properties b/org.eclipse.osbp.dsl.feature.dto.headless/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.dto.headless/epl-v10.html b/org.eclipse.osbp.dsl.feature.dto.headless/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/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.dsl.feature.dto.headless/feature.properties b/org.eclipse.osbp.dsl.feature.dto.headless/feature.properties
new file mode 100644
index 0000000..e367103
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = OSBP Modeling Tools - Dto DSL Headless Bundles 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.dto.headless/feature.xml b/org.eclipse.osbp.dsl.feature.dto.headless/feature.xml
new file mode 100644
index 0000000..651167d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/feature.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+      id="org.eclipse.osbp.dsl.feature.dto.headless"
+      label="%featureName"
+      version="0.9.0.qualifier"
+      provider-name="%providerName">
+
+   <description>
+      %description
+   </description>
+
+   <copyright>
+      %copyright
+   </copyright>
+
+   <license url="%licenseURL">
+      %license
+   </license>
+
+   <requires>
+      <import feature="org.eclipse.osbp.dsl.feature.entities.headless" version="0.9.0"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.osbp.dsl.dto.xtext"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.eclipse.osbp.dsl.dto.lib"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.dto.headless/license.html b/org.eclipse.osbp.dsl.feature.dto.headless/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/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.dsl.feature.dto.headless/pom.xml b/org.eclipse.osbp.dsl.feature.dto.headless/pom.xml
new file mode 100644
index 0000000..2092aed
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.dto.headless</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>
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.dto.headless/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.dto.headless/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/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.dsl.feature.dto.headless/src/overview.html b/org.eclipse.osbp.dsl.feature.dto.headless/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto.headless/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.dto/.project b/org.eclipse.osbp.dsl.feature.dto/.project
new file mode 100644
index 0000000..07b152c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.dto</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.dsl.feature.dto/LICENSE.txt b/org.eclipse.osbp.dsl.feature.dto/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/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.dsl.feature.dto/build.properties b/org.eclipse.osbp.dsl.feature.dto/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.dto/epl-v10.html b/org.eclipse.osbp.dsl.feature.dto/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/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.dsl.feature.dto/feature.properties b/org.eclipse.osbp.dsl.feature.dto/feature.properties
new file mode 100644
index 0000000..c27500d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/feature.properties
@@ -0,0 +1,170 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = OSBP Modeling Tools - Dto DSL with UI 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.dto/feature.xml b/org.eclipse.osbp.dsl.feature.dto/feature.xml
new file mode 100644
index 0000000..0e1e6c0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/feature.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.dsl.feature.dto"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName"
+        plugin="org.eclipse.osbp.dsl.entity.xtext.ui">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <requires>
+        <import feature="org.eclipse.osbp.dsl.feature.common" version="0.9.0"/>
+        <import feature="org.eclipse.osbp.dsl.feature.entities" version="0.9.0"/>
+        <import feature="org.eclipse.osbp.dsl.feature.dto.headless" version="0.9.0"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.dto.xtext.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.services.xtext"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.services.xtext.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.dto/license.html b/org.eclipse.osbp.dsl.feature.dto/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/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.dsl.feature.dto/pom.xml b/org.eclipse.osbp.dsl.feature.dto/pom.xml
new file mode 100644
index 0000000..a5ce594
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.dto</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.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.dto.xtext.ui</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 	</dependencies> -->
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.dto/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.dto/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/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.dsl.feature.dto/src/overview.html b/org.eclipse.osbp.dsl.feature.dto/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.dto/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.eclipse.ui/.project b/org.eclipse.osbp.dsl.feature.eclipse.ui/.project
new file mode 100644
index 0000000..cfae8ac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.eclipse.ui</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.dsl.feature.eclipse.ui/LICENSE.txt b/org.eclipse.osbp.dsl.feature.eclipse.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.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.dsl.feature.eclipse.ui/about.ini b/org.eclipse.osbp.dsl.feature.eclipse.ui/about.ini
new file mode 100644
index 0000000..43390cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/about.ini
@@ -0,0 +1,25 @@
+# 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=%blurb
+
+# Property "windowImage" contains path to window icon (16x16)
+# needed for primary features only
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=icons/jautodoc.gif
+
+# Property "aboutImage" contains path to product image (500x330 or 115x164)
+# needed for primary features only
+
+# Property "appName" contains name of the application (translated)
+# needed for primary features only
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+
+# Property "welcomePerspective" contains the id of the perspective in which the
+# welcome page is to be opened.
+# optional
diff --git a/org.eclipse.osbp.dsl.feature.eclipse.ui/build.properties b/org.eclipse.osbp.dsl.feature.eclipse.ui/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.eclipse.ui/epl-v10.html b/org.eclipse.osbp.dsl.feature.eclipse.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.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.dsl.feature.eclipse.ui/feature.properties b/org.eclipse.osbp.dsl.feature.eclipse.ui/feature.properties
new file mode 100644
index 0000000..de7fc7a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/feature.properties
@@ -0,0 +1,170 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName =OSBP Modeling Tools - Eclipse UI Feature 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description= Modeling Tools for Business Software Development
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.eclipse.ui/feature.xml b/org.eclipse.osbp.dsl.feature.eclipse.ui/feature.xml
new file mode 100644
index 0000000..c06c44f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/feature.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.dsl.feature.eclipse.ui"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName"
+        plugin="org.eclipse.osbp.dsl.eclipse.ui">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext 2.7.3" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="luna" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.eclipse.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.eclipse.ui.examples"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.eclipse.ui/license.html b/org.eclipse.osbp.dsl.feature.eclipse.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.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.dsl.feature.eclipse.ui/pom.xml b/org.eclipse.osbp.dsl.feature.eclipse.ui/pom.xml
new file mode 100644
index 0000000..e508ad7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.eclipse.ui</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>
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.eclipse.ui/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.eclipse.ui/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/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.dsl.feature.eclipse.ui/src/overview.html b/org.eclipse.osbp.dsl.feature.eclipse.ui/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.eclipse.ui/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.entities.headless/.project b/org.eclipse.osbp.dsl.feature.entities.headless/.project
new file mode 100644
index 0000000..39bbae9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.entities.headless</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.dsl.feature.entities.headless/LICENSE.txt b/org.eclipse.osbp.dsl.feature.entities.headless/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/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.dsl.feature.entities.headless/build.properties b/org.eclipse.osbp.dsl.feature.entities.headless/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.entities.headless/epl-v10.html b/org.eclipse.osbp.dsl.feature.entities.headless/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/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.dsl.feature.entities.headless/feature.properties b/org.eclipse.osbp.dsl.feature.entities.headless/feature.properties
new file mode 100644
index 0000000..0a0079b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/feature.properties
@@ -0,0 +1,170 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = OSBP Modeling Tools - Entities DSL Headless Bundles 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.entities.headless/feature.xml b/org.eclipse.osbp.dsl.feature.entities.headless/feature.xml
new file mode 100644
index 0000000..254e178
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/feature.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.dsl.feature.entities.headless"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <requires>
+        <import feature="org.eclipse.osbp.dsl.feature.common.headless" version="0.9.0" match="equivalent"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.entity.xtext"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.entity.xtext.edit"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.entities.headless/license.html b/org.eclipse.osbp.dsl.feature.entities.headless/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/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.dsl.feature.entities.headless/pom.xml b/org.eclipse.osbp.dsl.feature.entities.headless/pom.xml
new file mode 100644
index 0000000..7a4ee54
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/pom.xml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.entities.headless</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.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.semantic.entity</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>org.eclipse.osbp.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.entity.xtext</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 		<dependency> -->
+<!-- 			<groupId>org.eclipse.osbp.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.feature.common.headless</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 	</dependencies> -->
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.entities.headless/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.entities.headless/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/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.dsl.feature.entities.headless/src/overview.html b/org.eclipse.osbp.dsl.feature.entities.headless/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities.headless/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.entities/.project b/org.eclipse.osbp.dsl.feature.entities/.project
new file mode 100644
index 0000000..20ad6ce
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.entities</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.dsl.feature.entities/LICENSE.txt b/org.eclipse.osbp.dsl.feature.entities/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/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.dsl.feature.entities/build.properties b/org.eclipse.osbp.dsl.feature.entities/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.entities/epl-v10.html b/org.eclipse.osbp.dsl.feature.entities/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/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.dsl.feature.entities/feature.properties b/org.eclipse.osbp.dsl.feature.entities/feature.properties
new file mode 100644
index 0000000..56eabe2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/feature.properties
@@ -0,0 +1,169 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName = OSBP Modeling Tools - Common DSL Headless Bundles 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=. 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.entities/feature.xml b/org.eclipse.osbp.dsl.feature.entities/feature.xml
new file mode 100644
index 0000000..a564181
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/feature.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.dsl.feature.entities"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName"
+        plugin="org.eclipse.osbp.dsl.entity.xtext.ui">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <requires>
+        <import feature="org.eclipse.osbp.dsl.feature.entities.headless" version="0.9.0"/>
+        <import feature="org.eclipse.osbp.dsl.feature.common" version="0.9.0"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.entity.xtext.ui"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.entities/license.html b/org.eclipse.osbp.dsl.feature.entities/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/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.dsl.feature.entities/pom.xml b/org.eclipse.osbp.dsl.feature.entities/pom.xml
new file mode 100644
index 0000000..a6a0751
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.entities</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.dsl</groupId> -->
+<!-- 			<artifactId>org.eclipse.osbp.dsl.entity.xtext.ui</artifactId> -->
+<!-- 			<version>${project.version}</version> -->
+<!-- 		</dependency> -->
+<!-- 	</dependencies> -->
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.entities/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.entities/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/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.dsl.feature.entities/src/overview.html b/org.eclipse.osbp.dsl.feature.entities/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.entities/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.feature.metadata.builder.participant/.project b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/.project
new file mode 100644
index 0000000..fd336f1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.feature.metadata.builder.participant</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.dsl.feature.metadata.builder.participant/LICENSE.txt b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/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.dsl.feature.metadata.builder.participant/build.properties b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.dsl.feature.metadata.builder.participant/epl-v10.html b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/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.dsl.feature.metadata.builder.participant/feature.properties b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/feature.properties
new file mode 100644
index 0000000..0d1ffd2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/feature.properties
@@ -0,0 +1,174 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = OSBP Metadata Builder-Participant for DSLs 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This features contains builder participants that will scan the \n\
+Targetplatform for dsl files and add them to the runtime builder.\n\
+Metadata of DSLs can be accessed by the use of the OSGi services. \n\
+See org.eclipse.osbp.dsl.xtext.builder.participant/src/org.eclipse.osbp.dsl.xtext.builder.participant
+
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.dsl.feature.metadata.builder.participant/feature.xml b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/feature.xml
new file mode 100644
index 0000000..a3a8e8b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/feature.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.dsl.feature.metadata.builder.participant"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName"
+        plugin="org.eclipse.osbp.dsl.common.xtext.ui">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext 2.7.3" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="luna" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <requires>
+        <import feature="org.eclipse.osbp.dsl.feature.common.headless" version="0.9.0"/>
+        <import feature="org.eclipse.osbp.dsl.feature.dto.headless" version="0.9.0"/>
+        <import feature="org.eclipse.osbp.dsl.feature.entities.headless" version="0.9.0"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.dsl.xtext.builder.participant"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.dsl.feature.metadata.builder.participant/license.html b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/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.dsl.feature.metadata.builder.participant/pom.xml b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/pom.xml
new file mode 100644
index 0000000..46f301e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/pom.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.feature.metadata.builder.participant</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>
+</project>
diff --git a/org.eclipse.osbp.dsl.feature.metadata.builder.participant/src/main/javadoc/README.txt b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/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.dsl.feature.metadata.builder.participant/src/overview.html b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.feature.metadata.builder.participant/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.mwe/.project b/org.eclipse.osbp.dsl.mwe/.project
new file mode 100644
index 0000000..9304f0f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.mwe</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.mwe/LICENSE.txt b/org.eclipse.osbp.dsl.mwe/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/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.dsl.mwe/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.mwe/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f4c081c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.mwe
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.mwe
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.mwe.utils;bundle-version="[1.3.1,1.4.0)";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.7.0,2.8.0)";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types;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)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.emf.ecore.xcore;bundle-version="1.2.0"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Export-Package: org.eclipse.osbp.dsl.mwe;version="0.9.0"
diff --git a/org.eclipse.osbp.dsl.mwe/about.html b/org.eclipse.osbp.dsl.mwe/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/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.dsl.mwe/about.ini b/org.eclipse.osbp.dsl.mwe/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/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.dsl.mwe/about.mappings b/org.eclipse.osbp.dsl.mwe/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/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.dsl.mwe/about.properties b/org.eclipse.osbp.dsl.mwe/about.properties
new file mode 100644
index 0000000..f35e77e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.mwe
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.mwe/build.properties b/org.eclipse.osbp.dsl.mwe/build.properties
new file mode 100644
index 0000000..e28c369
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html 
diff --git a/org.eclipse.osbp.dsl.mwe/epl-v10.html b/org.eclipse.osbp.dsl.mwe/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/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.dsl.mwe/license.html b/org.eclipse.osbp.dsl.mwe/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/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.dsl.mwe/pom.xml b/org.eclipse.osbp.dsl.mwe/pom.xml
new file mode 100644
index 0000000..0c6ed2c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.mwe</artifactId>
+	<packaging>eclipse-plugin</packaging>
+</project>
diff --git a/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/MavenStandaloneSetup.java b/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/MavenStandaloneSetup.java
new file mode 100644
index 0000000..c8593dc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/MavenStandaloneSetup.java
@@ -0,0 +1,562 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2009 committers of openArchitectureWare and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the 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:
+ *     committers of openArchitectureWare - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osbp.dsl.mwe;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.zip.ZipException;
+
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.emf.mwe.core.ConfigurationException;
+import org.eclipse.emf.mwe.core.resources.ResourceLoaderFactory;
+import org.eclipse.emf.mwe.utils.GenModelHelper;
+import org.eclipse.emf.mwe.utils.Mapping;
+import org.eclipse.emf.mwe.utils.ProjectMapping;
+import org.w3c.dom.Document;
+
+/**
+ * Initializes EMF support. Allows to register additional Packages.
+ * 
+ * <h1>Configuration</h1>
+ * 
+ * <h2>platformUri</h2> Set the path to the root of the platform, usually ".."
+ * 
+ * <h3>Explicit platform mapping</h3> If no .project files are available, an
+ * explicit mapping of projectName to path may be established.
+ * 
+ * <pre>
+ * projectMapping = { 
+ *   projectName = 'org.acme.myproject' 
+ *   path = '../org.acme.myproject'
+ * }
+ * </pre>
+ * 
+ * <h2>URI Mapping</h2> Map one URI to another. This is for example required
+ * when some resource refers to another with <tt>platform:/plugin</tt> URIs.
+ * Platform plugin URIs cannot be resolved in standalone mode, thus these URIs
+ * must be mapped to file or platform resource URIs.
+ * 
+ * <pre>
+ * uriMap = {
+ *   from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"
+ *   to = "platform:/resource/myproject/model/Ecore.ecore"
+ * }
+ * </pre>
+ * 
+ * <h2>Bundle name mapping</h2> In the case that the folder name of a project
+ * does not match the bundle name, maps the bundle name to the real directory
+ * name on the platform.
+ * 
+ * <pre>
+ * bundleNameMap = {
+ *   from = "my.bundle.name"
+ *   to = "bundledirectoryname"
+ * }
+ * </pre>
+ */
+public class MavenStandaloneSetup {
+
+	private static String platformRootPath = null;
+	private Map<String, String> bundleNameMapping = new HashMap<String, String>();
+
+	public static String getPlatformRootPath() {
+		return platformRootPath;
+	}
+
+	private Log log = LogFactory.getLog(getClass());
+	static {
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(
+				Resource.Factory.Registry.DEFAULT_EXTENSION,
+				new XMIResourceFactoryImpl());
+		EPackage.Registry.INSTANCE.put(EcorePackage.eINSTANCE.getNsURI(),
+				EcorePackage.eINSTANCE);
+	}
+
+	private boolean ignoreBrokenProjectFiles = false;
+
+	/**
+	 * Allows to ignore exception that occur while reading {@code .project} or
+	 * {@code Manifest.MF} files.
+	 * 
+	 * Default is {@code false}.
+	 */
+	public void setIgnoreBrokenProjectFiles(boolean ignoreBrokenProjectFiles) {
+		this.ignoreBrokenProjectFiles = ignoreBrokenProjectFiles;
+	}
+
+	public boolean isIgnoreBrokenProjectFiles() {
+		return ignoreBrokenProjectFiles;
+	}
+
+	public void setLogResourceUriMap(boolean doLog) {
+		if (!doLog)
+			return;
+		List<Entry<String, URI>> entrySet = new ArrayList<Entry<String, URI>>(
+				EcorePlugin.getPlatformResourceMap().entrySet());
+		Collections.sort(entrySet, new Comparator<Entry<String, URI>>() {
+			public int compare(Entry<String, URI> o1, Entry<String, URI> o2) {
+				return o1.getKey().compareTo(o2.getKey());
+			}
+		});
+		for (Entry<String, URI> entry : entrySet) {
+			log.info(entry.getKey() + " - " + entry.getValue());
+		}
+	}
+
+	public void setScanClassPath(boolean doScan) {
+		if (!doScan)
+			return;
+		String property = System.getProperty("java.class.path");
+		String separator = System.getProperty("path.separator");
+		Set<File> scanned = new HashSet<File>();
+		if (property != null) {
+			String[] entries = property.split(separator);
+			for (String entry : entries) {
+				File file = new File(entry);
+				scanned.add(file);
+				doRegisterResourceMapping(file);
+			}
+		}
+		ClassLoader classLoader = getClass().getClassLoader();
+		if (classLoader instanceof URLClassLoader) {
+			@SuppressWarnings("resource")
+			URLClassLoader urlClassLoader = (URLClassLoader) classLoader;
+			URL[] urLs = urlClassLoader.getURLs();
+			for (URL url : urLs) {
+				File file;
+				try {
+					file = new File(url.toURI());
+					if (scanned.add(file))
+						doRegisterResourceMapping(file);
+				} catch (URISyntaxException e) {
+					log.debug("Couldn't convert url '" + url + "' to a file : "
+							+ e.getMessage());
+				}
+			}
+		}
+	}
+
+	protected void doRegisterResourceMapping(File file) {
+		try {
+			File f = file.getCanonicalFile();
+			if (f.getPath().endsWith(".jar")) {
+				registerBundle(f);
+			} else if (!scanFolder(f)) {
+				// eclipse bin folder?
+				String folderName = f.getCanonicalPath().replace("\\", "/");
+				if (folderName.endsWith("/target/classes")) {
+					File dotProject = new File(f.getParentFile()
+							.getParentFile(), ".project");
+					if (dotProject.exists())
+						registerProject(dotProject);
+				} else if (folderName.endsWith("/bin")) {
+					File dotProject = new File(f.getParentFile(), ".project");
+					if (dotProject.exists())
+						registerProject(dotProject);
+				} else {
+					log.error(folderName + " is not a valid path! Needs /bin or /target/classes");
+				}
+			}
+		} catch (IOException e) {
+			throw new RuntimeException(e);
+		}
+	}
+
+	/**
+	 * sets the platform uri for standalone execution
+	 * 
+	 * @param pathToPlatform
+	 */
+	public void setPlatformUri(String pathToPlatform) {
+		File f = new File(pathToPlatform);
+		if (!f.exists())
+			throw new ConfigurationException("The platformUri location '"
+					+ pathToPlatform + "' does not exist");
+		if (!f.isDirectory())
+			throw new ConfigurationException(
+					"The platformUri location must point to a directory");
+		String path = f.getAbsolutePath();
+		try {
+			path = f.getCanonicalPath();
+		} catch (IOException e) {
+			log.error("Error when registering platform location", e);
+		}
+		if (platformRootPath == null || !platformRootPath.equals(path)) {
+			platformRootPath = path;
+			log.info("Registering platform uri '" + path + "'");
+			if (f.exists()) {
+				if (!scanFolder(f))
+					log.warn("No projects found in platform location '"
+							+ pathToPlatform
+							+ "'\n"
+							+ "because there are no '.project' files.\n"
+							+ "Please use explicit project mappings:\n"
+							+ "    projectMapping = { projectName = 'com.acme' path = '../path/com.acme' }.");
+			}
+		}
+	}
+
+	public void addProjectMapping(ProjectMapping projectMapping) {
+		String projectName = projectMapping.getProjectName();
+		if (isEmptyOrNullString(projectName)) {
+			throw new ConfigurationException("ProjectName must not be empty");
+		}
+		String path = projectMapping.getPath();
+		if (isEmptyOrNullString(path)) {
+			throw new ConfigurationException("Path must not be empty");
+		}
+
+		File f = new File(path);
+		if (!f.exists()) {
+			throw new ConfigurationException("The project's path '" + path
+					+ "' does not exist");
+		}
+		try {
+			URI uri = URI.createFileURI(f.getCanonicalPath() + File.separator);
+			EcorePlugin.getPlatformResourceMap().put(projectName, uri);
+			if (bundleNameMapping.get(projectName) != null) {
+				EcorePlugin.getPlatformResourceMap().put(
+						bundleNameMapping.get(projectName), uri);
+			}
+			log.info("Registering project " + projectName + " at '" + uri + "'");
+		} catch (IOException e) {
+			handleException(f, e);
+		}
+	}
+
+	private boolean isEmptyOrNullString(String string) {
+		return string == null || string.length() == 0;
+	}
+
+	protected boolean scanFolder(File f) {
+		return scanFolder(f, new HashSet<String>());
+	}
+
+	protected boolean scanFolder(File f, Set<String> visitedPathes) {
+		try {
+			if (!visitedPathes.add(f.getCanonicalPath()))
+				return true;
+		} catch (IOException e) {
+			log.error(e.getMessage(), e);
+			return true;
+		}
+		File[] files = f.listFiles();
+		boolean containsProject = false;
+		File dotProject = null;
+		if (files != null) {
+			for (File file : files) {
+				if (file.exists() && file.isDirectory()
+						&& !file.getName().startsWith(".")) {
+					containsProject |= scanFolder(file, visitedPathes);
+				} else if (".project".equals(file.getName())) {
+					dotProject = file;
+				} else if (file.getName().endsWith(".jar")) {
+					registerBundle(file);
+				}
+			}
+		}
+		if (!containsProject && dotProject != null)
+			registerProject(dotProject);
+		return containsProject || dotProject != null;
+	}
+
+	protected void registerBundle(File file) {
+		JarFile jarFile = null;
+		try {
+			jarFile = new JarFile(file);
+			Manifest manifest = jarFile.getManifest();
+			if (manifest == null) {
+				jarFile.close();
+				return;
+			}
+			String name = manifest.getMainAttributes().getValue(
+					"Bundle-SymbolicName");
+			if (name != null) {
+				final int indexOf = name.indexOf(';');
+				if (indexOf > 0)
+					name = name.substring(0, indexOf);
+				String path = "archive:" + file.getCanonicalFile().toURI()
+						+ "!/";
+				URI uri = URI.createURI(path);
+				registerMapping(name, uri);
+			}
+		} catch (ZipException e) {
+			log.warn("Could not open Jar file " + file.getAbsolutePath() + ".");
+		} catch (Exception e) {
+			handleException(file, e);
+		} finally {
+			try {
+				if (jarFile != null)
+					jarFile.close();
+			} catch (IOException e) {
+				log.error(e.getMessage(), e);
+			}
+		}
+	}
+
+	private void handleException(File file, Exception exception) {
+		if (isIgnoreBrokenProjectFiles()) {
+			try {
+				log.warn("Couldn't read " + file.getCanonicalPath());
+			} catch (IOException e) {
+				log.warn("Couldn't read " + file.getAbsolutePath());
+			}
+		} else {
+			throw new RuntimeException(exception);
+		}
+	}
+
+	protected void registerMapping(String name, URI uri) {
+		Map<String, URI> map = EcorePlugin.getPlatformResourceMap();
+		if (log.isDebugEnabled())
+			log.debug("Registering project " + name + " at '" + uri + "'");
+		URI existing = map.put(name, uri);
+		if (existing != null) {
+			if (!existing.equals(uri)) {
+				if (existing.isArchive() == uri.isArchive())
+					log.warn("Skipping conflicting project " + name + " at '"
+							+ existing + "' and using '" + uri + "' instead.");
+				else if (!existing.isArchive() && uri.isArchive()) {
+					if (log.isDebugEnabled())
+						log.debug("Skipping duplicate project " + name
+								+ " at '" + uri + "' and using '" + existing
+								+ "' instead (folders win over JARs).");
+					map.put(name, existing);
+				} else {
+					if (log.isDebugEnabled())
+						log.debug("Skipping duplicate project " + name
+								+ " at '" + existing + "' and using '" + uri
+								+ "' instead (folders win over JARs).");
+				}
+			}
+		} else {
+			String mappedName = bundleNameMapping.get(name);
+			if (mappedName != null)
+				registerMapping(mappedName, uri);
+		}
+	}
+
+	protected void registerProject(File file) {
+		try {
+			Document document = DocumentBuilderFactory.newInstance()
+					.newDocumentBuilder().parse(new FileInputStream(file));
+			String name = document.getDocumentElement()
+					.getElementsByTagName("name").item(0).getTextContent();
+
+			URI uri = URI.createFileURI(file.getParentFile().getCanonicalPath()
+					+ File.separator);
+			registerMapping(name, uri);
+		} catch (Exception e) {
+			handleException(file, e);
+		}
+	}
+
+	/**
+	 * 
+	 * @param uriMap
+	 */
+	public void addUriMap(final Mapping uriMap) {
+		log.info("Adding URI mapping from '" + uriMap.getFrom() + "' to '"
+				+ uriMap.getTo() + "'");
+		final URI baseUri = URI.createURI(uriMap.getFrom());
+		final URI mappedUri = URI.createURI(uriMap.getTo());
+		if (mappedUri == null)
+			throw new ConfigurationException("cannot make URI out of "
+					+ uriMap.getTo());
+		else {
+			URIConverter.URI_MAP.put(baseUri, mappedUri);
+		}
+	}
+
+	/**
+	 * Adds an extension
+	 * 
+	 * @param m
+	 *            <tt>from</tt>: extension name, <tt>to</tt> factory classname
+	 * @throws ConfigurationException
+	 *             <ul>
+	 *             <li>The factory class for the extension cannot be found
+	 *             <li>The inner factory class for the extension cannot be found
+	 *             </ul>
+	 */
+	public void addExtensionMap(final Mapping m) throws ConfigurationException {
+		log.info("Adding Extension mapping from '" + m.getFrom() + "' to '"
+				+ m.getTo() + "'");
+		try {
+			// locate the factory class of the extension
+			Class<?> factoryClass = ResourceLoaderFactory
+					.createResourceLoader().loadClass(m.getTo());
+			if (factoryClass == null)
+				throw new ConfigurationException("cannot find class "
+						+ m.getTo() + " for extension " + m.getFrom());
+			Object factoryInstance = null;
+			if (factoryClass.isInterface()) {
+				final Class<?>[] innerClasses = factoryClass
+						.getDeclaredClasses();
+				factoryClass = null;
+				for (int j = 0; j < innerClasses.length; j++) {
+					if (Resource.Factory.class
+							.isAssignableFrom(innerClasses[j])) {
+						factoryClass = innerClasses[j];
+					}
+				}
+				if (factoryClass == null)
+					throw new ConfigurationException(
+							"cannot find inner factory class " + m.getTo()
+									+ " for extension " + m.getFrom());
+				final Field instanceField = factoryClass.getField("INSTANCE");
+				factoryInstance = instanceField.get(null);
+			} else {
+				factoryInstance = factoryClass.newInstance();
+			}
+			Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(
+					m.getFrom(), factoryInstance);
+		} catch (final Exception e) {
+			throw new ConfigurationException(e);
+		}
+	}
+
+	public void addRegisterGeneratedEPackage(String interfacename) {
+		Class<?> clazz = ResourceLoaderFactory.createResourceLoader()
+				.loadClass(interfacename);
+		if (clazz == null)
+			throw new ConfigurationException("Couldn't find an interface "
+					+ interfacename);
+		try {
+			EPackage pack = (EPackage) clazz.getDeclaredField("eINSTANCE").get(
+					null);
+			registry.put(pack.getNsURI(), pack);
+			log.info("Adding generated EPackage '" + interfacename + "'");
+
+		} catch (Exception e) {
+			throw new ConfigurationException("Couldn't register "
+					+ interfacename
+					+ ". Is it the generated EPackage interface? : "
+					+ e.getMessage());
+		}
+	}
+
+	protected ResourceSet resourceSet = new ResourceSetImpl();
+	protected Registry registry = EPackage.Registry.INSTANCE;
+
+	public void setResourceSet(ResourceSet resourceSet) {
+		log.info("Using resourceSet registry. The registered Packages will not be registered in the global EPackage.Registry.INSTANCE!");
+		this.resourceSet = resourceSet;
+		this.registry = resourceSet.getPackageRegistry();
+	}
+
+	public void setResourceSetImpl(ResourceSetImpl resourceSet) {
+		setResourceSet(resourceSet);
+	}
+
+	protected GenModelHelper createGenModelHelper() {
+		return new GenModelHelper();
+	}
+
+	public void addRegisterGenModelFile(String fileName) {
+		createGenModelHelper().registerGenModel(resourceSet,
+				createURI(fileName));
+	}
+
+	public void addRegisterEcoreFile(String fileName)
+			throws IllegalArgumentException, SecurityException {
+		Resource res = resourceSet.getResource(createURI(fileName), true);
+		if (res == null)
+			throw new ConfigurationException("Couldn't find resource under  "
+					+ fileName);
+		if (!res.isLoaded()) {
+			try {
+				res.load(null);
+			} catch (IOException e) {
+				throw new ConfigurationException(
+						"Couldn't load resource under  " + fileName + " : "
+								+ e.getMessage());
+			}
+		}
+		List<EObject> result = res.getContents();
+		for (EObject object : result) {
+			if (object instanceof EPackage) {
+				registerPackage(fileName, object);
+			}
+			for (final TreeIterator<EObject> it = object.eAllContents(); it
+					.hasNext();) {
+				EObject child = it.next();
+				if (child instanceof EPackage) {
+					registerPackage(fileName, child);
+				}
+			}
+		}
+	}
+
+	public EPackage getPackage(String nsUri) {
+		return (EPackage) registry.get(nsUri);
+	}
+
+	public void addBundleNameMap(Mapping mapping) {
+		bundleNameMapping.put(mapping.getFrom(), mapping.getTo());
+	}
+
+	private URI createURI(String path) {
+		if (path == null)
+			throw new IllegalArgumentException();
+
+		URI uri = URI.createURI(path);
+		if (uri.isRelative()) {
+			URI resolvedURI = URI.createFileURI(new File(path)
+					.getAbsolutePath());
+			return resolvedURI;
+		}
+		return uri;
+	}
+
+	private void registerPackage(String fileName, EObject object) {
+		String nsUri = ((EPackage) object).getNsURI();
+		if (registry.get(nsUri) == null) {
+			registry.put(nsUri, object);
+			log.info("Adding dynamic EPackage '" + nsUri + "' from '"
+					+ fileName + "'");
+		} else if (log.isDebugEnabled()) {
+			log.debug("Dynamic EPackage '" + nsUri + "' from '" + fileName
+					+ "' already in the registry!");
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/PackageMapping.java b/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/PackageMapping.java
new file mode 100644
index 0000000..0e4c015
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/PackageMapping.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.mwe;
+
+public class PackageMapping {
+
+	private String nsURI;
+	private String packageClass;
+	private String factoryClass;
+
+	public String getNsURI() {
+		return nsURI;
+	}
+
+	public void setNsURI(String nsURI) {
+		this.nsURI = nsURI;
+	}
+
+	public String getPackageClass() {
+		return packageClass;
+	}
+
+	public void setPackageClass(String packageClass) {
+		this.packageClass = packageClass;
+	}
+
+	public String getFactoryClass() {
+		return factoryClass;
+	}
+
+	public void setFactoryClass(String factoryClass) {
+		this.factoryClass = factoryClass;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/SemanticModelSetupComponent.java b/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/SemanticModelSetupComponent.java
new file mode 100644
index 0000000..a71ae9b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.mwe/src/org/eclipse/osbp/dsl/mwe/SemanticModelSetupComponent.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.mwe;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.eclipse.emf.ecore.EFactory;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.mwe.core.ConfigurationException;
+import org.eclipse.emf.mwe.core.WorkflowContext;
+import org.eclipse.emf.mwe.core.issues.Issues;
+import org.eclipse.emf.mwe.core.lib.AbstractWorkflowComponent2;
+import org.eclipse.emf.mwe.core.monitor.ProgressMonitor;
+import org.eclipse.emf.mwe.core.resources.ResourceLoaderFactory;
+
+public class SemanticModelSetupComponent extends AbstractWorkflowComponent2 {
+
+	private Log log = LogFactory.getLog(getClass());
+
+	@Override
+	protected void invokeInternal(WorkflowContext ctx, ProgressMonitor monitor,
+			Issues issues) {
+	}
+
+	public void addEPackage(PackageMapping mapping) {
+		try {
+			System.getProperties();
+			
+			EPackage.Registry.INSTANCE.getEPackage(mapping.getNsURI());
+			if (!EPackage.Registry.INSTANCE.containsKey(mapping.getNsURI())) {
+				Class<?> clazz = ResourceLoaderFactory.createResourceLoader()
+						.loadClass(mapping.getPackageClass());
+				if (clazz == null)
+					throw new ConfigurationException(
+							"Couldn't find an interface "
+									+ mapping.getPackageClass());
+
+				EPackage pack = (EPackage) clazz.getDeclaredField("eINSTANCE")
+						.get(null);
+				EPackage.Registry.INSTANCE.put(pack.getNsURI(), pack);
+				log.info("Adding generated EPackage '"
+						+ mapping.getPackageClass() + "'");
+
+				@SuppressWarnings("unchecked")
+				Class<EFactory> factoryClazz = (Class<EFactory>) ResourceLoaderFactory
+						.createResourceLoader().loadClass(
+								mapping.getFactoryClass());
+				if (factoryClazz != null) {
+					pack.setEFactoryInstance(factoryClazz.newInstance());
+					log.info("Set EFactory " + mapping.getFactoryClass()
+							+ " to package " + mapping.getPackageClass());
+				}
+			}
+
+		} catch (Exception e) {
+			throw new ConfigurationException("Couldn't register "
+					+ mapping.getPackageClass()
+					+ ". Is it the generated EPackage interface? : "
+					+ e.getMessage());
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.lib/.project b/org.eclipse.osbp.dsl.services.lib/.project
new file mode 100644
index 0000000..88edd68
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.lib/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.services.lib</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</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>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/.project b/org.eclipse.osbp.dsl.services.xtext.edit/.project
new file mode 100644
index 0000000..5b5cc66
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.services.xtext.edit</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.dsl.services.xtext.edit/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.services.xtext.edit/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4d35fa2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.osbp.dsl.services.xtext.edit;singleton:=true
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.osbp.dsl.semantic.service.provider.ServiceEditPlugin$Implementation
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.semantic.service.provider
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.osbp.dsl.services.xtext;visibility:=reexport,
+ org.eclipse.emf.edit;visibility:=reexport,
+ org.eclipse.osbp.dsl.dto.xtext;visibility:=reexport,
+ org.eclipse.osbp.dsl.dto.xtext.edit;visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext;visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext.edit;visibility:=reexport,
+ org.eclipse.xtext.common.types;visibility:=reexport,
+ org.eclipse.xtext.common.types.edit;visibility:=reexport,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.xtext.xbase;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/about.html b/org.eclipse.osbp.dsl.services.xtext.edit/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/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.dsl.services.xtext.edit/about.ini b/org.eclipse.osbp.dsl.services.xtext.edit/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/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.dsl.services.xtext.edit/about.mappings b/org.eclipse.osbp.dsl.services.xtext.edit/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/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.dsl.services.xtext.edit/about.properties b/org.eclipse.osbp.dsl.services.xtext.edit/about.properties
new file mode 100644
index 0000000..befee55
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.services.xtext.edit
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/build.properties b/org.eclipse.osbp.dsl.services.xtext.edit/build.properties
new file mode 100644
index 0000000..1c0af13
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  .,\
+               icons/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = target/classes/
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..4bef1cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..19ae144
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..29daffe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..f2eedab
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..9c9b7c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..f3fb35e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..3bed4f3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..9f92d6f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..e9ccde5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_dtoJvm_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_filterable_LFilterableAttributes.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_filterable_LFilterableAttributes.gif
new file mode 100644
index 0000000..dcdb496
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_filterable_LFilterableAttributes.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_sortable_LSortableAttributes.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_sortable_LSortableAttributes.gif
new file mode 100644
index 0000000..9c9b7c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_sortable_LSortableAttributes.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_validators_LValidator.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_validators_LValidator.gif
new file mode 100644
index 0000000..d2df954
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDTOService_validators_LValidator.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDto_features_LServiceOperation.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDto_features_LServiceOperation.gif
new file mode 100644
index 0000000..691dd11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLDto_features_LServiceOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LChartService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LChartService.gif
new file mode 100644
index 0000000..1ed56d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LChartService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDTOService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDTOService.gif
new file mode 100644
index 0000000..263f6e6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LDTOService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LFreeService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LFreeService.gif
new file mode 100644
index 0000000..795a026
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LFreeService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LServiceOperation.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LServiceOperation.gif
new file mode 100644
index 0000000..6b664dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLFeature_annotationInfo_LServiceOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..41c86b3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..5550cf3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..3cb39d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..238a342
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..84d6297
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..1dd69bb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..c9c2343
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..6c65e3a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..04b6132
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedService_service_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedServices_services_LInjectedService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedServices_services_LInjectedService.gif
new file mode 100644
index 0000000..b33e855
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLInjectedServices_services_LInjectedService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLServiceModel_packages_LTypedPackage.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLServiceModel_packages_LTypedPackage.gif
new file mode 100644
index 0000000..bdbdd7b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLServiceModel_packages_LTypedPackage.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLService_injectedServices_LInjectedServices.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLService_injectedServices_LInjectedServices.gif
new file mode 100644
index 0000000..72187d3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLService_injectedServices_LInjectedServices.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLService_operations_LServiceOperation.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLService_operations_LServiceOperation.gif
new file mode 100644
index 0000000..c617702
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLService_operations_LServiceOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LChartService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LChartService.gif
new file mode 100644
index 0000000..266d267
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LChartService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDTOService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDTOService.gif
new file mode 100644
index 0000000..78ca278
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LDTOService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LFreeService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LFreeService.gif
new file mode 100644
index 0000000..e0a7f3a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LFreeService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LServiceOperation.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LServiceOperation.gif
new file mode 100644
index 0000000..0b23dfa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLType_annotationInfo_LServiceOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LChartService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LChartService.gif
new file mode 100644
index 0000000..f02a6fd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LChartService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDTOService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDTOService.gif
new file mode 100644
index 0000000..d8d5fa9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LDTOService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LFreeService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LFreeService.gif
new file mode 100644
index 0000000..0b72453
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLTypedPackage_types_LFreeService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmAnyTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmAnyTypeReference.gif
new file mode 100644
index 0000000..a1f74dd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmAnyTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmDelegateTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmDelegateTypeReference.gif
new file mode 100644
index 0000000..ce29156
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmDelegateTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmGenericArrayTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmGenericArrayTypeReference.gif
new file mode 100644
index 0000000..a164d14
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmGenericArrayTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmInnerTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmInnerTypeReference.gif
new file mode 100644
index 0000000..cdf1a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmInnerTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmMultiTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmMultiTypeReference.gif
new file mode 100644
index 0000000..0a4d20c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmMultiTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmParameterizedTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmParameterizedTypeReference.gif
new file mode 100644
index 0000000..1aa8543
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmParameterizedTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmSynonymTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmSynonymTypeReference.gif
new file mode 100644
index 0000000..a548cc2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmSynonymTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmUnknownTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmUnknownTypeReference.gif
new file mode 100644
index 0000000..c9f5c5c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmUnknownTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmWildcardTypeReference.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmWildcardTypeReference.gif
new file mode 100644
index 0000000..833ad7c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/ctool16/CreateLValidator_validatorType_JvmWildcardTypeReference.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LChartService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LChartService.gif
new file mode 100644
index 0000000..caf2804
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LChartService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LDTOService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LDTOService.gif
new file mode 100644
index 0000000..d3dc5a9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LDTOService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LFilterableAttributes.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LFilterableAttributes.gif
new file mode 100644
index 0000000..5915591
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LFilterableAttributes.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LFreeService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LFreeService.gif
new file mode 100644
index 0000000..106881e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LFreeService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LInjectedService.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LInjectedService.gif
new file mode 100644
index 0000000..4365960
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LInjectedService.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LInjectedServices.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LInjectedServices.gif
new file mode 100644
index 0000000..7bac4fd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LInjectedServices.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LServiceModel.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LServiceModel.gif
new file mode 100644
index 0000000..94c953e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LServiceModel.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LServiceOperation.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LServiceOperation.gif
new file mode 100644
index 0000000..7c2aaac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LServiceOperation.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LSortableAttributes.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LSortableAttributes.gif
new file mode 100644
index 0000000..33854e9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LSortableAttributes.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LValidator.gif b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LValidator.gif
new file mode 100644
index 0000000..8a5c70c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/icons/full/obj16/LValidator.gif
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/plugin.properties b/org.eclipse.osbp.dsl.services.xtext.edit/plugin.properties
new file mode 100644
index 0000000..8dd1f5b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/plugin.properties
@@ -0,0 +1,336 @@
+# 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 = Service Edit Support
+providerName = www.example.org
+
+_UI_CreateChild_text = {0}
+_UI_CreateChild_text2 = {1} {0}
+_UI_CreateChild_text3 = {1}
+_UI_CreateChild_tooltip = Create New {0} Under {1} Feature
+_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}.
+_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent.
+
+_UI_PropertyDescriptor_description = The {0} of the {1}
+
+_UI_LServiceModel_type = LService Model
+_UI_LService_type = LService
+_UI_LInjectedServices_type = LInjected Services
+_UI_LInjectedService_type = LInjected Service
+_UI_LDTOService_type = LDTO Service
+_UI_LValidator_type = LValidator
+_UI_LFilterableAttributes_type = LFilterable Attributes
+_UI_LSortableAttributes_type = LSortable Attributes
+_UI_LChartService_type = LChart Service
+_UI_LFreeService_type = LFree Service
+_UI_LServiceOperation_type = LService Operation
+_UI_EAttribute_type = EAttribute
+_UI_EAnnotation_type = EAnnotation
+_UI_EClass_type = EClass
+_UI_EClassifier_type = EClassifier
+_UI_EDataType_type = EData Type
+_UI_EEnum_type = EEnum
+_UI_EEnumLiteral_type = EEnum Literal
+_UI_EFactory_type = EFactory
+_UI_EModelElement_type = EModel Element
+_UI_ENamedElement_type = ENamed Element
+_UI_EObject_type = EObject
+_UI_EOperation_type = EOperation
+_UI_EPackage_type = EPackage
+_UI_EParameter_type = EParameter
+_UI_EReference_type = EReference
+_UI_EStructuralFeature_type = EStructural Feature
+_UI_ETypedElement_type = ETyped Element
+_UI_EStringToStringMapEntry_type = EString To String Map Entry
+_UI_EGenericType_type = EGeneric Type
+_UI_ETypeParameter_type = EType Parameter
+_UI_XAnnotation_type = XAnnotation
+_UI_XAnnotationElementValuePair_type = XAnnotation Element Value Pair
+_UI_XExpression_type = XExpression
+_UI_XIfExpression_type = XIf Expression
+_UI_XSwitchExpression_type = XSwitch Expression
+_UI_XCasePart_type = XCase Part
+_UI_XBlockExpression_type = XBlock Expression
+_UI_XVariableDeclaration_type = XVariable Declaration
+_UI_XAbstractFeatureCall_type = XAbstract Feature Call
+_UI_XMemberFeatureCall_type = XMember Feature Call
+_UI_XFeatureCall_type = XFeature Call
+_UI_XConstructorCall_type = XConstructor Call
+_UI_XBooleanLiteral_type = XBoolean Literal
+_UI_XNullLiteral_type = XNull Literal
+_UI_XNumberLiteral_type = XNumber Literal
+_UI_XStringLiteral_type = XString Literal
+_UI_XCollectionLiteral_type = XCollection Literal
+_UI_XListLiteral_type = XList Literal
+_UI_XSetLiteral_type = XSet Literal
+_UI_XClosure_type = XClosure
+_UI_XCastedExpression_type = XCasted Expression
+_UI_XBinaryOperation_type = XBinary Operation
+_UI_XUnaryOperation_type = XUnary Operation
+_UI_XPostfixOperation_type = XPostfix Operation
+_UI_XForLoopExpression_type = XFor Loop Expression
+_UI_XBasicForLoopExpression_type = XBasic For Loop Expression
+_UI_XAbstractWhileExpression_type = XAbstract While Expression
+_UI_XDoWhileExpression_type = XDo While Expression
+_UI_XWhileExpression_type = XWhile Expression
+_UI_XTypeLiteral_type = XType Literal
+_UI_XInstanceOfExpression_type = XInstance Of Expression
+_UI_XThrowExpression_type = XThrow Expression
+_UI_XTryCatchFinallyExpression_type = XTry Catch Finally Expression
+_UI_XCatchClause_type = XCatch Clause
+_UI_XAssignment_type = XAssignment
+_UI_XReturnExpression_type = XReturn Expression
+_UI_XSynchronizedExpression_type = XSynchronized Expression
+_UI_Unknown_type = Object
+
+_UI_Unknown_datatype= Value
+
+_UI_LServiceModel_packages_feature = Packages
+_UI_LService_injectedServices_feature = Injected Services
+_UI_LService_operations_feature = Operations
+_UI_LInjectedServices_services_feature = Services
+_UI_LInjectedService_cardinality_feature = Cardinality
+_UI_LInjectedService_attributeName_feature = Attribute Name
+_UI_LInjectedService_service_feature = Service
+_UI_LDTOService_dto_feature = Dto
+_UI_LDTOService_dtoJvm_feature = Dto Jvm
+_UI_LDTOService_mutablePersistenceId_feature = Mutable Persistence Id
+_UI_LDTOService_persistenceId_feature = Persistence Id
+_UI_LDTOService_validators_feature = Validators
+_UI_LDTOService_filterable_feature = Filterable
+_UI_LDTOService_sortable_feature = Sortable
+_UI_LValidator_validatorId_feature = Validator Id
+_UI_LValidator_validatorType_feature = Validator Type
+_UI_LFilterableAttributes_parent_feature = Parent
+_UI_LFilterableAttributes_filterableFeatures_feature = Filterable Features
+_UI_LSortableAttributes_parent_feature = Parent
+_UI_LSortableAttributes_sortableFeatures_feature = Sortable Features
+_UI_EAttribute_iD_feature = ID
+_UI_EAttribute_iD_description = Whether the value of this attribute uniquely identifies an object within its containing resource
+_UI_EAttribute_eAttributeType_feature = EAttribute Type
+_UI_EAttribute_eAttributeType_description = The data type of this attribute
+_UI_EAnnotation_source_feature = Source
+_UI_EAnnotation_source_description = An identifier, typically an absolute URI, that uniquely identifies this kind of annotation
+_UI_EAnnotation_details_feature = Details
+_UI_EAnnotation_eModelElement_feature = EModel Element
+_UI_EAnnotation_contents_feature = Contents
+_UI_EAnnotation_references_feature = References
+_UI_EAnnotation_references_description = Objects referenced by this annotation
+_UI_EClass_abstract_feature = Abstract
+_UI_EClass_abstract_description = Whether instances of this class can be created
+_UI_EClass_interface_feature = Interface
+_UI_EClass_interface_description = Whether no corresponding implementation will be generated for this class
+_UI_EClass_eSuperTypes_feature = ESuper Types
+_UI_EClass_eSuperTypes_description = The immediate super types of this class
+_UI_EClass_eOperations_feature = EOperations
+_UI_EClass_eOperations_description = The operations defined by this class
+_UI_EClass_eAllAttributes_feature = EAll Attributes
+_UI_EClass_eAllReferences_feature = EAll References
+_UI_EClass_eReferences_feature = EReferences
+_UI_EClass_eAttributes_feature = EAttributes
+_UI_EClass_eAllContainments_feature = EAll Containments
+_UI_EClass_eAllOperations_feature = EAll Operations
+_UI_EClass_eAllStructuralFeatures_feature = EAll Structural Features
+_UI_EClass_eAllSuperTypes_feature = EAll Super Types
+_UI_EClass_eIDAttribute_feature = EID Attribute
+_UI_EClass_eStructuralFeatures_feature = EStructural Features
+_UI_EClass_eGenericSuperTypes_feature = EGeneric Super Types
+_UI_EClass_eAllGenericSuperTypes_feature = EAll Generic Super Types
+_UI_EClassifier_instanceClassName_feature = Instance Class Name
+_UI_EClassifier_instanceClassName_description = The erased instance class name denoted by this classifier
+_UI_EClassifier_instanceClass_feature = Instance Class
+_UI_EClassifier_defaultValue_feature = Default Value
+_UI_EClassifier_defaultValue_description = The default value for features of this type
+_UI_EClassifier_instanceTypeName_feature = Instance Type Name
+_UI_EClassifier_instanceTypeName_description = The full instance type name denoted by this classifier
+_UI_EClassifier_ePackage_feature = EPackage
+_UI_EClassifier_eTypeParameters_feature = EType Parameters
+_UI_EDataType_serializable_feature = Serializable
+_UI_EDataType_serializable_description = Whether a value of this data type can be serialized using the factory
+_UI_EEnum_eLiterals_feature = ELiterals
+_UI_EEnumLiteral_value_feature = Value
+_UI_EEnumLiteral_value_description = The integer value associated with this enumerator
+_UI_EEnumLiteral_instance_feature = Instance
+_UI_EEnumLiteral_literal_feature = Literal
+_UI_EEnumLiteral_literal_description = The literal value associated with this enumerator
+_UI_EEnumLiteral_eEnum_feature = EEnum
+_UI_EFactory_ePackage_feature = EPackage
+_UI_EFactory_ePackage_description = The package corresponding to this factory
+_UI_EModelElement_eAnnotations_feature = EAnnotations
+_UI_ENamedElement_name_feature = Name
+_UI_ENamedElement_name_description = The name of this model element
+_UI_EOperation_eContainingClass_feature = EContaining Class
+_UI_EOperation_eTypeParameters_feature = EType Parameters
+_UI_EOperation_eParameters_feature = EParameters
+_UI_EOperation_eExceptions_feature = EExceptions
+_UI_EOperation_eExceptions_description = The exceptions thrown by this operation
+_UI_EOperation_eGenericExceptions_feature = EGeneric Exceptions
+_UI_EPackage_nsURI_feature = Ns URI
+_UI_EPackage_nsURI_description = The universally unique namespace identifier, typically an absolute URI, for this package
+_UI_EPackage_nsPrefix_feature = Ns Prefix
+_UI_EPackage_nsPrefix_description = The namespace prefix used by default when serializing instances of the package's classes
+_UI_EPackage_eFactoryInstance_feature = EFactory Instance
+_UI_EPackage_eFactoryInstance_description = The factory corresponding to this package
+_UI_EPackage_eClassifiers_feature = EClassifiers
+_UI_EPackage_eSubpackages_feature = ESubpackages
+_UI_EPackage_eSuperPackage_feature = ESuper Package
+_UI_EParameter_eOperation_feature = EOperation
+_UI_EReference_containment_feature = Containment
+_UI_EReference_containment_description = Whether this reference represents a composite relationship
+_UI_EReference_container_feature = Container
+_UI_EReference_container_description = Whether this reference has as its opposite a containment reference
+_UI_EReference_resolveProxies_feature = Resolve Proxies
+_UI_EReference_resolveProxies_description = Whether this reference resolves proxies automatically
+_UI_EReference_eOpposite_feature = EOpposite
+_UI_EReference_eOpposite_description = The reference that represents the bidirectional opposite of this reference
+_UI_EReference_eReferenceType_feature = EReference Type
+_UI_EReference_eReferenceType_description = The target class of the reference
+_UI_EReference_eKeys_feature = EKeys
+_UI_EReference_eKeys_description = The attributes of the referenced class that uniquely identify a referenced instance
+_UI_EStructuralFeature_changeable_feature = Changeable
+_UI_EStructuralFeature_changeable_description = Whether the value of this feature can be changed
+_UI_EStructuralFeature_volatile_feature = Volatile
+_UI_EStructuralFeature_volatile_description = Whether no field will be generated for this feature
+_UI_EStructuralFeature_transient_feature = Transient
+_UI_EStructuralFeature_transient_description = Whether the value of this feature will be serialized
+_UI_EStructuralFeature_defaultValueLiteral_feature = Default Value Literal
+_UI_EStructuralFeature_defaultValueLiteral_description = The literal representation of the default value for this feature
+_UI_EStructuralFeature_defaultValue_feature = Default Value
+_UI_EStructuralFeature_defaultValue_description = The default value for this feature
+_UI_EStructuralFeature_unsettable_feature = Unsettable
+_UI_EStructuralFeature_unsettable_description = Whether the value space for this feature includes the state of not being set
+_UI_EStructuralFeature_derived_feature = Derived
+_UI_EStructuralFeature_derived_description = Whether the value of this feature is derived from the values of other features
+_UI_EStructuralFeature_eContainingClass_feature = EContaining Class
+_UI_EStructuralFeature_eContainingClass_description = The class that defines this feature
+_UI_ETypedElement_ordered_feature = Ordered
+_UI_ETypedElement_ordered_description = Whether the order in which values occur is meaningful
+_UI_ETypedElement_unique_feature = Unique
+_UI_ETypedElement_unique_description = Whether the same value may occur more than once
+_UI_ETypedElement_lowerBound_feature = Lower Bound
+_UI_ETypedElement_lowerBound_description = The minimum number of values that must occur
+_UI_ETypedElement_upperBound_feature = Upper Bound
+_UI_ETypedElement_upperBound_description = The maximum number of values that may occur; -1 represents unbounded and -2 represents unspecified
+_UI_ETypedElement_many_feature = Many
+_UI_ETypedElement_many_description = Whether more than one value may occur
+_UI_ETypedElement_required_feature = Required
+_UI_ETypedElement_required_description = Whether at least one value must occur
+_UI_ETypedElement_eType_feature = EType
+_UI_ETypedElement_eType_description = The type of this element
+_UI_ETypedElement_eGenericType_feature = EGeneric Type
+_UI_EStringToStringMapEntry_key_feature = Key
+_UI_EStringToStringMapEntry_key_description = The key of this map entry
+_UI_EStringToStringMapEntry_value_feature = Value
+_UI_EStringToStringMapEntry_value_description = The value of this map entry
+_UI_EGenericType_eUpperBound_feature = EUpper Bound
+_UI_EGenericType_eTypeArguments_feature = EType Arguments
+_UI_EGenericType_eRawType_feature = ERaw Type
+_UI_EGenericType_eRawType_description = The erased type denoted by this generic type
+_UI_EGenericType_eLowerBound_feature = ELower Bound
+_UI_EGenericType_eTypeParameter_feature = EType Parameter
+_UI_EGenericType_eTypeParameter_description = The type parameter denoted by this generic type
+_UI_EGenericType_eClassifier_feature = EClassifier
+_UI_EGenericType_eClassifier_description = The classifier denoted by this generic type
+_UI_ETypeParameter_eBounds_feature = EBounds
+_UI_XAnnotation_elementValuePairs_feature = Element Value Pairs
+_UI_XAnnotation_annotationType_feature = Annotation Type
+_UI_XAnnotation_value_feature = Value
+_UI_XAnnotationElementValuePair_value_feature = Value
+_UI_XAnnotationElementValuePair_element_feature = Element
+_UI_XIfExpression_if_feature = If
+_UI_XIfExpression_then_feature = Then
+_UI_XIfExpression_else_feature = Else
+_UI_XSwitchExpression_switch_feature = Switch
+_UI_XSwitchExpression_cases_feature = Cases
+_UI_XSwitchExpression_default_feature = Default
+_UI_XSwitchExpression_declaredParam_feature = Declared Param
+_UI_XCasePart_case_feature = Case
+_UI_XCasePart_then_feature = Then
+_UI_XCasePart_typeGuard_feature = Type Guard
+_UI_XCasePart_fallThrough_feature = Fall Through
+_UI_XBlockExpression_expressions_feature = Expressions
+_UI_XVariableDeclaration_type_feature = Type
+_UI_XVariableDeclaration_name_feature = Name
+_UI_XVariableDeclaration_right_feature = Right
+_UI_XVariableDeclaration_writeable_feature = Writeable
+_UI_XAbstractFeatureCall_feature_feature = Feature
+_UI_XAbstractFeatureCall_typeArguments_feature = Type Arguments
+_UI_XAbstractFeatureCall_implicitReceiver_feature = Implicit Receiver
+_UI_XAbstractFeatureCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XAbstractFeatureCall_validFeature_feature = Valid Feature
+_UI_XAbstractFeatureCall_implicitFirstArgument_feature = Implicit First Argument
+_UI_XMemberFeatureCall_memberCallTarget_feature = Member Call Target
+_UI_XMemberFeatureCall_memberCallArguments_feature = Member Call Arguments
+_UI_XMemberFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XMemberFeatureCall_explicitStatic_feature = Explicit Static
+_UI_XMemberFeatureCall_nullSafe_feature = Null Safe
+_UI_XMemberFeatureCall_typeLiteral_feature = Type Literal
+_UI_XMemberFeatureCall_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XMemberFeatureCall_packageFragment_feature = Package Fragment
+_UI_XFeatureCall_featureCallArguments_feature = Feature Call Arguments
+_UI_XFeatureCall_explicitOperationCall_feature = Explicit Operation Call
+_UI_XFeatureCall_typeLiteral_feature = Type Literal
+_UI_XFeatureCall_packageFragment_feature = Package Fragment
+_UI_XConstructorCall_constructor_feature = Constructor
+_UI_XConstructorCall_arguments_feature = Arguments
+_UI_XConstructorCall_typeArguments_feature = Type Arguments
+_UI_XConstructorCall_invalidFeatureIssueCode_feature = Invalid Feature Issue Code
+_UI_XConstructorCall_validFeature_feature = Valid Feature
+_UI_XConstructorCall_explicitConstructorCall_feature = Explicit Constructor Call
+_UI_XConstructorCall_anonymousClassConstructorCall_feature = Anonymous Class Constructor Call
+_UI_XBooleanLiteral_isTrue_feature = Is True
+_UI_XNumberLiteral_value_feature = Value
+_UI_XStringLiteral_value_feature = Value
+_UI_XCollectionLiteral_elements_feature = Elements
+_UI_XClosure_declaredFormalParameters_feature = Declared Formal Parameters
+_UI_XClosure_expression_feature = Expression
+_UI_XClosure_explicitSyntax_feature = Explicit Syntax
+_UI_XClosure_implicitFormalParameters_feature = Implicit Formal Parameters
+_UI_XCastedExpression_type_feature = Type
+_UI_XCastedExpression_target_feature = Target
+_UI_XBinaryOperation_leftOperand_feature = Left Operand
+_UI_XBinaryOperation_rightOperand_feature = Right Operand
+_UI_XBinaryOperation_reassignFirstArgument_feature = Reassign First Argument
+_UI_XUnaryOperation_operand_feature = Operand
+_UI_XPostfixOperation_operand_feature = Operand
+_UI_XForLoopExpression_forExpression_feature = For Expression
+_UI_XForLoopExpression_eachExpression_feature = Each Expression
+_UI_XForLoopExpression_declaredParam_feature = Declared Param
+_UI_XBasicForLoopExpression_expression_feature = Expression
+_UI_XBasicForLoopExpression_eachExpression_feature = Each Expression
+_UI_XBasicForLoopExpression_initExpressions_feature = Init Expressions
+_UI_XBasicForLoopExpression_updateExpressions_feature = Update Expressions
+_UI_XAbstractWhileExpression_predicate_feature = Predicate
+_UI_XAbstractWhileExpression_body_feature = Body
+_UI_XTypeLiteral_type_feature = Type
+_UI_XTypeLiteral_arrayDimensions_feature = Array Dimensions
+_UI_XInstanceOfExpression_type_feature = Type
+_UI_XInstanceOfExpression_expression_feature = Expression
+_UI_XThrowExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_expression_feature = Expression
+_UI_XTryCatchFinallyExpression_finallyExpression_feature = Finally Expression
+_UI_XTryCatchFinallyExpression_catchClauses_feature = Catch Clauses
+_UI_XCatchClause_expression_feature = Expression
+_UI_XCatchClause_declaredParam_feature = Declared Param
+_UI_XAssignment_assignable_feature = Assignable
+_UI_XAssignment_value_feature = Value
+_UI_XAssignment_explicitStatic_feature = Explicit Static
+_UI_XAssignment_staticWithDeclaringType_feature = Static With Declaring Type
+_UI_XReturnExpression_expression_feature = Expression
+_UI_XSynchronizedExpression_param_feature = Param
+_UI_XSynchronizedExpression_expression_feature = Expression
+_UI_Unknown_feature = Unspecified
+
+_UI_LCardinality_ZERO_TO_ONE_literal = ZERO_TO_ONE
+_UI_LCardinality_ONE_TO_ONE_literal = ONE_TO_ONE
+_UI_LCardinality_ZERO_TO_MANY_literal = ZERO_TO_MANY
+_UI_LCardinality_ONE_TO_MANY_literal = ONE_TO_MANY
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/plugin.xml b/org.eclipse.osbp.dsl.services.xtext.edit/plugin.xml
new file mode 100644
index 0000000..e822a49
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/plugin.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ 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 
+  
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories">
+      <!-- @generated services -->
+      <factory
+            uri="http://osbp.eclipse.org/dsl/services/v1"
+            class="org.eclipse.osbp.dsl.semantic.service.provider.OSBPServiceItemProviderAdapterFactory"
+            supportedTypes=
+              "org.eclipse.emf.edit.provider.IEditingDomainItemProvider
+               org.eclipse.emf.edit.provider.IStructuredItemContentProvider
+               org.eclipse.emf.edit.provider.ITreeItemContentProvider
+               org.eclipse.emf.edit.provider.IItemLabelProvider
+               org.eclipse.emf.edit.provider.IItemPropertySource"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.edit.childCreationExtenders">
+      <!-- @generated services -->
+      <extender
+            uri="http://osbp.eclipse.org/dsl/dto/v1"
+            class="org.eclipse.osbp.dsl.semantic.service.provider.OSBPServiceItemProviderAdapterFactory$OSBPDtoChildCreationExtender"/>
+      <extender
+            uri="http://osbp.eclipse.org/dsl/common/types/v1"
+            class="org.eclipse.osbp.dsl.semantic.service.provider.OSBPServiceItemProviderAdapterFactory$OSBPTypesChildCreationExtender"/>
+   </extension>
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/pom.xml b/org.eclipse.osbp.dsl.services.xtext.edit/pom.xml
new file mode 100644
index 0000000..e6500de
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.services.xtext.edit</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<plugins>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LChartServiceItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LChartServiceItemProvider.java
new file mode 100644
index 0000000..4110593
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LChartServiceItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.service.LChartService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LChartService} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LChartServiceItemProvider extends LServiceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LChartServiceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LChartService.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LChartService"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LChartService)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LChartService_type") :
+			getString("_UI_LChartService_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPServicePackage.Literals.LSERVICE__OPERATIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LDTOServiceItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LDTOServiceItemProvider.java
new file mode 100644
index 0000000..8a1af26
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LDTOServiceItemProvider.java
@@ -0,0 +1,319 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.service.LDTOService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LDTOService} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LDTOServiceItemProvider extends LServiceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDTOServiceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addDtoPropertyDescriptor(object);
+			addMutablePersistenceIdPropertyDescriptor(object);
+			addPersistenceIdPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Dto feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addDtoPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDTOService_dto_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDTOService_dto_feature", "_UI_LDTOService_type"),
+				 OSBPServicePackage.Literals.LDTO_SERVICE__DTO,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Mutable Persistence Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addMutablePersistenceIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDTOService_mutablePersistenceId_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDTOService_mutablePersistenceId_feature", "_UI_LDTOService_type"),
+				 OSBPServicePackage.Literals.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Persistence Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addPersistenceIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LDTOService_persistenceId_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LDTOService_persistenceId_feature", "_UI_LDTOService_type"),
+				 OSBPServicePackage.Literals.LDTO_SERVICE__PERSISTENCE_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM);
+			childrenFeatures.add(OSBPServicePackage.Literals.LDTO_SERVICE__VALIDATORS);
+			childrenFeatures.add(OSBPServicePackage.Literals.LDTO_SERVICE__FILTERABLE);
+			childrenFeatures.add(OSBPServicePackage.Literals.LDTO_SERVICE__SORTABLE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LDTOService.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LDTOService"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LDTOService)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LDTOService_type") :
+			getString("_UI_LDTOService_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LDTOService.class)) {
+			case OSBPServicePackage.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID:
+			case OSBPServicePackage.LDTO_SERVICE__PERSISTENCE_ID:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__DTO_JVM:
+			case OSBPServicePackage.LDTO_SERVICE__VALIDATORS:
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__VALIDATORS,
+				 OSBPServiceFactory.eINSTANCE.createLValidator()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__FILTERABLE,
+				 OSBPServiceFactory.eINSTANCE.createLFilterableAttributes()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LDTO_SERVICE__SORTABLE,
+				 OSBPServiceFactory.eINSTANCE.createLSortableAttributes()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPServicePackage.Literals.LSERVICE__OPERATIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LFilterableAttributesItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LFilterableAttributesItemProvider.java
new file mode 100644
index 0000000..0c99def
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LFilterableAttributesItemProvider.java
@@ -0,0 +1,169 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LFilterableAttributesItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFilterableAttributesItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addParentPropertyDescriptor(object);
+			addFilterableFeaturesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFilterableAttributes_parent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFilterableAttributes_parent_feature", "_UI_LFilterableAttributes_type"),
+				 OSBPServicePackage.Literals.LFILTERABLE_ATTRIBUTES__PARENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Filterable Features feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addFilterableFeaturesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFilterableAttributes_filterableFeatures_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFilterableAttributes_filterableFeatures_feature", "_UI_LFilterableAttributes_type"),
+				 OSBPServicePackage.Literals.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LFilterableAttributes.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LFilterableAttributes"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LFilterableAttributes_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LFreeServiceItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LFreeServiceItemProvider.java
new file mode 100644
index 0000000..062eaea
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LFreeServiceItemProvider.java
@@ -0,0 +1,136 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.service.LFreeService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LFreeService} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LFreeServiceItemProvider extends LServiceItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFreeServiceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This returns LFreeService.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LFreeService"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LFreeService)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LFreeService_type") :
+			getString("_UI_LFreeService_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPServicePackage.Literals.LSERVICE__OPERATIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LInjectedServiceItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LInjectedServiceItemProvider.java
new file mode 100644
index 0000000..4e8047d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LInjectedServiceItemProvider.java
@@ -0,0 +1,264 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LInjectedService} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LInjectedServiceItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LInjectedServiceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addCardinalityPropertyDescriptor(object);
+			addAttributeNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Cardinality feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addCardinalityPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LInjectedService_cardinality_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LInjectedService_cardinality_feature", "_UI_LInjectedService_type"),
+				 OSBPServicePackage.Literals.LINJECTED_SERVICE__CARDINALITY,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Attribute Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addAttributeNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LInjectedService_attributeName_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LInjectedService_attributeName_feature", "_UI_LInjectedService_type"),
+				 OSBPServicePackage.Literals.LINJECTED_SERVICE__ATTRIBUTE_NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LInjectedService.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LInjectedService"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LInjectedService)object).getAttributeName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LInjectedService_type") :
+			getString("_UI_LInjectedService_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LInjectedService.class)) {
+			case OSBPServicePackage.LINJECTED_SERVICE__CARDINALITY:
+			case OSBPServicePackage.LINJECTED_SERVICE__ATTRIBUTE_NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPServicePackage.LINJECTED_SERVICE__SERVICE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICE__SERVICE,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LInjectedServicesItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LInjectedServicesItemProvider.java
new file mode 100644
index 0000000..fb00f57
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LInjectedServicesItemProvider.java
@@ -0,0 +1,168 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.service.LInjectedServices;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LInjectedServicesItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LInjectedServicesItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPServicePackage.Literals.LINJECTED_SERVICES__SERVICES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LInjectedServices.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LInjectedServices"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LInjectedServices_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LInjectedServices.class)) {
+			case OSBPServicePackage.LINJECTED_SERVICES__SERVICES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LINJECTED_SERVICES__SERVICES,
+				 OSBPServiceFactory.eINSTANCE.createLInjectedService()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceItemProvider.java
new file mode 100644
index 0000000..1e867d9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceItemProvider.java
@@ -0,0 +1,246 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LClassItemProvider;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+import org.eclipse.osbp.dsl.semantic.service.LService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LService} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LServiceItemProvider extends LClassItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LServiceItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPServicePackage.Literals.LSERVICE__INJECTED_SERVICES);
+			childrenFeatures.add(OSBPServicePackage.Literals.LSERVICE__OPERATIONS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LService)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LService_type") :
+			getString("_UI_LService_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LService.class)) {
+			case OSBPServicePackage.LSERVICE__INJECTED_SERVICES:
+			case OSBPServicePackage.LSERVICE__OPERATIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLDTOService()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLChartService()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLFreeService()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LSERVICE__INJECTED_SERVICES,
+				 OSBPServiceFactory.eINSTANCE.createLInjectedServices()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LSERVICE__OPERATIONS,
+				 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+	}
+
+	/**
+	 * This returns the label text for {@link org.eclipse.emf.edit.command.CreateChildCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getCreateChildText(Object owner, Object feature, Object child, Collection<?> selection) {
+		Object childFeature = feature;
+		Object childObject = child;
+
+		boolean qualify =
+			childFeature == OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO ||
+			childFeature == OSBPServicePackage.Literals.LSERVICE__OPERATIONS;
+
+		if (qualify) {
+			return getString
+				("_UI_CreateChild_text2",
+				 new Object[] { getTypeText(childObject), getFeatureText(childFeature), getTypeText(owner) });
+		}
+		return super.getCreateChildText(owner, feature, child, selection);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceModelItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceModelItemProvider.java
new file mode 100644
index 0000000..7c101c7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceModelItemProvider.java
@@ -0,0 +1,169 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.service.LServiceModel;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LServiceModel} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LServiceModelItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LServiceModelItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPServicePackage.Literals.LSERVICE_MODEL__PACKAGES);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LServiceModel.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LServiceModel"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LServiceModel_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LServiceModel.class)) {
+			case OSBPServicePackage.LSERVICE_MODEL__PACKAGES:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LSERVICE_MODEL__PACKAGES,
+				 OSBPTypesFactory.eINSTANCE.createLTypedPackage()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceOperationItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceOperationItemProvider.java
new file mode 100644
index 0000000..74e3439
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LServiceOperationItemProvider.java
@@ -0,0 +1,358 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesFactory;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LOperationItemProvider;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoFactory;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.osbp.dsl.semantic.service.LServiceOperation;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LServiceOperation} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LServiceOperationItemProvider extends LOperationItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LServiceOperationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LFeature_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LFeature_name_feature", "_UI_LFeature_type"),
+				 OSBPTypesPackage.Literals.LFEATURE__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY);
+			childrenFeatures.add(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO);
+			childrenFeatures.add(OSBPDtoPackage.Literals.LDTO_FEATURE__MAPPER);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LServiceOperation.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LServiceOperation"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LServiceOperation)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LServiceOperation_type") :
+			getString("_UI_LServiceOperation_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LServiceOperation.class)) {
+			case OSBPServicePackage.LSERVICE_OPERATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY:
+			case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO:
+			case OSBPServicePackage.LSERVICE_OPERATION__MAPPER:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__TYPE,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__PARAMS,
+				 TypesFactory.eINSTANCE.createJvmFormalParameter()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LOPERATION__BODY,
+				 XAnnotationsFactory.eINSTANCE.createXAnnotation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__MULTIPLICITY,
+				 OSBPTypesFactory.eINSTANCE.createLMultiplicity()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLDTOService()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLChartService()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLFreeService()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLAutoInheritDto()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoFeature()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoAttribute()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoInheritedReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPDtoFactory.eINSTANCE.createLDtoOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLAnnotationTarget()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLScalarType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLDataType()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLEnum()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLClass()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+				 OSBPTypesFactory.eINSTANCE.createLOperation()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPDtoPackage.Literals.LDTO_FEATURE__MAPPER,
+				 OSBPDtoFactory.eINSTANCE.createLDtoMapper()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LSortableAttributesItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LSortableAttributesItemProvider.java
new file mode 100644
index 0000000..2a6da3a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LSortableAttributesItemProvider.java
@@ -0,0 +1,169 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LSortableAttributesItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LSortableAttributesItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addParentPropertyDescriptor(object);
+			addSortableFeaturesPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Parent feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addParentPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LSortableAttributes_parent_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LSortableAttributes_parent_feature", "_UI_LSortableAttributes_type"),
+				 OSBPServicePackage.Literals.LSORTABLE_ATTRIBUTES__PARENT,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Sortable Features feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addSortableFeaturesPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LSortableAttributes_sortableFeatures_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LSortableAttributes_sortableFeatures_feature", "_UI_LSortableAttributes_type"),
+				 OSBPServicePackage.Literals.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns LSortableAttributes.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LSortableAttributes"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		return getString("_UI_LSortableAttributes_type");
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LValidatorItemProvider.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LValidatorItemProvider.java
new file mode 100644
index 0000000..ac96712
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/LValidatorItemProvider.java
@@ -0,0 +1,240 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EStructuralFeature;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.LLazyResolverItemProvider;
+
+import org.eclipse.osbp.dsl.semantic.service.LValidator;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.TypesFactory;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LValidator} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LValidatorItemProvider extends LLazyResolverItemProvider {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LValidatorItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addValidatorIdPropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Validator Id feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addValidatorIdPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_LValidator_validatorId_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_LValidator_validatorId_feature", "_UI_LValidator_type"),
+				 OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_ID,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EStructuralFeature getChildFeature(Object object, Object child) {
+		// Check the type of the specified child object and return the proper feature to use for
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
+	/**
+	 * This returns LValidator.gif.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object getImage(Object object) {
+		return overlayImage(object, getResourceLocator().getImage("full/obj16/LValidator"));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((LValidator)object).getValidatorId();
+		return label == null || label.length() == 0 ?
+			getString("_UI_LValidator_type") :
+			getString("_UI_LValidator_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(LValidator.class)) {
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_ID:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmParameterizedTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmGenericArrayTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmWildcardTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmAnyTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmMultiTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmDelegateTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmSynonymTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmUnknownTypeReference()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(OSBPServicePackage.Literals.LVALIDATOR__VALIDATOR_TYPE,
+				 TypesFactory.eINSTANCE.createJvmInnerTypeReference()));
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return ServiceEditPlugin.INSTANCE;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/OSBPServiceItemProviderAdapterFactory.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/OSBPServiceItemProviderAdapterFactory.java
new file mode 100644
index 0000000..6c288f2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/OSBPServiceItemProviderAdapterFactory.java
@@ -0,0 +1,723 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.edit.command.CommandParameter;
+
+import org.eclipse.emf.edit.domain.EditingDomain;
+
+import org.eclipse.emf.edit.provider.ChangeNotifier;
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.IChangeNotifier;
+import org.eclipse.emf.edit.provider.IChildCreationExtender;
+import org.eclipse.emf.edit.provider.IDisposable;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.INotifyChangedListener;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.util.OSBPTypesSwitch;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.util.OSBPDtoSwitch;
+
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory;
+
+import org.eclipse.osbp.dsl.semantic.service.util.OSBPServiceAdapterFactory;
+
+/**
+ * This is the factory that is used to provide the interfaces needed to support Viewers.
+ * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
+ * The adapters also support Eclipse property sheets.
+ * Note that most of the adapters are shared among multiple instances.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPServiceItemProviderAdapterFactory extends OSBPServiceAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
+	/**
+	 * This keeps track of the root adapter factory that delegates to this adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComposedAdapterFactory parentAdapterFactory;
+
+	/**
+	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IChangeNotifier changeNotifier = new ChangeNotifier();
+
+	/**
+	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Collection<Object> supportedTypes = new ArrayList<Object>();
+
+	/**
+	 * This constructs an instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPServiceItemProviderAdapterFactory() {
+		supportedTypes.add(IEditingDomainItemProvider.class);
+		supportedTypes.add(IStructuredItemContentProvider.class);
+		supportedTypes.add(ITreeItemContentProvider.class);
+		supportedTypes.add(IItemLabelProvider.class);
+		supportedTypes.add(IItemPropertySource.class);
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LServiceModel} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LServiceModelItemProvider lServiceModelItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LServiceModel}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLServiceModelAdapter() {
+		if (lServiceModelItemProvider == null) {
+			lServiceModelItemProvider = new LServiceModelItemProvider(this);
+		}
+
+		return lServiceModelItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LInjectedServicesItemProvider lInjectedServicesItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLInjectedServicesAdapter() {
+		if (lInjectedServicesItemProvider == null) {
+			lInjectedServicesItemProvider = new LInjectedServicesItemProvider(this);
+		}
+
+		return lInjectedServicesItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LInjectedService} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LInjectedServiceItemProvider lInjectedServiceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LInjectedService}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLInjectedServiceAdapter() {
+		if (lInjectedServiceItemProvider == null) {
+			lInjectedServiceItemProvider = new LInjectedServiceItemProvider(this);
+		}
+
+		return lInjectedServiceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LDTOService} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDTOServiceItemProvider ldtoServiceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LDTOService}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLDTOServiceAdapter() {
+		if (ldtoServiceItemProvider == null) {
+			ldtoServiceItemProvider = new LDTOServiceItemProvider(this);
+		}
+
+		return ldtoServiceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LValidator} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LValidatorItemProvider lValidatorItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LValidator}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLValidatorAdapter() {
+		if (lValidatorItemProvider == null) {
+			lValidatorItemProvider = new LValidatorItemProvider(this);
+		}
+
+		return lValidatorItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LFilterableAttributesItemProvider lFilterableAttributesItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLFilterableAttributesAdapter() {
+		if (lFilterableAttributesItemProvider == null) {
+			lFilterableAttributesItemProvider = new LFilterableAttributesItemProvider(this);
+		}
+
+		return lFilterableAttributesItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LSortableAttributesItemProvider lSortableAttributesItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLSortableAttributesAdapter() {
+		if (lSortableAttributesItemProvider == null) {
+			lSortableAttributesItemProvider = new LSortableAttributesItemProvider(this);
+		}
+
+		return lSortableAttributesItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LChartService} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LChartServiceItemProvider lChartServiceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LChartService}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLChartServiceAdapter() {
+		if (lChartServiceItemProvider == null) {
+			lChartServiceItemProvider = new LChartServiceItemProvider(this);
+		}
+
+		return lChartServiceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LFreeService} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LFreeServiceItemProvider lFreeServiceItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LFreeService}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLFreeServiceAdapter() {
+		if (lFreeServiceItemProvider == null) {
+			lFreeServiceItemProvider = new LFreeServiceItemProvider(this);
+		}
+
+		return lFreeServiceItemProvider;
+	}
+
+	/**
+	 * This keeps track of the one adapter used for all {@link org.eclipse.osbp.dsl.semantic.service.LServiceOperation} instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LServiceOperationItemProvider lServiceOperationItemProvider;
+
+	/**
+	 * This creates an adapter for a {@link org.eclipse.osbp.dsl.semantic.service.LServiceOperation}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter createLServiceOperationAdapter() {
+		if (lServiceOperationItemProvider == null) {
+			lServiceOperationItemProvider = new LServiceOperationItemProvider(this);
+		}
+
+		return lServiceOperationItemProvider;
+	}
+
+	/**
+	 * This returns the root adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ComposeableAdapterFactory getRootAdapterFactory() {
+		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
+	}
+
+	/**
+	 * This sets the composed adapter factory that contains this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
+		this.parentAdapterFactory = parentAdapterFactory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object type) {
+		return supportedTypes.contains(type) || super.isFactoryForType(type);
+	}
+
+	/**
+	 * This implementation substitutes the factory itself as the key for the adapter.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Adapter adapt(Notifier notifier, Object type) {
+		return super.adapt(notifier, this);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object adapt(Object object, Object type) {
+		if (isFactoryForType(type)) {
+			Object adapter = super.adapt(object, type);
+			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
+				return adapter;
+			}
+		}
+
+		return null;
+	}
+
+	/**
+	 * This adds a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void addListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.addListener(notifyChangedListener);
+	}
+
+	/**
+	 * This removes a listener.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void removeListener(INotifyChangedListener notifyChangedListener) {
+		changeNotifier.removeListener(notifyChangedListener);
+	}
+
+	/**
+	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void fireNotifyChanged(Notification notification) {
+		changeNotifier.fireNotifyChanged(notification);
+
+		if (parentAdapterFactory != null) {
+			parentAdapterFactory.fireNotifyChanged(notification);
+		}
+	}
+
+	/**
+	 * This disposes all of the item providers created by this factory. 
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void dispose() {
+		if (lServiceModelItemProvider != null) lServiceModelItemProvider.dispose();
+		if (lInjectedServicesItemProvider != null) lInjectedServicesItemProvider.dispose();
+		if (lInjectedServiceItemProvider != null) lInjectedServiceItemProvider.dispose();
+		if (ldtoServiceItemProvider != null) ldtoServiceItemProvider.dispose();
+		if (lValidatorItemProvider != null) lValidatorItemProvider.dispose();
+		if (lFilterableAttributesItemProvider != null) lFilterableAttributesItemProvider.dispose();
+		if (lSortableAttributesItemProvider != null) lSortableAttributesItemProvider.dispose();
+		if (lChartServiceItemProvider != null) lChartServiceItemProvider.dispose();
+		if (lFreeServiceItemProvider != null) lFreeServiceItemProvider.dispose();
+		if (lServiceOperationItemProvider != null) lServiceOperationItemProvider.dispose();
+	}
+
+	/**
+	 * A child creation extender for the {@link OSBPDtoPackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class OSBPDtoChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected static class CreationSwitch extends OSBPDtoSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLDto(LDto object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPDtoPackage.Literals.LDTO__FEATURES,
+						 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLFeature(LFeature object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLDTOService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLChartService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLFreeService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+
+				return null;
+			}
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject)object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ResourceLocator getResourceLocator() {
+			return ServiceEditPlugin.INSTANCE;
+		}
+	}
+
+	/**
+	 * A child creation extender for the {@link OSBPTypesPackage}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class OSBPTypesChildCreationExtender implements IChildCreationExtender {
+		/**
+		 * The switch for creating child descriptors specific to each extended class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		protected static class CreationSwitch extends OSBPTypesSwitch<Object> {
+			/**
+			 * The child descriptors being populated.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected List<Object> newChildDescriptors;
+
+			/**
+			 * The domain in which to create the children.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected EditingDomain editingDomain;
+
+			/**
+			 * Creates the a switch for populating child descriptors in the given domain.
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
+				this.newChildDescriptors = newChildDescriptors;
+				this.editingDomain = editingDomain;
+			}
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLFeature(LFeature object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLDTOService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLChartService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLFreeService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LFEATURE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLTypedPackage(LTypedPackage object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPServiceFactory.eINSTANCE.createLDTOService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPServiceFactory.eINSTANCE.createLChartService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPED_PACKAGE__TYPES,
+						 OSBPServiceFactory.eINSTANCE.createLFreeService()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			@Override
+			public Object caseLType(LType object) {
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLDTOService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLChartService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLFreeService()));
+
+				newChildDescriptors.add
+					(createChildParameter
+						(OSBPTypesPackage.Literals.LTYPE__ANNOTATION_INFO,
+						 OSBPServiceFactory.eINSTANCE.createLServiceOperation()));
+
+				return null;
+			}
+ 
+			/**
+			 * <!-- begin-user-doc -->
+			 * <!-- end-user-doc -->
+			 * @generated
+			 */
+			protected CommandParameter createChildParameter(Object feature, Object child) {
+				return new CommandParameter(null, feature, child);
+			}
+
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
+			ArrayList<Object> result = new ArrayList<Object>();
+			new CreationSwitch(result, editingDomain).doSwitch((EObject)object);
+			return result;
+		}
+
+		/**
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public ResourceLocator getResourceLocator() {
+			return ServiceEditPlugin.INSTANCE;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/ServiceEditPlugin.java b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/ServiceEditPlugin.java
new file mode 100644
index 0000000..3bb923e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.edit/src/org/eclipse/osbp/dsl/semantic/service/provider/ServiceEditPlugin.java
@@ -0,0 +1,107 @@
+/**
+ * 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 
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.provider;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.osbp.dsl.semantic.common.types.provider.TypesEditPlugin;
+
+import org.eclipse.osbp.dsl.semantic.dto.provider.DTOEditPlugin;
+
+/**
+ * This is the central singleton for the Service edit plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class ServiceEditPlugin extends EMFPlugin {
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final ServiceEditPlugin INSTANCE = new ServiceEditPlugin();
+
+	/**
+	 * Keep track of the singleton.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static Implementation plugin;
+
+	/**
+	 * Create the instance.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ServiceEditPlugin() {
+		super
+		  (new ResourceLocator [] {
+		     org.eclipse.xtext.common.types.provider.TypesEditPlugin.INSTANCE,
+		     DTOEditPlugin.INSTANCE,
+		     TypesEditPlugin.INSTANCE,
+		   });
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getPluginResourceLocator() {
+		return plugin;
+	}
+
+	/**
+	 * Returns the singleton instance of the Eclipse plugin.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the singleton instance.
+	 * @generated
+	 */
+	public static Implementation getPlugin() {
+		return plugin;
+	}
+
+	/**
+	 * The actual implementation of the Eclipse <b>Plugin</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static class Implementation extends EclipsePlugin {
+		/**
+		 * Creates an instance.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public Implementation() {
+			super();
+
+			// Remember the static instance.
+			//
+			plugin = this;
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.tests/.project b/org.eclipse.osbp.dsl.services.xtext.tests/.project
new file mode 100644
index 0000000..2870a80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.tests/.project
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.services.xtext.tests</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>
+	</buildSpec>
+	<natures>
+		<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.dsl.services.xtext.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.services.xtext.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..df7ace8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.services.xtext.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.services.xtext.tests;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osbp.dsl.services.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.services.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime,
+ org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.workbench;resolution:=optional,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional
+Import-Package: org.apache.log4j,
+ org.junit;version="4.5.0",
+ org.junit.runner;version="4.5.0",
+ org.junit.runner.manipulation;version="4.5.0",
+ org.junit.runner.notification;version="4.5.0",
+ org.junit.runners;version="4.5.0",
+ org.junit.runners.model;version="4.5.0",
+ org.hamcrest.core
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+
diff --git a/org.eclipse.osbp.dsl.services.xtext.tests/build.properties b/org.eclipse.osbp.dsl.services.xtext.tests/build.properties
new file mode 100644
index 0000000..c22eebe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.tests/build.properties
@@ -0,0 +1,5 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+       .
diff --git a/org.eclipse.osbp.dsl.services.xtext.tests/org.eclipse.osbp.dsl.services.xtext.tests.launch b/org.eclipse.osbp.dsl.services.xtext.tests/org.eclipse.osbp.dsl.services.xtext.tests.launch
new file mode 100644
index 0000000..f9f9d55
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.tests/org.eclipse.osbp.dsl.services.xtext.tests.launch
@@ -0,0 +1,13 @@
+<?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.dsl.services.xtext.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.dsl.services.xtext.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.PROJECT_ATTR" value="org.eclipse.osbp.dsl.services.xtext.tests"/>
+</launchConfiguration>
diff --git a/org.eclipse.osbp.dsl.services.xtext.tests/pom.xml b/org.eclipse.osbp.dsl.services.xtext.tests/pom.xml
new file mode 100644
index 0000000..cab138b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.tests/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.services.xtext.tests</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+						<fileset>
+							<directory>src-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.osbp.tools.maven</groupId>
+				<artifactId>org.eclipse.osbp.tools.maven.plugin.entity</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/src-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<failIfNoTests>true</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/.project b/org.eclipse.osbp.dsl.services.xtext.ui/.project
new file mode 100644
index 0000000..866aeba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.services.xtext.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/LICENSE.txt b/org.eclipse.osbp.dsl.services.xtext.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.services.xtext.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b912098
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,40 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.services.xtext.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.services.xtext.ui;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ 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.osbp.dsl.services.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.common.xtext.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.osbp.dsl.xtext.lazyresolver.ui;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.apache.log4j
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.services.xtext.ui.contentassist;
+  uses:="org.eclipse.xtext,
+   org.eclipse.osbp.dsl.common.xtext.ui.contentassist,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.ui.editor.contentassist";version="0.9.0",
+ org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr;
+  uses:="org.eclipse.xtext,
+   org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal,
+   org.eclipse.xtext.ui.editor.contentassist.antlr.internal,
+   org.eclipse.osbp.dsl.services.xtext.services,
+   org.eclipse.xtext.ui.codetemplates.ui.partialEditing,
+   org.eclipse.xtext.ui.editor.contentassist.antlr";version="0.9.0",
+ org.eclipse.osbp.dsl.services.xtext.ui.quickfix;
+  uses:="org.eclipse.osbp.dsl.common.xtext.ui.quickfix";version="0.9.0"
+Bundle-Activator: org.eclipse.osbp.dsl.services.xtext.ui.internal.ServicesGrammarActivator
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/about.html b/org.eclipse.osbp.dsl.services.xtext.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.ui/about.ini b/org.eclipse.osbp.dsl.services.xtext.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.ui/about.mappings b/org.eclipse.osbp.dsl.services.xtext.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.ui/about.properties b/org.eclipse.osbp.dsl.services.xtext.ui/about.properties
new file mode 100644
index 0000000..1c3c4a8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.services.xtext.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/build.properties b/org.eclipse.osbp.dsl.services.xtext.ui/build.properties
new file mode 100644
index 0000000..a52d753
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/build.properties
@@ -0,0 +1,12 @@
+source.. = src/,\
+          src-gen/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               plugin.xml,\
+               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.dsl.services.xtext.ui/icons/dsl_service.png b/org.eclipse.osbp.dsl.services.xtext.ui/icons/dsl_service.png
new file mode 100644
index 0000000..624d80a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/icons/dsl_service.png
Binary files differ
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/license.html b/org.eclipse.osbp.dsl.services.xtext.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.ui/plugin.xml b/org.eclipse.osbp.dsl.services.xtext.ui/plugin.xml
new file mode 100644
index 0000000..e2ca2fa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/plugin.xml
@@ -0,0 +1,532 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<plugin>
+
+    <extension
+            point="org.eclipse.ui.editors">
+        <editor
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+            default="true"
+            extensions="service"
+            icon="icons/dsl_service.png"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            matchingStrategy="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+            name="OSBP ServicesGrammar Editor">
+        </editor>
+    </extension>
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+            commandId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.validate">
+         <activeWhen>
+            <reference
+                    definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.Editor.opened">
+            </reference>
+         </activeWhen>
+      	</handler>
+      	<!-- copy qualified name -->
+        <handler
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+            <activeWhen>
+				<reference definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.Editor.opened" />
+            </activeWhen>
+        </handler>
+        <handler
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+            <activeWhen>
+            	<and>
+            		<reference definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened">
+            <and>
+                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+        <definition id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.XtextEditor.opened">
+            <and>
+                <reference definitionId="isXtextEditorActive"/>
+                <with variable="activeEditor">
+                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
+                        value="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar" 
+                        forcePluginActivation="true"/>
+                </with>        
+            </and>
+        </definition>
+    </extension>
+    <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            icon="icons/dsl_service.png"
+            name="OSBP ServicesGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.coloring"
+            icon="icons/dsl_service.png"
+            name="Syntax Coloring">
+            <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+        </page>
+        <page
+            category="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.templates"
+            icon="icons/dsl_service.png"
+            name="Templates">
+            <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+            icon="icons/dsl_service.png"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            name="ServicesGrammar">
+            <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+            <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.dsl.services.xtext.ui.keyword_ServicesGrammar"
+            label="ServicesGrammar"/>
+    </extension>
+    <extension
+         point="org.eclipse.ui.commands">
+      <command
+            description="Trigger expensive validation"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.validate"
+                 style="push"
+                 tooltip="Trigger expensive validation">
+            <visibleWhen checkEnabled="false">
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened">
+                	</reference>
+            	</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+	    <handler
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+            commandId="org.eclipse.xtext.ui.editor.FindReferences">
+            <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.Editor.opened">
+                </reference>
+            </activeWhen>
+        </handler>
+    </extension>   
+
+<!-- adding resource factories -->
+
+	<extension
+		point="org.eclipse.emf.ecore.extension_parser">
+		<parser
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.resource.IResourceFactory"
+			type="service">
+		</parser>
+	</extension>
+	<extension point="org.eclipse.xtext.extension_resourceServiceProvider">
+        <resourceServiceProvider
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+            uriExtension="service">
+        </resourceServiceProvider>
+    </extension>
+
+
+    <!-- marker definitions for org.eclipse.osbp.dsl.services.xtext.ServicesGrammar -->
+    <extension
+            id="servicesgrammar.check.fast"
+            name="ServicesGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.fast"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="servicesgrammar.check.normal"
+            name="ServicesGrammar Problem"
+            point="org.eclipse.core.resources.markers">
+        <super type="org.eclipse.xtext.ui.check.normal"/>
+        <persistent value="true"/>
+    </extension>
+    <extension
+            id="servicesgrammar.check.expensive"
+            name="ServicesGrammar 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.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant">
+      </participant>
+   </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.compiler.preferencePage"
+            icon="icons/dsl_service.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+        </page>
+    </extension>
+    <extension
+            point="org.eclipse.ui.propertyPages">
+        <page
+            category="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.compiler.propertyPage"
+            icon="icons/dsl_service.png"
+            name="Compiler">
+            <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+            <enabledWhen>
+	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</enabledWhen>
+	        <filter name="projectNature" value="org.eclipse.xtext.ui.shared.xtextNature"/>
+        </page>
+    </extension>
+    <!-- quickfix marker resolution generator for org.eclipse.osbp.dsl.services.xtext.ServicesGrammar -->
+    <extension
+            point="org.eclipse.ui.ide.markerResolution">
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.services.xtext.ui.servicesgrammar.check.fast">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.services.xtext.ui.servicesgrammar.check.normal">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+        <markerResolutionGenerator
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+            markerType="org.eclipse.osbp.dsl.services.xtext.ui.servicesgrammar.check.expensive">
+            <attribute
+                name="FIXABLE_KEY"
+                value="true">
+            </attribute>
+        </markerResolutionGenerator>
+    </extension>
+
+	<!-- Quick Outline -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.outline.quickoutline.ShowQuickOutlineActionHandler"
+			commandId="org.eclipse.xtext.ui.editor.outline.QuickOutline">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+
+  <extension point="org.eclipse.compare.contentViewers">
+    <viewer id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.compare.contentViewers"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="service">
+    </viewer>
+  </extension>
+  <extension point="org.eclipse.compare.contentMergeViewers">
+    <viewer id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.compare.contentMergeViewers"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+            extensions="service" label="ServicesGrammar Compare">
+     </viewer>
+  </extension>
+  <extension point="org.eclipse.ui.editors.documentProviders">
+    <provider id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.editors.documentProviders"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+            extensions="service">
+    </provider>
+  </extension>
+   	<!-- Rename Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.DefaultRenameElementHandler"
+			commandId="org.eclipse.xtext.ui.refactoring.RenameElement">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension point="org.eclipse.ui.preferencePages">
+	    <page
+	        category="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar"
+	        class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+	        id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.refactoring"
+            icon="icons/dsl_service.png"
+	        name="Refactoring">
+	        <keywordReference id="org.eclipse.osbp.dsl.services.xtext.ui.keyword_ServicesGrammar"/>
+	    </page>
+	</extension>
+
+<!-- Type Hierarchy  -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenTypeHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler 
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.QuickTypeHierarchyHandler"
+			commandId="org.eclipse.jdt.ui.edit.text.java.open.hierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Call Hierachy -->
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierachyHandler"
+			commandId="org.eclipse.xtext.xbase.ui.hierarchy.OpenCallHierarchy">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened"/>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension
+         point="org.eclipse.core.runtime.adapters">
+      <factory class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory: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.dsl.services.xtext.ServicesGrammar" 
+                          id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.ide.rulerActions">
+	     <action
+	             label="Not Used"
+	             class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+	             style="push"
+	             actionID="RulerDoubleClick"
+	             id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.doubleClickBreakpointAction"/>
+	  </editorContribution>
+   </extension>
+   <extension point="org.eclipse.ui.popupMenus">
+      <viewerContribution
+         targetID="example.rulerContextMenuId"
+         id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.ide.RulerPopupActions">
+         <action
+            label="Toggle Breakpoint"
+            class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+            menubarPath="additions"
+            id="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.ide.rulerContextMenu.toggleBreakpointAction">
+         </action>
+      </viewerContribution>
+   </extension>
+   
+    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler 
+			class="org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.refactoring.ExtractVariableHandler"
+			commandId="org.eclipse.xtext.xbase.ui.refactoring.ExtractLocalVariable">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.dsl.services.xtext.ServicesGrammar.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.dsl.services.xtext.ServicesGrammar.Editor.opened">
+               </reference>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>  
+
+</plugin>
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/pom.xml b/org.eclipse.osbp.dsl.services.xtext.ui/pom.xml
new file mode 100644
index 0000000..213051d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+	
+	<artifactId>org.eclipse.osbp.dsl.services.xtext.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/AbstractServicesGrammarUiModule.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/AbstractServicesGrammarUiModule.java
new file mode 100644
index 0000000..7b00e23
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/AbstractServicesGrammarUiModule.java
@@ -0,0 +1,371 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.ui;
+
+import org.eclipse.xtext.ui.DefaultUiModule;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Manual modifications go to {org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarUiModule}
+ */
+@SuppressWarnings("all")
+public abstract class AbstractServicesGrammarUiModule extends DefaultUiModule {
+	
+	public AbstractServicesGrammarUiModule(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.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarLexer.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.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.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.ui.generator.quickfix.QuickfixProviderFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.quickfix.IssueResolutionProvider> bindIssueResolutionProvider() {
+		return org.eclipse.osbp.dsl.services.xtext.ui.quickfix.ServicesGrammarQuickfixProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.labeling.LabelProviderFragment
+	public Class<? extends org.eclipse.jface.viewers.ILabelProvider> bindILabelProvider() {
+		return org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider.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.xtext.xbase.ui.labeling.XbaseDescriptionLabelProvider.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.dsl.services.xtext.ui.outline.ServicesGrammarOutlineTreeProvider.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.dsl.services.xtext.ui.outline.ServicesGrammarOutlineTreeProvider.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;
+	}
+
+	// contributed by org.eclipse.xtext.ui.generator.contentAssist.JavaBasedContentAssistFragment
+	public Class<? extends org.eclipse.xtext.ui.editor.contentassist.IContentProposalProvider> bindIContentProposalProvider() {
+		return org.eclipse.osbp.dsl.services.xtext.ui.contentassist.ServicesGrammarProposalProvider.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.dsl.services.xtext.ui.contentassist.antlr.ServicesGrammarParser.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
+	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
+		binder.bind(org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarLexer.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.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarLexer.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.dsl.services.xtext.ui.contentassist.antlr.PartialServicesGrammarContentAssistParser.class;
+	}
+
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/ServicesGrammarExecutableExtensionFactory.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/ServicesGrammarExecutableExtensionFactory.java
new file mode 100644
index 0000000..e949633
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/ServicesGrammarExecutableExtensionFactory.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.ui;
+
+import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Injector;
+
+import org.eclipse.osbp.dsl.services.xtext.ui.internal.ServicesGrammarActivator;
+
+/**
+ * This class was generated. Customizations should only happen in a newly
+ * introduced subclass. 
+ */
+public class ServicesGrammarExecutableExtensionFactory extends AbstractGuiceAwareExecutableExtensionFactory {
+
+	@Override
+	protected Bundle getBundle() {
+		return ServicesGrammarActivator.getInstance().getBundle();
+	}
+	
+	@Override
+	protected Injector getInjector() {
+		return ServicesGrammarActivator.getInstance().getInjector(ServicesGrammarActivator.ORG_ECLIPSE_OSBP_DSL_SERVICES_XTEXT_SERVICESGRAMMAR);
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/AbstractServicesGrammarProposalProvider.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/AbstractServicesGrammarProposalProvider.java
new file mode 100644
index 0000000..b792a9a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/AbstractServicesGrammarProposalProvider.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider}.
+ * Methods are dynamically dispatched on the first parameter, i.e., you can override them 
+ * with a more concrete subtype. 
+ */
+@SuppressWarnings("all")
+public class AbstractServicesGrammarProposalProvider extends org.eclipse.osbp.dsl.common.xtext.ui.contentassist.CommonGrammarProposalProvider {
+		
+	public void completeLServiceModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Dto(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_MutablePersistenceId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void completeClass_PersistenceId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Validators(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_InjectedServices(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeClass_Operations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeValidatorDef_ValidatorType(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeValidatorDef_ValidatorId(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeInjectedServices_Services(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeInjectedService_Cardinality(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeInjectedService_Service(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeInjectedService_AttributeName(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeFilterableAttributes_FilterableFeatures(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeSortableAttributes_SortableFeatures(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		lookupCrossReference(((CrossReference)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOperation_Annotations(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOperation_Type(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOperation_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOperation_Params(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+	public void completeOperation_Body(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
+    
+	public void complete_LServiceModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Class(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_ValidatorDef(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_InjectedServices(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_InjectedService(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_FilterableAttributes(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_SortableAttributes(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Operation(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+	public void complete_Cardinality(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/PartialServicesGrammarContentAssistParser.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/PartialServicesGrammarContentAssistParser.java
new file mode 100644
index 0000000..bc773e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/PartialServicesGrammarContentAssistParser.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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 PartialServicesGrammarContentAssistParser extends ServicesGrammarParser 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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/ServicesGrammarParser.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/ServicesGrammarParser.java
new file mode 100644
index 0000000..8bb75f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/ServicesGrammarParser.java
@@ -0,0 +1,747 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+public class ServicesGrammarParser extends AbstractContentAssistParser {
+	
+	@Inject
+	private ServicesGrammarGrammarAccess grammarAccess;
+	
+	private Map<AbstractElement, String> nameMappings;
+	
+	@Override
+	protected org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarParser createParser() {
+		org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarParser result = new org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarParser(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.getValidatorDefAccess().getAlternatives(), "rule__ValidatorDef__Alternatives");
+					put(grammarAccess.getTypeAccess().getAlternatives(), "rule__Type__Alternatives");
+					put(grammarAccess.getDataTypeAccess().getAlternatives_2(), "rule__DataType__Alternatives_2");
+					put(grammarAccess.getAllConstraintsAccess().getAlternatives(), "rule__AllConstraints__Alternatives");
+					put(grammarAccess.getDataTypeConstraintAccess().getAlternatives(), "rule__DataTypeConstraint__Alternatives");
+					put(grammarAccess.getDateConstraintAccess().getAlternatives(), "rule__DateConstraint__Alternatives");
+					put(grammarAccess.getBlobTypeConstraintAccess().getAlternatives(), "rule__BlobTypeConstraint__Alternatives");
+					put(grammarAccess.getScalarTypeAccess().getAlternatives(), "rule__ScalarType__Alternatives");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAlternatives_2(), "rule__AttributeMatchingConstraint__Alternatives_2");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives(), "rule__ValidIDWithKeywords__Alternatives");
+					put(grammarAccess.getLIntAccess().getAlternatives_0(), "rule__LInt__Alternatives_0");
+					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.getCardinalityAccess().getAlternatives(), "rule__Cardinality__Alternatives");
+					put(grammarAccess.getConstraintSeverityAccess().getAlternatives(), "rule__ConstraintSeverity__Alternatives");
+					put(grammarAccess.getDateTypeAccess().getAlternatives(), "rule__DateType__Alternatives");
+					put(grammarAccess.getLVisibilityAccess().getAlternatives(), "rule__LVisibility__Alternatives");
+					put(grammarAccess.getLComparatorTypeAccess().getAlternatives(), "rule__LComparatorType__Alternatives");
+					put(grammarAccess.getLowerBoundAccess().getAlternatives(), "rule__LowerBound__Alternatives");
+					put(grammarAccess.getUpperBoundAccess().getAlternatives(), "rule__UpperBound__Alternatives");
+					put(grammarAccess.getClassAccess().getGroup(), "rule__Class__Group__0");
+					put(grammarAccess.getClassAccess().getGroup_8(), "rule__Class__Group_8__0");
+					put(grammarAccess.getClassAccess().getGroup_9(), "rule__Class__Group_9__0");
+					put(grammarAccess.getClassAccess().getGroup_9_3(), "rule__Class__Group_9_3__0");
+					put(grammarAccess.getValidatorDefAccess().getGroup_0(), "rule__ValidatorDef__Group_0__0");
+					put(grammarAccess.getInjectedServicesAccess().getGroup(), "rule__InjectedServices__Group__0");
+					put(grammarAccess.getInjectedServiceAccess().getGroup(), "rule__InjectedService__Group__0");
+					put(grammarAccess.getFilterableAttributesAccess().getGroup(), "rule__FilterableAttributes__Group__0");
+					put(grammarAccess.getFilterableAttributesAccess().getGroup_3(), "rule__FilterableAttributes__Group_3__0");
+					put(grammarAccess.getSortableAttributesAccess().getGroup(), "rule__SortableAttributes__Group__0");
+					put(grammarAccess.getSortableAttributesAccess().getGroup_3(), "rule__SortableAttributes__Group_3__0");
+					put(grammarAccess.getOperationAccess().getGroup(), "rule__Operation__Group__0");
+					put(grammarAccess.getOperationAccess().getGroup_2(), "rule__Operation__Group_2__0");
+					put(grammarAccess.getOperationAccess().getGroup_2_4(), "rule__Operation__Group_2_4__0");
+					put(grammarAccess.getOperationAccess().getGroup_2_4_1(), "rule__Operation__Group_2_4_1__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup(), "rule__TypedPackage__Group__0");
+					put(grammarAccess.getTypedPackageAccess().getGroup_3(), "rule__TypedPackage__Group_3__0");
+					put(grammarAccess.getImportAccess().getGroup(), "rule__Import__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup(), "rule__DataType__Group__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0(), "rule__DataType__Group_2_0__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4(), "rule__DataType__Group_2_0_4__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3(), "rule__DataType__Group_2_0_4_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1(), "rule__DataType__Group_2_1__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3(), "rule__DataType__Group_2_1_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3(), "rule__DataType__Group_2_1_3_3__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2(), "rule__DataType__Group_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2(), "rule__DataType__Group_2_2_2__0");
+					put(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3(), "rule__DataType__Group_2_2_2_3__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup(), "rule__DtCAssertFalse__Group__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0(), "rule__DtCAssertFalse__Group_2_0__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1(), "rule__DtCAssertFalse__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_1(), "rule__DtCAssertFalse__Group_2_1__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2(), "rule__DtCAssertFalse__Group_2_2__0");
+					put(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0(), "rule__DtCAssertFalse__Group_2_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup(), "rule__DtCAssertTrue__Group__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0(), "rule__DtCAssertTrue__Group_2_0__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1(), "rule__DtCAssertTrue__Group_2_0_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_1(), "rule__DtCAssertTrue__Group_2_1__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2(), "rule__DtCAssertTrue__Group_2_2__0");
+					put(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0(), "rule__DtCAssertTrue__Group_2_2_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup(), "rule__DtCDecimalMax__Group__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0(), "rule__DtCDecimalMax__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1(), "rule__DtCDecimalMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_1(), "rule__DtCDecimalMax__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2(), "rule__DtCDecimalMax__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_2_0(), "rule__DtCDecimalMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup(), "rule__DtCDecimalMin__Group__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0(), "rule__DtCDecimalMin__Group_4_0__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_0_1(), "rule__DtCDecimalMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_1(), "rule__DtCDecimalMin__Group_4_1__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2(), "rule__DtCDecimalMin__Group_4_2__0");
+					put(grammarAccess.getDtCDecimalMinAccess().getGroup_4_2_0(), "rule__DtCDecimalMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup(), "rule__DtCDigits__Group__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0(), "rule__DtCDigits__Group_6_0__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_0_1(), "rule__DtCDigits__Group_6_0_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_1(), "rule__DtCDigits__Group_6_1__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2(), "rule__DtCDigits__Group_6_2__0");
+					put(grammarAccess.getDtCDigitsAccess().getGroup_6_2_0(), "rule__DtCDigits__Group_6_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup(), "rule__DtCFuture__Group__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0(), "rule__DtCFuture__Group_2_0__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_0_1(), "rule__DtCFuture__Group_2_0_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_1(), "rule__DtCFuture__Group_2_1__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2(), "rule__DtCFuture__Group_2_2__0");
+					put(grammarAccess.getDtCFutureAccess().getGroup_2_2_0(), "rule__DtCFuture__Group_2_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup(), "rule__DtCPast__Group__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0(), "rule__DtCPast__Group_2_0__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_0_1(), "rule__DtCPast__Group_2_0_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_1(), "rule__DtCPast__Group_2_1__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2(), "rule__DtCPast__Group_2_2__0");
+					put(grammarAccess.getDtCPastAccess().getGroup_2_2_0(), "rule__DtCPast__Group_2_2_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup(), "rule__DtCNumericMax__Group__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0(), "rule__DtCNumericMax__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_0_1(), "rule__DtCNumericMax__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_1(), "rule__DtCNumericMax__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2(), "rule__DtCNumericMax__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMaxAccess().getGroup_4_2_0(), "rule__DtCNumericMax__Group_4_2_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup(), "rule__DtCNumericMin__Group__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0(), "rule__DtCNumericMin__Group_4_0__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_0_1(), "rule__DtCNumericMin__Group_4_0_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_1(), "rule__DtCNumericMin__Group_4_1__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2(), "rule__DtCNumericMin__Group_4_2__0");
+					put(grammarAccess.getDtCNumericMinAccess().getGroup_4_2_0(), "rule__DtCNumericMin__Group_4_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup(), "rule__DtCNotNull__Group__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0(), "rule__DtCNotNull__Group_2_0__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_0_1(), "rule__DtCNotNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_1(), "rule__DtCNotNull__Group_2_1__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2(), "rule__DtCNotNull__Group_2_2__0");
+					put(grammarAccess.getDtCNotNullAccess().getGroup_2_2_0(), "rule__DtCNotNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup(), "rule__DtCNull__Group__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0(), "rule__DtCNull__Group_2_0__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_0_1(), "rule__DtCNull__Group_2_0_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_1(), "rule__DtCNull__Group_2_1__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2(), "rule__DtCNull__Group_2_2__0");
+					put(grammarAccess.getDtCNullAccess().getGroup_2_2_0(), "rule__DtCNull__Group_2_2_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup(), "rule__DtCRegEx__Group__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0(), "rule__DtCRegEx__Group_4_0__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_0_1(), "rule__DtCRegEx__Group_4_0_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_1(), "rule__DtCRegEx__Group_4_1__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2(), "rule__DtCRegEx__Group_4_2__0");
+					put(grammarAccess.getDtCRegExAccess().getGroup_4_2_0(), "rule__DtCRegEx__Group_4_2_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup(), "rule__DtCSize__Group__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0(), "rule__DtCSize__Group_6_0__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_0_1(), "rule__DtCSize__Group_6_0_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_1(), "rule__DtCSize__Group_6_1__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2(), "rule__DtCSize__Group_6_2__0");
+					put(grammarAccess.getDtCSizeAccess().getGroup_6_2_0(), "rule__DtCSize__Group_6_2_0__0");
+					put(grammarAccess.getEnumAccess().getGroup(), "rule__Enum__Group__0");
+					put(grammarAccess.getEnumAccess().getGroup_4(), "rule__Enum__Group_4__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup(), "rule__EnumLiteral__Group__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_0(), "rule__EnumLiteral__Group_1_0__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1(), "rule__EnumLiteral__Group_1_1__0");
+					put(grammarAccess.getEnumLiteralAccess().getGroup_1_1_2(), "rule__EnumLiteral__Group_1_1_2__0");
+					put(grammarAccess.getAnnotationDefAccess().getGroup(), "rule__AnnotationDef__Group__0");
+					put(grammarAccess.getResultFiltersAccess().getGroup(), "rule__ResultFilters__Group__0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getGroup(), "rule__AttributeMatchingConstraint__Group__0");
+					put(grammarAccess.getKeyAndValueAccess().getGroup(), "rule__KeyAndValue__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup(), "rule__LQualifiedNameWithWildCard__Group__0");
+					put(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup_1(), "rule__LQualifiedNameWithWildCard__Group_1__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__0");
+					put(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5(), "rule__ValidIDWithKeywords__Group_5__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup(), "rule__ValidLFQNWithKeywords__Group__0");
+					put(grammarAccess.getValidLFQNWithKeywordsAccess().getGroup_1(), "rule__ValidLFQNWithKeywords__Group_1__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup(), "rule__Multiplicity__Group__0");
+					put(grammarAccess.getMultiplicityAccess().getGroup_2(), "rule__Multiplicity__Group_2__0");
+					put(grammarAccess.getLIntAccess().getGroup(), "rule__LInt__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup(), "rule__LDecimal__Group__0");
+					put(grammarAccess.getLDecimalAccess().getGroup_1(), "rule__LDecimal__Group_1__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__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.getLServiceModelAccess().getPackagesAssignment(), "rule__LServiceModel__PackagesAssignment");
+					put(grammarAccess.getClassAccess().getAnnotationsAssignment_1(), "rule__Class__AnnotationsAssignment_1");
+					put(grammarAccess.getClassAccess().getNameAssignment_4(), "rule__Class__NameAssignment_4");
+					put(grammarAccess.getClassAccess().getDtoAssignment_6(), "rule__Class__DtoAssignment_6");
+					put(grammarAccess.getClassAccess().getMutablePersistenceIdAssignment_8_0(), "rule__Class__MutablePersistenceIdAssignment_8_0");
+					put(grammarAccess.getClassAccess().getPersistenceIdAssignment_8_2(), "rule__Class__PersistenceIdAssignment_8_2");
+					put(grammarAccess.getClassAccess().getValidatorsAssignment_9_2(), "rule__Class__ValidatorsAssignment_9_2");
+					put(grammarAccess.getClassAccess().getValidatorsAssignment_9_3_1(), "rule__Class__ValidatorsAssignment_9_3_1");
+					put(grammarAccess.getClassAccess().getInjectedServicesAssignment_10(), "rule__Class__InjectedServicesAssignment_10");
+					put(grammarAccess.getClassAccess().getOperationsAssignment_11(), "rule__Class__OperationsAssignment_11");
+					put(grammarAccess.getValidatorDefAccess().getValidatorTypeAssignment_0_0(), "rule__ValidatorDef__ValidatorTypeAssignment_0_0");
+					put(grammarAccess.getValidatorDefAccess().getValidatorIdAssignment_1(), "rule__ValidatorDef__ValidatorIdAssignment_1");
+					put(grammarAccess.getInjectedServicesAccess().getServicesAssignment_1(), "rule__InjectedServices__ServicesAssignment_1");
+					put(grammarAccess.getInjectedServiceAccess().getCardinalityAssignment_2(), "rule__InjectedService__CardinalityAssignment_2");
+					put(grammarAccess.getInjectedServiceAccess().getServiceAssignment_3(), "rule__InjectedService__ServiceAssignment_3");
+					put(grammarAccess.getInjectedServiceAccess().getAttributeNameAssignment_4(), "rule__InjectedService__AttributeNameAssignment_4");
+					put(grammarAccess.getFilterableAttributesAccess().getFilterableFeaturesAssignment_2(), "rule__FilterableAttributes__FilterableFeaturesAssignment_2");
+					put(grammarAccess.getFilterableAttributesAccess().getFilterableFeaturesAssignment_3_1(), "rule__FilterableAttributes__FilterableFeaturesAssignment_3_1");
+					put(grammarAccess.getSortableAttributesAccess().getSortableFeaturesAssignment_2(), "rule__SortableAttributes__SortableFeaturesAssignment_2");
+					put(grammarAccess.getSortableAttributesAccess().getSortableFeaturesAssignment_3_1(), "rule__SortableAttributes__SortableFeaturesAssignment_3_1");
+					put(grammarAccess.getOperationAccess().getAnnotationsAssignment_1(), "rule__Operation__AnnotationsAssignment_1");
+					put(grammarAccess.getOperationAccess().getTypeAssignment_2_1(), "rule__Operation__TypeAssignment_2_1");
+					put(grammarAccess.getOperationAccess().getNameAssignment_2_2(), "rule__Operation__NameAssignment_2_2");
+					put(grammarAccess.getOperationAccess().getParamsAssignment_2_4_0(), "rule__Operation__ParamsAssignment_2_4_0");
+					put(grammarAccess.getOperationAccess().getParamsAssignment_2_4_1_1(), "rule__Operation__ParamsAssignment_2_4_1_1");
+					put(grammarAccess.getOperationAccess().getBodyAssignment_2_6(), "rule__Operation__BodyAssignment_2_6");
+					put(grammarAccess.getTypedPackageAccess().getNameAssignment_2(), "rule__TypedPackage__NameAssignment_2");
+					put(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1(), "rule__TypedPackage__ImportsAssignment_3_1");
+					put(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2(), "rule__TypedPackage__TypesAssignment_3_2");
+					put(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1(), "rule__Import__ImportedNamespaceAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getNameAssignment_1(), "rule__DataType__NameAssignment_1");
+					put(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1(), "rule__DataType__JvmTypeReferenceAssignment_2_0_1");
+					put(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2(), "rule__DataType__AsPrimitiveAssignment_2_0_2");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3(), "rule__DataType__ConstraintsAssignment_2_0_3");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2(), "rule__DataType__PropertiesAssignment_2_0_4_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1(), "rule__DataType__PropertiesAssignment_2_0_4_3_1");
+					put(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0(), "rule__DataType__DateAssignment_2_1_0");
+					put(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1(), "rule__DataType__DateTypeAssignment_2_1_1");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2(), "rule__DataType__ConstraintsAssignment_2_1_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2(), "rule__DataType__PropertiesAssignment_2_1_3_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1(), "rule__DataType__PropertiesAssignment_2_1_3_3_1");
+					put(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0(), "rule__DataType__AsBlobAssignment_2_2_0");
+					put(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1(), "rule__DataType__ConstraintsAssignment_2_2_1");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2(), "rule__DataType__PropertiesAssignment_2_2_2_2");
+					put(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1(), "rule__DataType__PropertiesAssignment_2_2_2_3_1");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertFalse__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCAssertTrue__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3(), "rule__DtCDecimalMax__MaxAssignment_3");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMinAssignment_3(), "rule__DtCDecimalMin__MinAssignment_3");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCDecimalMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCDecimalMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCDigitsAccess().getIntDigitsAssignment_3(), "rule__DtCDigits__IntDigitsAssignment_3");
+					put(grammarAccess.getDtCDigitsAccess().getFractionDigitsAssignment_5(), "rule__DtCDigits__FractionDigitsAssignment_5");
+					put(grammarAccess.getDtCDigitsAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCDigits__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCDigits__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCDigitsAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCDigits__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCFuture__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCFutureAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCFuture__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCFutureAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCFuture__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCPastAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCPast__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCPastAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCPast__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCPastAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCPast__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMaxAssignment_3(), "rule__DtCNumericMax__MaxAssignment_3");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMax__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMinAssignment_3(), "rule__DtCNumericMin__MinAssignment_3");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCNumericMinAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCNumericMin__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNotNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNotNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNotNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCNullAccess().getMsgCodeAssignment_2_0_1_2(), "rule__DtCNull__MsgCodeAssignment_2_0_1_2");
+					put(grammarAccess.getDtCNullAccess().getMsgI18nKeyAssignment_2_1_2(), "rule__DtCNull__MsgI18nKeyAssignment_2_1_2");
+					put(grammarAccess.getDtCNullAccess().getSeverityAssignment_2_2_0_2(), "rule__DtCNull__SeverityAssignment_2_2_0_2");
+					put(grammarAccess.getDtCRegExAccess().getPatternAssignment_3(), "rule__DtCRegEx__PatternAssignment_3");
+					put(grammarAccess.getDtCRegExAccess().getMsgCodeAssignment_4_0_1_2(), "rule__DtCRegEx__MsgCodeAssignment_4_0_1_2");
+					put(grammarAccess.getDtCRegExAccess().getMsgI18nKeyAssignment_4_1_2(), "rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2");
+					put(grammarAccess.getDtCRegExAccess().getSeverityAssignment_4_2_0_2(), "rule__DtCRegEx__SeverityAssignment_4_2_0_2");
+					put(grammarAccess.getDtCSizeAccess().getMinAssignment_3(), "rule__DtCSize__MinAssignment_3");
+					put(grammarAccess.getDtCSizeAccess().getMaxAssignment_5(), "rule__DtCSize__MaxAssignment_5");
+					put(grammarAccess.getDtCSizeAccess().getMsgCodeAssignment_6_0_1_2(), "rule__DtCSize__MsgCodeAssignment_6_0_1_2");
+					put(grammarAccess.getDtCSizeAccess().getMsgI18nKeyAssignment_6_1_2(), "rule__DtCSize__MsgI18nKeyAssignment_6_1_2");
+					put(grammarAccess.getDtCSizeAccess().getSeverityAssignment_6_2_0_2(), "rule__DtCSize__SeverityAssignment_6_2_0_2");
+					put(grammarAccess.getModifierAccess().getFinalAssignment_0(), "rule__Modifier__FinalAssignment_0");
+					put(grammarAccess.getModifierAccess().getStaticAssignment_1(), "rule__Modifier__StaticAssignment_1");
+					put(grammarAccess.getModifierAccess().getVisibilityAssignment_2(), "rule__Modifier__VisibilityAssignment_2");
+					put(grammarAccess.getEnumAccess().getNameAssignment_1(), "rule__Enum__NameAssignment_1");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_3(), "rule__Enum__LiteralsAssignment_3");
+					put(grammarAccess.getEnumAccess().getLiteralsAssignment_4_1(), "rule__Enum__LiteralsAssignment_4_1");
+					put(grammarAccess.getEnumLiteralAccess().getNameAssignment_0(), "rule__EnumLiteral__NameAssignment_0");
+					put(grammarAccess.getEnumLiteralAccess().getDefaultAssignment_1_0_1(), "rule__EnumLiteral__DefaultAssignment_1_0_1");
+					put(grammarAccess.getEnumLiteralAccess().getNullAssignment_1_1_0(), "rule__EnumLiteral__NullAssignment_1_1_0");
+					put(grammarAccess.getEnumLiteralAccess().getValueAssignment_1_1_2_1(), "rule__EnumLiteral__ValueAssignment_1_1_2_1");
+					put(grammarAccess.getAnnotationDefAccess().getAnnotationAssignment_0(), "rule__AnnotationDef__AnnotationAssignment_0");
+					put(grammarAccess.getResultFiltersAccess().getResultFiltersAssignment_3(), "rule__ResultFilters__ResultFiltersAssignment_3");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getAttributeAssignment_0(), "rule__AttributeMatchingConstraint__AttributeAssignment_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeAssignment_1(), "rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0(), "rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0");
+					put(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1(), "rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1");
+					put(grammarAccess.getKeyAndValueAccess().getKeyAssignment_2(), "rule__KeyAndValue__KeyAssignment_2");
+					put(grammarAccess.getKeyAndValueAccess().getValueAssignment_5(), "rule__KeyAndValue__ValueAssignment_5");
+					put(grammarAccess.getMultiplicityAccess().getLowerAssignment_1(), "rule__Multiplicity__LowerAssignment_1");
+					put(grammarAccess.getMultiplicityAccess().getUpperAssignment_2_1(), "rule__Multiplicity__UpperAssignment_2_1");
+					put(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2(), "rule__XAnnotation__AnnotationTypeAssignment_2");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0");
+					put(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1(), "rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1");
+					put(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1(), "rule__XAnnotation__ValueAssignment_3_1_1");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0(), "rule__XAnnotationElementValuePair__ElementAssignment_0_0_0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1(), "rule__XAnnotationElementValuePair__ValueAssignment_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1(), "rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1(), "rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1(), "rule__XAssignment__FeatureAssignment_0_1");
+					put(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3(), "rule__XAssignment__ValueAssignment_0_3");
+					put(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XAssignment__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1(), "rule__XAssignment__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOrExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOrExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAndExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAndExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XEqualityExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1(), "rule__XEqualityExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1(), "rule__XRelationalExpression__TypeAssignment_1_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1(), "rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1");
+					put(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1(), "rule__XRelationalExpression__RightOperandAssignment_1_1_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1(), "rule__XOtherOperatorExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XAdditiveExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1(), "rule__XAdditiveExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1(), "rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1(), "rule__XMultiplicativeExpression__RightOperandAssignment_1_1");
+					put(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1(), "rule__XUnaryOperation__FeatureAssignment_0_1");
+					put(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2(), "rule__XUnaryOperation__OperandAssignment_0_2");
+					put(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1(), "rule__XCastedExpression__TypeAssignment_1_1");
+					put(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1(), "rule__XPostfixOperation__FeatureAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1(), "rule__XMemberFeatureCall__ValueAssignment_1_0_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1(), "rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2(), "rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1(), "rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2(), "rule__XMemberFeatureCall__FeatureAssignment_1_1_2");
+					put(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0(), "rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_1_1(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1");
+					put(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4(), "rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0(), "rule__XSetLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1(), "rule__XSetLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0(), "rule__XListLiteral__ElementsAssignment_3_0");
+					put(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1(), "rule__XListLiteral__ElementsAssignment_3_1_1");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0");
+					put(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1(), "rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1");
+					put(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1(), "rule__XClosure__ExplicitSyntaxAssignment_1_0_1");
+					put(grammarAccess.getXClosureAccess().getExpressionAssignment_2(), "rule__XClosure__ExpressionAssignment_2");
+					put(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0(), "rule__XExpressionInClosure__ExpressionsAssignment_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0");
+					put(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1(), "rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1");
+					put(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2(), "rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2");
+					put(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1(), "rule__XShortClosure__ExpressionAssignment_1");
+					put(grammarAccess.getXIfExpressionAccess().getIfAssignment_3(), "rule__XIfExpression__IfAssignment_3");
+					put(grammarAccess.getXIfExpressionAccess().getThenAssignment_5(), "rule__XIfExpression__ThenAssignment_5");
+					put(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1(), "rule__XIfExpression__ElseAssignment_6_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1(), "rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1(), "rule__XSwitchExpression__SwitchAssignment_2_0_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0(), "rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0");
+					put(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1(), "rule__XSwitchExpression__SwitchAssignment_2_1_1");
+					put(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4(), "rule__XSwitchExpression__CasesAssignment_4");
+					put(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2(), "rule__XSwitchExpression__DefaultAssignment_5_2");
+					put(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1(), "rule__XCasePart__TypeGuardAssignment_1");
+					put(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1(), "rule__XCasePart__CaseAssignment_2_1");
+					put(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1(), "rule__XCasePart__ThenAssignment_3_0_1");
+					put(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1(), "rule__XCasePart__FallThroughAssignment_3_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3(), "rule__XForLoopExpression__DeclaredParamAssignment_0_0_3");
+					put(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1(), "rule__XForLoopExpression__ForExpressionAssignment_1");
+					put(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3(), "rule__XForLoopExpression__EachExpressionAssignment_3");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1(), "rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5(), "rule__XBasicForLoopExpression__ExpressionAssignment_5");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1(), "rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9(), "rule__XBasicForLoopExpression__EachExpressionAssignment_9");
+					put(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3(), "rule__XWhileExpression__PredicateAssignment_3");
+					put(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5(), "rule__XWhileExpression__BodyAssignment_5");
+					put(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2(), "rule__XDoWhileExpression__BodyAssignment_2");
+					put(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5(), "rule__XDoWhileExpression__PredicateAssignment_5");
+					put(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0(), "rule__XBlockExpression__ExpressionsAssignment_2_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0(), "rule__XVariableDeclaration__WriteableAssignment_1_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0(), "rule__XVariableDeclaration__TypeAssignment_2_0_0_0");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1(), "rule__XVariableDeclaration__NameAssignment_2_0_0_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1(), "rule__XVariableDeclaration__NameAssignment_2_1");
+					put(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1(), "rule__XVariableDeclaration__RightAssignment_3_1");
+					put(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__JvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1(), "rule__JvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0(), "rule__FullJvmFormalParameter__ParameterTypeAssignment_0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1(), "rule__FullJvmFormalParameter__NameAssignment_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1(), "rule__XFeatureCall__TypeArgumentsAssignment_1_2_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2(), "rule__XFeatureCall__FeatureAssignment_2");
+					put(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0(), "rule__XFeatureCall__ExplicitOperationCallAssignment_3_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1");
+					put(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4(), "rule__XFeatureCall__FeatureCallArgumentsAssignment_4");
+					put(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2(), "rule__XConstructorCall__ConstructorAssignment_2");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_1");
+					put(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1(), "rule__XConstructorCall__TypeArgumentsAssignment_3_2_1");
+					put(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0(), "rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_0");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1(), "rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1");
+					put(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5(), "rule__XConstructorCall__ArgumentsAssignment_5");
+					put(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1(), "rule__XBooleanLiteral__IsTrueAssignment_1_1");
+					put(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1(), "rule__XNumberLiteral__ValueAssignment_1");
+					put(grammarAccess.getXStringLiteralAccess().getValueAssignment_1(), "rule__XStringLiteral__ValueAssignment_1");
+					put(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3(), "rule__XTypeLiteral__TypeAssignment_3");
+					put(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4(), "rule__XTypeLiteral__ArrayDimensionsAssignment_4");
+					put(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2(), "rule__XThrowExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2(), "rule__XReturnExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2(), "rule__XTryCatchFinallyExpression__ExpressionAssignment_2");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0(), "rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1(), "rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1(), "rule__XSynchronizedExpression__ParamAssignment_1");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3(), "rule__XSynchronizedExpression__ExpressionAssignment_3");
+					put(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2(), "rule__XCatchClause__DeclaredParamAssignment_2");
+					put(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4(), "rule__XCatchClause__ExpressionAssignment_4");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1(), "rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1");
+					put(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2(), "rule__XFunctionTypeRef__ReturnTypeAssignment_2");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0(), "rule__JvmParameterizedTypeReference__TypeAssignment_0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1(), "rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1(), "rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1(), "rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1");
+					put(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmUpperBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBound__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1(), "rule__JvmLowerBoundAnded__TypeReferenceAssignment_1");
+					put(grammarAccess.getJvmTypeParameterAccess().getNameAssignment_0(), "rule__JvmTypeParameter__NameAssignment_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_0(), "rule__JvmTypeParameter__ConstraintsAssignment_1_0");
+					put(grammarAccess.getJvmTypeParameterAccess().getConstraintsAssignment_1_1(), "rule__JvmTypeParameter__ConstraintsAssignment_1_1");
+					put(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment(), "rule__XImportSection__ImportDeclarationsAssignment");
+					put(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_1_0_0(), "rule__XImportDeclaration__StaticAssignment_1_0_0");
+					put(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_1_0_1(), "rule__XImportDeclaration__ExtensionAssignment_1_0_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_0_2(), "rule__XImportDeclaration__ImportedTypeAssignment_1_0_2");
+					put(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_1_0_3_0(), "rule__XImportDeclaration__WildcardAssignment_1_0_3_0");
+					put(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_1_0_3_1(), "rule__XImportDeclaration__MemberNameAssignment_1_0_3_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_1_1(), "rule__XImportDeclaration__ImportedTypeAssignment_1_1");
+					put(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_1_2(), "rule__XImportDeclaration__ImportedNamespaceAssignment_1_2");
+					put(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), "rule__DtCAssertFalse__UnorderedGroup_2");
+					put(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), "rule__DtCAssertTrue__UnorderedGroup_2");
+					put(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), "rule__DtCDecimalMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), "rule__DtCDecimalMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), "rule__DtCDigits__UnorderedGroup_6");
+					put(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), "rule__DtCFuture__UnorderedGroup_2");
+					put(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), "rule__DtCPast__UnorderedGroup_2");
+					put(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), "rule__DtCNumericMax__UnorderedGroup_4");
+					put(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), "rule__DtCNumericMin__UnorderedGroup_4");
+					put(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), "rule__DtCNotNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), "rule__DtCNull__UnorderedGroup_2");
+					put(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), "rule__DtCRegEx__UnorderedGroup_4");
+					put(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), "rule__DtCSize__UnorderedGroup_6");
+					put(grammarAccess.getModifierAccess().getUnorderedGroup(), "rule__Modifier__UnorderedGroup");
+					put(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), "rule__EnumLiteral__UnorderedGroup_1");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+	
+	@Override
+	protected Collection<FollowElement> getFollowElements(AbstractInternalContentAssistParser parser) {
+		try {
+			org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarParser typedParser = (org.eclipse.osbp.dsl.services.xtext.ui.contentassist.antlr.internal.InternalServicesGrammarParser) parser;
+			typedParser.entryRuleLServiceModel();
+			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 ServicesGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(ServicesGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g
new file mode 100644
index 0000000..c1509a1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalServicesGrammar;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.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.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+}
+
+@parser::members {
+ 
+ 	private ServicesGrammarGrammarAccess grammarAccess;
+ 	
+    public void setGrammarAccess(ServicesGrammarGrammarAccess grammarAccess) {
+    	this.grammarAccess = grammarAccess;
+    }
+    
+    @Override
+    protected Grammar getGrammar() {
+    	return grammarAccess.getGrammar();
+    }
+    
+    @Override
+    protected String getValueForTokenName(String tokenName) {
+    	return tokenName;
+    }
+
+}
+
+
+
+
+// Entry rule entryRuleLServiceModel
+entryRuleLServiceModel 
+:
+{ before(grammarAccess.getLServiceModelRule()); }
+	 ruleLServiceModel
+{ after(grammarAccess.getLServiceModelRule()); } 
+	 EOF 
+;
+
+// Rule LServiceModel
+ruleLServiceModel
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLServiceModelAccess().getPackagesAssignment()); }
+(rule__LServiceModel__PackagesAssignment)*
+{ after(grammarAccess.getLServiceModelAccess().getPackagesAssignment()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass 
+:
+{ before(grammarAccess.getClassRule()); }
+	 ruleClass
+{ after(grammarAccess.getClassRule()); } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getClassAccess().getGroup()); }
+(rule__Class__Group__0)
+{ after(grammarAccess.getClassAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidatorDef
+entryRuleValidatorDef 
+:
+{ before(grammarAccess.getValidatorDefRule()); }
+	 ruleValidatorDef
+{ after(grammarAccess.getValidatorDefRule()); } 
+	 EOF 
+;
+
+// Rule ValidatorDef
+ruleValidatorDef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidatorDefAccess().getAlternatives()); }
+(rule__ValidatorDef__Alternatives)
+{ after(grammarAccess.getValidatorDefAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInjectedServices
+entryRuleInjectedServices 
+:
+{ before(grammarAccess.getInjectedServicesRule()); }
+	 ruleInjectedServices
+{ after(grammarAccess.getInjectedServicesRule()); } 
+	 EOF 
+;
+
+// Rule InjectedServices
+ruleInjectedServices
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInjectedServicesAccess().getGroup()); }
+(rule__InjectedServices__Group__0)
+{ after(grammarAccess.getInjectedServicesAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleInjectedService
+entryRuleInjectedService 
+:
+{ before(grammarAccess.getInjectedServiceRule()); }
+	 ruleInjectedService
+{ after(grammarAccess.getInjectedServiceRule()); } 
+	 EOF 
+;
+
+// Rule InjectedService
+ruleInjectedService
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getGroup()); }
+(rule__InjectedService__Group__0)
+{ after(grammarAccess.getInjectedServiceAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleOperation
+entryRuleOperation 
+:
+{ before(grammarAccess.getOperationRule()); }
+	 ruleOperation
+{ after(grammarAccess.getOperationRule()); } 
+	 EOF 
+;
+
+// Rule Operation
+ruleOperation
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getOperationAccess().getGroup()); }
+(rule__Operation__Group__0)
+{ after(grammarAccess.getOperationAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage 
+:
+{ before(grammarAccess.getTypedPackageRule()); }
+	 ruleTypedPackage
+{ after(grammarAccess.getTypedPackageRule()); } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup()); }
+(rule__TypedPackage__Group__0)
+{ after(grammarAccess.getTypedPackageAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleType
+entryRuleType 
+:
+{ before(grammarAccess.getTypeRule()); }
+	 ruleType
+{ after(grammarAccess.getTypeRule()); } 
+	 EOF 
+;
+
+// Rule Type
+ruleType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTypeAccess().getAlternatives()); }
+(rule__Type__Alternatives)
+{ after(grammarAccess.getTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport 
+:
+{ before(grammarAccess.getImportRule()); }
+	 ruleImport
+{ after(grammarAccess.getImportRule()); } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getImportAccess().getGroup()); }
+(rule__Import__Group__0)
+{ after(grammarAccess.getImportAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType 
+:
+{ before(grammarAccess.getDataTypeRule()); }
+	 ruleDataType
+{ after(grammarAccess.getDataTypeRule()); } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup()); }
+(rule__DataType__Group__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint 
+:
+{ before(grammarAccess.getDataTypeConstraintRule()); }
+	 ruleDataTypeConstraint
+{ after(grammarAccess.getDataTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+(rule__DataTypeConstraint__Alternatives)
+{ after(grammarAccess.getDataTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint 
+:
+{ before(grammarAccess.getDateConstraintRule()); }
+	 ruleDateConstraint
+{ after(grammarAccess.getDateConstraintRule()); } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+(rule__DateConstraint__Alternatives)
+{ after(grammarAccess.getDateConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint 
+:
+{ before(grammarAccess.getBlobTypeConstraintRule()); }
+	 ruleBlobTypeConstraint
+{ after(grammarAccess.getBlobTypeConstraintRule()); } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+(rule__BlobTypeConstraint__Alternatives)
+{ after(grammarAccess.getBlobTypeConstraintAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse 
+:
+{ before(grammarAccess.getDtCAssertFalseRule()); }
+	 ruleDtCAssertFalse
+{ after(grammarAccess.getDtCAssertFalseRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+(rule__DtCAssertFalse__Group__0)
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue 
+:
+{ before(grammarAccess.getDtCAssertTrueRule()); }
+	 ruleDtCAssertTrue
+{ after(grammarAccess.getDtCAssertTrueRule()); } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+(rule__DtCAssertTrue__Group__0)
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax 
+:
+{ before(grammarAccess.getDtCDecimalMaxRule()); }
+	 ruleDtCDecimalMax
+{ after(grammarAccess.getDtCDecimalMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+(rule__DtCDecimalMax__Group__0)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin 
+:
+{ before(grammarAccess.getDtCDecimalMinRule()); }
+	 ruleDtCDecimalMin
+{ after(grammarAccess.getDtCDecimalMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+(rule__DtCDecimalMin__Group__0)
+{ after(grammarAccess.getDtCDecimalMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits 
+:
+{ before(grammarAccess.getDtCDigitsRule()); }
+	 ruleDtCDigits
+{ after(grammarAccess.getDtCDigitsRule()); } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCDigitsAccess().getGroup()); }
+(rule__DtCDigits__Group__0)
+{ after(grammarAccess.getDtCDigitsAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture 
+:
+{ before(grammarAccess.getDtCFutureRule()); }
+	 ruleDtCFuture
+{ after(grammarAccess.getDtCFutureRule()); } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCFutureAccess().getGroup()); }
+(rule__DtCFuture__Group__0)
+{ after(grammarAccess.getDtCFutureAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast 
+:
+{ before(grammarAccess.getDtCPastRule()); }
+	 ruleDtCPast
+{ after(grammarAccess.getDtCPastRule()); } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCPastAccess().getGroup()); }
+(rule__DtCPast__Group__0)
+{ after(grammarAccess.getDtCPastAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax 
+:
+{ before(grammarAccess.getDtCNumericMaxRule()); }
+	 ruleDtCNumericMax
+{ after(grammarAccess.getDtCNumericMaxRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+(rule__DtCNumericMax__Group__0)
+{ after(grammarAccess.getDtCNumericMaxAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin 
+:
+{ before(grammarAccess.getDtCNumericMinRule()); }
+	 ruleDtCNumericMin
+{ after(grammarAccess.getDtCNumericMinRule()); } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+(rule__DtCNumericMin__Group__0)
+{ after(grammarAccess.getDtCNumericMinAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull 
+:
+{ before(grammarAccess.getDtCNotNullRule()); }
+	 ruleDtCNotNull
+{ after(grammarAccess.getDtCNotNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNotNullAccess().getGroup()); }
+(rule__DtCNotNull__Group__0)
+{ after(grammarAccess.getDtCNotNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull 
+:
+{ before(grammarAccess.getDtCNullRule()); }
+	 ruleDtCNull
+{ after(grammarAccess.getDtCNullRule()); } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCNullAccess().getGroup()); }
+(rule__DtCNull__Group__0)
+{ after(grammarAccess.getDtCNullAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx 
+:
+{ before(grammarAccess.getDtCRegExRule()); }
+	 ruleDtCRegEx
+{ after(grammarAccess.getDtCRegExRule()); } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCRegExAccess().getGroup()); }
+(rule__DtCRegEx__Group__0)
+{ after(grammarAccess.getDtCRegExAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize 
+:
+{ before(grammarAccess.getDtCSizeRule()); }
+	 ruleDtCSize
+{ after(grammarAccess.getDtCSizeRule()); } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getDtCSizeAccess().getGroup()); }
+(rule__DtCSize__Group__0)
+{ after(grammarAccess.getDtCSizeAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType 
+:
+{ before(grammarAccess.getScalarTypeRule()); }
+	 ruleScalarType
+{ after(grammarAccess.getScalarTypeRule()); } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+(rule__ScalarType__Alternatives)
+{ after(grammarAccess.getScalarTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum 
+:
+{ before(grammarAccess.getEnumRule()); }
+	 ruleEnum
+{ after(grammarAccess.getEnumRule()); } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumAccess().getGroup()); }
+(rule__Enum__Group__0)
+{ after(grammarAccess.getEnumAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral 
+:
+{ before(grammarAccess.getEnumLiteralRule()); }
+	 ruleEnumLiteral
+{ after(grammarAccess.getEnumLiteralRule()); } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getEnumLiteralAccess().getGroup()); }
+(rule__EnumLiteral__Group__0)
+{ after(grammarAccess.getEnumLiteralAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef 
+:
+{ before(grammarAccess.getAnnotationDefRule()); }
+	 ruleAnnotationDef
+{ after(grammarAccess.getAnnotationDefRule()); } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAnnotationDefAccess().getGroup()); }
+(rule__AnnotationDef__Group__0)
+{ after(grammarAccess.getAnnotationDefAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter 
+:
+{ before(grammarAccess.getResultFilterRule()); }
+	 ruleResultFilter
+{ after(grammarAccess.getResultFilterRule()); } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+	ruleAttributeMatchingConstraint
+{ after(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint 
+:
+{ before(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 ruleAttributeMatchingConstraint
+{ after(grammarAccess.getAttributeMatchingConstraintRule()); } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+(rule__AttributeMatchingConstraint__Group__0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue 
+:
+{ before(grammarAccess.getKeyAndValueRule()); }
+	 ruleKeyAndValue
+{ after(grammarAccess.getKeyAndValueRule()); } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getKeyAndValueAccess().getGroup()); }
+(rule__KeyAndValue__Group__0)
+{ after(grammarAccess.getKeyAndValueAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard 
+:
+{ before(grammarAccess.getLQualifiedNameWithWildCardRule()); }
+	 ruleLQualifiedNameWithWildCard
+{ after(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+(rule__LQualifiedNameWithWildCard__Group__0)
+{ after(grammarAccess.getLQualifiedNameWithWildCardAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN 
+:
+{ before(grammarAccess.getLFQNRule()); }
+	 ruleLFQN
+{ after(grammarAccess.getLFQNRule()); } 
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLFQNAccess().getGroup()); }
+(rule__LFQN__Group__0)
+{ after(grammarAccess.getLFQNAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE 
+:
+{ before(grammarAccess.getTYPE_CROSS_REFERENCERule()); }
+	 ruleTYPE_CROSS_REFERENCE
+{ after(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+	RULE_ID
+{ after(grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords 
+:
+{ before(grammarAccess.getValidIDWithKeywordsRule()); }
+	 ruleValidIDWithKeywords
+{ after(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+(rule__ValidIDWithKeywords__Alternatives)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt 
+:
+{ before(grammarAccess.getLIntRule()); }
+	 ruleLInt
+{ after(grammarAccess.getLIntRule()); } 
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLIntAccess().getGroup()); }
+(rule__LInt__Group__0)
+{ after(grammarAccess.getLIntAccess().getGroup()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal 
+:
+{ before(grammarAccess.getLDecimalRule()); }
+	 ruleLDecimal
+{ after(grammarAccess.getLDecimalRule()); } 
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal
+    @init {
+		int stackSize = keepStackSize();
+    }
+	:
+(
+{ before(grammarAccess.getLDecimalAccess().getGroup()); }
+(rule__LDecimal__Group__0)
+{ after(grammarAccess.getLDecimalAccess().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 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 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 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 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 Cardinality
+ruleCardinality
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCardinalityAccess().getAlternatives()); }
+(rule__Cardinality__Alternatives)
+{ after(grammarAccess.getCardinalityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+(rule__ConstraintSeverity__Alternatives)
+{ after(grammarAccess.getConstraintSeverityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule DateType
+ruleDateType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getAlternatives()); }
+(rule__DateType__Alternatives)
+{ after(grammarAccess.getDateTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LVisibility
+ruleLVisibility
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+(rule__LVisibility__Alternatives)
+{ after(grammarAccess.getLVisibilityAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LComparatorType
+ruleLComparatorType
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+(rule__LComparatorType__Alternatives)
+{ after(grammarAccess.getLComparatorTypeAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule LowerBound
+ruleLowerBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+(rule__LowerBound__Alternatives)
+{ after(grammarAccess.getLowerBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+// Rule UpperBound
+ruleUpperBound
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+(rule__UpperBound__Alternatives)
+{ after(grammarAccess.getUpperBoundAccess().getAlternatives()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__ValidatorDef__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidatorDefAccess().getGroup_0()); }
+(rule__ValidatorDef__Group_0__0)
+{ after(grammarAccess.getValidatorDefAccess().getGroup_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValidatorDefAccess().getValidatorIdAssignment_1()); }
+(rule__ValidatorDef__ValidatorIdAssignment_1)
+{ after(grammarAccess.getValidatorDefAccess().getValidatorIdAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Type__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+	ruleScalarType
+{ after(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+	ruleClass
+{ after(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+(rule__DataType__Group_2_0__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+(rule__DataType__Group_2_1__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+(rule__DataType__Group_2_2__0)
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+	ruleDtCAssertFalse
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+	ruleDtCAssertTrue
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+	ruleDtCDecimalMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+	ruleDtCDecimalMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+	ruleDtCDigits
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+	ruleDtCNumericMax
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+	ruleDtCNumericMin
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+	ruleDtCNull
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+	ruleDtCRegEx
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); }
+)
+
+    |(
+{ before(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+	ruleDtCSize
+{ after(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+	ruleDtCFuture
+{ after(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+	ruleDtCPast
+{ after(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); }
+)
+
+    |(
+{ before(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+	ruleDtCNull
+{ after(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__BlobTypeConstraint__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+	ruleDtCNotNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+	ruleDtCNull
+{ after(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ScalarType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+	ruleDataType
+{ after(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); }
+)
+
+    |(
+{ before(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+	ruleEnum
+{ after(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__AttributeMatchingConstraint__Alternatives_2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+(rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueAssignment_2_0()); }
+)
+
+    |(
+{ before(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+(rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1)
+{ after(grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValidIDWithKeywords__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+
+	'cachable' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+
+	'id' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+
+	'uuid' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+
+	'transient' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+
+	'version' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+(rule__ValidIDWithKeywords__Group_5__0)
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getGroup_5()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+
+	'refers' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+
+	'settings' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+
+	'lazy' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+
+	'notnull' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+
+	'dto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+
+	'date' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+
+	'mapto' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+
+	'ref' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+
+	'cascade' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+
+	'var' 
+
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); }
+)
+
+    |(
+{ before(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+	RULE_ID
+{ after(grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LInt__Alternatives_0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+
+	'+' 
+
+{ after(grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); }
+
+	'-' 
+
+{ after(grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_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__Cardinality__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getCardinalityAccess().getZERO_TO_ONEEnumLiteralDeclaration_0()); }
+(	'optional' 
+)
+{ after(grammarAccess.getCardinalityAccess().getZERO_TO_ONEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getCardinalityAccess().getONE_TO_ONEEnumLiteralDeclaration_1()); }
+(	'mandatory' 
+)
+{ after(grammarAccess.getCardinalityAccess().getONE_TO_ONEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getCardinalityAccess().getZERO_TO_MANYEnumLiteralDeclaration_2()); }
+(	'zeroToMany' 
+)
+{ after(grammarAccess.getCardinalityAccess().getZERO_TO_MANYEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getCardinalityAccess().getONE_TO_MANYEnumLiteralDeclaration_3()); }
+(	'oneToMany' 
+)
+{ after(grammarAccess.getCardinalityAccess().getONE_TO_MANYEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ConstraintSeverity__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+(	'info' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getINFOEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+(	'warn' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getWARNINGEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+(	'error' 
+)
+{ after(grammarAccess.getConstraintSeverityAccess().getERROREnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DateType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+(	'date' 
+)
+{ after(grammarAccess.getDateTypeAccess().getDATEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+(	'time' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+(	'timestamp' 
+)
+{ after(grammarAccess.getDateTypeAccess().getTIMESTAMPEnumLiteralDeclaration_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LVisibility__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+(	'package' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPACKAGEEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+(	'private' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPRIVATEEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+(	'protected' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPROTECTEDEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+(	'public' 
+)
+{ after(grammarAccess.getLVisibilityAccess().getPUBLICEnumLiteralDeclaration_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LComparatorType__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+(	'==' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getEQUALSEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+(	'>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATEREnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+(	'<' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWEREnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+(	'>=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getGREATER_EQEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+(	'<=' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getLOWER_EQEnumLiteralDeclaration_4()); }
+)
+
+    |(
+{ before(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+(	'<>' 
+)
+{ after(grammarAccess.getLComparatorTypeAccess().getNOT_EQEnumLiteralDeclaration_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LowerBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+(	'0' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getZEROEnumLiteralDeclaration_1()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+(	'?' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getOPTIONALEnumLiteralDeclaration_2()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+(	'+' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getATLEASTONEEnumLiteralDeclaration_3()); }
+)
+
+    |(
+{ before(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+(	'1' 
+)
+{ after(grammarAccess.getLowerBoundAccess().getONEEnumLiteralDeclaration_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__UpperBound__Alternatives
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+(	'*' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getMANYEnumLiteralDeclaration_0()); }
+)
+
+    |(
+{ before(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+(	'1' 
+)
+{ after(grammarAccess.getUpperBoundAccess().getONEEnumLiteralDeclaration_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+rule__Class__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__0__Impl
+	rule__Class__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLDTOServiceAction_0()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLDTOServiceAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__1__Impl
+	rule__Class__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+(rule__Class__AnnotationsAssignment_1)*
+{ after(grammarAccess.getClassAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__2__Impl
+	rule__Class__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLDTOServiceAnnotationInfoAction_2()); }
+(
+
+)
+{ after(grammarAccess.getClassAccess().getLDTOServiceAnnotationInfoAction_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__3__Impl
+	rule__Class__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getDtoserviceKeyword_3()); }
+
+	'dtoservice' 
+
+{ after(grammarAccess.getClassAccess().getDtoserviceKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__4__Impl
+	rule__Class__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getNameAssignment_4()); }
+(rule__Class__NameAssignment_4)
+{ after(grammarAccess.getClassAccess().getNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__5__Impl
+	rule__Class__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getProvidesKeyword_5()); }
+
+	'provides' 
+
+{ after(grammarAccess.getClassAccess().getProvidesKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__6__Impl
+	rule__Class__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getDtoAssignment_6()); }
+(rule__Class__DtoAssignment_6)
+{ after(grammarAccess.getClassAccess().getDtoAssignment_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__7
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__7__Impl
+	rule__Class__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__7__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_7()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_7()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__8
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__8__Impl
+	rule__Class__Group__9
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__8__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_8()); }
+(rule__Class__Group_8__0)?
+{ after(grammarAccess.getClassAccess().getGroup_8()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__9
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__9__Impl
+	rule__Class__Group__10
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__9__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_9()); }
+(rule__Class__Group_9__0)?
+{ after(grammarAccess.getClassAccess().getGroup_9()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__10
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__10__Impl
+	rule__Class__Group__11
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__10__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getInjectedServicesAssignment_10()); }
+(rule__Class__InjectedServicesAssignment_10)
+{ after(grammarAccess.getClassAccess().getInjectedServicesAssignment_10()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__11
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__11__Impl
+	rule__Class__Group__12
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__11__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getOperationsAssignment_11()); }
+(rule__Class__OperationsAssignment_11)*
+{ after(grammarAccess.getClassAccess().getOperationsAssignment_11()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group__12
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group__12__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group__12__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_12()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_12()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_8__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_8__0__Impl
+	rule__Class__Group_8__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_8__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getMutablePersistenceIdAssignment_8_0()); }
+(rule__Class__MutablePersistenceIdAssignment_8_0)?
+{ after(grammarAccess.getClassAccess().getMutablePersistenceIdAssignment_8_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_8__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_8__1__Impl
+	rule__Class__Group_8__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_8__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceUnitKeyword_8_1()); }
+
+	'persistenceUnit' 
+
+{ after(grammarAccess.getClassAccess().getPersistenceUnitKeyword_8_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_8__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_8__2__Impl
+	rule__Class__Group_8__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_8__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getPersistenceIdAssignment_8_2()); }
+(rule__Class__PersistenceIdAssignment_8_2)
+{ after(grammarAccess.getClassAccess().getPersistenceIdAssignment_8_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_8__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_8__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_8__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSemicolonKeyword_8_3()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getClassAccess().getSemicolonKeyword_8_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_9__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9__0__Impl
+	rule__Class__Group_9__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getValidatorsKeyword_9_0()); }
+
+	'validators' 
+
+{ after(grammarAccess.getClassAccess().getValidatorsKeyword_9_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_9__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9__1__Impl
+	rule__Class__Group_9__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_9_1()); }
+
+	'{' 
+
+{ after(grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_9_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_9__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9__2__Impl
+	rule__Class__Group_9__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getValidatorsAssignment_9_2()); }
+(rule__Class__ValidatorsAssignment_9_2)
+{ after(grammarAccess.getClassAccess().getValidatorsAssignment_9_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_9__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9__3__Impl
+	rule__Class__Group_9__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getGroup_9_3()); }
+(rule__Class__Group_9_3__0)*
+{ after(grammarAccess.getClassAccess().getGroup_9_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_9__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9__4__Impl
+	rule__Class__Group_9__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getSemicolonKeyword_9_4()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getClassAccess().getSemicolonKeyword_9_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_9__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_9_5()); }
+
+	'}' 
+
+{ after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_9_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Class__Group_9_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9_3__0__Impl
+	rule__Class__Group_9_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getCommaSpaceKeyword_9_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getClassAccess().getCommaSpaceKeyword_9_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Class__Group_9_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Class__Group_9_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Class__Group_9_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getClassAccess().getValidatorsAssignment_9_3_1()); }
+(rule__Class__ValidatorsAssignment_9_3_1)
+{ after(grammarAccess.getClassAccess().getValidatorsAssignment_9_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__ValidatorDef__Group_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__ValidatorDef__Group_0__0__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ValidatorDef__Group_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getValidatorDefAccess().getValidatorTypeAssignment_0_0()); }
+(rule__ValidatorDef__ValidatorTypeAssignment_0_0)
+{ after(grammarAccess.getValidatorDefAccess().getValidatorTypeAssignment_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+rule__InjectedServices__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedServices__Group__0__Impl
+	rule__InjectedServices__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedServices__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServicesAccess().getLInjectedServicesAction_0()); }
+(
+
+)
+{ after(grammarAccess.getInjectedServicesAccess().getLInjectedServicesAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InjectedServices__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedServices__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedServices__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServicesAccess().getServicesAssignment_1()); }
+(rule__InjectedServices__ServicesAssignment_1)*
+{ after(grammarAccess.getInjectedServicesAccess().getServicesAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__InjectedService__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedService__Group__0__Impl
+	rule__InjectedService__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedService__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getLInjectedServiceAction_0()); }
+(
+
+)
+{ after(grammarAccess.getInjectedServiceAccess().getLInjectedServiceAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InjectedService__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedService__Group__1__Impl
+	rule__InjectedService__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedService__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getInjectServiceKeyword_1()); }
+
+	'injectService' 
+
+{ after(grammarAccess.getInjectedServiceAccess().getInjectServiceKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InjectedService__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedService__Group__2__Impl
+	rule__InjectedService__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedService__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getCardinalityAssignment_2()); }
+(rule__InjectedService__CardinalityAssignment_2)?
+{ after(grammarAccess.getInjectedServiceAccess().getCardinalityAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InjectedService__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedService__Group__3__Impl
+	rule__InjectedService__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedService__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getServiceAssignment_3()); }
+(rule__InjectedService__ServiceAssignment_3)
+{ after(grammarAccess.getInjectedServiceAccess().getServiceAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InjectedService__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedService__Group__4__Impl
+	rule__InjectedService__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedService__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getAttributeNameAssignment_4()); }
+(rule__InjectedService__AttributeNameAssignment_4)
+{ after(grammarAccess.getInjectedServiceAccess().getAttributeNameAssignment_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__InjectedService__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__InjectedService__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__InjectedService__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getInjectedServiceAccess().getSemicolonKeyword_5()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getInjectedServiceAccess().getSemicolonKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Operation__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group__0__Impl
+	rule__Operation__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getLServiceOperationAction_0()); }
+(
+
+)
+{ after(grammarAccess.getOperationAccess().getLServiceOperationAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group__1__Impl
+	rule__Operation__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getAnnotationsAssignment_1()); }
+(rule__Operation__AnnotationsAssignment_1)*
+{ after(grammarAccess.getOperationAccess().getAnnotationsAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getGroup_2()); }
+(rule__Operation__Group_2__0)
+{ after(grammarAccess.getOperationAccess().getGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__Operation__Group_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__0__Impl
+	rule__Operation__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getDefKeyword_2_0()); }
+
+	'def' 
+
+{ after(grammarAccess.getOperationAccess().getDefKeyword_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__1__Impl
+	rule__Operation__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getTypeAssignment_2_1()); }
+(rule__Operation__TypeAssignment_2_1)
+{ after(grammarAccess.getOperationAccess().getTypeAssignment_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__2__Impl
+	rule__Operation__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getNameAssignment_2_2()); }
+(rule__Operation__NameAssignment_2_2)
+{ after(grammarAccess.getOperationAccess().getNameAssignment_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__3__Impl
+	rule__Operation__Group_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2_3()); }
+
+	'(' 
+
+{ after(grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__4__Impl
+	rule__Operation__Group_2__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getGroup_2_4()); }
+(rule__Operation__Group_2_4__0)?
+{ after(grammarAccess.getOperationAccess().getGroup_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__5__Impl
+	rule__Operation__Group_2__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getRightParenthesisKeyword_2_5()); }
+
+	')' 
+
+{ after(grammarAccess.getOperationAccess().getRightParenthesisKeyword_2_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2__6
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2__6__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getBodyAssignment_2_6()); }
+(rule__Operation__BodyAssignment_2_6)
+{ after(grammarAccess.getOperationAccess().getBodyAssignment_2_6()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__Operation__Group_2_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2_4__0__Impl
+	rule__Operation__Group_2_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getParamsAssignment_2_4_0()); }
+(rule__Operation__ParamsAssignment_2_4_0)
+{ after(grammarAccess.getOperationAccess().getParamsAssignment_2_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getGroup_2_4_1()); }
+(rule__Operation__Group_2_4_1__0)*
+{ after(grammarAccess.getOperationAccess().getGroup_2_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__Operation__Group_2_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2_4_1__0__Impl
+	rule__Operation__Group_2_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getCommaSpaceKeyword_2_4_1_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getOperationAccess().getCommaSpaceKeyword_2_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Operation__Group_2_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Operation__Group_2_4_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Operation__Group_2_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getOperationAccess().getParamsAssignment_2_4_1_1()); }
+(rule__Operation__ParamsAssignment_2_4_1_1)
+{ after(grammarAccess.getOperationAccess().getParamsAssignment_2_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__TypedPackage__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__0__Impl
+	rule__TypedPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0()); }
+(
+
+)
+{ after(grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__1__Impl
+	rule__TypedPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getPackageKeyword_1()); }
+
+	'package' 
+
+{ after(grammarAccess.getTypedPackageAccess().getPackageKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__2__Impl
+	rule__TypedPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getNameAssignment_2()); }
+(rule__TypedPackage__NameAssignment_2)
+{ after(grammarAccess.getTypedPackageAccess().getNameAssignment_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getGroup_3()); }
+(rule__TypedPackage__Group_3__0)?
+{ after(grammarAccess.getTypedPackageAccess().getGroup_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__TypedPackage__Group_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__0__Impl
+	rule__TypedPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+
+	'{' 
+
+{ after(grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__1__Impl
+	rule__TypedPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1()); }
+(rule__TypedPackage__ImportsAssignment_3_1)*
+{ after(grammarAccess.getTypedPackageAccess().getImportsAssignment_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__2__Impl
+	rule__TypedPackage__Group_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2()); }
+(rule__TypedPackage__TypesAssignment_3_2)*
+{ after(grammarAccess.getTypedPackageAccess().getTypesAssignment_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__TypedPackage__Group_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__TypedPackage__Group_3__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TypedPackage__Group_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+
+	'}' 
+
+{ after(grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__Import__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__0__Impl
+	rule__Import__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportKeyword_0()); }
+
+	'import' 
+
+{ after(grammarAccess.getImportAccess().getImportKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__1__Impl
+	rule__Import__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+(rule__Import__ImportedNamespaceAssignment_1)
+{ after(grammarAccess.getImportAccess().getImportedNamespaceAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Import__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__Import__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Import__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getImportAccess().getSemicolonKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataType__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__0__Impl
+	rule__DataType__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDatatypeKeyword_0()); }
+
+	'datatype' 
+
+{ after(grammarAccess.getDataTypeAccess().getDatatypeKeyword_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__1__Impl
+	rule__DataType__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getNameAssignment_1()); }
+(rule__DataType__NameAssignment_1)
+{ after(grammarAccess.getDataTypeAccess().getNameAssignment_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__2__Impl
+	rule__DataType__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAlternatives_2()); }
+(rule__DataType__Alternatives_2)
+{ after(grammarAccess.getDataTypeAccess().getAlternatives_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getSemicolonKeyword_3()); }
+(
+	';' 
+)?
+{ after(grammarAccess.getDataTypeAccess().getSemicolonKeyword_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__0__Impl
+	rule__DataType__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0()); }
+
+	'jvmType' 
+
+{ after(grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__1__Impl
+	rule__DataType__Group_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1()); }
+(rule__DataType__JvmTypeReferenceAssignment_2_0_1)
+{ after(grammarAccess.getDataTypeAccess().getJvmTypeReferenceAssignment_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__2__Impl
+	rule__DataType__Group_2_0__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2()); }
+(rule__DataType__AsPrimitiveAssignment_2_0_2)?
+{ after(grammarAccess.getDataTypeAccess().getAsPrimitiveAssignment_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__3__Impl
+	rule__DataType__Group_2_0__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3()); }
+(rule__DataType__ConstraintsAssignment_2_0_3)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_0_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0_4()); }
+(rule__DataType__Group_2_0_4__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0_4__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__0__Impl
+	rule__DataType__Group_2_0_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__1__Impl
+	rule__DataType__Group_2_0_4__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__2__Impl
+	rule__DataType__Group_2_0_4__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2()); }
+(rule__DataType__PropertiesAssignment_2_0_4_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__3__Impl
+	rule__DataType__Group_2_0_4__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3()); }
+(rule__DataType__Group_2_0_4_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_0_4_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_0_4_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4_3__0__Impl
+	rule__DataType__Group_2_0_4_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_0_4_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_0_4_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_0_4_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1()); }
+(rule__DataType__PropertiesAssignment_2_0_4_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_0_4_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataType__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__0__Impl
+	rule__DataType__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0()); }
+(rule__DataType__DateAssignment_2_1_0)
+{ after(grammarAccess.getDataTypeAccess().getDateAssignment_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__1__Impl
+	rule__DataType__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1()); }
+(rule__DataType__DateTypeAssignment_2_1_1)
+{ after(grammarAccess.getDataTypeAccess().getDateTypeAssignment_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__2__Impl
+	rule__DataType__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2()); }
+(rule__DataType__ConstraintsAssignment_2_1_2)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1_3()); }
+(rule__DataType__Group_2_1_3__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_1_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__0__Impl
+	rule__DataType__Group_2_1_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__1__Impl
+	rule__DataType__Group_2_1_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__2__Impl
+	rule__DataType__Group_2_1_3__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2()); }
+(rule__DataType__PropertiesAssignment_2_1_3_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__3__Impl
+	rule__DataType__Group_2_1_3__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3()); }
+(rule__DataType__Group_2_1_3_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_1_3_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_1_3_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3_3__0__Impl
+	rule__DataType__Group_2_1_3_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_1_3_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_1_3_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_1_3_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1()); }
+(rule__DataType__PropertiesAssignment_2_1_3_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_1_3_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DataType__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__0__Impl
+	rule__DataType__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0()); }
+(rule__DataType__AsBlobAssignment_2_2_0)
+{ after(grammarAccess.getDataTypeAccess().getAsBlobAssignment_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__1__Impl
+	rule__DataType__Group_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1()); }
+(rule__DataType__ConstraintsAssignment_2_2_1)*
+{ after(grammarAccess.getDataTypeAccess().getConstraintsAssignment_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2_2()); }
+(rule__DataType__Group_2_2_2__0)?
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__0__Impl
+	rule__DataType__Group_2_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0()); }
+
+	'properties' 
+
+{ after(grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__1__Impl
+	rule__DataType__Group_2_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1()); }
+
+	'(' 
+
+{ after(grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__2__Impl
+	rule__DataType__Group_2_2_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2()); }
+(rule__DataType__PropertiesAssignment_2_2_2_2)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__3__Impl
+	rule__DataType__Group_2_2_2__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3()); }
+(rule__DataType__Group_2_2_2_3__0)*
+{ after(grammarAccess.getDataTypeAccess().getGroup_2_2_2_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4()); }
+
+	')' 
+
+{ after(grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DataType__Group_2_2_2_3__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2_3__0__Impl
+	rule__DataType__Group_2_2_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2_3__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0()); }
+
+	', ' 
+
+{ after(grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DataType__Group_2_2_2_3__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DataType__Group_2_2_2_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DataType__Group_2_2_2_3__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1()); }
+(rule__DataType__PropertiesAssignment_2_2_2_3_1)
+{ after(grammarAccess.getDataTypeAccess().getPropertiesAssignment_2_2_2_3_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__0__Impl
+	rule__DtCAssertFalse__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__1__Impl
+	rule__DtCAssertFalse__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1()); }
+
+	'isFalse' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()); }
+(rule__DtCAssertFalse__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0__0__Impl
+	rule__DtCAssertFalse__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1()); }
+(rule__DtCAssertFalse__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__0__Impl
+	rule__DtCAssertFalse__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__1__Impl
+	rule__DtCAssertFalse__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2()); }
+(rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgCodeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__0__Impl
+	rule__DtCAssertFalse__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__1__Impl
+	rule__DtCAssertFalse__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2()); }
+(rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2__0__Impl
+	rule__DtCAssertFalse__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0()); }
+(rule__DtCAssertFalse__Group_2_2_0__0)?
+{ after(grammarAccess.getDtCAssertFalseAccess().getGroup_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertFalse__Group_2_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__0__Impl
+	rule__DtCAssertFalse__Group_2_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__1__Impl
+	rule__DtCAssertFalse__Group_2_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertFalse__Group_2_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertFalse__Group_2_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertFalse__Group_2_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2()); }
+(rule__DtCAssertFalse__SeverityAssignment_2_2_0_2)
+{ after(grammarAccess.getDtCAssertFalseAccess().getSeverityAssignment_2_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__0__Impl
+	rule__DtCAssertTrue__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__1__Impl
+	rule__DtCAssertTrue__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1()); }
+
+	'isTrue' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()); }
+(rule__DtCAssertTrue__UnorderedGroup_2)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0__0__Impl
+	rule__DtCAssertTrue__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1()); }
+(rule__DtCAssertTrue__Group_2_0_1__0)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__0__Impl
+	rule__DtCAssertTrue__Group_2_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__1__Impl
+	rule__DtCAssertTrue__Group_2_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2()); }
+(rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgCodeAssignment_2_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__0__Impl
+	rule__DtCAssertTrue__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__1__Impl
+	rule__DtCAssertTrue__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2()); }
+(rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyAssignment_2_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_2__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2__0__Impl
+	rule__DtCAssertTrue__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0()); }
+(rule__DtCAssertTrue__Group_2_2_0__0)?
+{ after(grammarAccess.getDtCAssertTrueAccess().getGroup_2_2_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()); }
+
+	']' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCAssertTrue__Group_2_2_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__0__Impl
+	rule__DtCAssertTrue__Group_2_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0()); }
+
+	'severity' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__1__Impl
+	rule__DtCAssertTrue__Group_2_2_0__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCAssertTrue__Group_2_2_0__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCAssertTrue__Group_2_2_0__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCAssertTrue__Group_2_2_0__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2()); }
+(rule__DtCAssertTrue__SeverityAssignment_2_2_0_2)
+{ after(grammarAccess.getDtCAssertTrueAccess().getSeverityAssignment_2_2_0_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__0__Impl
+	rule__DtCDecimalMax__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0()); }
+(
+
+)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__1__Impl
+	rule__DtCDecimalMax__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1()); }
+
+	'maxDecimal' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__2__Impl
+	rule__DtCDecimalMax__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2()); }
+
+	'(' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__3
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__3__Impl
+	rule__DtCDecimalMax__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__3__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3()); }
+(rule__DtCDecimalMax__MaxAssignment_3)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMaxAssignment_3()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__4
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__4__Impl
+	rule__DtCDecimalMax__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__4__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()); }
+(rule__DtCDecimalMax__UnorderedGroup_4)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group__5
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group__5__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5()); }
+
+	')' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_0__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0__0__Impl
+	rule__DtCDecimalMax__Group_4_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()); }
+
+	'[' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1()); }
+(rule__DtCDecimalMax__Group_4_0_1__0)?
+{ after(grammarAccess.getDtCDecimalMaxAccess().getGroup_4_0_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_0_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__0__Impl
+	rule__DtCDecimalMax__Group_4_0_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0()); }
+
+	'msgCode' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__1__Impl
+	rule__DtCDecimalMax__Group_4_0_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_0_1__2
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_0_1__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_0_1__2__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2()); }
+(rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2)
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeAssignment_4_0_1_2()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+
+
+
+
+
+
+rule__DtCDecimalMax__Group_4_1__0
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__0__Impl
+	rule__DtCDecimalMax__Group_4_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__0__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0()); }
+
+	'msgI18nKey' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__DtCDecimalMax__Group_4_1__1
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+	rule__DtCDecimalMax__Group_4_1__1__Impl
+	rule__DtCDecimalMax__Group_4_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__DtCDecimalMax__Group_4_1__1__Impl
+    @init {
+		int stackSize = keepStackSize();
+    }
+:
+(
+{ before(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1()); }
+
+	'=' 
+
+{ after(grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1()); }
+)
+
+;
+finally {
+	restoreStackSize(stackSize);
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.tokens b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.tokens
new file mode 100644
index 0000000..9014a19
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.tokens
@@ -0,0 +1,293 @@
+'!'=55
+'!='=39
+'!=='=41
+'#'=123
+'%'=54
+'%='=37
+'&&'=15
+'&'=144
+'('=93
+')'=94
+'*'=51
+'**'=52
+'*='=35
+'+'=31
+'++'=56
+'+='=33
+', '=90
+','=122
+'-'=32
+'--'=57
+'-='=34
+'->'=45
+'.'=58
+'..'=47
+'..<'=46
+'/'=53
+'/='=36
+'0'=80
+'1'=82
+':'=129
+'::'=151
+';'=88
+'<'=44
+'<='=79
+'<>'=49
+'='=13
+'=='=38
+'==='=40
+'=>'=48
+'>'=43
+'>='=42
+'?'=81
+'?.'=152
+'?:'=50
+'@'=121
+'['=99
+']'=102
+'as blob'=148
+'as primitive'=146
+'as'=125
+'asDefault'=149
+'cachable'=16
+'cascade'=29
+'case'=131
+'catch'=143
+'collection'=120
+'datatype'=95
+'date'=26
+'dateType'=147
+'def'=92
+'default'=130
+'derived'=119
+'digits'=107
+'do'=134
+'dto'=25
+'dtoservice'=83
+'else'=127
+'enum'=116
+'error'=72
+'extends'=60
+'extension'=63
+'false'=65
+'finally'=141
+'for'=132
+'forNull'=150
+'id'=17
+'if'=126
+'import'=62
+'info'=70
+'injectService'=91
+'instanceof'=124
+'isFalse'=98
+'isFuture'=108
+'isNotNull'=112
+'isNull'=113
+'isPast'=109
+'isTrue'=104
+'jvmType'=96
+'key'=117
+'lazy'=23
+'mandatory'=67
+'mapto'=27
+'maxDecimal'=105
+'maxNumber'=110
+'minDecimal'=106
+'minMaxSize'=115
+'minNumber'=111
+'msgCode'=100
+'msgI18nKey'=101
+'mutable'=145
+'new'=135
+'notnull'=24
+'null'=136
+'oneToMany'=69
+'optional'=66
+'package'=75
+'persistenceUnit'=87
+'private'=76
+'properties'=97
+'protected'=77
+'provides'=84
+'public'=78
+'ref'=28
+'refers'=21
+'regex'=114
+'return'=139
+'settings'=22
+'severity'=103
+'static'=61
+'super'=64
+'switch'=128
+'synchronized'=142
+'throw'=138
+'time'=73
+'timestamp'=74
+'transient'=19
+'true'=154
+'try'=140
+'typeof'=137
+'uuid'=18
+'val'=59
+'validators'=89
+'value'=118
+'var'=30
+'version'=20
+'warn'=71
+'while'=133
+'zeroToMany'=68
+'{'=85
+'|'=153
+'||'=14
+'}'=86
+RULE_ANY_OTHER=12
+RULE_DECIMAL=7
+RULE_HEX=5
+RULE_ID=4
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=8
+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__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammarLexer.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammarLexer.java
new file mode 100644
index 0000000..7e7c739
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammarLexer.java
@@ -0,0 +1,5872 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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 InternalServicesGrammarLexer 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 RULE_HEX=5;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalServicesGrammarLexer() {;} 
+    public InternalServicesGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalServicesGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:11:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:12:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:13:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:14:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:14:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:15:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:15:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:16:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:16:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:17:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:17:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:18:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:18:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:19:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:19:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:20:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:20:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:21:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:21:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:22:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:22:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:23:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:23:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:24:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:24:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:25:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:25:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:26:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:26:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:27:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:27:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:28:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:28:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:29:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:30:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:31:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:32:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:33:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:34:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:35:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:36:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:37:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:39:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:40:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:41:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:42:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:42:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__44"
+
+    // $ANTLR start "T__45"
+    public final void mT__45() throws RecognitionException {
+        try {
+            int _type = T__45;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:43:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:43:9: '->'
+            {
+            match("->"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__45"
+
+    // $ANTLR start "T__46"
+    public final void mT__46() throws RecognitionException {
+        try {
+            int _type = T__46;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:44:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:45:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:46:7: ( '=>' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:46:9: '=>'
+            {
+            match("=>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__48"
+
+    // $ANTLR start "T__49"
+    public final void mT__49() throws RecognitionException {
+        try {
+            int _type = T__49;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:47:7: ( '<>' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:47:9: '<>'
+            {
+            match("<>"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__49"
+
+    // $ANTLR start "T__50"
+    public final void mT__50() throws RecognitionException {
+        try {
+            int _type = T__50;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:48:7: ( '?:' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:48:9: '?:'
+            {
+            match("?:"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__50"
+
+    // $ANTLR start "T__51"
+    public final void mT__51() throws RecognitionException {
+        try {
+            int _type = T__51;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:49:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:49:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__51"
+
+    // $ANTLR start "T__52"
+    public final void mT__52() throws RecognitionException {
+        try {
+            int _type = T__52;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:50:7: ( '**' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:50:9: '**'
+            {
+            match("**"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__52"
+
+    // $ANTLR start "T__53"
+    public final void mT__53() throws RecognitionException {
+        try {
+            int _type = T__53;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:51:7: ( '/' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:52:7: ( '%' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:53:7: ( '!' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:54:7: ( '++' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:55:7: ( '--' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:55:9: '--'
+            {
+            match("--"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__57"
+
+    // $ANTLR start "T__58"
+    public final void mT__58() throws RecognitionException {
+        try {
+            int _type = T__58;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:56:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:56:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:57:7: ( 'val' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:57:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:58:7: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:58:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:59:7: ( 'static' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:59:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:60:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:60:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:61:7: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:61:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:62:7: ( 'super' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:62:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:63:7: ( 'false' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:63:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:64:7: ( 'optional' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:64:9: 'optional'
+            {
+            match("optional"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:65:7: ( 'mandatory' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:65:9: 'mandatory'
+            {
+            match("mandatory"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:66:7: ( 'zeroToMany' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:66:9: 'zeroToMany'
+            {
+            match("zeroToMany"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:67:7: ( 'oneToMany' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:67:9: 'oneToMany'
+            {
+            match("oneToMany"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:68:7: ( 'info' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:68:9: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:69:7: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:69:9: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:70:7: ( 'error' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:70:9: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:71:7: ( 'time' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:71:9: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:72:7: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:72:9: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:73:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:73:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:74:7: ( 'private' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:74:9: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:75:7: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:75:9: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:76:7: ( 'public' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:76:9: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:77:7: ( '<=' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:77:9: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:78:7: ( '0' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:78:9: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:79:7: ( '?' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:79:9: '?'
+            {
+            match('?'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:80:7: ( '1' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:80:9: '1'
+            {
+            match('1'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:81:7: ( 'dtoservice' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:81:9: 'dtoservice'
+            {
+            match("dtoservice"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:82:7: ( 'provides' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:82:9: 'provides'
+            {
+            match("provides"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:83:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:83:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:84:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:84:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:85:7: ( 'persistenceUnit' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:85:9: 'persistenceUnit'
+            {
+            match("persistenceUnit"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:86:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:86:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:87:7: ( 'validators' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:87:9: 'validators'
+            {
+            match("validators"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:88:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:88:9: ', '
+            {
+            match(", "); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:89:7: ( 'injectService' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:89:9: 'injectService'
+            {
+            match("injectService"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:90:7: ( 'def' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:90:9: 'def'
+            {
+            match("def"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:91:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:91:9: '('
+            {
+            match('('); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:92:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:92:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:93:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:93:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:94:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:94:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:95:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:95:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:96:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:96:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:97:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:98:8: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:98:10: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:99:8: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:99:10: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:100:8: ( ']' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:101:8: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:101:10: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:102:8: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:102:10: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:103:8: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:103:10: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:104:8: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:104:10: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:105:8: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:105:10: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:106:8: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:106:10: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:107:8: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:107:10: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:108:8: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:108:10: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:109:8: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:109:10: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:110:8: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:110:10: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:111:8: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:111:10: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:112:8: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:112:10: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:113:8: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:113:10: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:114:8: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:114:10: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:115:8: ( 'key' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:115:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:116:8: ( 'value' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:116:10: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:117:8: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:117:10: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:118:8: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:118:10: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:119:8: ( '@' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:120:8: ( ',' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:121:8: ( '#' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:122:8: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:122:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:123:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:124:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:124:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:125:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:125:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:126:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:126:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:127:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:128:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:128:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:129:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:129:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:130:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:130:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:131:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:131:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:132:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:132:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:133:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:133:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:134:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:134:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:135:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:135:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:136:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:136:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:137:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:137:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:138:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:138:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:139:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:139:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:140:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:140:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:141:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:141:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:142:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:142:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:143:8: ( 'mutable' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:143:10: 'mutable'
+            {
+            match("mutable"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:144:8: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:144:10: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:145:8: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:145:10: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:146:8: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:146:10: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:147:8: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:147:10: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:148:8: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:148:10: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:149:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:149:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:150:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:150:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:151:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:151:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:152:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:152:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38179: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38181:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38181:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38181: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38183: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38185:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38185:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38185:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38185: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38185: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38187: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38189:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38189:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38189: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38189: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38191: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38193:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38193:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38193: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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38195:16: ( . )
+            // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:38195:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=151;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:917: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:926: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:935: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:948: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:956: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:968: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:984: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:1000: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g:1:1008: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\70\1\72\1\74\13\77\1\141\1\145\1\150\1\154\1\156\1\160\1\162\1\165\1\167\1\172\6\77\1\u008d\1\u008f\3\uffff\1\u0094\2\uffff\1\77\2\uffff\1\77\2\uffff\1\77\1\u009f\1\u00a0\1\65\5\uffff\1\u00a4\6\uffff\2\77\1\uffff\1\u00a9\3\77\1\u00b2\25\77\1\u00cf\4\77\20\uffff\1\u00d7\6\uffff\1\u00d9\4\uffff\20\77\1\uffff\1\u00a0\12\uffff\1\77\2\uffff\1\77\2\uffff\1\u00ef\7\uffff\4\77\1\uffff\10\77\1\uffff\2\77\1\u0101\5\77\1\u0107\1\u010a\1\u010c\12\77\1\u0117\1\77\1\u011a\1\77\1\u011e\2\77\1\uffff\6\77\4\uffff\5\77\1\u0131\14\77\1\u0140\1\uffff\1\77\1\uffff\2\77\1\u0146\3\77\1\u014a\10\77\1\u0153\1\77\1\uffff\1\u0155\1\u0157\3\77\1\uffff\2\77\1\uffff\1\77\1\uffff\10\77\1\u0166\1\77\1\uffff\1\u0168\1\77\1\uffff\1\u016b\2\77\1\uffff\16\77\1\u017c\1\u017d\2\77\1\uffff\4\77\1\u0184\11\77\3\uffff\3\77\1\uffff\1\u0191\2\77\1\uffff\10\77\1\uffff\1\77\1\uffff\1\77\1\uffff\1\77\1\u019f\2\77\1\u01a2\1\77\1\u01a4\4\77\1\u01a9\2\77\1\uffff\1\77\1\uffff\2\77\1\uffff\4\77\1\u01b3\12\77\1\u01bf\2\uffff\1\u01c0\5\77\1\uffff\1\u01c6\13\77\1\uffff\1\77\1\u01d3\4\77\1\u01d8\1\u01d9\1\77\1\u01db\2\77\1\u01de\1\uffff\2\77\1\uffff\1\u01e1\1\uffff\1\u01e2\2\77\1\u01e5\1\uffff\1\u01e6\7\77\1\u01ee\1\uffff\13\77\2\uffff\5\77\1\uffff\5\77\1\u0204\4\77\1\u0209\1\77\1\uffff\2\77\1\u020d\1\77\2\uffff\1\77\1\uffff\2\77\1\uffff\1\u0212\1\77\2\uffff\2\77\2\uffff\1\77\1\u0217\3\77\1\u021b\1\u021c\1\uffff\3\77\1\u0220\4\77\1\u0225\1\u0226\1\77\1\u0228\1\u0229\3\77\1\u022d\1\u022e\3\77\1\uffff\1\77\1\u0233\1\77\1\u0235\1\uffff\3\77\1\uffff\1\u0239\3\77\1\uffff\1\77\1\u023e\1\u023f\1\77\1\uffff\1\77\1\u0242\1\u0243\2\uffff\3\77\1\uffff\4\77\2\uffff\1\77\2\uffff\1\u024c\2\77\2\uffff\1\77\1\u0250\2\77\1\uffff\1\77\1\uffff\3\77\1\uffff\1\u0257\1\u0258\1\u0259\1\77\2\uffff\2\77\2\uffff\1\u025d\1\77\1\u025f\2\77\1\u0262\1\77\1\u0264\1\uffff\1\u0265\1\77\1\u0267\1\uffff\2\77\1\u026a\1\u026b\1\77\1\u026d\3\uffff\1\u026e\1\77\1\u0270\1\uffff\1\u0271\1\uffff\1\u0272\1\u0273\1\uffff\1\u0274\2\uffff\1\u0275\1\uffff\1\u0276\1\77\2\uffff\1\77\2\uffff\1\77\7\uffff\2\77\1\u027c\1\77\1\u027e\1\uffff\1\77\1\uffff\1\77\1\u0281\1\uffff";
+    static final String DFA21_eofS =
+        "\u0282\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\141\1\144\1\165\1\150\1\141\2\145\1\141\1\145\2\141\1\53\1\55\2\52\4\75\2\56\1\154\1\141\1\156\1\145\2\141\2\60\3\uffff\1\40\2\uffff\1\166\2\uffff\1\145\2\uffff\1\163\1\72\1\60\1\44\5\uffff\1\75\6\uffff\1\143\1\154\1\uffff\1\44\1\160\1\146\1\106\1\44\1\151\1\141\1\155\1\160\2\162\1\154\1\146\1\164\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\146\1\147\1\44\1\156\1\147\1\156\1\164\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\164\1\145\2\162\1\151\1\143\1\151\1\142\1\162\1\uffff\1\60\12\uffff\1\155\2\uffff\1\171\2\uffff\1\40\7\uffff\1\150\2\143\1\154\1\uffff\2\157\1\145\1\164\1\141\1\162\1\141\1\157\1\uffff\1\144\1\156\1\44\3\145\1\157\1\163\3\44\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\44\1\154\1\44\1\141\1\44\2\151\1\uffff\1\164\1\144\1\104\1\103\1\104\1\141\4\uffff\1\145\1\157\1\155\1\145\1\163\1\44\1\141\1\151\1\124\1\157\1\156\1\154\1\153\1\166\1\160\1\154\1\163\1\124\1\44\1\142\1\145\1\uffff\2\141\1\44\1\150\1\145\1\162\1\44\1\143\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\44\1\163\1\uffff\2\44\1\157\1\167\1\151\1\uffff\1\144\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\44\1\165\1\uffff\1\44\1\145\1\uffff\1\44\1\164\1\165\1\uffff\1\166\1\164\1\157\1\141\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\142\1\156\1\162\2\44\1\145\1\165\1\uffff\1\154\2\157\1\124\1\44\1\145\2\141\1\145\1\151\1\145\2\151\1\171\3\uffff\1\146\1\142\1\144\1\uffff\1\44\1\143\1\164\1\uffff\1\164\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\146\1\44\1\157\1\141\1\44\1\163\1\44\2\156\1\151\1\143\1\44\1\150\1\162\1\uffff\1\154\1\uffff\1\162\1\171\1\uffff\1\171\1\154\1\145\1\163\1\44\1\164\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\154\1\144\1\44\2\uffff\1\44\2\154\1\156\1\115\1\157\1\uffff\1\44\1\147\1\164\1\143\1\144\1\162\1\143\1\163\1\160\1\141\1\154\1\145\1\uffff\1\164\1\44\1\123\1\143\1\145\1\162\2\44\1\165\1\44\1\145\1\141\1\44\1\uffff\1\156\1\164\1\uffff\1\44\1\uffff\1\44\1\147\1\164\1\44\1\uffff\1\44\1\157\1\154\1\166\2\160\1\164\1\144\1\44\1\uffff\1\157\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\145\1\163\1\151\2\uffff\1\154\1\171\2\141\1\115\1\uffff\2\145\1\164\1\145\1\164\1\44\1\164\1\145\1\165\1\145\1\44\1\151\1\uffff\2\145\1\44\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\44\1\157\2\uffff\1\163\1\171\2\uffff\1\156\1\44\1\151\2\145\2\44\1\uffff\1\162\1\155\1\145\1\44\1\113\1\155\1\145\1\151\2\44\1\157\2\44\1\154\1\156\1\141\2\44\1\145\1\163\1\151\1\uffff\1\145\1\44\1\154\1\44\1\uffff\1\157\1\162\1\157\1\uffff\1\44\1\154\1\164\1\160\1\uffff\1\162\2\44\1\151\1\uffff\1\143\2\44\2\uffff\1\171\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\2\uffff\1\156\2\uffff\1\44\1\171\1\156\2\uffff\1\144\1\44\1\145\1\156\1\uffff\1\164\1\uffff\1\156\1\166\1\146\1\uffff\3\44\1\163\2\uffff\1\172\1\145\2\uffff\1\44\1\154\1\44\1\171\1\154\1\44\1\145\1\44\1\uffff\1\44\1\171\1\44\1\uffff\1\163\1\143\2\44\1\151\1\44\3\uffff\1\44\1\145\1\44\1\uffff\1\44\1\uffff\2\44\1\uffff\1\44\2\uffff\1\44\1\uffff\1\44\1\145\2\uffff\1\143\2\uffff\1\144\7\uffff\1\125\1\145\1\44\1\156\1\44\1\uffff\1\151\1\uffff\1\164\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\157\1\163\1\165\1\171\2\145\1\171\1\141\1\165\1\164\1\165\1\75\1\76\5\75\1\76\1\56\1\72\1\170\1\157\1\160\1\145\1\150\1\165\1\170\1\154\3\uffff\1\40\2\uffff\1\166\2\uffff\1\145\2\uffff\1\163\1\72\1\154\1\172\5\uffff\1\75\6\uffff\1\164\1\154\1\uffff\1\172\1\160\1\163\1\124\1\172\1\151\1\171\1\155\1\160\3\162\1\164\1\166\1\141\1\160\1\151\1\156\1\172\1\164\1\167\1\154\1\157\1\164\1\162\1\147\1\172\1\170\1\147\1\156\1\164\20\uffff\1\75\6\uffff\1\74\4\uffff\1\164\1\162\1\165\1\163\1\154\1\162\1\156\1\164\1\145\2\162\1\151\1\143\1\157\1\142\1\162\1\uffff\1\154\12\uffff\1\155\2\uffff\1\171\2\uffff\1\172\7\uffff\1\150\1\145\1\143\1\154\1\uffff\2\157\1\145\1\164\1\165\1\162\1\141\1\165\1\uffff\1\144\1\156\1\172\3\145\1\157\1\163\3\172\1\145\1\165\1\164\1\145\1\164\1\145\1\164\1\143\1\171\1\156\1\172\1\154\1\172\1\145\1\172\2\151\1\uffff\1\164\1\144\1\116\1\111\1\116\1\141\4\uffff\1\145\1\157\1\155\1\145\1\163\1\172\1\141\1\151\1\124\1\157\1\156\1\154\1\153\2\166\1\154\1\163\1\124\1\172\1\160\1\145\1\uffff\2\141\1\172\1\150\1\145\1\162\1\172\1\143\1\141\1\154\1\164\1\165\1\163\1\164\1\154\1\172\1\163\1\uffff\2\172\1\157\1\167\1\151\1\uffff\1\144\1\145\1\uffff\1\162\1\uffff\1\170\1\162\1\151\1\162\1\151\1\162\1\143\1\150\1\172\1\165\1\uffff\1\172\1\145\1\uffff\1\172\1\164\1\165\1\uffff\1\166\1\164\1\157\1\141\1\145\1\165\1\157\1\61\1\145\1\165\1\141\1\142\1\156\1\162\2\172\1\145\1\165\1\uffff\1\154\2\157\1\124\1\172\1\145\2\141\1\145\1\151\1\145\2\151\1\171\3\uffff\1\146\1\142\1\144\1\uffff\1\172\1\143\1\164\1\uffff\1\164\1\156\1\163\1\165\1\145\1\164\1\116\1\154\1\uffff\1\151\1\uffff\1\164\1\uffff\1\146\1\172\1\157\1\141\1\172\1\163\1\172\2\156\1\151\1\143\1\172\1\150\1\162\1\uffff\1\154\1\uffff\1\162\1\171\1\uffff\1\171\1\154\1\145\1\163\1\172\1\164\1\143\1\155\1\144\1\70\1\143\1\155\1\170\1\154\1\163\1\172\2\uffff\1\172\2\154\1\156\1\115\1\157\1\uffff\1\172\1\147\1\164\1\143\1\144\1\162\1\143\1\163\1\160\1\141\1\154\1\145\1\uffff\1\164\1\172\1\123\1\143\1\145\1\162\2\172\1\165\1\172\1\145\1\141\1\172\1\uffff\1\156\1\164\1\uffff\1\172\1\uffff\1\172\1\147\1\164\1\172\1\uffff\1\172\1\157\1\154\1\166\2\160\1\164\1\144\1\172\1\uffff\1\157\1\151\1\142\1\145\1\156\1\151\1\142\1\123\1\145\1\163\1\151\2\uffff\1\154\1\171\2\141\1\115\1\uffff\2\145\1\164\1\145\1\164\1\172\1\164\1\145\1\165\1\145\1\172\1\151\1\uffff\2\145\1\172\1\145\2\uffff\1\154\1\uffff\1\156\1\155\1\uffff\1\172\1\157\2\uffff\1\163\1\171\2\uffff\1\156\1\172\1\151\2\145\2\172\1\uffff\1\162\1\155\1\145\1\172\1\113\1\155\1\145\1\151\2\172\1\157\2\172\1\154\1\156\1\141\2\172\1\145\1\163\1\151\1\uffff\1\145\1\172\1\154\1\172\1\uffff\1\157\1\162\1\157\1\uffff\1\172\1\154\1\164\1\160\1\uffff\1\162\2\172\1\151\1\uffff\1\143\2\172\2\uffff\1\171\1\141\1\162\1\uffff\1\145\1\141\1\162\1\172\2\uffff\1\156\2\uffff\1\172\1\171\1\156\2\uffff\1\144\1\172\1\145\1\156\1\uffff\1\164\1\uffff\1\156\1\166\1\146\1\uffff\3\172\1\163\2\uffff\1\172\1\145\2\uffff\1\172\1\154\1\172\1\171\1\154\1\172\1\145\1\172\1\uffff\1\172\1\171\1\172\1\uffff\1\163\1\143\2\172\1\151\1\172\3\uffff\1\172\1\145\1\172\1\uffff\1\172\1\uffff\2\172\1\uffff\1\172\2\uffff\1\172\1\uffff\1\172\1\145\2\uffff\1\143\2\uffff\1\144\7\uffff\1\125\1\145\1\172\1\156\1\172\1\uffff\1\151\1\uffff\1\164\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\41\uffff\1\111\1\112\1\114\1\uffff\1\121\1\122\1\uffff\1\127\1\132\1\uffff\1\155\1\157\4\uffff\1\u0092\2\u0093\1\u0096\1\u0097\1\uffff\1\44\1\1\1\2\1\u008d\1\3\1\u0084\2\uffff\1\u0092\37\uffff\1\25\1\54\1\23\1\26\1\41\1\55\1\24\1\27\1\50\1\47\1\30\1\u0094\1\u0095\1\51\1\31\1\52\1\uffff\1\53\1\36\1\37\1\45\1\103\1\40\1\uffff\1\56\1\46\1\u008c\1\105\20\uffff\1\u008f\1\uffff\1\104\1\u0091\1\106\1\111\1\112\1\114\1\116\1\156\1\121\1\122\1\uffff\1\127\1\132\1\uffff\1\155\1\157\1\uffff\1\u008b\1\165\1\u0090\1\u0093\1\u0096\1\34\1\32\4\uffff\1\5\10\uffff\1\162\34\uffff\1\172\6\uffff\1\35\1\33\1\42\1\43\25\uffff\1\161\21\uffff\1\u0080\5\uffff\1\22\2\uffff\1\57\1\uffff\1\20\12\uffff\1\173\2\uffff\1\15\3\uffff\1\120\22\uffff\1\170\16\uffff\1\151\1\u0086\1\u0088\3\uffff\1\167\3\uffff\1\72\10\uffff\1\6\1\uffff\1\u008e\1\uffff\1\75\16\uffff\1\13\1\uffff\1\174\2\uffff\1\16\20\uffff\1\150\1\163\6\uffff\1\73\14\uffff\1\u0083\15\uffff\1\176\2\uffff\1\152\1\uffff\1\146\4\uffff\1\64\11\uffff\1\17\13\uffff\1\74\1\65\5\uffff\1\171\14\uffff\1\62\4\uffff\1\134\1\141\1\uffff\1\145\2\uffff\1\175\2\uffff\1\11\1\177\2\uffff\1\61\1\164\7\uffff\1\137\25\uffff\1\102\4\uffff\1\21\3\uffff\1\126\4\uffff\1\10\4\uffff\1\14\3\uffff\1\166\1\153\3\uffff\1\130\4\uffff\1\u0085\1\60\1\uffff\1\u008a\1\u0081\3\uffff\1\77\1\100\4\uffff\1\124\1\uffff\1\4\3\uffff\1\140\4\uffff\1\12\1\133\2\uffff\1\u0087\1\123\10\uffff\1\66\3\uffff\1\110\6\uffff\1\144\1\7\1\76\3\uffff\1\67\1\uffff\1\142\2\uffff\1\143\1\uffff\1\63\1\71\1\uffff\1\101\2\uffff\1\u0089\1\154\1\uffff\1\160\1\115\1\uffff\1\107\1\135\1\131\1\136\1\147\1\70\1\125\5\uffff\1\u0082\1\uffff\1\117\2\uffff\1\113";
+    static final String DFA21_specialS =
+        "\1\0\u0281\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\65\2\64\2\65\1\64\22\65\1\64\1\24\1\62\1\54\1\61\1\23\1\3\1\63\1\45\1\46\1\21\1\17\1\44\1\20\1\27\1\22\1\37\1\40\10\57\1\56\1\43\1\26\1\1\1\25\1\30\1\53\32\61\1\50\1\65\1\51\1\60\1\61\1\65\1\55\1\61\1\4\1\15\1\31\1\32\2\61\1\5\1\47\1\52\1\13\1\16\1\14\1\33\1\36\1\61\1\11\1\12\1\7\1\6\1\10\1\35\2\61\1\34\1\41\1\2\1\42\uff82\65",
+            "\1\66\1\67",
+            "\1\71",
+            "\1\73",
+            "\1\75\15\uffff\1\76",
+            "\1\100\1\uffff\1\104\6\uffff\1\101\1\102\4\uffff\1\103",
+            "\1\105",
+            "\1\111\1\107\10\uffff\1\106\6\uffff\1\110",
+            "\1\113\3\uffff\1\112",
+            "\1\114",
+            "\1\115\16\uffff\1\116\1\117\1\uffff\1\120\1\uffff\1\121",
+            "\1\122",
+            "\1\124\11\uffff\1\123\5\uffff\1\125",
+            "\1\127\3\uffff\1\130\3\uffff\1\131\5\uffff\1\132\4\uffff\1\126",
+            "\1\133\7\uffff\1\135\11\uffff\1\134\1\uffff\1\136",
+            "\1\140\21\uffff\1\137",
+            "\1\144\17\uffff\1\142\1\143",
+            "\1\147\22\uffff\1\146",
+            "\1\152\4\uffff\1\153\15\uffff\1\151",
+            "\1\155",
+            "\1\157",
+            "\1\161",
+            "\1\164\1\163",
+            "\1\166",
+            "\1\171\13\uffff\1\170",
+            "\1\176\1\uffff\1\175\3\uffff\1\174\5\uffff\1\173",
+            "\1\177\7\uffff\1\u0081\5\uffff\1\u0080",
+            "\1\u0083\1\uffff\1\u0082",
+            "\1\u0084",
+            "\1\u0085\6\uffff\1\u0086",
+            "\1\u0087\3\uffff\1\u008a\14\uffff\1\u0088\2\uffff\1\u0089",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b\6\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\13\uffff\1\u008b",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "",
+            "",
+            "",
+            "\1\u0093",
+            "",
+            "",
+            "\1\u0097",
+            "",
+            "",
+            "\1\u009a",
+            "",
+            "",
+            "\1\u009d",
+            "\1\u009e",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "\1\77\34\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a5\17\uffff\1\u00a6\1\u00a7",
+            "\1\u00a8",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u00aa",
+            "\1\u00ab\3\uffff\1\u00ac\10\uffff\1\u00ad",
+            "\1\u00ae\7\uffff\1\u00b1\1\uffff\1\u00b0\3\uffff\1\u00af",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u00b3",
+            "\1\u00b4\23\uffff\1\u00b6\3\uffff\1\u00b5",
+            "\1\u00b7",
+            "\1\u00b8",
+            "\1\u00b9",
+            "\1\u00ba",
+            "\1\u00bc\5\uffff\1\u00bb",
+            "\1\u00bd\1\u00be\14\uffff\1\u00bf",
+            "\1\u00c0\1\uffff\1\u00c1",
+            "\1\u00c2",
+            "\1\u00c3",
+            "\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc\13\uffff\1\u00cd",
+            "\1\u00ce",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u00d1\1\uffff\1\u00d0\7\uffff\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d8",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7\5\uffff\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "",
+            "\12\u008c\10\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e\22\uffff\1\u008c\2\uffff\1\u008e\1\uffff\3\u008e\5\uffff\1\u008e",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00eb",
+            "",
+            "",
+            "\1\u00ec",
+            "",
+            "",
+            "\1\u00ed\3\uffff\1\77\13\uffff\12\77\7\uffff\3\77\1\u00ee\26\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00f0",
+            "\1\u00f1\1\uffff\1\u00f2",
+            "\1\u00f3",
+            "\1\u00f4",
+            "",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "\1\u00f9\23\uffff\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd\5\uffff\1\u00fe",
+            "",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\10\77\1\u0108\13\77\1\u0109\5\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\4\77\1\u010b\25\77",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0118",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\22\77\1\u0119\7\77",
+            "\1\u011c\3\uffff\1\u011b",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\1\u011d\31\77",
+            "\1\u011f",
+            "\1\u0120",
+            "",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123\11\uffff\1\u0124",
+            "\1\u0125\5\uffff\1\u0126",
+            "\1\u0127\10\uffff\1\u0129\1\u0128",
+            "\1\u012a",
+            "",
+            "",
+            "",
+            "",
+            "\1\u012b",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\77\13\uffff\12\77\7\uffff\15\77\1\u0130\14\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013c\3\uffff\1\u013a\1\uffff\1\u013b",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\u013f",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0142\15\uffff\1\u0141",
+            "\1\u0143",
+            "",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0152",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0154",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\22\77\1\u0156\7\77",
+            "\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\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0167",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0169",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\23\77\1\u016a\6\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u016c",
+            "\1\u016d",
+            "",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\u0175",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\u017a",
+            "\1\u017b",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u017e",
+            "\1\u017f",
+            "",
+            "\1\u0180",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "",
+            "",
+            "",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\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\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01a0",
+            "\1\u01a1",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01a3",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01aa",
+            "\1\u01ab",
+            "",
+            "\1\u01ac",
+            "",
+            "\1\u01ad",
+            "\1\u01ae",
+            "",
+            "\1\u01af",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01b4",
+            "\1\u01b5",
+            "\1\u01b6",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd\16\uffff\1\u01be",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01c7",
+            "\1\u01c8",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\u01cc",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "",
+            "\1\u01d2",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01da",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01dc",
+            "\1\u01dd",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u01df",
+            "\1\u01e0",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01e3",
+            "\1\u01e4",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u01e7",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\u01ed",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
+            "\1\u01f8",
+            "\1\u01f9",
+            "",
+            "",
+            "\1\u01fa",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\u0202",
+            "\1\u0203",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u020a",
+            "",
+            "\1\u020b",
+            "\1\u020c",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u020e",
+            "",
+            "",
+            "\1\u020f",
+            "",
+            "\1\u0210",
+            "\1\u0211",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0213",
+            "",
+            "",
+            "\1\u0214",
+            "\1\u0215",
+            "",
+            "",
+            "\1\u0216",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u021d",
+            "\1\u021e",
+            "\1\u021f",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0221",
+            "\1\u0222",
+            "\1\u0223",
+            "\1\u0224",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0227",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u022a",
+            "\1\u022b",
+            "\1\u022c",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u022f",
+            "\1\u0230",
+            "\1\u0231",
+            "",
+            "\1\u0232",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0234",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u0236",
+            "\1\u0237",
+            "\1\u0238",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u023a",
+            "\1\u023b",
+            "\1\u023c",
+            "",
+            "\1\u023d",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0240",
+            "",
+            "\1\u0241",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "",
+            "\1\u0247",
+            "\1\u0248",
+            "\1\u0249",
+            "\1\u024a",
+            "",
+            "",
+            "\1\u024b",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u024d",
+            "\1\u024e",
+            "",
+            "",
+            "\1\u024f",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0251",
+            "\1\u0252",
+            "",
+            "\1\u0253",
+            "",
+            "\1\u0254",
+            "\1\u0255",
+            "\1\u0256",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u025a",
+            "",
+            "",
+            "\1\u025b",
+            "\1\u025c",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u025e",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0260",
+            "\1\u0261",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0263",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0266",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u0268",
+            "\1\u0269",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u026c",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u026f",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u0277",
+            "",
+            "",
+            "\1\u0278",
+            "",
+            "",
+            "\1\u0279",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u027a",
+            "\1\u027b",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "\1\u027d",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            "",
+            "\1\u027f",
+            "",
+            "\1\u0280",
+            "\1\77\13\uffff\12\77\7\uffff\32\77\4\uffff\1\77\1\uffff\32\77",
+            ""
+    };
+
+    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 | 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=='c') ) {s = 4;}
+
+                        else if ( (LA21_0=='i') ) {s = 5;}
+
+                        else if ( (LA21_0=='u') ) {s = 6;}
+
+                        else if ( (LA21_0=='t') ) {s = 7;}
+
+                        else if ( (LA21_0=='v') ) {s = 8;}
+
+                        else if ( (LA21_0=='r') ) {s = 9;}
+
+                        else if ( (LA21_0=='s') ) {s = 10;}
+
+                        else if ( (LA21_0=='l') ) {s = 11;}
+
+                        else if ( (LA21_0=='n') ) {s = 12;}
+
+                        else if ( (LA21_0=='d') ) {s = 13;}
+
+                        else if ( (LA21_0=='m') ) {s = 14;}
+
+                        else if ( (LA21_0=='+') ) {s = 15;}
+
+                        else if ( (LA21_0=='-') ) {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=='.') ) {s = 23;}
+
+                        else if ( (LA21_0=='?') ) {s = 24;}
+
+                        else if ( (LA21_0=='e') ) {s = 25;}
+
+                        else if ( (LA21_0=='f') ) {s = 26;}
+
+                        else if ( (LA21_0=='o') ) {s = 27;}
+
+                        else if ( (LA21_0=='z') ) {s = 28;}
+
+                        else if ( (LA21_0=='w') ) {s = 29;}
+
+                        else if ( (LA21_0=='p') ) {s = 30;}
+
+                        else if ( (LA21_0=='0') ) {s = 31;}
+
+                        else if ( (LA21_0=='1') ) {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=='j') ) {s = 39;}
+
+                        else if ( (LA21_0=='[') ) {s = 40;}
+
+                        else if ( (LA21_0==']') ) {s = 41;}
+
+                        else if ( (LA21_0=='k') ) {s = 42;}
+
+                        else if ( (LA21_0=='@') ) {s = 43;}
+
+                        else if ( (LA21_0=='#') ) {s = 44;}
+
+                        else if ( (LA21_0=='a') ) {s = 45;}
+
+                        else if ( (LA21_0==':') ) {s = 46;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 47;}
+
+                        else if ( (LA21_0=='^') ) {s = 48;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='y')) ) {s = 49;}
+
+                        else if ( (LA21_0=='\"') ) {s = 50;}
+
+                        else if ( (LA21_0=='\'') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 52;}
+
+                        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 = 53;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammarParser.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammarParser.java
new file mode 100644
index 0000000..72bf252
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+
+
+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 InternalServicesGrammarParserSignatures {
+     void entryRuleLServiceModel() throws RecognitionException;
+     void ruleLServiceModel() throws RecognitionException;
+     void entryRuleClass() throws RecognitionException;
+     void ruleClass() throws RecognitionException;
+     void entryRuleValidatorDef() throws RecognitionException;
+     void ruleValidatorDef() throws RecognitionException;
+     void entryRuleInjectedServices() throws RecognitionException;
+     void ruleInjectedServices() throws RecognitionException;
+     void entryRuleInjectedService() throws RecognitionException;
+     void ruleInjectedService() throws RecognitionException;
+     void entryRuleOperation() throws RecognitionException;
+     void ruleOperation() throws RecognitionException;
+     void entryRuleTypedPackage() throws RecognitionException;
+     void ruleTypedPackage() throws RecognitionException;
+     void entryRuleType() throws RecognitionException;
+     void ruleType() throws RecognitionException;
+     void entryRuleImport() throws RecognitionException;
+     void ruleImport() throws RecognitionException;
+     void entryRuleDataType() throws RecognitionException;
+     void ruleDataType() throws RecognitionException;
+     void entryRuleDataTypeConstraint() throws RecognitionException;
+     void ruleDataTypeConstraint() throws RecognitionException;
+     void entryRuleDateConstraint() throws RecognitionException;
+     void ruleDateConstraint() throws RecognitionException;
+     void entryRuleBlobTypeConstraint() throws RecognitionException;
+     void ruleBlobTypeConstraint() throws RecognitionException;
+     void entryRuleDtCAssertFalse() throws RecognitionException;
+     void ruleDtCAssertFalse() throws RecognitionException;
+     void entryRuleDtCAssertTrue() throws RecognitionException;
+     void ruleDtCAssertTrue() throws RecognitionException;
+     void entryRuleDtCDecimalMax() throws RecognitionException;
+     void ruleDtCDecimalMax() throws RecognitionException;
+     void entryRuleDtCDecimalMin() throws RecognitionException;
+     void ruleDtCDecimalMin() throws RecognitionException;
+     void entryRuleDtCDigits() throws RecognitionException;
+     void ruleDtCDigits() throws RecognitionException;
+     void entryRuleDtCFuture() throws RecognitionException;
+     void ruleDtCFuture() throws RecognitionException;
+     void entryRuleDtCPast() throws RecognitionException;
+     void ruleDtCPast() throws RecognitionException;
+     void entryRuleDtCNumericMax() throws RecognitionException;
+     void ruleDtCNumericMax() throws RecognitionException;
+     void entryRuleDtCNumericMin() throws RecognitionException;
+     void ruleDtCNumericMin() throws RecognitionException;
+     void entryRuleDtCNotNull() throws RecognitionException;
+     void ruleDtCNotNull() throws RecognitionException;
+     void entryRuleDtCNull() throws RecognitionException;
+     void ruleDtCNull() throws RecognitionException;
+     void entryRuleDtCRegEx() throws RecognitionException;
+     void ruleDtCRegEx() throws RecognitionException;
+     void entryRuleDtCSize() throws RecognitionException;
+     void ruleDtCSize() throws RecognitionException;
+     void entryRuleScalarType() throws RecognitionException;
+     void ruleScalarType() throws RecognitionException;
+     void entryRuleEnum() throws RecognitionException;
+     void ruleEnum() throws RecognitionException;
+     void entryRuleEnumLiteral() throws RecognitionException;
+     void ruleEnumLiteral() throws RecognitionException;
+     void entryRuleAnnotationDef() throws RecognitionException;
+     void ruleAnnotationDef() throws RecognitionException;
+     void entryRuleResultFilter() throws RecognitionException;
+     void ruleResultFilter() throws RecognitionException;
+     void entryRuleAttributeMatchingConstraint() throws RecognitionException;
+     void ruleAttributeMatchingConstraint() throws RecognitionException;
+     void entryRuleKeyAndValue() throws RecognitionException;
+     void ruleKeyAndValue() throws RecognitionException;
+     void entryRuleLQualifiedNameWithWildCard() throws RecognitionException;
+     void ruleLQualifiedNameWithWildCard() throws RecognitionException;
+     void entryRuleLFQN() throws RecognitionException;
+     void ruleLFQN() throws RecognitionException;
+     void entryRuleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     void ruleTYPE_CROSS_REFERENCE() throws RecognitionException;
+     void entryRuleValidIDWithKeywords() throws RecognitionException;
+     void ruleValidIDWithKeywords() throws RecognitionException;
+     void entryRuleLInt() throws RecognitionException;
+     void ruleLInt() throws RecognitionException;
+     void entryRuleLDecimal() throws RecognitionException;
+     void ruleLDecimal() 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 entryRuleQualifiedName() throws RecognitionException;
+     void ruleQualifiedName() 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 entryRuleValidID() throws RecognitionException;
+     void ruleValidID() throws RecognitionException;
+     void entryRuleXImportDeclaration() throws RecognitionException;
+     void ruleXImportDeclaration() throws RecognitionException;
+     void entryRuleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleQualifiedNameInStaticImport() throws RecognitionException;
+     void ruleCardinality() throws RecognitionException;
+     void ruleConstraintSeverity() throws RecognitionException;
+     void ruleDateType() throws RecognitionException;
+     void ruleLVisibility() throws RecognitionException;
+     void ruleLComparatorType() throws RecognitionException;
+     void ruleLowerBound() throws RecognitionException;
+     void ruleUpperBound() throws RecognitionException;
+     void rule__ValidatorDef__Alternatives() throws RecognitionException;
+     void rule__Type__Alternatives() throws RecognitionException;
+     void rule__DataType__Alternatives_2() throws RecognitionException;
+     void rule__DataTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__DateConstraint__Alternatives() throws RecognitionException;
+     void rule__BlobTypeConstraint__Alternatives() throws RecognitionException;
+     void rule__ScalarType__Alternatives() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Alternatives_2() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Alternatives() throws RecognitionException;
+     void rule__LInt__Alternatives_0() 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__Cardinality__Alternatives() throws RecognitionException;
+     void rule__ConstraintSeverity__Alternatives() throws RecognitionException;
+     void rule__DateType__Alternatives() throws RecognitionException;
+     void rule__LVisibility__Alternatives() throws RecognitionException;
+     void rule__LComparatorType__Alternatives() throws RecognitionException;
+     void rule__LowerBound__Alternatives() throws RecognitionException;
+     void rule__UpperBound__Alternatives() throws RecognitionException;
+     void rule__Class__Group__0() throws RecognitionException;
+     void rule__Class__Group__0__Impl() throws RecognitionException;
+     void rule__Class__Group__1() throws RecognitionException;
+     void rule__Class__Group__1__Impl() throws RecognitionException;
+     void rule__Class__Group__2() throws RecognitionException;
+     void rule__Class__Group__2__Impl() throws RecognitionException;
+     void rule__Class__Group__3() throws RecognitionException;
+     void rule__Class__Group__3__Impl() throws RecognitionException;
+     void rule__Class__Group__4() throws RecognitionException;
+     void rule__Class__Group__4__Impl() throws RecognitionException;
+     void rule__Class__Group__5() throws RecognitionException;
+     void rule__Class__Group__5__Impl() throws RecognitionException;
+     void rule__Class__Group__6() throws RecognitionException;
+     void rule__Class__Group__6__Impl() throws RecognitionException;
+     void rule__Class__Group__7() throws RecognitionException;
+     void rule__Class__Group__7__Impl() throws RecognitionException;
+     void rule__Class__Group__8() throws RecognitionException;
+     void rule__Class__Group__8__Impl() throws RecognitionException;
+     void rule__Class__Group__9() throws RecognitionException;
+     void rule__Class__Group__9__Impl() throws RecognitionException;
+     void rule__Class__Group__10() throws RecognitionException;
+     void rule__Class__Group__10__Impl() throws RecognitionException;
+     void rule__Class__Group__11() throws RecognitionException;
+     void rule__Class__Group__11__Impl() throws RecognitionException;
+     void rule__Class__Group__12() throws RecognitionException;
+     void rule__Class__Group__12__Impl() throws RecognitionException;
+     void rule__Class__Group_8__0() throws RecognitionException;
+     void rule__Class__Group_8__0__Impl() throws RecognitionException;
+     void rule__Class__Group_8__1() throws RecognitionException;
+     void rule__Class__Group_8__1__Impl() throws RecognitionException;
+     void rule__Class__Group_8__2() throws RecognitionException;
+     void rule__Class__Group_8__2__Impl() throws RecognitionException;
+     void rule__Class__Group_8__3() throws RecognitionException;
+     void rule__Class__Group_8__3__Impl() throws RecognitionException;
+     void rule__Class__Group_9__0() throws RecognitionException;
+     void rule__Class__Group_9__0__Impl() throws RecognitionException;
+     void rule__Class__Group_9__1() throws RecognitionException;
+     void rule__Class__Group_9__1__Impl() throws RecognitionException;
+     void rule__Class__Group_9__2() throws RecognitionException;
+     void rule__Class__Group_9__2__Impl() throws RecognitionException;
+     void rule__Class__Group_9__3() throws RecognitionException;
+     void rule__Class__Group_9__3__Impl() throws RecognitionException;
+     void rule__Class__Group_9__4() throws RecognitionException;
+     void rule__Class__Group_9__4__Impl() throws RecognitionException;
+     void rule__Class__Group_9__5() throws RecognitionException;
+     void rule__Class__Group_9__5__Impl() throws RecognitionException;
+     void rule__Class__Group_9_3__0() throws RecognitionException;
+     void rule__Class__Group_9_3__0__Impl() throws RecognitionException;
+     void rule__Class__Group_9_3__1() throws RecognitionException;
+     void rule__Class__Group_9_3__1__Impl() throws RecognitionException;
+     void rule__ValidatorDef__Group_0__0() throws RecognitionException;
+     void rule__ValidatorDef__Group_0__0__Impl() throws RecognitionException;
+     void rule__InjectedServices__Group__0() throws RecognitionException;
+     void rule__InjectedServices__Group__0__Impl() throws RecognitionException;
+     void rule__InjectedServices__Group__1() throws RecognitionException;
+     void rule__InjectedServices__Group__1__Impl() throws RecognitionException;
+     void rule__InjectedService__Group__0() throws RecognitionException;
+     void rule__InjectedService__Group__0__Impl() throws RecognitionException;
+     void rule__InjectedService__Group__1() throws RecognitionException;
+     void rule__InjectedService__Group__1__Impl() throws RecognitionException;
+     void rule__InjectedService__Group__2() throws RecognitionException;
+     void rule__InjectedService__Group__2__Impl() throws RecognitionException;
+     void rule__InjectedService__Group__3() throws RecognitionException;
+     void rule__InjectedService__Group__3__Impl() throws RecognitionException;
+     void rule__InjectedService__Group__4() throws RecognitionException;
+     void rule__InjectedService__Group__4__Impl() throws RecognitionException;
+     void rule__InjectedService__Group__5() throws RecognitionException;
+     void rule__InjectedService__Group__5__Impl() throws RecognitionException;
+     void rule__Operation__Group__0() throws RecognitionException;
+     void rule__Operation__Group__0__Impl() throws RecognitionException;
+     void rule__Operation__Group__1() throws RecognitionException;
+     void rule__Operation__Group__1__Impl() throws RecognitionException;
+     void rule__Operation__Group__2() throws RecognitionException;
+     void rule__Operation__Group__2__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__0() throws RecognitionException;
+     void rule__Operation__Group_2__0__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__1() throws RecognitionException;
+     void rule__Operation__Group_2__1__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__2() throws RecognitionException;
+     void rule__Operation__Group_2__2__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__3() throws RecognitionException;
+     void rule__Operation__Group_2__3__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__4() throws RecognitionException;
+     void rule__Operation__Group_2__4__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__5() throws RecognitionException;
+     void rule__Operation__Group_2__5__Impl() throws RecognitionException;
+     void rule__Operation__Group_2__6() throws RecognitionException;
+     void rule__Operation__Group_2__6__Impl() throws RecognitionException;
+     void rule__Operation__Group_2_4__0() throws RecognitionException;
+     void rule__Operation__Group_2_4__0__Impl() throws RecognitionException;
+     void rule__Operation__Group_2_4__1() throws RecognitionException;
+     void rule__Operation__Group_2_4__1__Impl() throws RecognitionException;
+     void rule__Operation__Group_2_4_1__0() throws RecognitionException;
+     void rule__Operation__Group_2_4_1__0__Impl() throws RecognitionException;
+     void rule__Operation__Group_2_4_1__1() throws RecognitionException;
+     void rule__Operation__Group_2_4_1__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__0() throws RecognitionException;
+     void rule__TypedPackage__Group__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__1() throws RecognitionException;
+     void rule__TypedPackage__Group__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__2() throws RecognitionException;
+     void rule__TypedPackage__Group__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group__3() throws RecognitionException;
+     void rule__TypedPackage__Group__3__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0() throws RecognitionException;
+     void rule__TypedPackage__Group_3__0__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1() throws RecognitionException;
+     void rule__TypedPackage__Group_3__1__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2() throws RecognitionException;
+     void rule__TypedPackage__Group_3__2__Impl() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3() throws RecognitionException;
+     void rule__TypedPackage__Group_3__3__Impl() throws RecognitionException;
+     void rule__Import__Group__0() throws RecognitionException;
+     void rule__Import__Group__0__Impl() throws RecognitionException;
+     void rule__Import__Group__1() throws RecognitionException;
+     void rule__Import__Group__1__Impl() throws RecognitionException;
+     void rule__Import__Group__2() throws RecognitionException;
+     void rule__Import__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__0() throws RecognitionException;
+     void rule__DataType__Group__0__Impl() throws RecognitionException;
+     void rule__DataType__Group__1() throws RecognitionException;
+     void rule__DataType__Group__1__Impl() throws RecognitionException;
+     void rule__DataType__Group__2() throws RecognitionException;
+     void rule__DataType__Group__2__Impl() throws RecognitionException;
+     void rule__DataType__Group__3() throws RecognitionException;
+     void rule__DataType__Group__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__0() throws RecognitionException;
+     void rule__DataType__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__1() throws RecognitionException;
+     void rule__DataType__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__2() throws RecognitionException;
+     void rule__DataType__Group_2_0__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__3() throws RecognitionException;
+     void rule__DataType__Group_2_0__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0__4() throws RecognitionException;
+     void rule__DataType__Group_2_0__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4() throws RecognitionException;
+     void rule__DataType__Group_2_0_4__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_0_4_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__0() throws RecognitionException;
+     void rule__DataType__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__1() throws RecognitionException;
+     void rule__DataType__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__2() throws RecognitionException;
+     void rule__DataType__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1__3() throws RecognitionException;
+     void rule__DataType__Group_2_1__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4() throws RecognitionException;
+     void rule__DataType__Group_2_1_3__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_1_3_3__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__1__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__2__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__3__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4() throws RecognitionException;
+     void rule__DataType__Group_2_2_2__4__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__0__Impl() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1() throws RecognitionException;
+     void rule__DataType__Group_2_2_2_3__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertFalse__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCAssertTrue__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5() throws RecognitionException;
+     void rule__DtCDecimalMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCDecimalMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__0() throws RecognitionException;
+     void rule__DtCDigits__Group__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__1() throws RecognitionException;
+     void rule__DtCDigits__Group__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__2() throws RecognitionException;
+     void rule__DtCDigits__Group__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__3() throws RecognitionException;
+     void rule__DtCDigits__Group__3__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__4() throws RecognitionException;
+     void rule__DtCDigits__Group__4__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__5() throws RecognitionException;
+     void rule__DtCDigits__Group__5__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__6() throws RecognitionException;
+     void rule__DtCDigits__Group__6__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group__7() throws RecognitionException;
+     void rule__DtCDigits__Group__7__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCDigits__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__0() throws RecognitionException;
+     void rule__DtCFuture__Group__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__1() throws RecognitionException;
+     void rule__DtCFuture__Group__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group__2() throws RecognitionException;
+     void rule__DtCFuture__Group__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCFuture__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__0() throws RecognitionException;
+     void rule__DtCPast__Group__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__1() throws RecognitionException;
+     void rule__DtCPast__Group__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group__2() throws RecognitionException;
+     void rule__DtCPast__Group__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCPast__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3() throws RecognitionException;
+     void rule__DtCNumericMax__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4() throws RecognitionException;
+     void rule__DtCNumericMax__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5() throws RecognitionException;
+     void rule__DtCNumericMax__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMax__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3() throws RecognitionException;
+     void rule__DtCNumericMin__Group__3__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4() throws RecognitionException;
+     void rule__DtCNumericMin__Group__4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5() throws RecognitionException;
+     void rule__DtCNumericMin__Group__5__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCNumericMin__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__0() throws RecognitionException;
+     void rule__DtCNotNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__1() throws RecognitionException;
+     void rule__DtCNotNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group__2() throws RecognitionException;
+     void rule__DtCNotNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNotNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__0() throws RecognitionException;
+     void rule__DtCNull__Group__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__1() throws RecognitionException;
+     void rule__DtCNull__Group__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group__2() throws RecognitionException;
+     void rule__DtCNull__Group__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_1__2__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2() throws RecognitionException;
+     void rule__DtCNull__Group_2_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__0() throws RecognitionException;
+     void rule__DtCRegEx__Group__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__1() throws RecognitionException;
+     void rule__DtCRegEx__Group__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__2() throws RecognitionException;
+     void rule__DtCRegEx__Group__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__3() throws RecognitionException;
+     void rule__DtCRegEx__Group__3__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__4() throws RecognitionException;
+     void rule__DtCRegEx__Group__4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group__5() throws RecognitionException;
+     void rule__DtCRegEx__Group__5__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_1__2__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2() throws RecognitionException;
+     void rule__DtCRegEx__Group_4_2_0__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__0() throws RecognitionException;
+     void rule__DtCSize__Group__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__1() throws RecognitionException;
+     void rule__DtCSize__Group__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__2() throws RecognitionException;
+     void rule__DtCSize__Group__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__3() throws RecognitionException;
+     void rule__DtCSize__Group__3__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__4() throws RecognitionException;
+     void rule__DtCSize__Group__4__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__5() throws RecognitionException;
+     void rule__DtCSize__Group__5__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__6() throws RecognitionException;
+     void rule__DtCSize__Group__6__Impl() throws RecognitionException;
+     void rule__DtCSize__Group__7() throws RecognitionException;
+     void rule__DtCSize__Group__7__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_0_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_1__2__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__0__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__1__Impl() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2() throws RecognitionException;
+     void rule__DtCSize__Group_6_2_0__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__0() throws RecognitionException;
+     void rule__Enum__Group__0__Impl() throws RecognitionException;
+     void rule__Enum__Group__1() throws RecognitionException;
+     void rule__Enum__Group__1__Impl() throws RecognitionException;
+     void rule__Enum__Group__2() throws RecognitionException;
+     void rule__Enum__Group__2__Impl() throws RecognitionException;
+     void rule__Enum__Group__3() throws RecognitionException;
+     void rule__Enum__Group__3__Impl() throws RecognitionException;
+     void rule__Enum__Group__4() throws RecognitionException;
+     void rule__Enum__Group__4__Impl() throws RecognitionException;
+     void rule__Enum__Group__5() throws RecognitionException;
+     void rule__Enum__Group__5__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__0() throws RecognitionException;
+     void rule__Enum__Group_4__0__Impl() throws RecognitionException;
+     void rule__Enum__Group_4__1() throws RecognitionException;
+     void rule__Enum__Group_4__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__0() throws RecognitionException;
+     void rule__EnumLiteral__Group__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group__1() throws RecognitionException;
+     void rule__EnumLiteral__Group__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_0__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1__2__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__0__Impl() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1() throws RecognitionException;
+     void rule__EnumLiteral__Group_1_1_2__1__Impl() throws RecognitionException;
+     void rule__AnnotationDef__Group__0() throws RecognitionException;
+     void rule__AnnotationDef__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__0__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__1__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__2__Impl() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__0() throws RecognitionException;
+     void rule__KeyAndValue__Group__0__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__1() throws RecognitionException;
+     void rule__KeyAndValue__Group__1__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__2() throws RecognitionException;
+     void rule__KeyAndValue__Group__2__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__3() throws RecognitionException;
+     void rule__KeyAndValue__Group__3__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__4() throws RecognitionException;
+     void rule__KeyAndValue__Group__4__Impl() throws RecognitionException;
+     void rule__KeyAndValue__Group__5() throws RecognitionException;
+     void rule__KeyAndValue__Group__5__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group__1__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__0__Impl() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1() throws RecognitionException;
+     void rule__LQualifiedNameWithWildCard__Group_1__1__Impl() throws RecognitionException;
+     void rule__LFQN__Group__0() throws RecognitionException;
+     void rule__LFQN__Group__0__Impl() throws RecognitionException;
+     void rule__LFQN__Group__1() throws RecognitionException;
+     void rule__LFQN__Group__1__Impl() throws RecognitionException;
+     void rule__LFQN__Group_1__0() throws RecognitionException;
+     void rule__LFQN__Group_1__0__Impl() throws RecognitionException;
+     void rule__LFQN__Group_1__1() throws RecognitionException;
+     void rule__LFQN__Group_1__1__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__0__Impl() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1() throws RecognitionException;
+     void rule__ValidIDWithKeywords__Group_5__1__Impl() throws RecognitionException;
+     void rule__LInt__Group__0() throws RecognitionException;
+     void rule__LInt__Group__0__Impl() throws RecognitionException;
+     void rule__LInt__Group__1() throws RecognitionException;
+     void rule__LInt__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__0() throws RecognitionException;
+     void rule__LDecimal__Group__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group__1() throws RecognitionException;
+     void rule__LDecimal__Group__1__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__0() throws RecognitionException;
+     void rule__LDecimal__Group_1__0__Impl() throws RecognitionException;
+     void rule__LDecimal__Group_1__1() throws RecognitionException;
+     void rule__LDecimal__Group_1__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__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__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__DtCAssertFalse__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertFalse__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCAssertTrue__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCDecimalMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCDigits__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCFuture__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCPast__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMax__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCNumericMin__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNotNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__Impl() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__0() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__1() throws RecognitionException;
+     void rule__DtCNull__UnorderedGroup_2__2() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__Impl() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__0() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__1() throws RecognitionException;
+     void rule__DtCRegEx__UnorderedGroup_4__2() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__Impl() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__0() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__1() throws RecognitionException;
+     void rule__DtCSize__UnorderedGroup_6__2() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__Impl() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__0() throws RecognitionException;
+     void rule__EnumLiteral__UnorderedGroup_1__1() throws RecognitionException;
+     void rule__LServiceModel__PackagesAssignment() throws RecognitionException;
+     void rule__Class__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__Class__NameAssignment_4() throws RecognitionException;
+     void rule__Class__DtoAssignment_6() throws RecognitionException;
+     void rule__Class__MutablePersistenceIdAssignment_8_0() throws RecognitionException;
+     void rule__Class__PersistenceIdAssignment_8_2() throws RecognitionException;
+     void rule__Class__ValidatorsAssignment_9_2() throws RecognitionException;
+     void rule__Class__ValidatorsAssignment_9_3_1() throws RecognitionException;
+     void rule__Class__InjectedServicesAssignment_10() throws RecognitionException;
+     void rule__Class__OperationsAssignment_11() throws RecognitionException;
+     void rule__ValidatorDef__ValidatorTypeAssignment_0_0() throws RecognitionException;
+     void rule__ValidatorDef__ValidatorIdAssignment_1() throws RecognitionException;
+     void rule__InjectedServices__ServicesAssignment_1() throws RecognitionException;
+     void rule__InjectedService__CardinalityAssignment_2() throws RecognitionException;
+     void rule__InjectedService__ServiceAssignment_3() throws RecognitionException;
+     void rule__InjectedService__AttributeNameAssignment_4() throws RecognitionException;
+     void rule__Operation__AnnotationsAssignment_1() throws RecognitionException;
+     void rule__Operation__TypeAssignment_2_1() throws RecognitionException;
+     void rule__Operation__NameAssignment_2_2() throws RecognitionException;
+     void rule__Operation__ParamsAssignment_2_4_0() throws RecognitionException;
+     void rule__Operation__ParamsAssignment_2_4_1_1() throws RecognitionException;
+     void rule__Operation__BodyAssignment_2_6() throws RecognitionException;
+     void rule__TypedPackage__NameAssignment_2() throws RecognitionException;
+     void rule__TypedPackage__ImportsAssignment_3_1() throws RecognitionException;
+     void rule__TypedPackage__TypesAssignment_3_2() throws RecognitionException;
+     void rule__Import__ImportedNamespaceAssignment_1() throws RecognitionException;
+     void rule__DataType__NameAssignment_1() throws RecognitionException;
+     void rule__DataType__JvmTypeReferenceAssignment_2_0_1() throws RecognitionException;
+     void rule__DataType__AsPrimitiveAssignment_2_0_2() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_0_3() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_0_4_3_1() throws RecognitionException;
+     void rule__DataType__DateAssignment_2_1_0() throws RecognitionException;
+     void rule__DataType__DateTypeAssignment_2_1_1() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_1_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_1_3_3_1() throws RecognitionException;
+     void rule__DataType__AsBlobAssignment_2_2_0() throws RecognitionException;
+     void rule__DataType__ConstraintsAssignment_2_2_1() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_2() throws RecognitionException;
+     void rule__DataType__PropertiesAssignment_2_2_2_3_1() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertFalse__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCAssertTrue__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCDecimalMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCDigits__IntDigitsAssignment_3() throws RecognitionException;
+     void rule__DtCDigits__FractionDigitsAssignment_5() throws RecognitionException;
+     void rule__DtCDigits__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCDigits__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCDigits__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__DtCFuture__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCFuture__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCFuture__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCPast__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCPast__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCPast__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMax__MaxAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMax__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNumericMin__MinAssignment_3() throws RecognitionException;
+     void rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCNumericMin__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNotNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCNull__MsgCodeAssignment_2_0_1_2() throws RecognitionException;
+     void rule__DtCNull__MsgI18nKeyAssignment_2_1_2() throws RecognitionException;
+     void rule__DtCNull__SeverityAssignment_2_2_0_2() throws RecognitionException;
+     void rule__DtCRegEx__PatternAssignment_3() throws RecognitionException;
+     void rule__DtCRegEx__MsgCodeAssignment_4_0_1_2() throws RecognitionException;
+     void rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2() throws RecognitionException;
+     void rule__DtCRegEx__SeverityAssignment_4_2_0_2() throws RecognitionException;
+     void rule__DtCSize__MinAssignment_3() throws RecognitionException;
+     void rule__DtCSize__MaxAssignment_5() throws RecognitionException;
+     void rule__DtCSize__MsgCodeAssignment_6_0_1_2() throws RecognitionException;
+     void rule__DtCSize__MsgI18nKeyAssignment_6_1_2() throws RecognitionException;
+     void rule__DtCSize__SeverityAssignment_6_2_0_2() throws RecognitionException;
+     void rule__Enum__NameAssignment_1() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_3() throws RecognitionException;
+     void rule__Enum__LiteralsAssignment_4_1() throws RecognitionException;
+     void rule__EnumLiteral__NameAssignment_0() throws RecognitionException;
+     void rule__EnumLiteral__DefaultAssignment_1_0_1() throws RecognitionException;
+     void rule__EnumLiteral__NullAssignment_1_1_0() throws RecognitionException;
+     void rule__EnumLiteral__ValueAssignment_1_1_2_1() throws RecognitionException;
+     void rule__AnnotationDef__AnnotationAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__AttributeAssignment_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0() throws RecognitionException;
+     void rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1() throws RecognitionException;
+     void rule__KeyAndValue__KeyAssignment_2() throws RecognitionException;
+     void rule__KeyAndValue__ValueAssignment_5() 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 synpred40_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred41_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred42_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred67_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred68_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred81_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred89_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred90_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred103_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred107_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred108_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred114_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred175_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred178_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred181_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred184_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred187_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred190_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred193_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred196_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred199_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred202_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred205_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred208_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred211_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred215_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred233_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred235_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred236_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred237_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred238_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred239_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred240_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred241_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred242_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred243_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred244_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred246_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred247_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred255_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred262_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred265_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred278_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred279_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred283_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred284_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred285_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred290_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred291_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred292_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred293_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred295_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred299_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred301_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred302_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred309_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred310_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred311_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred312_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred313_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred314_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred315_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred316_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred317_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred318_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred319_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred320_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred321_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred322_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred323_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred324_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred325_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred326_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred327_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred328_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred329_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred330_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred331_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred332_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred333_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred334_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred335_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred336_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred337_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred338_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred339_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred340_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred341_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred342_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred343_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred344_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred345_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred346_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred347_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred348_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred349_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred350_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred351_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred352_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred353_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred354_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred355_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred356_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred357_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred358_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred359_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred360_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred361_InternalServicesGrammar_fragment() throws RecognitionException;   
+     void synpred362_InternalServicesGrammar_fragment() throws RecognitionException;   
+}
+
+@SuppressWarnings("all")
+abstract class InternalServicesGrammarParser1 extends AbstractInternalContentAssistParser implements InternalServicesGrammarParserSignatures {
+
+        InternalServicesGrammarParser1(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+
+        InternalServicesGrammarParser1(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+        }
+
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'optional'", "'mandatory'", "'zeroToMany'", "'oneToMany'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'package'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'?'", "'1'", "'dtoservice'", "'provides'", "'{'", "'}'", "'persistenceUnit'", "';'", "'validators'", "', '", "'injectService'", "'def'", "'('", "')'", "'datatype'", "'jvmType'", "'properties'", "'isFalse'", "'['", "'msgCode'", "'msgI18nKey'", "']'", "'severity'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'key'", "'value'", "'derived'", "'collection'", "'@'", "','", "'#'", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'&'", "'mutable'", "'as primitive'", "'dateType'", "'as blob'", "'asDefault'", "'forNull'", "'::'", "'?.'", "'|'", "'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 RULE_HEX=5;
+    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=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=7;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=8;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+
+    public String[] getTokenNames() { return InternalServicesGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/antlr/internal/InternalServicesGrammar.g"; }
+
+
+     
+     	protected ServicesGrammarGrammarAccess grammarAccess;
+     	
+        public void setGrammarAccess(ServicesGrammarGrammarAccess grammarAccess) {
+        	this.grammarAccess = grammarAccess;
+        }
+        
+        @Override
+        protected Grammar getGrammar() {
+        	return grammarAccess.getGrammar();
+        }
+        
+        @Override
+        protected String getValueForTokenName(String tokenName) {
+        	return tokenName;
+        }
+
+
+
+
+
+    // Delegated rules
+
+    public final boolean synpred315_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred315_InternalServicesGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred89_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred89_InternalServicesGrammar_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 synpred242_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred242_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred338_InternalServicesGrammar_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 synpred350_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred350_InternalServicesGrammar_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 synpred247_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred247_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred299_InternalServicesGrammar_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 synpred344_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred344_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred321_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred349_InternalServicesGrammar_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 synpred361_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred361_InternalServicesGrammar_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 synpred326_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred326_InternalServicesGrammar_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 synpred90_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred90_InternalServicesGrammar_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 synpred351_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred351_InternalServicesGrammar_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 synpred356_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred356_InternalServicesGrammar_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 synpred333_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred333_InternalServicesGrammar_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 synpred42_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred42_InternalServicesGrammar_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 synpred310_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred310_InternalServicesGrammar_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 synpred236_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred236_InternalServicesGrammar_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 synpred241_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred241_InternalServicesGrammar_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 synpred357_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred357_InternalServicesGrammar_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 synpred184_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred184_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred328_InternalServicesGrammar_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 synpred208_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred208_InternalServicesGrammar_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 synpred311_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred311_InternalServicesGrammar_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 synpred343_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred343_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred348_InternalServicesGrammar_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 synpred178_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred237_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred103_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred302_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred331_InternalServicesGrammar_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 synpred108_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred108_InternalServicesGrammar_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 synpred193_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred193_InternalServicesGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred211_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred211_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred316_InternalServicesGrammar_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 synpred243_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred243_InternalServicesGrammar_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 synpred202_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred202_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred283_InternalServicesGrammar_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 synpred332_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred332_InternalServicesGrammar_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred199_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred199_InternalServicesGrammar_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 synpred317_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred317_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred322_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred327_InternalServicesGrammar_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 synpred362_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred362_InternalServicesGrammar_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 synpred342_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred342_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred347_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred278_InternalServicesGrammar_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 synpred293_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred293_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred337_InternalServicesGrammar_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 synpred352_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred352_InternalServicesGrammar_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 synpred301_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred301_InternalServicesGrammar_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 synpred330_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred330_InternalServicesGrammar_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 synpred233_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred233_InternalServicesGrammar_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 synpred262_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred262_InternalServicesGrammar_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 synpred291_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred291_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred279_InternalServicesGrammar_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 synpred107_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred107_InternalServicesGrammar_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 synpred324_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred324_InternalServicesGrammar_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 synpred285_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred285_InternalServicesGrammar_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 synpred353_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred353_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred329_InternalServicesGrammar_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 synpred358_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred358_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred81_InternalServicesGrammar_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 synpred40_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalServicesGrammar_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 synpred215_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_InternalServicesGrammar_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 synpred312_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred312_InternalServicesGrammar_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 synpred238_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred238_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred335_InternalServicesGrammar_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 synpred359_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred359_InternalServicesGrammar_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 synpred68_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred68_InternalServicesGrammar_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 synpred244_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred244_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred346_InternalServicesGrammar_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 synpred239_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred239_InternalServicesGrammar_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 synpred313_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred313_InternalServicesGrammar_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 synpred341_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred341_InternalServicesGrammar_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 synpred336_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred336_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred284_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred292_InternalServicesGrammar_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 synpred323_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred323_InternalServicesGrammar_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 synpred187_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred187_InternalServicesGrammar_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 synpred318_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred318_InternalServicesGrammar_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 synpred190_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred190_InternalServicesGrammar_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 synpred246_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred246_InternalServicesGrammar_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 synpred319_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred319_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred320_InternalServicesGrammar_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 synpred334_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred334_InternalServicesGrammar_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 synpred181_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred181_InternalServicesGrammar_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 synpred360_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred360_InternalServicesGrammar_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 synpred205_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred205_InternalServicesGrammar_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 synpred290_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred290_InternalServicesGrammar_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 synpred325_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred325_InternalServicesGrammar_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 synpred114_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred114_InternalServicesGrammar_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 synpred175_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred175_InternalServicesGrammar_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 synpred339_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred339_InternalServicesGrammar_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 synpred67_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred67_InternalServicesGrammar_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 synpred340_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred340_InternalServicesGrammar_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 synpred354_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred354_InternalServicesGrammar_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 synpred295_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred295_InternalServicesGrammar_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 synpred41_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred41_InternalServicesGrammar_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_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred345_InternalServicesGrammar_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 synpred235_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred235_InternalServicesGrammar_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 synpred355_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred355_InternalServicesGrammar_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 synpred240_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred240_InternalServicesGrammar_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 synpred265_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred265_InternalServicesGrammar_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 synpred314_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred314_InternalServicesGrammar_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 synpred309_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred309_InternalServicesGrammar_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 synpred196_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred196_InternalServicesGrammar_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 synpred255_InternalServicesGrammar() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred255_InternalServicesGrammar_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 DFA13 dfa13 = new DFA13(this);
+    protected DFA14 dfa14 = new DFA14(this);
+    protected DFA15 dfa15 = new DFA15(this);
+    protected DFA22 dfa22 = new DFA22(this);
+    protected DFA30 dfa30 = new DFA30(this);
+    protected DFA33 dfa33 = new DFA33(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA37 dfa37 = new DFA37(this);
+    protected DFA42 dfa42 = new DFA42(this);
+    protected DFA45 dfa45 = new DFA45(this);
+    protected DFA54 dfa54 = new DFA54(this);
+    protected DFA150 dfa150 = new DFA150(this);
+    protected DFA156 dfa156 = new DFA156(this);
+    protected DFA163 dfa163 = new DFA163(this);
+    protected DFA164 dfa164 = new DFA164(this);
+    protected DFA172 dfa172 = new DFA172(this);
+    protected DFA182 dfa182 = new DFA182(this);
+    protected DFA195 dfa195 = new DFA195(this);
+    protected DFA196 dfa196 = new DFA196(this);
+    protected DFA200 dfa200 = new DFA200(this);
+    protected DFA201 dfa201 = new DFA201(this);
+    protected DFA202 dfa202 = new DFA202(this);
+    protected DFA207 dfa207 = new DFA207(this);
+    protected DFA216 dfa216 = new DFA216(this);
+    protected DFA219 dfa219 = new DFA219(this);
+    static final String DFA13_eotS =
+        "\43\uffff";
+    static final String DFA13_eofS =
+        "\43\uffff";
+    static final String DFA13_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA13_maxS =
+        "\1\u009a\1\0\41\uffff";
+    static final String DFA13_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA13_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA13_transitionS = {
+            "\1\1\4\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\23\uffff\1\2\7\uffff\1\2\5\uffff\1\2\25\uffff\1\2\1\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\13\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA13_eot = DFA.unpackEncodedString(DFA13_eotS);
+    static final short[] DFA13_eof = DFA.unpackEncodedString(DFA13_eofS);
+    static final char[] DFA13_min = DFA.unpackEncodedStringToUnsignedChars(DFA13_minS);
+    static final char[] DFA13_max = DFA.unpackEncodedStringToUnsignedChars(DFA13_maxS);
+    static final short[] DFA13_accept = DFA.unpackEncodedString(DFA13_acceptS);
+    static final short[] DFA13_special = DFA.unpackEncodedString(DFA13_specialS);
+    static final short[][] DFA13_transition;
+
+    static {
+        int numStates = DFA13_transitionS.length;
+        DFA13_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA13_transition[i] = DFA.unpackEncodedString(DFA13_transitionS[i]);
+        }
+    }
+
+    class DFA13 extends DFA {
+
+        public DFA13(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 13;
+            this.eot = DFA13_eot;
+            this.eof = DFA13_eof;
+            this.min = DFA13_min;
+            this.max = DFA13_max;
+            this.accept = DFA13_accept;
+            this.special = DFA13_special;
+            this.transition = DFA13_transition;
+        }
+        public String getDescription() {
+            return "3984: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 LA13_1 = input.LA(1);
+
+                         
+                        int index13_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalServicesGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index13_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 13, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA14_eotS =
+        "\43\uffff";
+    static final String DFA14_eofS =
+        "\43\uffff";
+    static final String DFA14_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA14_maxS =
+        "\1\u009a\1\0\41\uffff";
+    static final String DFA14_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA14_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA14_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\23\uffff\1\2\7\uffff\1\2\5\uffff\1\2\25\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\13\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA14_eot = DFA.unpackEncodedString(DFA14_eotS);
+    static final short[] DFA14_eof = DFA.unpackEncodedString(DFA14_eofS);
+    static final char[] DFA14_min = DFA.unpackEncodedStringToUnsignedChars(DFA14_minS);
+    static final char[] DFA14_max = DFA.unpackEncodedStringToUnsignedChars(DFA14_maxS);
+    static final short[] DFA14_accept = DFA.unpackEncodedString(DFA14_acceptS);
+    static final short[] DFA14_special = DFA.unpackEncodedString(DFA14_specialS);
+    static final short[][] DFA14_transition;
+
+    static {
+        int numStates = DFA14_transitionS.length;
+        DFA14_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA14_transition[i] = DFA.unpackEncodedString(DFA14_transitionS[i]);
+        }
+    }
+
+    class DFA14 extends DFA {
+
+        public DFA14(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 14;
+            this.eot = DFA14_eot;
+            this.eof = DFA14_eof;
+            this.min = DFA14_min;
+            this.max = DFA14_max;
+            this.accept = DFA14_accept;
+            this.special = DFA14_special;
+            this.transition = DFA14_transition;
+        }
+        public String getDescription() {
+            return "4006: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 LA14_1 = input.LA(1);
+
+                         
+                        int index14_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalServicesGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index14_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 14, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA15_eotS =
+        "\43\uffff";
+    static final String DFA15_eofS =
+        "\43\uffff";
+    static final String DFA15_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA15_maxS =
+        "\1\u009a\1\0\41\uffff";
+    static final String DFA15_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA15_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA15_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\12\uffff\1\2\4\uffff\6\2\23\uffff\1\2\7\uffff\1\2\5\uffff\1\2\25\uffff\1\2\1\uffff\1\1\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\13\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS);
+    static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS);
+    static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS);
+    static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS);
+    static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS);
+    static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS);
+    static final short[][] DFA15_transition;
+
+    static {
+        int numStates = DFA15_transitionS.length;
+        DFA15_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]);
+        }
+    }
+
+    class DFA15 extends DFA {
+
+        public DFA15(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 15;
+            this.eot = DFA15_eot;
+            this.eof = DFA15_eof;
+            this.min = DFA15_min;
+            this.max = DFA15_max;
+            this.accept = DFA15_accept;
+            this.special = DFA15_special;
+            this.transition = DFA15_transition;
+        }
+        public String getDescription() {
+            return "4028: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 LA15_1 = input.LA(1);
+
+                         
+                        int index15_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred42_InternalServicesGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index15_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 15, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA22_eotS =
+        "\13\uffff";
+    static final String DFA22_eofS =
+        "\13\uffff";
+    static final String DFA22_minS =
+        "\1\53\2\uffff\1\53\7\uffff";
+    static final String DFA22_maxS =
+        "\1\62\2\uffff\1\57\7\uffff";
+    static final String DFA22_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 DFA22_specialS =
+        "\13\uffff}>";
+    static final String[] DFA22_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[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
+    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
+    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
+    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
+    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
+    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
+    static final short[][] DFA22_transition;
+
+    static {
+        int numStates = DFA22_transitionS.length;
+        DFA22_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
+        }
+    }
+
+    class DFA22 extends DFA {
+
+        public DFA22(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 22;
+            this.eot = DFA22_eot;
+            this.eof = DFA22_eof;
+            this.min = DFA22_min;
+            this.max = DFA22_max;
+            this.accept = DFA22_accept;
+            this.special = DFA22_special;
+            this.transition = DFA22_transition;
+        }
+        public String getDescription() {
+            return "4260:1: rule__OpOther__Alternatives : ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) );";
+        }
+    }
+    static final String DFA30_eotS =
+        "\12\uffff";
+    static final String DFA30_eofS =
+        "\4\uffff\5\3\1\uffff";
+    static final String DFA30_minS =
+        "\1\72\2\4\1\uffff\5\4\1\uffff";
+    static final String DFA30_maxS =
+        "\1\u0098\2\100\1\uffff\5\u009a\1\uffff";
+    static final String DFA30_acceptS =
+        "\3\uffff\1\2\5\uffff\1\1";
+    static final String DFA30_specialS =
+        "\12\uffff}>";
+    static final String[] DFA30_transitionS = {
+            "\1\1\134\uffff\1\2\1\3",
+            "\1\4\47\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\47\uffff\1\3\17\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\23\uffff\2\3\1\uffff\1\3\3\uffff\3\3\4\uffff\1\3\2\uffff\1\3\22\uffff\27\3\7\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\23\uffff\2\3\1\uffff\1\3\3\uffff\3\3\4\uffff\1\3\2\uffff\1\3\22\uffff\27\3\7\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\23\uffff\2\3\1\uffff\1\3\3\uffff\3\3\4\uffff\1\3\2\uffff\1\3\22\uffff\27\3\7\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\23\uffff\2\3\1\uffff\1\3\3\uffff\3\3\4\uffff\1\3\2\uffff\1\3\22\uffff\27\3\7\uffff\2\3\1\uffff\1\3",
+            "\5\3\4\uffff\1\11\2\3\16\uffff\44\3\23\uffff\2\3\1\uffff\1\3\3\uffff\3\3\4\uffff\1\3\2\uffff\1\3\22\uffff\27\3\7\uffff\2\3\1\uffff\1\3",
+            ""
+    };
+
+    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 "4542:1: rule__XMemberFeatureCall__Alternatives_1 : ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) );";
+        }
+    }
+    static final String DFA33_eotS =
+        "\43\uffff";
+    static final String DFA33_eofS =
+        "\43\uffff";
+    static final String DFA33_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA33_maxS =
+        "\1\u009a\2\0\40\uffff";
+    static final String DFA33_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA33_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA33_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\23\uffff\1\5\7\uffff\1\2\5\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\12\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA33_eot = DFA.unpackEncodedString(DFA33_eotS);
+    static final short[] DFA33_eof = DFA.unpackEncodedString(DFA33_eofS);
+    static final char[] DFA33_min = DFA.unpackEncodedStringToUnsignedChars(DFA33_minS);
+    static final char[] DFA33_max = DFA.unpackEncodedStringToUnsignedChars(DFA33_maxS);
+    static final short[] DFA33_accept = DFA.unpackEncodedString(DFA33_acceptS);
+    static final short[] DFA33_special = DFA.unpackEncodedString(DFA33_specialS);
+    static final short[][] DFA33_transition;
+
+    static {
+        int numStates = DFA33_transitionS.length;
+        DFA33_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA33_transition[i] = DFA.unpackEncodedString(DFA33_transitionS[i]);
+        }
+    }
+
+    class DFA33 extends DFA {
+
+        public DFA33(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 33;
+            this.eot = DFA33_eot;
+            this.eof = DFA33_eof;
+            this.min = DFA33_min;
+            this.max = DFA33_max;
+            this.accept = DFA33_accept;
+            this.special = DFA33_special;
+            this.transition = DFA33_transition;
+        }
+        public String getDescription() {
+            return "4618: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 LA33_1 = input.LA(1);
+
+                         
+                        int index33_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred81_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index33_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA33_2 = input.LA(1);
+
+                         
+                        int index33_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred81_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index33_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 33, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA34_eotS =
+        "\40\uffff";
+    static final String DFA34_eofS =
+        "\40\uffff";
+    static final String DFA34_minS =
+        "\1\4\26\uffff\1\0\10\uffff";
+    static final String DFA34_maxS =
+        "\1\u009a\26\uffff\1\0\10\uffff";
+    static final String DFA34_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 DFA34_specialS =
+        "\27\uffff\1\0\10\uffff}>";
+    static final String[] DFA34_transitionS = {
+            "\1\5\4\14\43\uffff\1\5\17\uffff\5\5\1\14\23\uffff\1\2\7\uffff\1\35\5\uffff\1\14\27\uffff\1\14\2\uffff\1\26\1\uffff\1\3\3\uffff\1\27\1\30\1\31\1\1\2\14\1\32\1\33\1\34\1\uffff\1\4\13\uffff\1\14",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA34_eot = DFA.unpackEncodedString(DFA34_eotS);
+    static final short[] DFA34_eof = DFA.unpackEncodedString(DFA34_eofS);
+    static final char[] DFA34_min = DFA.unpackEncodedStringToUnsignedChars(DFA34_minS);
+    static final char[] DFA34_max = DFA.unpackEncodedStringToUnsignedChars(DFA34_maxS);
+    static final short[] DFA34_accept = DFA.unpackEncodedString(DFA34_acceptS);
+    static final short[] DFA34_special = DFA.unpackEncodedString(DFA34_specialS);
+    static final short[][] DFA34_transition;
+
+    static {
+        int numStates = DFA34_transitionS.length;
+        DFA34_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA34_transition[i] = DFA.unpackEncodedString(DFA34_transitionS[i]);
+        }
+    }
+
+    class DFA34 extends DFA {
+
+        public DFA34(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 34;
+            this.eot = DFA34_eot;
+            this.eof = DFA34_eof;
+            this.min = DFA34_min;
+            this.max = DFA34_max;
+            this.accept = DFA34_accept;
+            this.special = DFA34_special;
+            this.transition = DFA34_transition;
+        }
+        public String getDescription() {
+            return "4640: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 LA34_23 = input.LA(1);
+
+                         
+                        int index34_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred89_InternalServicesGrammar()) ) {s = 30;}
+
+                        else if ( (synpred90_InternalServicesGrammar()) ) {s = 31;}
+
+                         
+                        input.seek(index34_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 34, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA37_eotS =
+        "\43\uffff";
+    static final String DFA37_eofS =
+        "\43\uffff";
+    static final String DFA37_minS =
+        "\1\4\1\0\41\uffff";
+    static final String DFA37_maxS =
+        "\1\u009a\1\0\41\uffff";
+    static final String DFA37_acceptS =
+        "\2\uffff\1\2\37\uffff\1\1";
+    static final String DFA37_specialS =
+        "\1\uffff\1\0\41\uffff}>";
+    static final String[] DFA37_transitionS = {
+            "\5\2\26\uffff\2\2\13\uffff\1\2\3\uffff\1\2\6\uffff\1\2\4\uffff\6\2\23\uffff\1\2\7\uffff\1\1\5\uffff\1\2\27\uffff\1\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\13\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA37_eot = DFA.unpackEncodedString(DFA37_eotS);
+    static final short[] DFA37_eof = DFA.unpackEncodedString(DFA37_eofS);
+    static final char[] DFA37_min = DFA.unpackEncodedStringToUnsignedChars(DFA37_minS);
+    static final char[] DFA37_max = DFA.unpackEncodedStringToUnsignedChars(DFA37_maxS);
+    static final short[] DFA37_accept = DFA.unpackEncodedString(DFA37_acceptS);
+    static final short[] DFA37_special = DFA.unpackEncodedString(DFA37_specialS);
+    static final short[][] DFA37_transition;
+
+    static {
+        int numStates = DFA37_transitionS.length;
+        DFA37_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA37_transition[i] = DFA.unpackEncodedString(DFA37_transitionS[i]);
+        }
+    }
+
+    class DFA37 extends DFA {
+
+        public DFA37(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 37;
+            this.eot = DFA37_eot;
+            this.eof = DFA37_eof;
+            this.min = DFA37_min;
+            this.max = DFA37_max;
+            this.accept = DFA37_accept;
+            this.special = DFA37_special;
+            this.transition = DFA37_transition;
+        }
+        public String getDescription() {
+            return "4814: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 LA37_1 = input.LA(1);
+
+                         
+                        int index37_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred103_InternalServicesGrammar()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index37_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 37, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA42_eotS =
+        "\43\uffff";
+    static final String DFA42_eofS =
+        "\43\uffff";
+    static final String DFA42_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA42_maxS =
+        "\1\u009a\2\0\40\uffff";
+    static final String DFA42_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA42_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA42_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\23\uffff\1\5\7\uffff\1\2\5\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\12\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA42_eot = DFA.unpackEncodedString(DFA42_eotS);
+    static final short[] DFA42_eof = DFA.unpackEncodedString(DFA42_eofS);
+    static final char[] DFA42_min = DFA.unpackEncodedStringToUnsignedChars(DFA42_minS);
+    static final char[] DFA42_max = DFA.unpackEncodedStringToUnsignedChars(DFA42_maxS);
+    static final short[] DFA42_accept = DFA.unpackEncodedString(DFA42_acceptS);
+    static final short[] DFA42_special = DFA.unpackEncodedString(DFA42_specialS);
+    static final short[][] DFA42_transition;
+
+    static {
+        int numStates = DFA42_transitionS.length;
+        DFA42_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA42_transition[i] = DFA.unpackEncodedString(DFA42_transitionS[i]);
+        }
+    }
+
+    class DFA42 extends DFA {
+
+        public DFA42(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 42;
+            this.eot = DFA42_eot;
+            this.eof = DFA42_eof;
+            this.min = DFA42_min;
+            this.max = DFA42_max;
+            this.accept = DFA42_accept;
+            this.special = DFA42_special;
+            this.transition = DFA42_transition;
+        }
+        public String getDescription() {
+            return "4926: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 LA42_1 = input.LA(1);
+
+                         
+                        int index42_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred108_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index42_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA42_2 = input.LA(1);
+
+                         
+                        int index42_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred108_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index42_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 42, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA45_eotS =
+        "\43\uffff";
+    static final String DFA45_eofS =
+        "\43\uffff";
+    static final String DFA45_minS =
+        "\1\4\2\0\40\uffff";
+    static final String DFA45_maxS =
+        "\1\u009a\2\0\40\uffff";
+    static final String DFA45_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\35\uffff";
+    static final String DFA45_specialS =
+        "\1\uffff\1\0\1\1\40\uffff}>";
+    static final String[] DFA45_transitionS = {
+            "\1\1\4\5\26\uffff\2\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\4\uffff\6\5\23\uffff\1\5\7\uffff\1\2\5\uffff\1\5\27\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\12\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA45_eot = DFA.unpackEncodedString(DFA45_eotS);
+    static final short[] DFA45_eof = DFA.unpackEncodedString(DFA45_eofS);
+    static final char[] DFA45_min = DFA.unpackEncodedStringToUnsignedChars(DFA45_minS);
+    static final char[] DFA45_max = DFA.unpackEncodedStringToUnsignedChars(DFA45_maxS);
+    static final short[] DFA45_accept = DFA.unpackEncodedString(DFA45_acceptS);
+    static final short[] DFA45_special = DFA.unpackEncodedString(DFA45_specialS);
+    static final short[][] DFA45_transition;
+
+    static {
+        int numStates = DFA45_transitionS.length;
+        DFA45_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA45_transition[i] = DFA.unpackEncodedString(DFA45_transitionS[i]);
+        }
+    }
+
+    class DFA45 extends DFA {
+
+        public DFA45(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 45;
+            this.eot = DFA45_eot;
+            this.eof = DFA45_eof;
+            this.min = DFA45_min;
+            this.max = DFA45_max;
+            this.accept = DFA45_accept;
+            this.special = DFA45_special;
+            this.transition = DFA45_transition;
+        }
+        public String getDescription() {
+            return "5020: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 LA45_1 = input.LA(1);
+
+                         
+                        int index45_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred114_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index45_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA45_2 = input.LA(1);
+
+                         
+                        int index45_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred114_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index45_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 45, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA54_eotS =
+        "\7\uffff";
+    static final String DFA54_eofS =
+        "\2\uffff\1\4\2\uffff\1\4\1\uffff";
+    static final String DFA54_minS =
+        "\1\4\1\uffff\1\72\1\4\1\uffff\1\72\1\uffff";
+    static final String DFA54_maxS =
+        "\1\75\1\uffff\1\130\1\63\1\uffff\1\130\1\uffff";
+    static final String DFA54_acceptS =
+        "\1\uffff\1\1\2\uffff\1\2\1\uffff\1\3";
+    static final String DFA54_specialS =
+        "\7\uffff}>";
+    static final String[] DFA54_transitionS = {
+            "\1\2\70\uffff\1\1",
+            "",
+            "\1\3\35\uffff\1\4",
+            "\1\5\56\uffff\1\6",
+            "",
+            "\1\3\35\uffff\1\4",
+            ""
+    };
+
+    static final short[] DFA54_eot = DFA.unpackEncodedString(DFA54_eotS);
+    static final short[] DFA54_eof = DFA.unpackEncodedString(DFA54_eofS);
+    static final char[] DFA54_min = DFA.unpackEncodedStringToUnsignedChars(DFA54_minS);
+    static final char[] DFA54_max = DFA.unpackEncodedStringToUnsignedChars(DFA54_maxS);
+    static final short[] DFA54_accept = DFA.unpackEncodedString(DFA54_acceptS);
+    static final short[] DFA54_special = DFA.unpackEncodedString(DFA54_specialS);
+    static final short[][] DFA54_transition;
+
+    static {
+        int numStates = DFA54_transitionS.length;
+        DFA54_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA54_transition[i] = DFA.unpackEncodedString(DFA54_transitionS[i]);
+        }
+    }
+
+    class DFA54 extends DFA {
+
+        public DFA54(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 54;
+            this.eot = DFA54_eot;
+            this.eof = DFA54_eof;
+            this.min = DFA54_min;
+            this.max = DFA54_max;
+            this.accept = DFA54_accept;
+            this.special = DFA54_special;
+            this.transition = DFA54_transition;
+        }
+        public String getDescription() {
+            return "5220:1: rule__XImportDeclaration__Alternatives_1 : ( ( ( rule__XImportDeclaration__Group_1_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_1_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_1_2 ) ) );";
+        }
+    }
+    static final String DFA150_eotS =
+        "\12\uffff";
+    static final String DFA150_eofS =
+        "\1\10\11\uffff";
+    static final String DFA150_minS =
+        "\1\4\7\0\2\uffff";
+    static final String DFA150_maxS =
+        "\1\u009a\7\0\2\uffff";
+    static final String DFA150_acceptS =
+        "\10\uffff\1\2\1\1";
+    static final String DFA150_specialS =
+        "\1\uffff\1\5\1\3\1\2\1\0\1\6\1\1\1\4\2\uffff}>";
+    static final String[] DFA150_transitionS = {
+            "\5\10\5\uffff\2\10\16\uffff\3\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\25\10\23\uffff\2\10\1\uffff\1\10\3\uffff\3\10\4\uffff\1\10\2\uffff\1\10\22\uffff\27\10\7\uffff\2\10\1\uffff\1\10",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            ""
+    };
+
+    static final short[] DFA150_eot = DFA.unpackEncodedString(DFA150_eotS);
+    static final short[] DFA150_eof = DFA.unpackEncodedString(DFA150_eofS);
+    static final char[] DFA150_min = DFA.unpackEncodedStringToUnsignedChars(DFA150_minS);
+    static final char[] DFA150_max = DFA.unpackEncodedStringToUnsignedChars(DFA150_maxS);
+    static final short[] DFA150_accept = DFA.unpackEncodedString(DFA150_acceptS);
+    static final short[] DFA150_special = DFA.unpackEncodedString(DFA150_specialS);
+    static final short[][] DFA150_transition;
+
+    static {
+        int numStates = DFA150_transitionS.length;
+        DFA150_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA150_transition[i] = DFA.unpackEncodedString(DFA150_transitionS[i]);
+        }
+    }
+
+    class DFA150 extends DFA {
+
+        public DFA150(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 150;
+            this.eot = DFA150_eot;
+            this.eof = DFA150_eof;
+            this.min = DFA150_min;
+            this.max = DFA150_max;
+            this.accept = DFA150_accept;
+            this.special = DFA150_special;
+            this.transition = DFA150_transition;
+        }
+        public String getDescription() {
+            return "18957: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 LA150_4 = input.LA(1);
+
+                         
+                        int index150_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA150_6 = input.LA(1);
+
+                         
+                        int index150_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA150_3 = input.LA(1);
+
+                         
+                        int index150_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA150_2 = input.LA(1);
+
+                         
+                        int index150_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA150_7 = input.LA(1);
+
+                         
+                        int index150_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA150_1 = input.LA(1);
+
+                         
+                        int index150_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA150_5 = input.LA(1);
+
+                         
+                        int index150_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred233_InternalServicesGrammar()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index150_5);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 150, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA156_eotS =
+        "\13\uffff";
+    static final String DFA156_eofS =
+        "\1\1\12\uffff";
+    static final String DFA156_minS =
+        "\1\4\1\uffff\10\0\1\uffff";
+    static final String DFA156_maxS =
+        "\1\u009a\1\uffff\10\0\1\uffff";
+    static final String DFA156_acceptS =
+        "\1\uffff\1\2\10\uffff\1\1";
+    static final String DFA156_specialS =
+        "\2\uffff\1\2\1\5\1\1\1\3\1\6\1\0\1\7\1\4\1\uffff}>";
+    static final String[] DFA156_transitionS = {
+            "\5\1\5\uffff\2\1\16\uffff\15\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\17\1\23\uffff\2\1\1\uffff\1\1\3\uffff\3\1\4\uffff\1\1\2\uffff\1\1\22\uffff\27\1\7\uffff\2\1\1\uffff\1\1",
+            "",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            "\1\uffff",
+            ""
+    };
+
+    static final short[] DFA156_eot = DFA.unpackEncodedString(DFA156_eotS);
+    static final short[] DFA156_eof = DFA.unpackEncodedString(DFA156_eofS);
+    static final char[] DFA156_min = DFA.unpackEncodedStringToUnsignedChars(DFA156_minS);
+    static final char[] DFA156_max = DFA.unpackEncodedStringToUnsignedChars(DFA156_maxS);
+    static final short[] DFA156_accept = DFA.unpackEncodedString(DFA156_acceptS);
+    static final short[] DFA156_special = DFA.unpackEncodedString(DFA156_specialS);
+    static final short[][] DFA156_transition;
+
+    static {
+        int numStates = DFA156_transitionS.length;
+        DFA156_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA156_transition[i] = DFA.unpackEncodedString(DFA156_transitionS[i]);
+        }
+    }
+
+    class DFA156 extends DFA {
+
+        public DFA156(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 156;
+            this.eot = DFA156_eot;
+            this.eof = DFA156_eof;
+            this.min = DFA156_min;
+            this.max = DFA156_max;
+            this.accept = DFA156_accept;
+            this.special = DFA156_special;
+            this.transition = DFA156_transition;
+        }
+        public String getDescription() {
+            return "()* loopback of 20449: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 LA156_7 = input.LA(1);
+
+                         
+                        int index156_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA156_4 = input.LA(1);
+
+                         
+                        int index156_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA156_2 = input.LA(1);
+
+                         
+                        int index156_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA156_5 = input.LA(1);
+
+                         
+                        int index156_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA156_9 = input.LA(1);
+
+                         
+                        int index156_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA156_3 = input.LA(1);
+
+                         
+                        int index156_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA156_6 = input.LA(1);
+
+                         
+                        int index156_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA156_8 = input.LA(1);
+
+                         
+                        int index156_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred239_InternalServicesGrammar()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index156_8);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 156, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA163_eotS =
+        "\120\uffff";
+    static final String DFA163_eofS =
+        "\1\2\117\uffff";
+    static final String DFA163_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA163_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA163_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA163_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA163_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\23\uffff\2\2\1\uffff\1\2\3\uffff\1\2\1\1\1\2\4\uffff\1\2\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\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 "22276: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 LA163_1 = input.LA(1);
+
+                         
+                        int index163_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred246_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index163_1);
+                        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 DFA164_eotS =
+        "\120\uffff";
+    static final String DFA164_eofS =
+        "\1\2\117\uffff";
+    static final String DFA164_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA164_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA164_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA164_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA164_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\23\uffff\2\2\1\uffff\1\2\3\uffff\3\2\4\uffff\1\1\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA164_eot = DFA.unpackEncodedString(DFA164_eotS);
+    static final short[] DFA164_eof = DFA.unpackEncodedString(DFA164_eofS);
+    static final char[] DFA164_min = DFA.unpackEncodedStringToUnsignedChars(DFA164_minS);
+    static final char[] DFA164_max = DFA.unpackEncodedStringToUnsignedChars(DFA164_maxS);
+    static final short[] DFA164_accept = DFA.unpackEncodedString(DFA164_acceptS);
+    static final short[] DFA164_special = DFA.unpackEncodedString(DFA164_specialS);
+    static final short[][] DFA164_transition;
+
+    static {
+        int numStates = DFA164_transitionS.length;
+        DFA164_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA164_transition[i] = DFA.unpackEncodedString(DFA164_transitionS[i]);
+        }
+    }
+
+    class DFA164 extends DFA {
+
+        public DFA164(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 164;
+            this.eot = DFA164_eot;
+            this.eof = DFA164_eof;
+            this.min = DFA164_min;
+            this.max = DFA164_max;
+            this.accept = DFA164_accept;
+            this.special = DFA164_special;
+            this.transition = DFA164_transition;
+        }
+        public String getDescription() {
+            return "22304: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 LA164_1 = input.LA(1);
+
+                         
+                        int index164_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred247_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index164_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 164, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA172_eotS =
+        "\46\uffff";
+    static final String DFA172_eofS =
+        "\46\uffff";
+    static final String DFA172_minS =
+        "\1\4\2\0\43\uffff";
+    static final String DFA172_maxS =
+        "\1\u009a\2\0\43\uffff";
+    static final String DFA172_acceptS =
+        "\3\uffff\1\1\1\uffff\1\2\40\uffff";
+    static final String DFA172_specialS =
+        "\1\uffff\1\0\1\1\43\uffff}>";
+    static final String[] DFA172_transitionS = {
+            "\1\1\4\5\25\uffff\3\5\13\uffff\1\5\3\uffff\1\3\6\uffff\1\5\3\uffff\7\5\23\uffff\1\5\7\uffff\1\2\5\uffff\1\5\2\uffff\1\5\24\uffff\1\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\12\uffff\1\3\1\5",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA172_eot = DFA.unpackEncodedString(DFA172_eotS);
+    static final short[] DFA172_eof = DFA.unpackEncodedString(DFA172_eofS);
+    static final char[] DFA172_min = DFA.unpackEncodedStringToUnsignedChars(DFA172_minS);
+    static final char[] DFA172_max = DFA.unpackEncodedStringToUnsignedChars(DFA172_maxS);
+    static final short[] DFA172_accept = DFA.unpackEncodedString(DFA172_acceptS);
+    static final short[] DFA172_special = DFA.unpackEncodedString(DFA172_specialS);
+    static final short[][] DFA172_transition;
+
+    static {
+        int numStates = DFA172_transitionS.length;
+        DFA172_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA172_transition[i] = DFA.unpackEncodedString(DFA172_transitionS[i]);
+        }
+    }
+
+    class DFA172 extends DFA {
+
+        public DFA172(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 172;
+            this.eot = DFA172_eot;
+            this.eof = DFA172_eof;
+            this.min = DFA172_min;
+            this.max = DFA172_max;
+            this.accept = DFA172_accept;
+            this.special = DFA172_special;
+            this.transition = DFA172_transition;
+        }
+        public String getDescription() {
+            return "23445: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 LA172_1 = input.LA(1);
+
+                         
+                        int index172_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred255_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index172_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA172_2 = input.LA(1);
+
+                         
+                        int index172_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred255_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index172_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 172, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA182_eotS =
+        "\42\uffff";
+    static final String DFA182_eofS =
+        "\42\uffff";
+    static final String DFA182_minS =
+        "\1\4\2\0\37\uffff";
+    static final String DFA182_maxS =
+        "\1\u009a\2\0\37\uffff";
+    static final String DFA182_acceptS =
+        "\3\uffff\1\1\1\2\35\uffff";
+    static final String DFA182_specialS =
+        "\1\uffff\1\0\1\1\37\uffff}>";
+    static final String[] DFA182_transitionS = {
+            "\1\1\4\4\26\uffff\2\4\13\uffff\1\4\3\uffff\1\3\6\uffff\1\4\4\uffff\6\4\23\uffff\1\4\7\uffff\1\2\5\uffff\1\4\27\uffff\1\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\13\uffff\1\4",
+            "\1\uffff",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA182_eot = DFA.unpackEncodedString(DFA182_eotS);
+    static final short[] DFA182_eof = DFA.unpackEncodedString(DFA182_eofS);
+    static final char[] DFA182_min = DFA.unpackEncodedStringToUnsignedChars(DFA182_minS);
+    static final char[] DFA182_max = DFA.unpackEncodedStringToUnsignedChars(DFA182_maxS);
+    static final short[] DFA182_accept = DFA.unpackEncodedString(DFA182_acceptS);
+    static final short[] DFA182_special = DFA.unpackEncodedString(DFA182_specialS);
+    static final short[][] DFA182_transition;
+
+    static {
+        int numStates = DFA182_transitionS.length;
+        DFA182_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA182_transition[i] = DFA.unpackEncodedString(DFA182_transitionS[i]);
+        }
+    }
+
+    class DFA182 extends DFA {
+
+        public DFA182(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 182;
+            this.eot = DFA182_eot;
+            this.eof = DFA182_eof;
+            this.min = DFA182_min;
+            this.max = DFA182_max;
+            this.accept = DFA182_accept;
+            this.special = DFA182_special;
+            this.transition = DFA182_transition;
+        }
+        public String getDescription() {
+            return "25113: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 LA182_1 = input.LA(1);
+
+                         
+                        int index182_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred265_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index182_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA182_2 = input.LA(1);
+
+                         
+                        int index182_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred265_InternalServicesGrammar()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index182_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 182, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA195_eotS =
+        "\120\uffff";
+    static final String DFA195_eofS =
+        "\1\2\117\uffff";
+    static final String DFA195_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA195_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA195_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA195_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA195_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\23\uffff\2\2\1\uffff\1\2\3\uffff\1\2\1\1\1\2\4\uffff\1\2\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\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 "27601: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 LA195_1 = input.LA(1);
+
+                         
+                        int index195_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred278_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index195_1);
+                        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 DFA196_eotS =
+        "\120\uffff";
+    static final String DFA196_eofS =
+        "\1\2\117\uffff";
+    static final String DFA196_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA196_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA196_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA196_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA196_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\23\uffff\2\2\1\uffff\1\2\3\uffff\3\2\4\uffff\1\1\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA196_eot = DFA.unpackEncodedString(DFA196_eotS);
+    static final short[] DFA196_eof = DFA.unpackEncodedString(DFA196_eofS);
+    static final char[] DFA196_min = DFA.unpackEncodedStringToUnsignedChars(DFA196_minS);
+    static final char[] DFA196_max = DFA.unpackEncodedStringToUnsignedChars(DFA196_maxS);
+    static final short[] DFA196_accept = DFA.unpackEncodedString(DFA196_acceptS);
+    static final short[] DFA196_special = DFA.unpackEncodedString(DFA196_specialS);
+    static final short[][] DFA196_transition;
+
+    static {
+        int numStates = DFA196_transitionS.length;
+        DFA196_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA196_transition[i] = DFA.unpackEncodedString(DFA196_transitionS[i]);
+        }
+    }
+
+    class DFA196 extends DFA {
+
+        public DFA196(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 196;
+            this.eot = DFA196_eot;
+            this.eof = DFA196_eof;
+            this.min = DFA196_min;
+            this.max = DFA196_max;
+            this.accept = DFA196_accept;
+            this.special = DFA196_special;
+            this.transition = DFA196_transition;
+        }
+        public String getDescription() {
+            return "27629: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 LA196_1 = input.LA(1);
+
+                         
+                        int index196_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred279_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index196_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 196, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA200_eotS =
+        "\120\uffff";
+    static final String DFA200_eofS =
+        "\1\2\117\uffff";
+    static final String DFA200_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA200_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA200_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA200_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA200_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\23\uffff\2\2\1\uffff\1\2\3\uffff\3\2\4\uffff\1\2\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA200_eot = DFA.unpackEncodedString(DFA200_eotS);
+    static final short[] DFA200_eof = DFA.unpackEncodedString(DFA200_eofS);
+    static final char[] DFA200_min = DFA.unpackEncodedStringToUnsignedChars(DFA200_minS);
+    static final char[] DFA200_max = DFA.unpackEncodedStringToUnsignedChars(DFA200_maxS);
+    static final short[] DFA200_accept = DFA.unpackEncodedString(DFA200_acceptS);
+    static final short[] DFA200_special = DFA.unpackEncodedString(DFA200_specialS);
+    static final short[][] DFA200_transition;
+
+    static {
+        int numStates = DFA200_transitionS.length;
+        DFA200_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA200_transition[i] = DFA.unpackEncodedString(DFA200_transitionS[i]);
+        }
+    }
+
+    class DFA200 extends DFA {
+
+        public DFA200(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 200;
+            this.eot = DFA200_eot;
+            this.eof = DFA200_eof;
+            this.min = DFA200_min;
+            this.max = DFA200_max;
+            this.accept = DFA200_accept;
+            this.special = DFA200_special;
+            this.transition = DFA200_transition;
+        }
+        public String getDescription() {
+            return "28167: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 LA200_1 = input.LA(1);
+
+                         
+                        int index200_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred283_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index200_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 200, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA201_eotS =
+        "\120\uffff";
+    static final String DFA201_eofS =
+        "\1\2\117\uffff";
+    static final String DFA201_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA201_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA201_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA201_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA201_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\23\uffff\2\2\1\uffff\1\2\3\uffff\1\2\1\1\1\2\4\uffff\1\2\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA201_eot = DFA.unpackEncodedString(DFA201_eotS);
+    static final short[] DFA201_eof = DFA.unpackEncodedString(DFA201_eofS);
+    static final char[] DFA201_min = DFA.unpackEncodedStringToUnsignedChars(DFA201_minS);
+    static final char[] DFA201_max = DFA.unpackEncodedStringToUnsignedChars(DFA201_maxS);
+    static final short[] DFA201_accept = DFA.unpackEncodedString(DFA201_acceptS);
+    static final short[] DFA201_special = DFA.unpackEncodedString(DFA201_specialS);
+    static final short[][] DFA201_transition;
+
+    static {
+        int numStates = DFA201_transitionS.length;
+        DFA201_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA201_transition[i] = DFA.unpackEncodedString(DFA201_transitionS[i]);
+        }
+    }
+
+    class DFA201 extends DFA {
+
+        public DFA201(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 201;
+            this.eot = DFA201_eot;
+            this.eof = DFA201_eof;
+            this.min = DFA201_min;
+            this.max = DFA201_max;
+            this.accept = DFA201_accept;
+            this.special = DFA201_special;
+            this.transition = DFA201_transition;
+        }
+        public String getDescription() {
+            return "28196: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 LA201_1 = input.LA(1);
+
+                         
+                        int index201_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred284_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index201_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 201, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA202_eotS =
+        "\120\uffff";
+    static final String DFA202_eofS =
+        "\1\2\117\uffff";
+    static final String DFA202_minS =
+        "\1\4\1\0\116\uffff";
+    static final String DFA202_maxS =
+        "\1\u009a\1\0\116\uffff";
+    static final String DFA202_acceptS =
+        "\2\uffff\1\2\114\uffff\1\1";
+    static final String DFA202_specialS =
+        "\1\uffff\1\0\116\uffff}>";
+    static final String[] DFA202_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\44\2\23\uffff\2\2\1\uffff\1\2\3\uffff\3\2\4\uffff\1\1\2\uffff\1\2\22\uffff\27\2\7\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA202_eot = DFA.unpackEncodedString(DFA202_eotS);
+    static final short[] DFA202_eof = DFA.unpackEncodedString(DFA202_eofS);
+    static final char[] DFA202_min = DFA.unpackEncodedStringToUnsignedChars(DFA202_minS);
+    static final char[] DFA202_max = DFA.unpackEncodedStringToUnsignedChars(DFA202_maxS);
+    static final short[] DFA202_accept = DFA.unpackEncodedString(DFA202_acceptS);
+    static final short[] DFA202_special = DFA.unpackEncodedString(DFA202_specialS);
+    static final short[][] DFA202_transition;
+
+    static {
+        int numStates = DFA202_transitionS.length;
+        DFA202_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA202_transition[i] = DFA.unpackEncodedString(DFA202_transitionS[i]);
+        }
+    }
+
+    class DFA202 extends DFA {
+
+        public DFA202(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 202;
+            this.eot = DFA202_eot;
+            this.eof = DFA202_eof;
+            this.min = DFA202_min;
+            this.max = DFA202_max;
+            this.accept = DFA202_accept;
+            this.special = DFA202_special;
+            this.transition = DFA202_transition;
+        }
+        public String getDescription() {
+            return "28224: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 LA202_1 = input.LA(1);
+
+                         
+                        int index202_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred285_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index202_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 202, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA207_eotS =
+        "\120\uffff";
+    static final String DFA207_eofS =
+        "\1\41\117\uffff";
+    static final String DFA207_minS =
+        "\1\4\40\0\57\uffff";
+    static final String DFA207_maxS =
+        "\1\u009a\40\0\57\uffff";
+    static final String DFA207_acceptS =
+        "\41\uffff\1\2\55\uffff\1\1";
+    static final String DFA207_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\57\uffff}>";
+    static final String[] DFA207_transitionS = {
+            "\1\1\1\23\1\24\1\25\1\27\5\uffff\2\41\16\uffff\1\41\1\10\1\7\13\41\1\15\12\41\1\6\4\41\1\2\1\3\1\4\1\5\1\16\1\21\23\uffff\1\12\1\41\1\uffff\1\41\3\uffff\1\41\1\40\1\41\4\uffff\1\20\2\uffff\1\41\22\uffff\2\41\1\17\2\41\1\31\1\41\1\13\3\41\1\32\1\33\1\34\1\11\1\26\1\30\1\35\1\36\1\37\1\41\1\14\1\41\7\uffff\2\41\1\uffff\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[] DFA207_eot = DFA.unpackEncodedString(DFA207_eotS);
+    static final short[] DFA207_eof = DFA.unpackEncodedString(DFA207_eofS);
+    static final char[] DFA207_min = DFA.unpackEncodedStringToUnsignedChars(DFA207_minS);
+    static final char[] DFA207_max = DFA.unpackEncodedStringToUnsignedChars(DFA207_maxS);
+    static final short[] DFA207_accept = DFA.unpackEncodedString(DFA207_acceptS);
+    static final short[] DFA207_special = DFA.unpackEncodedString(DFA207_specialS);
+    static final short[][] DFA207_transition;
+
+    static {
+        int numStates = DFA207_transitionS.length;
+        DFA207_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA207_transition[i] = DFA.unpackEncodedString(DFA207_transitionS[i]);
+        }
+    }
+
+    class DFA207 extends DFA {
+
+        public DFA207(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 207;
+            this.eot = DFA207_eot;
+            this.eof = DFA207_eof;
+            this.min = DFA207_min;
+            this.max = DFA207_max;
+            this.accept = DFA207_accept;
+            this.special = DFA207_special;
+            this.transition = DFA207_transition;
+        }
+        public String getDescription() {
+            return "29277: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 LA207_1 = input.LA(1);
+
+                         
+                        int index207_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA207_2 = input.LA(1);
+
+                         
+                        int index207_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA207_3 = input.LA(1);
+
+                         
+                        int index207_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA207_4 = input.LA(1);
+
+                         
+                        int index207_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA207_5 = input.LA(1);
+
+                         
+                        int index207_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA207_6 = input.LA(1);
+
+                         
+                        int index207_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA207_7 = input.LA(1);
+
+                         
+                        int index207_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA207_8 = input.LA(1);
+
+                         
+                        int index207_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA207_9 = input.LA(1);
+
+                         
+                        int index207_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA207_10 = input.LA(1);
+
+                         
+                        int index207_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA207_11 = input.LA(1);
+
+                         
+                        int index207_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA207_12 = input.LA(1);
+
+                         
+                        int index207_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA207_13 = input.LA(1);
+
+                         
+                        int index207_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA207_14 = input.LA(1);
+
+                         
+                        int index207_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA207_15 = input.LA(1);
+
+                         
+                        int index207_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA207_16 = input.LA(1);
+
+                         
+                        int index207_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA207_17 = input.LA(1);
+
+                         
+                        int index207_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA207_18 = input.LA(1);
+
+                         
+                        int index207_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA207_19 = input.LA(1);
+
+                         
+                        int index207_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA207_20 = input.LA(1);
+
+                         
+                        int index207_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA207_21 = input.LA(1);
+
+                         
+                        int index207_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA207_22 = input.LA(1);
+
+                         
+                        int index207_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA207_23 = input.LA(1);
+
+                         
+                        int index207_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA207_24 = input.LA(1);
+
+                         
+                        int index207_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA207_25 = input.LA(1);
+
+                         
+                        int index207_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA207_26 = input.LA(1);
+
+                         
+                        int index207_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA207_27 = input.LA(1);
+
+                         
+                        int index207_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA207_28 = input.LA(1);
+
+                         
+                        int index207_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA207_29 = input.LA(1);
+
+                         
+                        int index207_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA207_30 = input.LA(1);
+
+                         
+                        int index207_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA207_31 = input.LA(1);
+
+                         
+                        int index207_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA207_32 = input.LA(1);
+
+                         
+                        int index207_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred290_InternalServicesGrammar()) ) {s = 79;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index207_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 207, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA216_eotS =
+        "\142\uffff";
+    static final String DFA216_eofS =
+        "\1\2\141\uffff";
+    static final String DFA216_minS =
+        "\1\4\1\0\140\uffff";
+    static final String DFA216_maxS =
+        "\1\u009a\1\0\140\uffff";
+    static final String DFA216_acceptS =
+        "\2\uffff\1\2\136\uffff\1\1";
+    static final String DFA216_specialS =
+        "\1\uffff\1\0\140\uffff}>";
+    static final String[] DFA216_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\21\uffff\1\2\1\uffff\2\2\1\uffff\1\2\1\uffff\1\2\1\uffff\4\2\1\uffff\3\2\2\uffff\1\2\1\uffff\4\2\2\uffff\7\2\4\uffff\30\2\1\uffff\1\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA216_eot = DFA.unpackEncodedString(DFA216_eotS);
+    static final short[] DFA216_eof = DFA.unpackEncodedString(DFA216_eofS);
+    static final char[] DFA216_min = DFA.unpackEncodedStringToUnsignedChars(DFA216_minS);
+    static final char[] DFA216_max = DFA.unpackEncodedStringToUnsignedChars(DFA216_maxS);
+    static final short[] DFA216_accept = DFA.unpackEncodedString(DFA216_acceptS);
+    static final short[] DFA216_special = DFA.unpackEncodedString(DFA216_specialS);
+    static final short[][] DFA216_transition;
+
+    static {
+        int numStates = DFA216_transitionS.length;
+        DFA216_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA216_transition[i] = DFA.unpackEncodedString(DFA216_transitionS[i]);
+        }
+    }
+
+    class DFA216 extends DFA {
+
+        public DFA216(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 216;
+            this.eot = DFA216_eot;
+            this.eof = DFA216_eof;
+            this.min = DFA216_min;
+            this.max = DFA216_max;
+            this.accept = DFA216_accept;
+            this.special = DFA216_special;
+            this.transition = DFA216_transition;
+        }
+        public String getDescription() {
+            return "30856: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 LA216_1 = input.LA(1);
+
+                         
+                        int index216_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred299_InternalServicesGrammar()) ) {s = 97;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index216_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 216, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String DFA219_eotS =
+        "\142\uffff";
+    static final String DFA219_eofS =
+        "\1\2\141\uffff";
+    static final String DFA219_minS =
+        "\1\4\1\0\140\uffff";
+    static final String DFA219_maxS =
+        "\1\u009a\1\0\140\uffff";
+    static final String DFA219_acceptS =
+        "\2\uffff\1\2\136\uffff\1\1";
+    static final String DFA219_specialS =
+        "\1\uffff\1\0\140\uffff}>";
+    static final String[] DFA219_transitionS = {
+            "\5\2\5\uffff\2\2\16\uffff\16\2\1\1\25\2\21\uffff\1\2\1\uffff\2\2\1\uffff\1\2\1\uffff\1\2\1\uffff\4\2\1\uffff\3\2\2\uffff\1\2\1\uffff\4\2\2\uffff\7\2\4\uffff\30\2\1\uffff\1\2\4\uffff\2\2\1\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA219_eot = DFA.unpackEncodedString(DFA219_eotS);
+    static final short[] DFA219_eof = DFA.unpackEncodedString(DFA219_eofS);
+    static final char[] DFA219_min = DFA.unpackEncodedStringToUnsignedChars(DFA219_minS);
+    static final char[] DFA219_max = DFA.unpackEncodedStringToUnsignedChars(DFA219_maxS);
+    static final short[] DFA219_accept = DFA.unpackEncodedString(DFA219_acceptS);
+    static final short[] DFA219_special = DFA.unpackEncodedString(DFA219_specialS);
+    static final short[][] DFA219_transition;
+
+    static {
+        int numStates = DFA219_transitionS.length;
+        DFA219_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA219_transition[i] = DFA.unpackEncodedString(DFA219_transitionS[i]);
+        }
+    }
+
+    class DFA219 extends DFA {
+
+        public DFA219(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 219;
+            this.eot = DFA219_eot;
+            this.eof = DFA219_eof;
+            this.min = DFA219_min;
+            this.max = DFA219_max;
+            this.accept = DFA219_accept;
+            this.special = DFA219_special;
+            this.transition = DFA219_transition;
+        }
+        public String getDescription() {
+            return "31167: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 LA219_1 = input.LA(1);
+
+                         
+                        int index219_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred302_InternalServicesGrammar()) ) {s = 97;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index219_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 219, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    
+    protected static class FollowSets000 {
+        public static final BitSet FOLLOW_ruleLServiceModel_in_entryRuleLServiceModel67 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLServiceModel74 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LServiceModel__PackagesAssignment_in_ruleLServiceModel100 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
+        public static final BitSet FOLLOW_ruleClass_in_entryRuleClass128 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleClass135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__0_in_ruleClass161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidatorDef_in_entryRuleValidatorDef188 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidatorDef195 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidatorDef__Alternatives_in_ruleValidatorDef221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInjectedServices_in_entryRuleInjectedServices248 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInjectedServices255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedServices__Group__0_in_ruleInjectedServices281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleInjectedService_in_entryRuleInjectedService308 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleInjectedService315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__0_in_ruleInjectedService341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOperation_in_entryRuleOperation372 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOperation379 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group__0_in_ruleOperation405 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage432 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTypedPackage439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__0_in_ruleTypedPackage465 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleType_in_entryRuleType492 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleType499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Type__Alternatives_in_ruleType525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleImport_in_entryRuleImport552 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleImport559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__0_in_ruleImport585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_entryRuleDataType612 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataType619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__0_in_ruleDataType645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint674 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDataTypeConstraint681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataTypeConstraint__Alternatives_in_ruleDataTypeConstraint707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint734 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDateConstraint741 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DateConstraint__Alternatives_in_ruleDateConstraint767 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint794 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleBlobTypeConstraint801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__BlobTypeConstraint__Alternatives_in_ruleBlobTypeConstraint827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse854 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertFalse861 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__0_in_ruleDtCAssertFalse887 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue914 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCAssertTrue921 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__0_in_ruleDtCAssertTrue947 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax974 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMax981 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__0_in_ruleDtCDecimalMax1007 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin1034 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDecimalMin1041 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__0_in_ruleDtCDecimalMin1067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits1094 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCDigits1101 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__0_in_ruleDtCDigits1127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture1154 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCFuture1161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__0_in_ruleDtCFuture1187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_entryRuleDtCPast1214 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCPast1221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__0_in_ruleDtCPast1247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax1274 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMax1281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__0_in_ruleDtCNumericMax1307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin1334 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNumericMin1341 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__0_in_ruleDtCNumericMin1367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull1394 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNotNull1401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__0_in_ruleDtCNotNull1427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_entryRuleDtCNull1454 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCNull1461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__0_in_ruleDtCNull1487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx1514 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCRegEx1521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__0_in_ruleDtCRegEx1547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_entryRuleDtCSize1574 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleDtCSize1581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__0_in_ruleDtCSize1607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_entryRuleScalarType1634 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleScalarType1641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ScalarType__Alternatives_in_ruleScalarType1667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum1696 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnum1703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__0_in_ruleEnum1729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnumLiteral_in_entryRuleEnumLiteral1756 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleEnumLiteral1763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__0_in_ruleEnumLiteral1789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAnnotationDef_in_entryRuleAnnotationDef1816 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAnnotationDef1823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__Group__0_in_ruleAnnotationDef1849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleResultFilter_in_entryRuleResultFilter1878 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleResultFilter1885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_ruleResultFilter1911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleAttributeMatchingConstraint_in_entryRuleAttributeMatchingConstraint1937 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleAttributeMatchingConstraint1944 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__0_in_ruleAttributeMatchingConstraint1970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleKeyAndValue_in_entryRuleKeyAndValue1997 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleKeyAndValue2004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__0_in_ruleKeyAndValue2030 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLQualifiedNameWithWildCard_in_entryRuleLQualifiedNameWithWildCard2057 = new BitSet(new long[]{0x0000000000000000L});
+    }
+
+    protected static class FollowSets001 {
+        public static final BitSet FOLLOW_EOF_in_entryRuleLQualifiedNameWithWildCard2064 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__0_in_ruleLQualifiedNameWithWildCard2090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLFQN_in_entryRuleLFQN2117 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLFQN2124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LFQN__Group__0_in_ruleLFQN2150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleTYPE_CROSS_REFERENCE_in_entryRuleTYPE_CROSS_REFERENCE2177 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleTYPE_CROSS_REFERENCE2184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleTYPE_CROSS_REFERENCE2210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidIDWithKeywords_in_entryRuleValidIDWithKeywords2236 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidIDWithKeywords2243 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Alternatives_in_ruleValidIDWithKeywords2269 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_entryRuleLInt2300 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLInt2307 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__0_in_ruleLInt2333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLDecimal_in_entryRuleLDecimal2360 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleLDecimal2367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__0_in_ruleLDecimal2393 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation2420 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotation2427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0_in_ruleXAnnotation2453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair2480 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair2487 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0_in_ruleXAnnotationElementValuePair2513 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList2540 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList2547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Alternatives_in_ruleXAnnotationElementValueOrCommaList2573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue2600 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationElementValue2607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Alternatives_in_ruleXAnnotationElementValue2633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression2660 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAnnotationOrExpression2667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationOrExpression__Alternatives_in_ruleXAnnotationOrExpression2693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_entryRuleXExpression2720 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpression2727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_ruleXExpression2753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAssignment_in_entryRuleXAssignment2779 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAssignment2786 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Alternatives_in_ruleXAssignment2812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign2839 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpSingleAssign2846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_ruleOpSingleAssign2873 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign2901 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMultiAssign2908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Alternatives_in_ruleOpMultiAssign2934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression2961 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOrExpression2968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0_in_ruleXOrExpression2994 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOr_in_entryRuleOpOr3021 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOr3028 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_14_in_ruleOpOr3055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression3083 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAndExpression3090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0_in_ruleXAndExpression3116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAnd_in_entryRuleOpAnd3143 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAnd3150 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_15_in_ruleOpAnd3177 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression3205 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXEqualityExpression3212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0_in_ruleXEqualityExpression3238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpEquality_in_entryRuleOpEquality3265 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpEquality3272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpEquality__Alternatives_in_ruleOpEquality3298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression3325 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXRelationalExpression3332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0_in_ruleXRelationalExpression3358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpCompare_in_entryRuleOpCompare3385 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpCompare3392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Alternatives_in_ruleOpCompare3418 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression3445 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXOtherOperatorExpression3452 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0_in_ruleXOtherOperatorExpression3478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpOther_in_entryRuleOpOther3505 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpOther3512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_in_ruleOpOther3538 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression3565 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXAdditiveExpression3572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0_in_ruleXAdditiveExpression3598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpAdd_in_entryRuleOpAdd3625 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpAdd3632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpAdd__Alternatives_in_ruleOpAdd3658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression3685 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMultiplicativeExpression3692 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0_in_ruleXMultiplicativeExpression3718 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpMulti_in_entryRuleOpMulti3745 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpMulti3752 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMulti__Alternatives_in_ruleOpMulti3778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation3805 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXUnaryOperation3812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Alternatives_in_ruleXUnaryOperation3838 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpUnary_in_entryRuleOpUnary3865 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpUnary3872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpUnary__Alternatives_in_ruleOpUnary3898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression3925 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCastedExpression3932 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0_in_ruleXCastedExpression3958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_entryRuleXPostfixOperation3985 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPostfixOperation3992 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0_in_ruleXPostfixOperation4018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpPostfix_in_entryRuleOpPostfix4045 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleOpPostfix4052 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets002 {
+        public static final BitSet FOLLOW_rule__OpPostfix__Alternatives_in_ruleOpPostfix4078 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_entryRuleXMemberFeatureCall4105 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXMemberFeatureCall4112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0_in_ruleXMemberFeatureCall4138 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_entryRuleXPrimaryExpression4165 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXPrimaryExpression4172 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPrimaryExpression__Alternatives_in_ruleXPrimaryExpression4198 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_entryRuleXLiteral4225 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXLiteral4232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XLiteral__Alternatives_in_ruleXLiteral4258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_entryRuleXCollectionLiteral4285 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCollectionLiteral4292 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCollectionLiteral__Alternatives_in_ruleXCollectionLiteral4318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_entryRuleXSetLiteral4345 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSetLiteral4352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0_in_ruleXSetLiteral4378 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_entryRuleXListLiteral4405 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXListLiteral4412 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0_in_ruleXListLiteral4438 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_entryRuleXClosure4465 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXClosure4472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XClosure__Group__0_in_ruleXClosure4498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionInClosure_in_entryRuleXExpressionInClosure4525 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionInClosure4532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionInClosure__Group__0_in_ruleXExpressionInClosure4558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXShortClosure_in_entryRuleXShortClosure4585 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXShortClosure4592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XShortClosure__Group__0_in_ruleXShortClosure4618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_entryRuleXParenthesizedExpression4645 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXParenthesizedExpression4652 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XParenthesizedExpression__Group__0_in_ruleXParenthesizedExpression4678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_entryRuleXIfExpression4705 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXIfExpression4712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XIfExpression__Group__0_in_ruleXIfExpression4738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_entryRuleXSwitchExpression4765 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSwitchExpression4772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group__0_in_ruleXSwitchExpression4798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCasePart_in_entryRuleXCasePart4825 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCasePart4832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group__0_in_ruleXCasePart4858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_entryRuleXForLoopExpression4885 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXForLoopExpression4892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XForLoopExpression__Group__0_in_ruleXForLoopExpression4918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_entryRuleXBasicForLoopExpression4945 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBasicForLoopExpression4952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBasicForLoopExpression__Group__0_in_ruleXBasicForLoopExpression4978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_entryRuleXWhileExpression5005 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXWhileExpression5012 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XWhileExpression__Group__0_in_ruleXWhileExpression5038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_entryRuleXDoWhileExpression5065 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXDoWhileExpression5072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XDoWhileExpression__Group__0_in_ruleXDoWhileExpression5098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_entryRuleXBlockExpression5125 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBlockExpression5132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBlockExpression__Group__0_in_ruleXBlockExpression5158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpressionOrVarDeclaration_in_entryRuleXExpressionOrVarDeclaration5185 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXExpressionOrVarDeclaration5192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XExpressionOrVarDeclaration__Alternatives_in_ruleXExpressionOrVarDeclaration5218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_entryRuleXVariableDeclaration5245 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXVariableDeclaration5252 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group__0_in_ruleXVariableDeclaration5278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmFormalParameter_in_entryRuleJvmFormalParameter5305 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmFormalParameter5312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmFormalParameter__Group__0_in_ruleJvmFormalParameter5338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFullJvmFormalParameter_in_entryRuleFullJvmFormalParameter5365 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFullJvmFormalParameter5372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FullJvmFormalParameter__Group__0_in_ruleFullJvmFormalParameter5398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_entryRuleXFeatureCall5425 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFeatureCall5432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group__0_in_ruleXFeatureCall5458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_entryRuleFeatureCallID5485 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleFeatureCallID5492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__FeatureCallID__Alternatives_in_ruleFeatureCallID5518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleIdOrSuper_in_entryRuleIdOrSuper5545 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleIdOrSuper5552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__IdOrSuper__Alternatives_in_ruleIdOrSuper5578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_entryRuleXConstructorCall5605 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXConstructorCall5612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group__0_in_ruleXConstructorCall5638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_entryRuleXBooleanLiteral5665 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXBooleanLiteral5672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__Group__0_in_ruleXBooleanLiteral5698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_entryRuleXNullLiteral5725 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNullLiteral5732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNullLiteral__Group__0_in_ruleXNullLiteral5758 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_entryRuleXNumberLiteral5785 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXNumberLiteral5792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XNumberLiteral__Group__0_in_ruleXNumberLiteral5818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_entryRuleXStringLiteral5845 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXStringLiteral5852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XStringLiteral__Group__0_in_ruleXStringLiteral5878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_entryRuleXTypeLiteral5905 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTypeLiteral5912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTypeLiteral__Group__0_in_ruleXTypeLiteral5938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_entryRuleXThrowExpression5965 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXThrowExpression5972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XThrowExpression__Group__0_in_ruleXThrowExpression5998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_entryRuleXReturnExpression6025 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXReturnExpression6032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XReturnExpression__Group__0_in_ruleXReturnExpression6058 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets003 {
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_entryRuleXTryCatchFinallyExpression6085 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXTryCatchFinallyExpression6092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group__0_in_ruleXTryCatchFinallyExpression6118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_entryRuleXSynchronizedExpression6145 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXSynchronizedExpression6152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSynchronizedExpression__Group__0_in_ruleXSynchronizedExpression6178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCatchClause_in_entryRuleXCatchClause6205 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXCatchClause6212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCatchClause__Group__0_in_ruleXCatchClause6238 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName6265 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName6272 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedName__Group__0_in_ruleQualifiedName6298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber6330 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleNumber6337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Alternatives_in_ruleNumber6367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_entryRuleJvmTypeReference6396 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmTypeReference6403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Alternatives_in_ruleJvmTypeReference6429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleArrayBrackets_in_entryRuleArrayBrackets6456 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleArrayBrackets6463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ArrayBrackets__Group__0_in_ruleArrayBrackets6489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_entryRuleXFunctionTypeRef6516 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXFunctionTypeRef6523 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFunctionTypeRef__Group__0_in_ruleXFunctionTypeRef6549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmParameterizedTypeReference_in_entryRuleJvmParameterizedTypeReference6576 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmParameterizedTypeReference6583 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmParameterizedTypeReference__Group__0_in_ruleJvmParameterizedTypeReference6609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmArgumentTypeReference_in_entryRuleJvmArgumentTypeReference6636 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmArgumentTypeReference6643 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmArgumentTypeReference__Alternatives_in_ruleJvmArgumentTypeReference6669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_entryRuleJvmWildcardTypeReference6696 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmWildcardTypeReference6703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group__0_in_ruleJvmWildcardTypeReference6729 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBound_in_entryRuleJvmUpperBound6756 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBound6763 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBound__Group__0_in_ruleJvmUpperBound6789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmUpperBoundAnded_in_entryRuleJvmUpperBoundAnded6816 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmUpperBoundAnded6823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmUpperBoundAnded__Group__0_in_ruleJvmUpperBoundAnded6849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBound_in_entryRuleJvmLowerBound6876 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBound6883 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBound__Group__0_in_ruleJvmLowerBound6909 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmLowerBoundAnded_in_entryRuleJvmLowerBoundAnded6936 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleJvmLowerBoundAnded6943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmLowerBoundAnded__Group__0_in_ruleJvmLowerBoundAnded6969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameWithWildcard_in_entryRuleQualifiedNameWithWildcard6998 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameWithWildcard7005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameWithWildcard__Group__0_in_ruleQualifiedNameWithWildcard7031 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_entryRuleValidID7058 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleValidID7065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_ruleValidID7091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXImportDeclaration_in_entryRuleXImportDeclaration7119 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleXImportDeclaration7126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group__0_in_ruleXImportDeclaration7152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedNameInStaticImport_in_entryRuleQualifiedNameInStaticImport7179 = new BitSet(new long[]{0x0000000000000000L});
+        public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedNameInStaticImport7186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport7214 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__QualifiedNameInStaticImport__Group__0_in_ruleQualifiedNameInStaticImport7226 = new BitSet(new long[]{0x0000000000000012L});
+        public static final BitSet FOLLOW_rule__Cardinality__Alternatives_in_ruleCardinality7266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ConstraintSeverity__Alternatives_in_ruleConstraintSeverity7302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DateType__Alternatives_in_ruleDateType7338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LVisibility__Alternatives_in_ruleLVisibility7374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LComparatorType__Alternatives_in_ruleLComparatorType7410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LowerBound__Alternatives_in_ruleLowerBound7446 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__UpperBound__Alternatives_in_ruleUpperBound7482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidatorDef__Group_0__0_in_rule__ValidatorDef__Alternatives7517 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidatorDef__ValidatorIdAssignment_1_in_rule__ValidatorDef__Alternatives7535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleScalarType_in_rule__Type__Alternatives7568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleClass_in_rule__Type__Alternatives7585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__0_in_rule__DataType__Alternatives_27617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__0_in_rule__DataType__Alternatives_27635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__0_in_rule__DataType__Alternatives_27653 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertFalse_in_rule__DataTypeConstraint__Alternatives7687 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCAssertTrue_in_rule__DataTypeConstraint__Alternatives7704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMax_in_rule__DataTypeConstraint__Alternatives7721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDecimalMin_in_rule__DataTypeConstraint__Alternatives7738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCDigits_in_rule__DataTypeConstraint__Alternatives7755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMax_in_rule__DataTypeConstraint__Alternatives7772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNumericMin_in_rule__DataTypeConstraint__Alternatives7789 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__DataTypeConstraint__Alternatives7806 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__DataTypeConstraint__Alternatives7823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCRegEx_in_rule__DataTypeConstraint__Alternatives7840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCSize_in_rule__DataTypeConstraint__Alternatives7857 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCFuture_in_rule__DateConstraint__Alternatives7889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCPast_in_rule__DateConstraint__Alternatives7906 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__DateConstraint__Alternatives7923 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__DateConstraint__Alternatives7940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNotNull_in_rule__BlobTypeConstraint__Alternatives7972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDtCNull_in_rule__BlobTypeConstraint__Alternatives7989 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleDataType_in_rule__ScalarType__Alternatives8021 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleEnum_in_rule__ScalarType__Alternatives8038 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__MatchingValueAssignment_2_0_in_rule__AttributeMatchingConstraint__Alternatives_28070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__MatchingLiteralAssignment_2_1_in_rule__AttributeMatchingConstraint__Alternatives_28088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_16_in_rule__ValidIDWithKeywords__Alternatives8122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_17_in_rule__ValidIDWithKeywords__Alternatives8142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_18_in_rule__ValidIDWithKeywords__Alternatives8162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_19_in_rule__ValidIDWithKeywords__Alternatives8182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_20_in_rule__ValidIDWithKeywords__Alternatives8202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__0_in_rule__ValidIDWithKeywords__Alternatives8221 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_21_in_rule__ValidIDWithKeywords__Alternatives8240 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets004 {
+        public static final BitSet FOLLOW_22_in_rule__ValidIDWithKeywords__Alternatives8260 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_23_in_rule__ValidIDWithKeywords__Alternatives8280 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_24_in_rule__ValidIDWithKeywords__Alternatives8300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_25_in_rule__ValidIDWithKeywords__Alternatives8320 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__ValidIDWithKeywords__Alternatives8340 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_27_in_rule__ValidIDWithKeywords__Alternatives8360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_28_in_rule__ValidIDWithKeywords__Alternatives8380 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_29_in_rule__ValidIDWithKeywords__Alternatives8400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_30_in_rule__ValidIDWithKeywords__Alternatives8420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__ValidIDWithKeywords__Alternatives8439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__LInt__Alternatives_08472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__LInt__Alternatives_08492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__0_in_rule__XAnnotation__Alternatives_3_18526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__ValueAssignment_3_1_1_in_rule__XAnnotation__Alternatives_3_18544 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives8577 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0_in_rule__XAnnotationElementValueOrCommaList__Alternatives8595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0_in_rule__XAnnotationElementValue__Alternatives8628 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValue__Alternatives8646 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotation_in_rule__XAnnotationOrExpression__Alternatives8678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XAnnotationOrExpression__Alternatives8695 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0_in_rule__XAssignment__Alternatives8727 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0_in_rule__XAssignment__Alternatives8745 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_33_in_rule__OpMultiAssign__Alternatives8779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_34_in_rule__OpMultiAssign__Alternatives8799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_35_in_rule__OpMultiAssign__Alternatives8819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_36_in_rule__OpMultiAssign__Alternatives8839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_37_in_rule__OpMultiAssign__Alternatives8859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0_in_rule__OpMultiAssign__Alternatives8878 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0_in_rule__OpMultiAssign__Alternatives8896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__OpEquality__Alternatives8930 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_39_in_rule__OpEquality__Alternatives8950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_40_in_rule__OpEquality__Alternatives8970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_41_in_rule__OpEquality__Alternatives8990 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0_in_rule__XRelationalExpression__Alternatives_19024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0_in_rule__XRelationalExpression__Alternatives_19042 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpCompare__Alternatives9076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0_in_rule__OpCompare__Alternatives9095 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpCompare__Alternatives9114 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpCompare__Alternatives9134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_45_in_rule__OpOther__Alternatives9169 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_46_in_rule__OpOther__Alternatives9189 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0_in_rule__OpOther__Alternatives9208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_47_in_rule__OpOther__Alternatives9227 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__OpOther__Alternatives9247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0_in_rule__OpOther__Alternatives9266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0_in_rule__OpOther__Alternatives9284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__OpOther__Alternatives9303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_50_in_rule__OpOther__Alternatives9323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0__0_in_rule__OpOther__Alternatives_5_19357 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Alternatives_5_19376 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0__0_in_rule__OpOther__Alternatives_6_19410 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Alternatives_6_19429 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_48_in_rule__OpOther__Alternatives_6_19449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpAdd__Alternatives9484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpAdd__Alternatives9504 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__OpMulti__Alternatives9539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_52_in_rule__OpMulti__Alternatives9559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_53_in_rule__OpMulti__Alternatives9579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_54_in_rule__OpMulti__Alternatives9599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0_in_rule__XUnaryOperation__Alternatives9633 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCastedExpression_in_rule__XUnaryOperation__Alternatives9651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_55_in_rule__OpUnary__Alternatives9684 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_32_in_rule__OpUnary__Alternatives9704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__OpUnary__Alternatives9724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_56_in_rule__OpPostfix__Alternatives9759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_57_in_rule__OpPostfix__Alternatives9779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0_in_rule__XMemberFeatureCall__Alternatives_19813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0_in_rule__XMemberFeatureCall__Alternatives_19831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__XMemberFeatureCall__Alternatives_1_0_0_0_19865 = 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_19884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__XMemberFeatureCall__Alternatives_1_1_0_0_19918 = 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_19937 = 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_19955 = 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_19988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__0_in_rule__XMemberFeatureCall__Alternatives_1_1_3_110006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXConstructorCall_in_rule__XPrimaryExpression__Alternatives10039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBlockExpression_in_rule__XPrimaryExpression__Alternatives10056 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSwitchExpression_in_rule__XPrimaryExpression__Alternatives10073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSynchronizedExpression_in_rule__XPrimaryExpression__Alternatives10091 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFeatureCall_in_rule__XPrimaryExpression__Alternatives10109 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXLiteral_in_rule__XPrimaryExpression__Alternatives10126 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXIfExpression_in_rule__XPrimaryExpression__Alternatives10143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXForLoopExpression_in_rule__XPrimaryExpression__Alternatives10161 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBasicForLoopExpression_in_rule__XPrimaryExpression__Alternatives10179 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXWhileExpression_in_rule__XPrimaryExpression__Alternatives10196 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXDoWhileExpression_in_rule__XPrimaryExpression__Alternatives10213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXThrowExpression_in_rule__XPrimaryExpression__Alternatives10230 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXReturnExpression_in_rule__XPrimaryExpression__Alternatives10247 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTryCatchFinallyExpression_in_rule__XPrimaryExpression__Alternatives10264 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXParenthesizedExpression_in_rule__XPrimaryExpression__Alternatives10281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXCollectionLiteral_in_rule__XLiteral__Alternatives10313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXClosure_in_rule__XLiteral__Alternatives10331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXBooleanLiteral_in_rule__XLiteral__Alternatives10349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNumberLiteral_in_rule__XLiteral__Alternatives10366 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXNullLiteral_in_rule__XLiteral__Alternatives10383 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXStringLiteral_in_rule__XLiteral__Alternatives10400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXTypeLiteral_in_rule__XLiteral__Alternatives10417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXSetLiteral_in_rule__XCollectionLiteral__Alternatives10449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXListLiteral_in_rule__XCollectionLiteral__Alternatives10466 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_0__0_in_rule__XSwitchExpression__Alternatives_210498 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets005 {
+        public static final BitSet FOLLOW_rule__XSwitchExpression__Group_2_1__0_in_rule__XSwitchExpression__Alternatives_210516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__Group_3_0__0_in_rule__XCasePart__Alternatives_310549 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCasePart__FallThroughAssignment_3_1_in_rule__XCasePart__Alternatives_310567 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXVariableDeclaration_in_rule__XExpressionOrVarDeclaration__Alternatives10600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXExpression_in_rule__XExpressionOrVarDeclaration__Alternatives10617 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__WriteableAssignment_1_0_in_rule__XVariableDeclaration__Alternatives_110649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_59_in_rule__XVariableDeclaration__Alternatives_110668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__Group_2_0__0_in_rule__XVariableDeclaration__Alternatives_210702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XVariableDeclaration__NameAssignment_2_1_in_rule__XVariableDeclaration__Alternatives_210720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0_in_rule__XFeatureCall__Alternatives_3_110753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XFeatureCall__Group_3_1_1__0_in_rule__XFeatureCall__Alternatives_3_110771 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleValidID_in_rule__FeatureCallID__Alternatives10804 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_60_in_rule__FeatureCallID__Alternatives10822 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_61_in_rule__FeatureCallID__Alternatives10842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__FeatureCallID__Alternatives10862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_63_in_rule__FeatureCallID__Alternatives10882 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleFeatureCallID_in_rule__IdOrSuper__Alternatives10916 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_64_in_rule__IdOrSuper__Alternatives10934 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__ArgumentsAssignment_4_1_0_in_rule__XConstructorCall__Alternatives_4_110968 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XConstructorCall__Group_4_1_1__0_in_rule__XConstructorCall__Alternatives_4_110986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_65_in_rule__XBooleanLiteral__Alternatives_111020 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XBooleanLiteral__IsTrueAssignment_1_1_in_rule__XBooleanLiteral__Alternatives_111039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_0__0_in_rule__XTryCatchFinallyExpression__Alternatives_311072 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XTryCatchFinallyExpression__Group_3_1__0_in_rule__XTryCatchFinallyExpression__Alternatives_311090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_HEX_in_rule__Number__Alternatives11123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Number__Group_1__0_in_rule__Number__Alternatives11140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_011173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_011190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__Number__Alternatives_1_1_111222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_DECIMAL_in_rule__Number__Alternatives_1_1_111239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmTypeReference__Group_0__0_in_rule__JvmTypeReference__Alternatives11271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXFunctionTypeRef_in_rule__JvmTypeReference__Alternatives11289 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmTypeReference_in_rule__JvmArgumentTypeReference__Alternatives11321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleJvmWildcardTypeReference_in_rule__JvmArgumentTypeReference__Alternatives11338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_0__0_in_rule__JvmWildcardTypeReference__Alternatives_211370 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__JvmWildcardTypeReference__Group_2_1__0_in_rule__JvmWildcardTypeReference__Alternatives_211388 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__Group_1_0__0_in_rule__XImportDeclaration__Alternatives_111421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedTypeAssignment_1_1_in_rule__XImportDeclaration__Alternatives_111439 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__ImportedNamespaceAssignment_1_2_in_rule__XImportDeclaration__Alternatives_111457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__WildcardAssignment_1_0_3_0_in_rule__XImportDeclaration__Alternatives_1_0_311490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XImportDeclaration__MemberNameAssignment_1_0_3_1_in_rule__XImportDeclaration__Alternatives_1_0_311508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_66_in_rule__Cardinality__Alternatives11542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_67_in_rule__Cardinality__Alternatives11563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_68_in_rule__Cardinality__Alternatives11584 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_69_in_rule__Cardinality__Alternatives11605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_70_in_rule__ConstraintSeverity__Alternatives11641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_71_in_rule__ConstraintSeverity__Alternatives11662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_72_in_rule__ConstraintSeverity__Alternatives11683 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_26_in_rule__DateType__Alternatives11719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_73_in_rule__DateType__Alternatives11740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_74_in_rule__DateType__Alternatives11761 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_75_in_rule__LVisibility__Alternatives11797 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_76_in_rule__LVisibility__Alternatives11818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_77_in_rule__LVisibility__Alternatives11839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_78_in_rule__LVisibility__Alternatives11860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_38_in_rule__LComparatorType__Alternatives11896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__LComparatorType__Alternatives11917 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__LComparatorType__Alternatives11938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__LComparatorType__Alternatives11959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_79_in_rule__LComparatorType__Alternatives11980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_49_in_rule__LComparatorType__Alternatives12001 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__LowerBound__Alternatives12037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_80_in_rule__LowerBound__Alternatives12058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_81_in_rule__LowerBound__Alternatives12079 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_31_in_rule__LowerBound__Alternatives12100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__LowerBound__Alternatives12121 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__UpperBound__Alternatives12157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_82_in_rule__UpperBound__Alternatives12178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__0__Impl_in_rule__Class__Group__012211 = new BitSet(new long[]{0x0000000000000000L,0x0200000000080000L});
+        public static final BitSet FOLLOW_rule__Class__Group__1_in_rule__Class__Group__012214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__1__Impl_in_rule__Class__Group__112272 = new BitSet(new long[]{0x0000000000000000L,0x0200000000080000L});
+        public static final BitSet FOLLOW_rule__Class__Group__2_in_rule__Class__Group__112275 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__AnnotationsAssignment_1_in_rule__Class__Group__1__Impl12302 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__Class__Group__2__Impl_in_rule__Class__Group__212333 = new BitSet(new long[]{0x0000000000000000L,0x0200000000080000L});
+        public static final BitSet FOLLOW_rule__Class__Group__3_in_rule__Class__Group__212336 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__3__Impl_in_rule__Class__Group__312394 = new BitSet(new long[]{0x000000007FFF0010L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__Class__Group__4_in_rule__Class__Group__312397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_83_in_rule__Class__Group__3__Impl12425 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__4__Impl_in_rule__Class__Group__412456 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+        public static final BitSet FOLLOW_rule__Class__Group__5_in_rule__Class__Group__412459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__NameAssignment_4_in_rule__Class__Group__4__Impl12486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__5__Impl_in_rule__Class__Group__512516 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Class__Group__6_in_rule__Class__Group__512519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_84_in_rule__Class__Group__5__Impl12547 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__6__Impl_in_rule__Class__Group__612578 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__Class__Group__7_in_rule__Class__Group__612581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__DtoAssignment_6_in_rule__Class__Group__6__Impl12608 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__7__Impl_in_rule__Class__Group__712638 = new BitSet(new long[]{0x0000000000000000L,0x000000000A800000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group__8_in_rule__Class__Group__712641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__Class__Group__7__Impl12669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__8__Impl_in_rule__Class__Group__812700 = new BitSet(new long[]{0x0000000000000000L,0x000000000A800000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group__9_in_rule__Class__Group__812703 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__0_in_rule__Class__Group__8__Impl12730 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__9__Impl_in_rule__Class__Group__912761 = new BitSet(new long[]{0x0000000000000000L,0x000000000A800000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group__10_in_rule__Class__Group__912764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__0_in_rule__Class__Group__9__Impl12791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__10__Impl_in_rule__Class__Group__1012822 = new BitSet(new long[]{0x0000000000000000L,0x0200000010400000L});
+        public static final BitSet FOLLOW_rule__Class__Group__11_in_rule__Class__Group__1012825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__InjectedServicesAssignment_10_in_rule__Class__Group__10__Impl12852 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group__11__Impl_in_rule__Class__Group__1112882 = new BitSet(new long[]{0x0000000000000000L,0x0200000010400000L});
+    }
+
+    protected static class FollowSets006 {
+        public static final BitSet FOLLOW_rule__Class__Group__12_in_rule__Class__Group__1112885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__OperationsAssignment_11_in_rule__Class__Group__11__Impl12912 = new BitSet(new long[]{0x0000000000000002L,0x0200000010000000L});
+        public static final BitSet FOLLOW_rule__Class__Group__12__Impl_in_rule__Class__Group__1212943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__Class__Group__12__Impl12971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__0__Impl_in_rule__Class__Group_8__013028 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__1_in_rule__Class__Group_8__013031 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__MutablePersistenceIdAssignment_8_0_in_rule__Class__Group_8__0__Impl13058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__1__Impl_in_rule__Class__Group_8__113089 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__2_in_rule__Class__Group_8__113092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_87_in_rule__Class__Group_8__1__Impl13120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__2__Impl_in_rule__Class__Group_8__213151 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__3_in_rule__Class__Group_8__213154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__PersistenceIdAssignment_8_2_in_rule__Class__Group_8__2__Impl13181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_8__3__Impl_in_rule__Class__Group_8__313211 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__Class__Group_8__3__Impl13240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__0__Impl_in_rule__Class__Group_9__013281 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__1_in_rule__Class__Group_9__013284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_89_in_rule__Class__Group_9__0__Impl13312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__1__Impl_in_rule__Class__Group_9__113343 = new BitSet(new long[]{0x0001000000000110L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__2_in_rule__Class__Group_9__113346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__Class__Group_9__1__Impl13374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__2__Impl_in_rule__Class__Group_9__213405 = new BitSet(new long[]{0x0000000000000000L,0x0000000005400000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__3_in_rule__Class__Group_9__213408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__ValidatorsAssignment_9_2_in_rule__Class__Group_9__2__Impl13435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__3__Impl_in_rule__Class__Group_9__313465 = new BitSet(new long[]{0x0000000000000000L,0x0000000005400000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__4_in_rule__Class__Group_9__313468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9_3__0_in_rule__Class__Group_9__3__Impl13495 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__4__Impl_in_rule__Class__Group_9__413526 = new BitSet(new long[]{0x0000000000000000L,0x0000000005400000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__5_in_rule__Class__Group_9__413529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__Class__Group_9__4__Impl13558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9__5__Impl_in_rule__Class__Group_9__513591 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__Class__Group_9__5__Impl13619 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9_3__0__Impl_in_rule__Class__Group_9_3__013662 = new BitSet(new long[]{0x0001000000000110L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__Class__Group_9_3__1_in_rule__Class__Group_9_3__013665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__Class__Group_9_3__0__Impl13693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__Group_9_3__1__Impl_in_rule__Class__Group_9_3__113724 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Class__ValidatorsAssignment_9_3_1_in_rule__Class__Group_9_3__1__Impl13751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidatorDef__Group_0__0__Impl_in_rule__ValidatorDef__Group_0__013785 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidatorDef__ValidatorTypeAssignment_0_0_in_rule__ValidatorDef__Group_0__0__Impl13812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedServices__Group__0__Impl_in_rule__InjectedServices__Group__013844 = new BitSet(new long[]{0x0000000000000000L,0x000000000A800000L,0x0000000000020000L});
+        public static final BitSet FOLLOW_rule__InjectedServices__Group__1_in_rule__InjectedServices__Group__013847 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedServices__Group__1__Impl_in_rule__InjectedServices__Group__113905 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedServices__ServicesAssignment_1_in_rule__InjectedServices__Group__1__Impl13932 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__0__Impl_in_rule__InjectedService__Group__013967 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__1_in_rule__InjectedService__Group__013970 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__1__Impl_in_rule__InjectedService__Group__114028 = new BitSet(new long[]{0x0001000000000010L,0x000000002000003CL});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__2_in_rule__InjectedService__Group__114031 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_91_in_rule__InjectedService__Group__1__Impl14059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__2__Impl_in_rule__InjectedService__Group__214090 = new BitSet(new long[]{0x0001000000000010L,0x000000002000003CL});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__3_in_rule__InjectedService__Group__214093 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__CardinalityAssignment_2_in_rule__InjectedService__Group__2__Impl14120 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__3__Impl_in_rule__InjectedService__Group__314151 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__4_in_rule__InjectedService__Group__314154 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__ServiceAssignment_3_in_rule__InjectedService__Group__3__Impl14181 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__4__Impl_in_rule__InjectedService__Group__414211 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__5_in_rule__InjectedService__Group__414214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__AttributeNameAssignment_4_in_rule__InjectedService__Group__4__Impl14241 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__InjectedService__Group__5__Impl_in_rule__InjectedService__Group__514271 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__InjectedService__Group__5__Impl14300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group__0__Impl_in_rule__Operation__Group__014349 = new BitSet(new long[]{0x0000000000000000L,0x0200000010000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group__1_in_rule__Operation__Group__014352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group__1__Impl_in_rule__Operation__Group__114410 = new BitSet(new long[]{0x0000000000000000L,0x0200000010000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group__2_in_rule__Operation__Group__114413 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__AnnotationsAssignment_1_in_rule__Operation__Group__1__Impl14440 = new BitSet(new long[]{0x0000000000000002L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group__2__Impl_in_rule__Operation__Group__214471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__0_in_rule__Operation__Group__2__Impl14498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__0__Impl_in_rule__Operation__Group_2__014534 = new BitSet(new long[]{0x0001000000000010L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__1_in_rule__Operation__Group_2__014537 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_92_in_rule__Operation__Group_2__0__Impl14565 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__1__Impl_in_rule__Operation__Group_2__114596 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__2_in_rule__Operation__Group_2__114599 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__TypeAssignment_2_1_in_rule__Operation__Group_2__1__Impl14626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__2__Impl_in_rule__Operation__Group_2__214656 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__3_in_rule__Operation__Group_2__214659 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__NameAssignment_2_2_in_rule__Operation__Group_2__2__Impl14686 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__3__Impl_in_rule__Operation__Group_2__314716 = new BitSet(new long[]{0x0001000000000010L,0x0000000060000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__4_in_rule__Operation__Group_2__314719 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__Operation__Group_2__3__Impl14747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__4__Impl_in_rule__Operation__Group_2__414778 = new BitSet(new long[]{0x0001000000000010L,0x0000000060000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__5_in_rule__Operation__Group_2__414781 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4__0_in_rule__Operation__Group_2__4__Impl14808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__5__Impl_in_rule__Operation__Group_2__514839 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__6_in_rule__Operation__Group_2__514842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__Operation__Group_2__5__Impl14870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2__6__Impl_in_rule__Operation__Group_2__614901 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__BodyAssignment_2_6_in_rule__Operation__Group_2__6__Impl14928 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4__0__Impl_in_rule__Operation__Group_2_4__014972 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4__1_in_rule__Operation__Group_2_4__014975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__ParamsAssignment_2_4_0_in_rule__Operation__Group_2_4__0__Impl15002 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4__1__Impl_in_rule__Operation__Group_2_4__115032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4_1__0_in_rule__Operation__Group_2_4__1__Impl15059 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4_1__0__Impl_in_rule__Operation__Group_2_4_1__015094 = new BitSet(new long[]{0x0001000000000010L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4_1__1_in_rule__Operation__Group_2_4_1__015097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__Operation__Group_2_4_1__0__Impl15125 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__Group_2_4_1__1__Impl_in_rule__Operation__Group_2_4_1__115156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Operation__ParamsAssignment_2_4_1_1_in_rule__Operation__Group_2_4_1__1__Impl15183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__0__Impl_in_rule__TypedPackage__Group__015217 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__1_in_rule__TypedPackage__Group__015220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__1__Impl_in_rule__TypedPackage__Group__115278 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__2_in_rule__TypedPackage__Group__115281 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets007 {
+        public static final BitSet FOLLOW_75_in_rule__TypedPackage__Group__1__Impl15309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__2__Impl_in_rule__TypedPackage__Group__215340 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__3_in_rule__TypedPackage__Group__215343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__NameAssignment_2_in_rule__TypedPackage__Group__2__Impl15370 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group__3__Impl_in_rule__TypedPackage__Group__315400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__0_in_rule__TypedPackage__Group__3__Impl15427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__0__Impl_in_rule__TypedPackage__Group_3__015466 = new BitSet(new long[]{0x4000000000000000L,0x0210000080480000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__1_in_rule__TypedPackage__Group_3__015469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__TypedPackage__Group_3__0__Impl15497 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__1__Impl_in_rule__TypedPackage__Group_3__115528 = new BitSet(new long[]{0x4000000000000000L,0x0210000080480000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__2_in_rule__TypedPackage__Group_3__115531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__ImportsAssignment_3_1_in_rule__TypedPackage__Group_3__1__Impl15558 = new BitSet(new long[]{0x4000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__2__Impl_in_rule__TypedPackage__Group_3__215589 = new BitSet(new long[]{0x4000000000000000L,0x0210000080480000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__3_in_rule__TypedPackage__Group_3__215592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__TypedPackage__TypesAssignment_3_2_in_rule__TypedPackage__Group_3__2__Impl15619 = new BitSet(new long[]{0x0000000000000002L,0x0210000080080000L});
+        public static final BitSet FOLLOW_rule__TypedPackage__Group_3__3__Impl_in_rule__TypedPackage__Group_3__315650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__TypedPackage__Group_3__3__Impl15678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__0__Impl_in_rule__Import__Group__015717 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Import__Group__1_in_rule__Import__Group__015720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_62_in_rule__Import__Group__0__Impl15748 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__1__Impl_in_rule__Import__Group__115779 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__Import__Group__2_in_rule__Import__Group__115782 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__ImportedNamespaceAssignment_1_in_rule__Import__Group__1__Impl15809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Import__Group__2__Impl_in_rule__Import__Group__215839 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__Import__Group__2__Impl15868 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__0__Impl_in_rule__DataType__Group__015907 = new BitSet(new long[]{0x000000007FFF0010L,0x0080000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__1_in_rule__DataType__Group__015910 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_95_in_rule__DataType__Group__0__Impl15938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__1__Impl_in_rule__DataType__Group__115969 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L,0x0000000000180000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__2_in_rule__DataType__Group__115972 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__NameAssignment_1_in_rule__DataType__Group__1__Impl15999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__2__Impl_in_rule__DataType__Group__216029 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group__3_in_rule__DataType__Group__216032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Alternatives_2_in_rule__DataType__Group__2__Impl16059 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group__3__Impl_in_rule__DataType__Group__316089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__DataType__Group__3__Impl16118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__0__Impl_in_rule__DataType__Group_2_0__016159 = new BitSet(new long[]{0x0001000000000010L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__1_in_rule__DataType__Group_2_0__016162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_96_in_rule__DataType__Group_2_0__0__Impl16190 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__1__Impl_in_rule__DataType__Group_2_0__116221 = new BitSet(new long[]{0x0000000000000000L,0x000FCF0600000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__2_in_rule__DataType__Group_2_0__116224 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__JvmTypeReferenceAssignment_2_0_1_in_rule__DataType__Group_2_0__1__Impl16251 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__2__Impl_in_rule__DataType__Group_2_0__216281 = new BitSet(new long[]{0x0000000000000000L,0x000FCF0600000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__3_in_rule__DataType__Group_2_0__216284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__AsPrimitiveAssignment_2_0_2_in_rule__DataType__Group_2_0__2__Impl16311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__3__Impl_in_rule__DataType__Group_2_0__316342 = new BitSet(new long[]{0x0000000000000000L,0x000FCF0600000000L,0x0000000000040000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__4_in_rule__DataType__Group_2_0__316345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_0_3_in_rule__DataType__Group_2_0__3__Impl16372 = new BitSet(new long[]{0x0000000000000002L,0x000FCF0400000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0__4__Impl_in_rule__DataType__Group_2_0__416403 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__0_in_rule__DataType__Group_2_0__4__Impl16430 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__0__Impl_in_rule__DataType__Group_2_0_4__016471 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__1_in_rule__DataType__Group_2_0_4__016474 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__DataType__Group_2_0_4__0__Impl16502 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__1__Impl_in_rule__DataType__Group_2_0_4__116533 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__2_in_rule__DataType__Group_2_0_4__116536 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DataType__Group_2_0_4__1__Impl16564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__2__Impl_in_rule__DataType__Group_2_0_4__216595 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__3_in_rule__DataType__Group_2_0_4__216598 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_0_4_2_in_rule__DataType__Group_2_0_4__2__Impl16625 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__3__Impl_in_rule__DataType__Group_2_0_4__316655 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__4_in_rule__DataType__Group_2_0_4__316658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__0_in_rule__DataType__Group_2_0_4__3__Impl16685 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4__4__Impl_in_rule__DataType__Group_2_0_4__416716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DataType__Group_2_0_4__4__Impl16744 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__0__Impl_in_rule__DataType__Group_2_0_4_3__016785 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__1_in_rule__DataType__Group_2_0_4_3__016788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DataType__Group_2_0_4_3__0__Impl16816 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_0_4_3__1__Impl_in_rule__DataType__Group_2_0_4_3__116847 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_0_4_3_1_in_rule__DataType__Group_2_0_4_3__1__Impl16874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__0__Impl_in_rule__DataType__Group_2_1__016908 = new BitSet(new long[]{0x0000000004000000L,0x0000000000000600L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__1_in_rule__DataType__Group_2_1__016911 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__DateAssignment_2_1_0_in_rule__DataType__Group_2_1__0__Impl16938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__1__Impl_in_rule__DataType__Group_2_1__116968 = new BitSet(new long[]{0x0000000000000000L,0x0003300200000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__2_in_rule__DataType__Group_2_1__116971 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__DateTypeAssignment_2_1_1_in_rule__DataType__Group_2_1__1__Impl16998 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__2__Impl_in_rule__DataType__Group_2_1__217028 = new BitSet(new long[]{0x0000000000000000L,0x0003300200000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__3_in_rule__DataType__Group_2_1__217031 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_1_2_in_rule__DataType__Group_2_1__2__Impl17058 = new BitSet(new long[]{0x0000000000000002L,0x0003300000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1__3__Impl_in_rule__DataType__Group_2_1__317089 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__0_in_rule__DataType__Group_2_1__3__Impl17116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__0__Impl_in_rule__DataType__Group_2_1_3__017155 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__1_in_rule__DataType__Group_2_1_3__017158 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__DataType__Group_2_1_3__0__Impl17186 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__1__Impl_in_rule__DataType__Group_2_1_3__117217 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__2_in_rule__DataType__Group_2_1_3__117220 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DataType__Group_2_1_3__1__Impl17248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__2__Impl_in_rule__DataType__Group_2_1_3__217279 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__3_in_rule__DataType__Group_2_1_3__217282 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_1_3_2_in_rule__DataType__Group_2_1_3__2__Impl17309 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__3__Impl_in_rule__DataType__Group_2_1_3__317339 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__4_in_rule__DataType__Group_2_1_3__317342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__0_in_rule__DataType__Group_2_1_3__3__Impl17369 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3__4__Impl_in_rule__DataType__Group_2_1_3__417400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DataType__Group_2_1_3__4__Impl17428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__0__Impl_in_rule__DataType__Group_2_1_3_3__017469 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__1_in_rule__DataType__Group_2_1_3_3__017472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DataType__Group_2_1_3_3__0__Impl17500 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_1_3_3__1__Impl_in_rule__DataType__Group_2_1_3_3__117531 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_1_3_3_1_in_rule__DataType__Group_2_1_3_3__1__Impl17558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__0__Impl_in_rule__DataType__Group_2_2__017592 = new BitSet(new long[]{0x0000000000000000L,0x0003000200000000L});
+    }
+
+    protected static class FollowSets008 {
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__1_in_rule__DataType__Group_2_2__017595 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__AsBlobAssignment_2_2_0_in_rule__DataType__Group_2_2__0__Impl17622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__1__Impl_in_rule__DataType__Group_2_2__117652 = new BitSet(new long[]{0x0000000000000000L,0x0003000200000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__2_in_rule__DataType__Group_2_2__117655 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__ConstraintsAssignment_2_2_1_in_rule__DataType__Group_2_2__1__Impl17682 = new BitSet(new long[]{0x0000000000000002L,0x0003000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2__2__Impl_in_rule__DataType__Group_2_2__217713 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__0_in_rule__DataType__Group_2_2__2__Impl17740 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__0__Impl_in_rule__DataType__Group_2_2_2__017777 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__1_in_rule__DataType__Group_2_2_2__017780 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_97_in_rule__DataType__Group_2_2_2__0__Impl17808 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__1__Impl_in_rule__DataType__Group_2_2_2__117839 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__2_in_rule__DataType__Group_2_2_2__117842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DataType__Group_2_2_2__1__Impl17870 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__2__Impl_in_rule__DataType__Group_2_2_2__217901 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__3_in_rule__DataType__Group_2_2_2__217904 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_2_2_2_in_rule__DataType__Group_2_2_2__2__Impl17931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__3__Impl_in_rule__DataType__Group_2_2_2__317961 = new BitSet(new long[]{0x0000000000000000L,0x0000000044000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__4_in_rule__DataType__Group_2_2_2__317964 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__0_in_rule__DataType__Group_2_2_2__3__Impl17991 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2__4__Impl_in_rule__DataType__Group_2_2_2__418022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DataType__Group_2_2_2__4__Impl18050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__0__Impl_in_rule__DataType__Group_2_2_2_3__018091 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__1_in_rule__DataType__Group_2_2_2_3__018094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DataType__Group_2_2_2_3__0__Impl18122 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__Group_2_2_2_3__1__Impl_in_rule__DataType__Group_2_2_2_3__118153 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DataType__PropertiesAssignment_2_2_2_3_1_in_rule__DataType__Group_2_2_2_3__1__Impl18180 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__0__Impl_in_rule__DtCAssertFalse__Group__018214 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__1_in_rule__DtCAssertFalse__Group__018217 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__1__Impl_in_rule__DtCAssertFalse__Group__118275 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__2_in_rule__DtCAssertFalse__Group__118278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_98_in_rule__DtCAssertFalse__Group__1__Impl18306 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group__2__Impl_in_rule__DtCAssertFalse__Group__218337 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__UnorderedGroup_2_in_rule__DtCAssertFalse__Group__2__Impl18364 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__0__Impl_in_rule__DtCAssertFalse__Group_2_0__018401 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__1_in_rule__DtCAssertFalse__Group_2_0__018404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCAssertFalse__Group_2_0__0__Impl18432 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0__1__Impl_in_rule__DtCAssertFalse__Group_2_0__118463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__0_in_rule__DtCAssertFalse__Group_2_0__1__Impl18490 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__0__Impl_in_rule__DtCAssertFalse__Group_2_0_1__018525 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__1_in_rule__DtCAssertFalse__Group_2_0_1__018528 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCAssertFalse__Group_2_0_1__0__Impl18556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__1__Impl_in_rule__DtCAssertFalse__Group_2_0_1__118587 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__2_in_rule__DtCAssertFalse__Group_2_0_1__118590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_0_1__1__Impl18618 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_0_1__2__Impl_in_rule__DtCAssertFalse__Group_2_0_1__218649 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__MsgCodeAssignment_2_0_1_2_in_rule__DtCAssertFalse__Group_2_0_1__2__Impl18676 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__0__Impl_in_rule__DtCAssertFalse__Group_2_1__018712 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__1_in_rule__DtCAssertFalse__Group_2_1__018715 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCAssertFalse__Group_2_1__0__Impl18743 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__1__Impl_in_rule__DtCAssertFalse__Group_2_1__118774 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__2_in_rule__DtCAssertFalse__Group_2_1__118777 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_1__1__Impl18805 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_1__2__Impl_in_rule__DtCAssertFalse__Group_2_1__218836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__MsgI18nKeyAssignment_2_1_2_in_rule__DtCAssertFalse__Group_2_1__2__Impl18863 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__0__Impl_in_rule__DtCAssertFalse__Group_2_2__018899 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__1_in_rule__DtCAssertFalse__Group_2_2__018902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__0_in_rule__DtCAssertFalse__Group_2_2__0__Impl18929 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2__1__Impl_in_rule__DtCAssertFalse__Group_2_2__118960 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCAssertFalse__Group_2_2__1__Impl18988 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__0__Impl_in_rule__DtCAssertFalse__Group_2_2_0__019023 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__1_in_rule__DtCAssertFalse__Group_2_2_0__019026 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCAssertFalse__Group_2_2_0__0__Impl19054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__1__Impl_in_rule__DtCAssertFalse__Group_2_2_0__119085 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__2_in_rule__DtCAssertFalse__Group_2_2_0__119088 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertFalse__Group_2_2_0__1__Impl19116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__Group_2_2_0__2__Impl_in_rule__DtCAssertFalse__Group_2_2_0__219147 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertFalse__SeverityAssignment_2_2_0_2_in_rule__DtCAssertFalse__Group_2_2_0__2__Impl19174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__0__Impl_in_rule__DtCAssertTrue__Group__019210 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__1_in_rule__DtCAssertTrue__Group__019213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__1__Impl_in_rule__DtCAssertTrue__Group__119271 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__2_in_rule__DtCAssertTrue__Group__119274 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_104_in_rule__DtCAssertTrue__Group__1__Impl19302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group__2__Impl_in_rule__DtCAssertTrue__Group__219333 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__UnorderedGroup_2_in_rule__DtCAssertTrue__Group__2__Impl19360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__0__Impl_in_rule__DtCAssertTrue__Group_2_0__019397 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__1_in_rule__DtCAssertTrue__Group_2_0__019400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCAssertTrue__Group_2_0__0__Impl19428 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0__1__Impl_in_rule__DtCAssertTrue__Group_2_0__119459 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__0_in_rule__DtCAssertTrue__Group_2_0__1__Impl19486 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__0__Impl_in_rule__DtCAssertTrue__Group_2_0_1__019521 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__1_in_rule__DtCAssertTrue__Group_2_0_1__019524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCAssertTrue__Group_2_0_1__0__Impl19552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__1__Impl_in_rule__DtCAssertTrue__Group_2_0_1__119583 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__2_in_rule__DtCAssertTrue__Group_2_0_1__119586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_0_1__1__Impl19614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_0_1__2__Impl_in_rule__DtCAssertTrue__Group_2_0_1__219645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__MsgCodeAssignment_2_0_1_2_in_rule__DtCAssertTrue__Group_2_0_1__2__Impl19672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__0__Impl_in_rule__DtCAssertTrue__Group_2_1__019708 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__1_in_rule__DtCAssertTrue__Group_2_1__019711 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCAssertTrue__Group_2_1__0__Impl19739 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__1__Impl_in_rule__DtCAssertTrue__Group_2_1__119770 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__2_in_rule__DtCAssertTrue__Group_2_1__119773 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_1__1__Impl19801 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_1__2__Impl_in_rule__DtCAssertTrue__Group_2_1__219832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__MsgI18nKeyAssignment_2_1_2_in_rule__DtCAssertTrue__Group_2_1__2__Impl19859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__0__Impl_in_rule__DtCAssertTrue__Group_2_2__019895 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__1_in_rule__DtCAssertTrue__Group_2_2__019898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__0_in_rule__DtCAssertTrue__Group_2_2__0__Impl19925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2__1__Impl_in_rule__DtCAssertTrue__Group_2_2__119956 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCAssertTrue__Group_2_2__1__Impl19984 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets009 {
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__0__Impl_in_rule__DtCAssertTrue__Group_2_2_0__020019 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__1_in_rule__DtCAssertTrue__Group_2_2_0__020022 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCAssertTrue__Group_2_2_0__0__Impl20050 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__1__Impl_in_rule__DtCAssertTrue__Group_2_2_0__120081 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__2_in_rule__DtCAssertTrue__Group_2_2_0__120084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCAssertTrue__Group_2_2_0__1__Impl20112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__Group_2_2_0__2__Impl_in_rule__DtCAssertTrue__Group_2_2_0__220143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCAssertTrue__SeverityAssignment_2_2_0_2_in_rule__DtCAssertTrue__Group_2_2_0__2__Impl20170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__0__Impl_in_rule__DtCDecimalMax__Group__020206 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__1_in_rule__DtCDecimalMax__Group__020209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__1__Impl_in_rule__DtCDecimalMax__Group__120267 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__2_in_rule__DtCDecimalMax__Group__120270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_105_in_rule__DtCDecimalMax__Group__1__Impl20298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__2__Impl_in_rule__DtCDecimalMax__Group__220329 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__3_in_rule__DtCDecimalMax__Group__220332 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDecimalMax__Group__2__Impl20360 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__3__Impl_in_rule__DtCDecimalMax__Group__320391 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__4_in_rule__DtCDecimalMax__Group__320394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MaxAssignment_3_in_rule__DtCDecimalMax__Group__3__Impl20421 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__4__Impl_in_rule__DtCDecimalMax__Group__420451 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__5_in_rule__DtCDecimalMax__Group__420454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__UnorderedGroup_4_in_rule__DtCDecimalMax__Group__4__Impl20481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group__5__Impl_in_rule__DtCDecimalMax__Group__520512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDecimalMax__Group__5__Impl20540 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__0__Impl_in_rule__DtCDecimalMax__Group_4_0__020583 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__1_in_rule__DtCDecimalMax__Group_4_0__020586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCDecimalMax__Group_4_0__0__Impl20614 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0__1__Impl_in_rule__DtCDecimalMax__Group_4_0__120645 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__0_in_rule__DtCDecimalMax__Group_4_0__1__Impl20672 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__0__Impl_in_rule__DtCDecimalMax__Group_4_0_1__020707 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__1_in_rule__DtCDecimalMax__Group_4_0_1__020710 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCDecimalMax__Group_4_0_1__0__Impl20738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__1__Impl_in_rule__DtCDecimalMax__Group_4_0_1__120769 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__2_in_rule__DtCDecimalMax__Group_4_0_1__120772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_0_1__1__Impl20800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_0_1__2__Impl_in_rule__DtCDecimalMax__Group_4_0_1__220831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MsgCodeAssignment_4_0_1_2_in_rule__DtCDecimalMax__Group_4_0_1__2__Impl20858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__0__Impl_in_rule__DtCDecimalMax__Group_4_1__020894 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__1_in_rule__DtCDecimalMax__Group_4_1__020897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCDecimalMax__Group_4_1__0__Impl20925 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__1__Impl_in_rule__DtCDecimalMax__Group_4_1__120956 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__2_in_rule__DtCDecimalMax__Group_4_1__120959 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_1__1__Impl20987 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_1__2__Impl_in_rule__DtCDecimalMax__Group_4_1__221018 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__MsgI18nKeyAssignment_4_1_2_in_rule__DtCDecimalMax__Group_4_1__2__Impl21045 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__0__Impl_in_rule__DtCDecimalMax__Group_4_2__021081 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__1_in_rule__DtCDecimalMax__Group_4_2__021084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__0_in_rule__DtCDecimalMax__Group_4_2__0__Impl21111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2__1__Impl_in_rule__DtCDecimalMax__Group_4_2__121142 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCDecimalMax__Group_4_2__1__Impl21170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__0__Impl_in_rule__DtCDecimalMax__Group_4_2_0__021205 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__1_in_rule__DtCDecimalMax__Group_4_2_0__021208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCDecimalMax__Group_4_2_0__0__Impl21236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__1__Impl_in_rule__DtCDecimalMax__Group_4_2_0__121267 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__2_in_rule__DtCDecimalMax__Group_4_2_0__121270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMax__Group_4_2_0__1__Impl21298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__Group_4_2_0__2__Impl_in_rule__DtCDecimalMax__Group_4_2_0__221329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMax__SeverityAssignment_4_2_0_2_in_rule__DtCDecimalMax__Group_4_2_0__2__Impl21356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__0__Impl_in_rule__DtCDecimalMin__Group__021392 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__1_in_rule__DtCDecimalMin__Group__021395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__1__Impl_in_rule__DtCDecimalMin__Group__121453 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__2_in_rule__DtCDecimalMin__Group__121456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_106_in_rule__DtCDecimalMin__Group__1__Impl21484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__2__Impl_in_rule__DtCDecimalMin__Group__221515 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__3_in_rule__DtCDecimalMin__Group__221518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDecimalMin__Group__2__Impl21546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__3__Impl_in_rule__DtCDecimalMin__Group__321577 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__4_in_rule__DtCDecimalMin__Group__321580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MinAssignment_3_in_rule__DtCDecimalMin__Group__3__Impl21607 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__4__Impl_in_rule__DtCDecimalMin__Group__421637 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__5_in_rule__DtCDecimalMin__Group__421640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__UnorderedGroup_4_in_rule__DtCDecimalMin__Group__4__Impl21667 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group__5__Impl_in_rule__DtCDecimalMin__Group__521698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDecimalMin__Group__5__Impl21726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__0__Impl_in_rule__DtCDecimalMin__Group_4_0__021769 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__1_in_rule__DtCDecimalMin__Group_4_0__021772 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCDecimalMin__Group_4_0__0__Impl21800 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0__1__Impl_in_rule__DtCDecimalMin__Group_4_0__121831 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__0_in_rule__DtCDecimalMin__Group_4_0__1__Impl21858 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__0__Impl_in_rule__DtCDecimalMin__Group_4_0_1__021893 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__1_in_rule__DtCDecimalMin__Group_4_0_1__021896 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCDecimalMin__Group_4_0_1__0__Impl21924 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__1__Impl_in_rule__DtCDecimalMin__Group_4_0_1__121955 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__2_in_rule__DtCDecimalMin__Group_4_0_1__121958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_0_1__1__Impl21986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_0_1__2__Impl_in_rule__DtCDecimalMin__Group_4_0_1__222017 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MsgCodeAssignment_4_0_1_2_in_rule__DtCDecimalMin__Group_4_0_1__2__Impl22044 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__0__Impl_in_rule__DtCDecimalMin__Group_4_1__022080 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__1_in_rule__DtCDecimalMin__Group_4_1__022083 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCDecimalMin__Group_4_1__0__Impl22111 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__1__Impl_in_rule__DtCDecimalMin__Group_4_1__122142 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__2_in_rule__DtCDecimalMin__Group_4_1__122145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_1__1__Impl22173 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_1__2__Impl_in_rule__DtCDecimalMin__Group_4_1__222204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__MsgI18nKeyAssignment_4_1_2_in_rule__DtCDecimalMin__Group_4_1__2__Impl22231 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__0__Impl_in_rule__DtCDecimalMin__Group_4_2__022267 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__1_in_rule__DtCDecimalMin__Group_4_2__022270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__0_in_rule__DtCDecimalMin__Group_4_2__0__Impl22297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2__1__Impl_in_rule__DtCDecimalMin__Group_4_2__122328 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCDecimalMin__Group_4_2__1__Impl22356 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets010 {
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__0__Impl_in_rule__DtCDecimalMin__Group_4_2_0__022391 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__1_in_rule__DtCDecimalMin__Group_4_2_0__022394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCDecimalMin__Group_4_2_0__0__Impl22422 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__1__Impl_in_rule__DtCDecimalMin__Group_4_2_0__122453 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__2_in_rule__DtCDecimalMin__Group_4_2_0__122456 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDecimalMin__Group_4_2_0__1__Impl22484 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__Group_4_2_0__2__Impl_in_rule__DtCDecimalMin__Group_4_2_0__222515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDecimalMin__SeverityAssignment_4_2_0_2_in_rule__DtCDecimalMin__Group_4_2_0__2__Impl22542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__0__Impl_in_rule__DtCDigits__Group__022578 = new BitSet(new long[]{0x0000000000000000L,0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__1_in_rule__DtCDigits__Group__022581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__1__Impl_in_rule__DtCDigits__Group__122639 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__2_in_rule__DtCDigits__Group__122642 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_107_in_rule__DtCDigits__Group__1__Impl22670 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__2__Impl_in_rule__DtCDigits__Group__222701 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__3_in_rule__DtCDigits__Group__222704 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCDigits__Group__2__Impl22732 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__3__Impl_in_rule__DtCDigits__Group__322763 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__4_in_rule__DtCDigits__Group__322766 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__IntDigitsAssignment_3_in_rule__DtCDigits__Group__3__Impl22793 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__4__Impl_in_rule__DtCDigits__Group__422823 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__5_in_rule__DtCDigits__Group__422826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCDigits__Group__4__Impl22854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__5__Impl_in_rule__DtCDigits__Group__522885 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__6_in_rule__DtCDigits__Group__522888 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__FractionDigitsAssignment_5_in_rule__DtCDigits__Group__5__Impl22915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__6__Impl_in_rule__DtCDigits__Group__622945 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__7_in_rule__DtCDigits__Group__622948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__UnorderedGroup_6_in_rule__DtCDigits__Group__6__Impl22975 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group__7__Impl_in_rule__DtCDigits__Group__723006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCDigits__Group__7__Impl23034 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__0__Impl_in_rule__DtCDigits__Group_6_0__023081 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__1_in_rule__DtCDigits__Group_6_0__023084 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCDigits__Group_6_0__0__Impl23112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0__1__Impl_in_rule__DtCDigits__Group_6_0__123143 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__0_in_rule__DtCDigits__Group_6_0__1__Impl23170 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__0__Impl_in_rule__DtCDigits__Group_6_0_1__023205 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__1_in_rule__DtCDigits__Group_6_0_1__023208 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCDigits__Group_6_0_1__0__Impl23236 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__1__Impl_in_rule__DtCDigits__Group_6_0_1__123267 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__2_in_rule__DtCDigits__Group_6_0_1__123270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_0_1__1__Impl23298 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_0_1__2__Impl_in_rule__DtCDigits__Group_6_0_1__223329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__MsgCodeAssignment_6_0_1_2_in_rule__DtCDigits__Group_6_0_1__2__Impl23356 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__0__Impl_in_rule__DtCDigits__Group_6_1__023392 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__1_in_rule__DtCDigits__Group_6_1__023395 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCDigits__Group_6_1__0__Impl23423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__1__Impl_in_rule__DtCDigits__Group_6_1__123454 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__2_in_rule__DtCDigits__Group_6_1__123457 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_1__1__Impl23485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_1__2__Impl_in_rule__DtCDigits__Group_6_1__223516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__MsgI18nKeyAssignment_6_1_2_in_rule__DtCDigits__Group_6_1__2__Impl23543 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__0__Impl_in_rule__DtCDigits__Group_6_2__023579 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__1_in_rule__DtCDigits__Group_6_2__023582 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__0_in_rule__DtCDigits__Group_6_2__0__Impl23609 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2__1__Impl_in_rule__DtCDigits__Group_6_2__123640 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCDigits__Group_6_2__1__Impl23668 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__0__Impl_in_rule__DtCDigits__Group_6_2_0__023703 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__1_in_rule__DtCDigits__Group_6_2_0__023706 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCDigits__Group_6_2_0__0__Impl23734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__1__Impl_in_rule__DtCDigits__Group_6_2_0__123765 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__2_in_rule__DtCDigits__Group_6_2_0__123768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCDigits__Group_6_2_0__1__Impl23796 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__Group_6_2_0__2__Impl_in_rule__DtCDigits__Group_6_2_0__223827 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCDigits__SeverityAssignment_6_2_0_2_in_rule__DtCDigits__Group_6_2_0__2__Impl23854 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__0__Impl_in_rule__DtCFuture__Group__023890 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__1_in_rule__DtCFuture__Group__023893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__1__Impl_in_rule__DtCFuture__Group__123951 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__2_in_rule__DtCFuture__Group__123954 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_108_in_rule__DtCFuture__Group__1__Impl23982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group__2__Impl_in_rule__DtCFuture__Group__224013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__UnorderedGroup_2_in_rule__DtCFuture__Group__2__Impl24040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__0__Impl_in_rule__DtCFuture__Group_2_0__024077 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__1_in_rule__DtCFuture__Group_2_0__024080 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCFuture__Group_2_0__0__Impl24108 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0__1__Impl_in_rule__DtCFuture__Group_2_0__124139 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__0_in_rule__DtCFuture__Group_2_0__1__Impl24166 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__0__Impl_in_rule__DtCFuture__Group_2_0_1__024201 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__1_in_rule__DtCFuture__Group_2_0_1__024204 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCFuture__Group_2_0_1__0__Impl24232 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__1__Impl_in_rule__DtCFuture__Group_2_0_1__124263 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__2_in_rule__DtCFuture__Group_2_0_1__124266 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_0_1__1__Impl24294 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_0_1__2__Impl_in_rule__DtCFuture__Group_2_0_1__224325 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__MsgCodeAssignment_2_0_1_2_in_rule__DtCFuture__Group_2_0_1__2__Impl24352 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__0__Impl_in_rule__DtCFuture__Group_2_1__024388 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__1_in_rule__DtCFuture__Group_2_1__024391 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCFuture__Group_2_1__0__Impl24419 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__1__Impl_in_rule__DtCFuture__Group_2_1__124450 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__2_in_rule__DtCFuture__Group_2_1__124453 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_1__1__Impl24481 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_1__2__Impl_in_rule__DtCFuture__Group_2_1__224512 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__MsgI18nKeyAssignment_2_1_2_in_rule__DtCFuture__Group_2_1__2__Impl24539 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__0__Impl_in_rule__DtCFuture__Group_2_2__024575 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__1_in_rule__DtCFuture__Group_2_2__024578 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__0_in_rule__DtCFuture__Group_2_2__0__Impl24605 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2__1__Impl_in_rule__DtCFuture__Group_2_2__124636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCFuture__Group_2_2__1__Impl24664 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__0__Impl_in_rule__DtCFuture__Group_2_2_0__024699 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__1_in_rule__DtCFuture__Group_2_2_0__024702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCFuture__Group_2_2_0__0__Impl24730 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets011 {
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__1__Impl_in_rule__DtCFuture__Group_2_2_0__124761 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__2_in_rule__DtCFuture__Group_2_2_0__124764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCFuture__Group_2_2_0__1__Impl24792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__Group_2_2_0__2__Impl_in_rule__DtCFuture__Group_2_2_0__224823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCFuture__SeverityAssignment_2_2_0_2_in_rule__DtCFuture__Group_2_2_0__2__Impl24850 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__0__Impl_in_rule__DtCPast__Group__024886 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__1_in_rule__DtCPast__Group__024889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__1__Impl_in_rule__DtCPast__Group__124947 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__2_in_rule__DtCPast__Group__124950 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_109_in_rule__DtCPast__Group__1__Impl24978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group__2__Impl_in_rule__DtCPast__Group__225009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__UnorderedGroup_2_in_rule__DtCPast__Group__2__Impl25036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__0__Impl_in_rule__DtCPast__Group_2_0__025073 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__1_in_rule__DtCPast__Group_2_0__025076 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCPast__Group_2_0__0__Impl25104 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0__1__Impl_in_rule__DtCPast__Group_2_0__125135 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__0_in_rule__DtCPast__Group_2_0__1__Impl25162 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__0__Impl_in_rule__DtCPast__Group_2_0_1__025197 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__1_in_rule__DtCPast__Group_2_0_1__025200 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCPast__Group_2_0_1__0__Impl25228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__1__Impl_in_rule__DtCPast__Group_2_0_1__125259 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__2_in_rule__DtCPast__Group_2_0_1__125262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_0_1__1__Impl25290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_0_1__2__Impl_in_rule__DtCPast__Group_2_0_1__225321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__MsgCodeAssignment_2_0_1_2_in_rule__DtCPast__Group_2_0_1__2__Impl25348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__0__Impl_in_rule__DtCPast__Group_2_1__025384 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__1_in_rule__DtCPast__Group_2_1__025387 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCPast__Group_2_1__0__Impl25415 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__1__Impl_in_rule__DtCPast__Group_2_1__125446 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__2_in_rule__DtCPast__Group_2_1__125449 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_1__1__Impl25477 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_1__2__Impl_in_rule__DtCPast__Group_2_1__225508 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__MsgI18nKeyAssignment_2_1_2_in_rule__DtCPast__Group_2_1__2__Impl25535 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__0__Impl_in_rule__DtCPast__Group_2_2__025571 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__1_in_rule__DtCPast__Group_2_2__025574 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__0_in_rule__DtCPast__Group_2_2__0__Impl25601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2__1__Impl_in_rule__DtCPast__Group_2_2__125632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCPast__Group_2_2__1__Impl25660 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__0__Impl_in_rule__DtCPast__Group_2_2_0__025695 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__1_in_rule__DtCPast__Group_2_2_0__025698 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCPast__Group_2_2_0__0__Impl25726 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__1__Impl_in_rule__DtCPast__Group_2_2_0__125757 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__2_in_rule__DtCPast__Group_2_2_0__125760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCPast__Group_2_2_0__1__Impl25788 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__Group_2_2_0__2__Impl_in_rule__DtCPast__Group_2_2_0__225819 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCPast__SeverityAssignment_2_2_0_2_in_rule__DtCPast__Group_2_2_0__2__Impl25846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__0__Impl_in_rule__DtCNumericMax__Group__025882 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__1_in_rule__DtCNumericMax__Group__025885 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__1__Impl_in_rule__DtCNumericMax__Group__125943 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__2_in_rule__DtCNumericMax__Group__125946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_110_in_rule__DtCNumericMax__Group__1__Impl25974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__2__Impl_in_rule__DtCNumericMax__Group__226005 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__3_in_rule__DtCNumericMax__Group__226008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNumericMax__Group__2__Impl26036 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__3__Impl_in_rule__DtCNumericMax__Group__326067 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__4_in_rule__DtCNumericMax__Group__326070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MaxAssignment_3_in_rule__DtCNumericMax__Group__3__Impl26097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__4__Impl_in_rule__DtCNumericMax__Group__426127 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__5_in_rule__DtCNumericMax__Group__426130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__UnorderedGroup_4_in_rule__DtCNumericMax__Group__4__Impl26157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group__5__Impl_in_rule__DtCNumericMax__Group__526188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNumericMax__Group__5__Impl26216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__0__Impl_in_rule__DtCNumericMax__Group_4_0__026259 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__1_in_rule__DtCNumericMax__Group_4_0__026262 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCNumericMax__Group_4_0__0__Impl26290 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0__1__Impl_in_rule__DtCNumericMax__Group_4_0__126321 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__0_in_rule__DtCNumericMax__Group_4_0__1__Impl26348 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__0__Impl_in_rule__DtCNumericMax__Group_4_0_1__026383 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__1_in_rule__DtCNumericMax__Group_4_0_1__026386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCNumericMax__Group_4_0_1__0__Impl26414 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__1__Impl_in_rule__DtCNumericMax__Group_4_0_1__126445 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__2_in_rule__DtCNumericMax__Group_4_0_1__126448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_0_1__1__Impl26476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_0_1__2__Impl_in_rule__DtCNumericMax__Group_4_0_1__226507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MsgCodeAssignment_4_0_1_2_in_rule__DtCNumericMax__Group_4_0_1__2__Impl26534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__0__Impl_in_rule__DtCNumericMax__Group_4_1__026570 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__1_in_rule__DtCNumericMax__Group_4_1__026573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCNumericMax__Group_4_1__0__Impl26601 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__1__Impl_in_rule__DtCNumericMax__Group_4_1__126632 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__2_in_rule__DtCNumericMax__Group_4_1__126635 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_1__1__Impl26663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_1__2__Impl_in_rule__DtCNumericMax__Group_4_1__226694 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__MsgI18nKeyAssignment_4_1_2_in_rule__DtCNumericMax__Group_4_1__2__Impl26721 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__0__Impl_in_rule__DtCNumericMax__Group_4_2__026757 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__1_in_rule__DtCNumericMax__Group_4_2__026760 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__0_in_rule__DtCNumericMax__Group_4_2__0__Impl26787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2__1__Impl_in_rule__DtCNumericMax__Group_4_2__126818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCNumericMax__Group_4_2__1__Impl26846 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__0__Impl_in_rule__DtCNumericMax__Group_4_2_0__026881 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__1_in_rule__DtCNumericMax__Group_4_2_0__026884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCNumericMax__Group_4_2_0__0__Impl26912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__1__Impl_in_rule__DtCNumericMax__Group_4_2_0__126943 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__2_in_rule__DtCNumericMax__Group_4_2_0__126946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMax__Group_4_2_0__1__Impl26974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__Group_4_2_0__2__Impl_in_rule__DtCNumericMax__Group_4_2_0__227005 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMax__SeverityAssignment_4_2_0_2_in_rule__DtCNumericMax__Group_4_2_0__2__Impl27032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__0__Impl_in_rule__DtCNumericMin__Group__027068 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__1_in_rule__DtCNumericMin__Group__027071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__1__Impl_in_rule__DtCNumericMin__Group__127129 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__2_in_rule__DtCNumericMin__Group__127132 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets012 {
+        public static final BitSet FOLLOW_111_in_rule__DtCNumericMin__Group__1__Impl27160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__2__Impl_in_rule__DtCNumericMin__Group__227191 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__3_in_rule__DtCNumericMin__Group__227194 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCNumericMin__Group__2__Impl27222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__3__Impl_in_rule__DtCNumericMin__Group__327253 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__4_in_rule__DtCNumericMin__Group__327256 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MinAssignment_3_in_rule__DtCNumericMin__Group__3__Impl27283 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__4__Impl_in_rule__DtCNumericMin__Group__427313 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__5_in_rule__DtCNumericMin__Group__427316 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__UnorderedGroup_4_in_rule__DtCNumericMin__Group__4__Impl27343 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group__5__Impl_in_rule__DtCNumericMin__Group__527374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCNumericMin__Group__5__Impl27402 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__0__Impl_in_rule__DtCNumericMin__Group_4_0__027445 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__1_in_rule__DtCNumericMin__Group_4_0__027448 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCNumericMin__Group_4_0__0__Impl27476 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0__1__Impl_in_rule__DtCNumericMin__Group_4_0__127507 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__0_in_rule__DtCNumericMin__Group_4_0__1__Impl27534 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__0__Impl_in_rule__DtCNumericMin__Group_4_0_1__027569 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__1_in_rule__DtCNumericMin__Group_4_0_1__027572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCNumericMin__Group_4_0_1__0__Impl27600 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__1__Impl_in_rule__DtCNumericMin__Group_4_0_1__127631 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__2_in_rule__DtCNumericMin__Group_4_0_1__127634 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_0_1__1__Impl27662 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_0_1__2__Impl_in_rule__DtCNumericMin__Group_4_0_1__227693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MsgCodeAssignment_4_0_1_2_in_rule__DtCNumericMin__Group_4_0_1__2__Impl27720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__0__Impl_in_rule__DtCNumericMin__Group_4_1__027756 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__1_in_rule__DtCNumericMin__Group_4_1__027759 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCNumericMin__Group_4_1__0__Impl27787 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__1__Impl_in_rule__DtCNumericMin__Group_4_1__127818 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__2_in_rule__DtCNumericMin__Group_4_1__127821 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_1__1__Impl27849 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_1__2__Impl_in_rule__DtCNumericMin__Group_4_1__227880 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__MsgI18nKeyAssignment_4_1_2_in_rule__DtCNumericMin__Group_4_1__2__Impl27907 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__0__Impl_in_rule__DtCNumericMin__Group_4_2__027943 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__1_in_rule__DtCNumericMin__Group_4_2__027946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__0_in_rule__DtCNumericMin__Group_4_2__0__Impl27973 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2__1__Impl_in_rule__DtCNumericMin__Group_4_2__128004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCNumericMin__Group_4_2__1__Impl28032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__0__Impl_in_rule__DtCNumericMin__Group_4_2_0__028067 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__1_in_rule__DtCNumericMin__Group_4_2_0__028070 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCNumericMin__Group_4_2_0__0__Impl28098 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__1__Impl_in_rule__DtCNumericMin__Group_4_2_0__128129 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__2_in_rule__DtCNumericMin__Group_4_2_0__128132 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNumericMin__Group_4_2_0__1__Impl28160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__Group_4_2_0__2__Impl_in_rule__DtCNumericMin__Group_4_2_0__228191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNumericMin__SeverityAssignment_4_2_0_2_in_rule__DtCNumericMin__Group_4_2_0__2__Impl28218 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__0__Impl_in_rule__DtCNotNull__Group__028254 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__1_in_rule__DtCNotNull__Group__028257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__1__Impl_in_rule__DtCNotNull__Group__128315 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__2_in_rule__DtCNotNull__Group__128318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_112_in_rule__DtCNotNull__Group__1__Impl28346 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group__2__Impl_in_rule__DtCNotNull__Group__228377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__UnorderedGroup_2_in_rule__DtCNotNull__Group__2__Impl28404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__0__Impl_in_rule__DtCNotNull__Group_2_0__028441 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__1_in_rule__DtCNotNull__Group_2_0__028444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCNotNull__Group_2_0__0__Impl28472 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0__1__Impl_in_rule__DtCNotNull__Group_2_0__128503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__0_in_rule__DtCNotNull__Group_2_0__1__Impl28530 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__0__Impl_in_rule__DtCNotNull__Group_2_0_1__028565 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__1_in_rule__DtCNotNull__Group_2_0_1__028568 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCNotNull__Group_2_0_1__0__Impl28596 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__1__Impl_in_rule__DtCNotNull__Group_2_0_1__128627 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__2_in_rule__DtCNotNull__Group_2_0_1__128630 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_0_1__1__Impl28658 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_0_1__2__Impl_in_rule__DtCNotNull__Group_2_0_1__228689 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__MsgCodeAssignment_2_0_1_2_in_rule__DtCNotNull__Group_2_0_1__2__Impl28716 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__0__Impl_in_rule__DtCNotNull__Group_2_1__028752 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__1_in_rule__DtCNotNull__Group_2_1__028755 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCNotNull__Group_2_1__0__Impl28783 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__1__Impl_in_rule__DtCNotNull__Group_2_1__128814 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__2_in_rule__DtCNotNull__Group_2_1__128817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_1__1__Impl28845 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_1__2__Impl_in_rule__DtCNotNull__Group_2_1__228876 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__MsgI18nKeyAssignment_2_1_2_in_rule__DtCNotNull__Group_2_1__2__Impl28903 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__0__Impl_in_rule__DtCNotNull__Group_2_2__028939 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__1_in_rule__DtCNotNull__Group_2_2__028942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__0_in_rule__DtCNotNull__Group_2_2__0__Impl28969 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2__1__Impl_in_rule__DtCNotNull__Group_2_2__129000 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCNotNull__Group_2_2__1__Impl29028 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__0__Impl_in_rule__DtCNotNull__Group_2_2_0__029063 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__1_in_rule__DtCNotNull__Group_2_2_0__029066 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCNotNull__Group_2_2_0__0__Impl29094 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__1__Impl_in_rule__DtCNotNull__Group_2_2_0__129125 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__2_in_rule__DtCNotNull__Group_2_2_0__129128 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNotNull__Group_2_2_0__1__Impl29156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__Group_2_2_0__2__Impl_in_rule__DtCNotNull__Group_2_2_0__229187 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNotNull__SeverityAssignment_2_2_0_2_in_rule__DtCNotNull__Group_2_2_0__2__Impl29214 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__0__Impl_in_rule__DtCNull__Group__029250 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__1_in_rule__DtCNull__Group__029253 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__1__Impl_in_rule__DtCNull__Group__129311 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__2_in_rule__DtCNull__Group__129314 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_113_in_rule__DtCNull__Group__1__Impl29342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group__2__Impl_in_rule__DtCNull__Group__229373 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__UnorderedGroup_2_in_rule__DtCNull__Group__2__Impl29400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__0__Impl_in_rule__DtCNull__Group_2_0__029437 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__1_in_rule__DtCNull__Group_2_0__029440 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCNull__Group_2_0__0__Impl29468 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0__1__Impl_in_rule__DtCNull__Group_2_0__129499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__0_in_rule__DtCNull__Group_2_0__1__Impl29526 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__0__Impl_in_rule__DtCNull__Group_2_0_1__029561 = new BitSet(new long[]{0x0000000000002000L});
+    }
+
+    protected static class FollowSets013 {
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__1_in_rule__DtCNull__Group_2_0_1__029564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCNull__Group_2_0_1__0__Impl29592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__1__Impl_in_rule__DtCNull__Group_2_0_1__129623 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__2_in_rule__DtCNull__Group_2_0_1__129626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_0_1__1__Impl29654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_0_1__2__Impl_in_rule__DtCNull__Group_2_0_1__229685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__MsgCodeAssignment_2_0_1_2_in_rule__DtCNull__Group_2_0_1__2__Impl29712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__0__Impl_in_rule__DtCNull__Group_2_1__029748 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__1_in_rule__DtCNull__Group_2_1__029751 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCNull__Group_2_1__0__Impl29779 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__1__Impl_in_rule__DtCNull__Group_2_1__129810 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__2_in_rule__DtCNull__Group_2_1__129813 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_1__1__Impl29841 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_1__2__Impl_in_rule__DtCNull__Group_2_1__229872 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__MsgI18nKeyAssignment_2_1_2_in_rule__DtCNull__Group_2_1__2__Impl29899 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__0__Impl_in_rule__DtCNull__Group_2_2__029935 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__1_in_rule__DtCNull__Group_2_2__029938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__0_in_rule__DtCNull__Group_2_2__0__Impl29965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2__1__Impl_in_rule__DtCNull__Group_2_2__129996 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCNull__Group_2_2__1__Impl30024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__0__Impl_in_rule__DtCNull__Group_2_2_0__030059 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__1_in_rule__DtCNull__Group_2_2_0__030062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCNull__Group_2_2_0__0__Impl30090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__1__Impl_in_rule__DtCNull__Group_2_2_0__130121 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__2_in_rule__DtCNull__Group_2_2_0__130124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCNull__Group_2_2_0__1__Impl30152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__Group_2_2_0__2__Impl_in_rule__DtCNull__Group_2_2_0__230183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCNull__SeverityAssignment_2_2_0_2_in_rule__DtCNull__Group_2_2_0__2__Impl30210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__0__Impl_in_rule__DtCRegEx__Group__030246 = new BitSet(new long[]{0x0000000000000000L,0x0004000000000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__1_in_rule__DtCRegEx__Group__030249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__1__Impl_in_rule__DtCRegEx__Group__130307 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__2_in_rule__DtCRegEx__Group__130310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_114_in_rule__DtCRegEx__Group__1__Impl30338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__2__Impl_in_rule__DtCRegEx__Group__230369 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__3_in_rule__DtCRegEx__Group__230372 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCRegEx__Group__2__Impl30400 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__3__Impl_in_rule__DtCRegEx__Group__330431 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__4_in_rule__DtCRegEx__Group__330434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__PatternAssignment_3_in_rule__DtCRegEx__Group__3__Impl30461 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__4__Impl_in_rule__DtCRegEx__Group__430491 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__5_in_rule__DtCRegEx__Group__430494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__UnorderedGroup_4_in_rule__DtCRegEx__Group__4__Impl30521 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group__5__Impl_in_rule__DtCRegEx__Group__530552 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCRegEx__Group__5__Impl30580 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__0__Impl_in_rule__DtCRegEx__Group_4_0__030623 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__1_in_rule__DtCRegEx__Group_4_0__030626 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCRegEx__Group_4_0__0__Impl30654 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0__1__Impl_in_rule__DtCRegEx__Group_4_0__130685 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__0_in_rule__DtCRegEx__Group_4_0__1__Impl30712 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__0__Impl_in_rule__DtCRegEx__Group_4_0_1__030747 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__1_in_rule__DtCRegEx__Group_4_0_1__030750 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCRegEx__Group_4_0_1__0__Impl30778 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__1__Impl_in_rule__DtCRegEx__Group_4_0_1__130809 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__2_in_rule__DtCRegEx__Group_4_0_1__130812 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_0_1__1__Impl30840 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_0_1__2__Impl_in_rule__DtCRegEx__Group_4_0_1__230871 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__MsgCodeAssignment_4_0_1_2_in_rule__DtCRegEx__Group_4_0_1__2__Impl30898 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__0__Impl_in_rule__DtCRegEx__Group_4_1__030934 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__1_in_rule__DtCRegEx__Group_4_1__030937 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCRegEx__Group_4_1__0__Impl30965 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__1__Impl_in_rule__DtCRegEx__Group_4_1__130996 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__2_in_rule__DtCRegEx__Group_4_1__130999 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_1__1__Impl31027 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_1__2__Impl_in_rule__DtCRegEx__Group_4_1__231058 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__MsgI18nKeyAssignment_4_1_2_in_rule__DtCRegEx__Group_4_1__2__Impl31085 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__0__Impl_in_rule__DtCRegEx__Group_4_2__031121 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__1_in_rule__DtCRegEx__Group_4_2__031124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__0_in_rule__DtCRegEx__Group_4_2__0__Impl31151 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2__1__Impl_in_rule__DtCRegEx__Group_4_2__131182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCRegEx__Group_4_2__1__Impl31210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__0__Impl_in_rule__DtCRegEx__Group_4_2_0__031245 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__1_in_rule__DtCRegEx__Group_4_2_0__031248 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCRegEx__Group_4_2_0__0__Impl31276 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__1__Impl_in_rule__DtCRegEx__Group_4_2_0__131307 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__2_in_rule__DtCRegEx__Group_4_2_0__131310 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCRegEx__Group_4_2_0__1__Impl31338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__Group_4_2_0__2__Impl_in_rule__DtCRegEx__Group_4_2_0__231369 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCRegEx__SeverityAssignment_4_2_0_2_in_rule__DtCRegEx__Group_4_2_0__2__Impl31396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__0__Impl_in_rule__DtCSize__Group__031432 = new BitSet(new long[]{0x0000000000000000L,0x000FCF0400000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__1_in_rule__DtCSize__Group__031435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__1__Impl_in_rule__DtCSize__Group__131493 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__2_in_rule__DtCSize__Group__131496 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_115_in_rule__DtCSize__Group__1__Impl31524 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__2__Impl_in_rule__DtCSize__Group__231555 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__3_in_rule__DtCSize__Group__231558 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__DtCSize__Group__2__Impl31586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__3__Impl_in_rule__DtCSize__Group__331617 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__4_in_rule__DtCSize__Group__331620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MinAssignment_3_in_rule__DtCSize__Group__3__Impl31647 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__4__Impl_in_rule__DtCSize__Group__431677 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__5_in_rule__DtCSize__Group__431680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__DtCSize__Group__4__Impl31708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__5__Impl_in_rule__DtCSize__Group__531739 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__6_in_rule__DtCSize__Group__531742 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MaxAssignment_5_in_rule__DtCSize__Group__5__Impl31769 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__6__Impl_in_rule__DtCSize__Group__631799 = new BitSet(new long[]{0x0000000000000000L,0x000000E840000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__7_in_rule__DtCSize__Group__631802 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__UnorderedGroup_6_in_rule__DtCSize__Group__6__Impl31829 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group__7__Impl_in_rule__DtCSize__Group__731860 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__DtCSize__Group__7__Impl31888 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets014 {
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__0__Impl_in_rule__DtCSize__Group_6_0__031935 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__1_in_rule__DtCSize__Group_6_0__031938 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__DtCSize__Group_6_0__0__Impl31966 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0__1__Impl_in_rule__DtCSize__Group_6_0__131997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__0_in_rule__DtCSize__Group_6_0__1__Impl32024 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__0__Impl_in_rule__DtCSize__Group_6_0_1__032059 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__1_in_rule__DtCSize__Group_6_0_1__032062 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_100_in_rule__DtCSize__Group_6_0_1__0__Impl32090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__1__Impl_in_rule__DtCSize__Group_6_0_1__132121 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__2_in_rule__DtCSize__Group_6_0_1__132124 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_0_1__1__Impl32152 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_0_1__2__Impl_in_rule__DtCSize__Group_6_0_1__232183 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MsgCodeAssignment_6_0_1_2_in_rule__DtCSize__Group_6_0_1__2__Impl32210 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__0__Impl_in_rule__DtCSize__Group_6_1__032246 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__1_in_rule__DtCSize__Group_6_1__032249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_101_in_rule__DtCSize__Group_6_1__0__Impl32277 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__1__Impl_in_rule__DtCSize__Group_6_1__132308 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__2_in_rule__DtCSize__Group_6_1__132311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_1__1__Impl32339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_1__2__Impl_in_rule__DtCSize__Group_6_1__232370 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__MsgI18nKeyAssignment_6_1_2_in_rule__DtCSize__Group_6_1__2__Impl32397 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__0__Impl_in_rule__DtCSize__Group_6_2__032433 = new BitSet(new long[]{0x0000000000000000L,0x000000E800000000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__1_in_rule__DtCSize__Group_6_2__032436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__0_in_rule__DtCSize__Group_6_2__0__Impl32463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2__1__Impl_in_rule__DtCSize__Group_6_2__132494 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__DtCSize__Group_6_2__1__Impl32522 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__0__Impl_in_rule__DtCSize__Group_6_2_0__032557 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__1_in_rule__DtCSize__Group_6_2_0__032560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_103_in_rule__DtCSize__Group_6_2_0__0__Impl32588 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__1__Impl_in_rule__DtCSize__Group_6_2_0__132619 = new BitSet(new long[]{0x0000000000000000L,0x00000000000001C0L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__2_in_rule__DtCSize__Group_6_2_0__132622 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__DtCSize__Group_6_2_0__1__Impl32650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__Group_6_2_0__2__Impl_in_rule__DtCSize__Group_6_2_0__232681 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__DtCSize__SeverityAssignment_6_2_0_2_in_rule__DtCSize__Group_6_2_0__2__Impl32708 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__0__Impl_in_rule__Enum__Group__032744 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group__1_in_rule__Enum__Group__032747 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_116_in_rule__Enum__Group__0__Impl32775 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__1__Impl_in_rule__Enum__Group__132806 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__2_in_rule__Enum__Group__132809 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__NameAssignment_1_in_rule__Enum__Group__1__Impl32836 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__2__Impl_in_rule__Enum__Group__232866 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group__3_in_rule__Enum__Group__232869 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__Enum__Group__2__Impl32897 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__3__Impl_in_rule__Enum__Group__332928 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__4_in_rule__Enum__Group__332931 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__LiteralsAssignment_3_in_rule__Enum__Group__3__Impl32958 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group__4__Impl_in_rule__Enum__Group__432988 = new BitSet(new long[]{0x0000000000000000L,0x0000000004400000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__5_in_rule__Enum__Group__432991 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__0_in_rule__Enum__Group__4__Impl33018 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+        public static final BitSet FOLLOW_rule__Enum__Group__5__Impl_in_rule__Enum__Group__533049 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__Enum__Group__5__Impl33077 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__0__Impl_in_rule__Enum__Group_4__033120 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__1_in_rule__Enum__Group_4__033123 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_90_in_rule__Enum__Group_4__0__Impl33151 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__Group_4__1__Impl_in_rule__Enum__Group_4__133182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__Enum__LiteralsAssignment_4_1_in_rule__Enum__Group_4__1__Impl33209 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__0__Impl_in_rule__EnumLiteral__Group__033243 = new BitSet(new long[]{0x0000000000000000L,0x0000000060000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__1_in_rule__EnumLiteral__Group__033246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__NameAssignment_0_in_rule__EnumLiteral__Group__0__Impl33273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group__1__Impl_in_rule__EnumLiteral__Group__133303 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__UnorderedGroup_1_in_rule__EnumLiteral__Group__1__Impl33330 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__0__Impl_in_rule__EnumLiteral__Group_1_0__033365 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__1_in_rule__EnumLiteral__Group_1_0__033368 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__EnumLiteral__Group_1_0__0__Impl33396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_0__1__Impl_in_rule__EnumLiteral__Group_1_0__133427 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__DefaultAssignment_1_0_1_in_rule__EnumLiteral__Group_1_0__1__Impl33454 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__0__Impl_in_rule__EnumLiteral__Group_1_1__033489 = new BitSet(new long[]{0x0000000000000000L,0x0000000060000000L,0x0000000000400000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__1_in_rule__EnumLiteral__Group_1_1__033492 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__NullAssignment_1_1_0_in_rule__EnumLiteral__Group_1_1__0__Impl33519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__1__Impl_in_rule__EnumLiteral__Group_1_1__133550 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__2_in_rule__EnumLiteral__Group_1_1__133553 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__EnumLiteral__Group_1_1__1__Impl33581 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1__2__Impl_in_rule__EnumLiteral__Group_1_1__233612 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__0_in_rule__EnumLiteral__Group_1_1__2__Impl33639 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__0__Impl_in_rule__EnumLiteral__Group_1_1_2__033676 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__1_in_rule__EnumLiteral__Group_1_1_2__033679 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__EnumLiteral__Group_1_1_2__0__Impl33707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__Group_1_1_2__1__Impl_in_rule__EnumLiteral__Group_1_1_2__133738 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__EnumLiteral__ValueAssignment_1_1_2_1_in_rule__EnumLiteral__Group_1_1_2__1__Impl33765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__Group__0__Impl_in_rule__AnnotationDef__Group__033799 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AnnotationDef__AnnotationAssignment_0_in_rule__AnnotationDef__Group__0__Impl33826 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__0__Impl_in_rule__AttributeMatchingConstraint__Group__033859 = new BitSet(new long[]{0x00021C4000000000L,0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__1_in_rule__AttributeMatchingConstraint__Group__033862 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__AttributeAssignment_0_in_rule__AttributeMatchingConstraint__Group__0__Impl33889 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__1__Impl_in_rule__AttributeMatchingConstraint__Group__133919 = new BitSet(new long[]{0x0000000000000110L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__2_in_rule__AttributeMatchingConstraint__Group__133922 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__ComparatorTypeAssignment_1_in_rule__AttributeMatchingConstraint__Group__1__Impl33949 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__2__Impl_in_rule__AttributeMatchingConstraint__Group__233979 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__3_in_rule__AttributeMatchingConstraint__Group__233982 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Alternatives_2_in_rule__AttributeMatchingConstraint__Group__2__Impl34009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__AttributeMatchingConstraint__Group__3__Impl_in_rule__AttributeMatchingConstraint__Group__334039 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_88_in_rule__AttributeMatchingConstraint__Group__3__Impl34068 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__0__Impl_in_rule__KeyAndValue__Group__034109 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__1_in_rule__KeyAndValue__Group__034112 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_117_in_rule__KeyAndValue__Group__0__Impl34140 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__1__Impl_in_rule__KeyAndValue__Group__134171 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__2_in_rule__KeyAndValue__Group__134174 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__KeyAndValue__Group__1__Impl34202 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__2__Impl_in_rule__KeyAndValue__Group__234233 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__3_in_rule__KeyAndValue__Group__234236 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets015 {
+        public static final BitSet FOLLOW_rule__KeyAndValue__KeyAssignment_2_in_rule__KeyAndValue__Group__2__Impl34263 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__3__Impl_in_rule__KeyAndValue__Group__334293 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__4_in_rule__KeyAndValue__Group__334296 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_118_in_rule__KeyAndValue__Group__3__Impl34324 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__4__Impl_in_rule__KeyAndValue__Group__434355 = new BitSet(new long[]{0x0000000000000100L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__5_in_rule__KeyAndValue__Group__434358 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__KeyAndValue__Group__4__Impl34386 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__Group__5__Impl_in_rule__KeyAndValue__Group__534417 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__KeyAndValue__ValueAssignment_5_in_rule__KeyAndValue__Group__5__Impl34444 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__0__Impl_in_rule__LQualifiedNameWithWildCard__Group__034486 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__1_in_rule__LQualifiedNameWithWildCard__Group__034489 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleQualifiedName_in_rule__LQualifiedNameWithWildCard__Group__0__Impl34516 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group__1__Impl_in_rule__LQualifiedNameWithWildCard__Group__134545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__0_in_rule__LQualifiedNameWithWildCard__Group__1__Impl34572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__0__Impl_in_rule__LQualifiedNameWithWildCard__Group_1__034607 = new BitSet(new long[]{0x0008000000000000L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__1_in_rule__LQualifiedNameWithWildCard__Group_1__034610 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LQualifiedNameWithWildCard__Group_1__0__Impl34638 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LQualifiedNameWithWildCard__Group_1__1__Impl_in_rule__LQualifiedNameWithWildCard__Group_1__134669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_51_in_rule__LQualifiedNameWithWildCard__Group_1__1__Impl34697 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LFQN__Group__0__Impl_in_rule__LFQN__Group__034732 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LFQN__Group__1_in_rule__LFQN__Group__034735 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__LFQN__Group__0__Impl34762 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LFQN__Group__1__Impl_in_rule__LFQN__Group__134791 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LFQN__Group_1__0_in_rule__LFQN__Group__1__Impl34818 = new BitSet(new long[]{0x0400000000000002L});
+        public static final BitSet FOLLOW_rule__LFQN__Group_1__0__Impl_in_rule__LFQN__Group_1__034853 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__LFQN__Group_1__1_in_rule__LFQN__Group_1__034856 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LFQN__Group_1__0__Impl34884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LFQN__Group_1__1__Impl_in_rule__LFQN__Group_1__134915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_ID_in_rule__LFQN__Group_1__1__Impl34942 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__0__Impl_in_rule__ValidIDWithKeywords__Group_5__034975 = new BitSet(new long[]{0x0000000000000000L,0x0100000000000000L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__1_in_rule__ValidIDWithKeywords__Group_5__034978 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_119_in_rule__ValidIDWithKeywords__Group_5__0__Impl35006 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__ValidIDWithKeywords__Group_5__1__Impl_in_rule__ValidIDWithKeywords__Group_5__135037 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_120_in_rule__ValidIDWithKeywords__Group_5__1__Impl35065 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__0__Impl_in_rule__LInt__Group__035104 = new BitSet(new long[]{0x0000000180000040L});
+        public static final BitSet FOLLOW_rule__LInt__Group__1_in_rule__LInt__Group__035107 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Alternatives_0_in_rule__LInt__Group__0__Impl35134 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LInt__Group__1__Impl_in_rule__LInt__Group__135165 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__LInt__Group__1__Impl35192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__0__Impl_in_rule__LDecimal__Group__035225 = new BitSet(new long[]{0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__1_in_rule__LDecimal__Group__035228 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleLInt_in_rule__LDecimal__Group__0__Impl35255 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group__1__Impl_in_rule__LDecimal__Group__135284 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__0_in_rule__LDecimal__Group__1__Impl35311 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__0__Impl_in_rule__LDecimal__Group_1__035346 = new BitSet(new long[]{0x0000000000000040L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__1_in_rule__LDecimal__Group_1__035349 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_58_in_rule__LDecimal__Group_1__0__Impl35377 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__LDecimal__Group_1__1__Impl_in_rule__LDecimal__Group_1__135408 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_RULE_INT_in_rule__LDecimal__Group_1__1__Impl35435 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__0__Impl_in_rule__XAnnotation__Group__035468 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1_in_rule__XAnnotation__Group__035471 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__1__Impl_in_rule__XAnnotation__Group__135529 = new BitSet(new long[]{0x0000000000000010L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2_in_rule__XAnnotation__Group__135532 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_121_in_rule__XAnnotation__Group__1__Impl35560 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__2__Impl_in_rule__XAnnotation__Group__235591 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3_in_rule__XAnnotation__Group__235594 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__AnnotationTypeAssignment_2_in_rule__XAnnotation__Group__2__Impl35621 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group__3__Impl_in_rule__XAnnotation__Group__335651 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0_in_rule__XAnnotation__Group__3__Impl35678 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__0__Impl_in_rule__XAnnotation__Group_3__035717 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00000860200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1_in_rule__XAnnotation__Group_3__035720 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_93_in_rule__XAnnotation__Group_3__0__Impl35749 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__1__Impl_in_rule__XAnnotation__Group_3__135781 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00000860200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2_in_rule__XAnnotation__Group_3__135784 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Alternatives_3_1_in_rule__XAnnotation__Group_3__1__Impl35811 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3__2__Impl_in_rule__XAnnotation__Group_3__235842 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__XAnnotation__Group_3__2__Impl35870 = 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__035907 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0__1_in_rule__XAnnotation__Group_3_1_0__035910 = 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__Impl35937 = 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__135967 = 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__Impl35994 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotation__Group_3_1_0_1__0__Impl_in_rule__XAnnotation__Group_3_1_0_1__036029 = 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__036032 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XAnnotation__Group_3_1_0_1__0__Impl36060 = 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__136091 = 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__Impl36118 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__0__Impl_in_rule__XAnnotationElementValuePair__Group__036152 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1_in_rule__XAnnotationElementValuePair__Group__036155 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0_in_rule__XAnnotationElementValuePair__Group__0__Impl36182 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group__1__Impl_in_rule__XAnnotationElementValuePair__Group__136212 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ValueAssignment_1_in_rule__XAnnotationElementValuePair__Group__1__Impl36239 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0__036273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0_in_rule__XAnnotationElementValuePair__Group_0__0__Impl36300 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__0__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__036332 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1_in_rule__XAnnotationElementValuePair__Group_0_0__036335 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__ElementAssignment_0_0_0_in_rule__XAnnotationElementValuePair__Group_0_0__0__Impl36362 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValuePair__Group_0_0__1__Impl_in_rule__XAnnotationElementValuePair__Group_0_0__136392 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__XAnnotationElementValuePair__Group_0_0__1__Impl36420 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__036455 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00004820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0__036458 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl36485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__136515 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00004820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0__136518 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl36545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0__236576 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl36604 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__036641 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl36668 = 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__036700 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+    }
+
+    protected static class FollowSets016 {
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__036703 = 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__136761 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__136764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl36792 = 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__236823 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl36851 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__036888 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__036891 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl36918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__136948 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl36975 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__037010 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__037013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl37041 = 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__137072 = 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__Impl37099 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__037133 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1__037136 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAnnotationOrExpression_in_rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl37163 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1__137192 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl37219 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__037254 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__037257 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__137315 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl37344 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0_in_rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl37356 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__037393 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__037396 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl37424 = 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__137455 = 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__Impl37482 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__0__Impl_in_rule__XAnnotationElementValue__Group_0__037516 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00004820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1_in_rule__XAnnotationElementValue__Group_0__037519 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0_in_rule__XAnnotationElementValue__Group_0__0__Impl37546 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__1__Impl_in_rule__XAnnotationElementValue__Group_0__137576 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00004820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2_in_rule__XAnnotationElementValue__Group_0__137579 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0_in_rule__XAnnotationElementValue__Group_0__1__Impl37606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0__2__Impl_in_rule__XAnnotationElementValue__Group_0__237637 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_102_in_rule__XAnnotationElementValue__Group_0__2__Impl37665 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0__0__Impl_in_rule__XAnnotationElementValue__Group_0_0__037702 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__0_in_rule__XAnnotationElementValue__Group_0_0__0__Impl37729 = 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__037761 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__1_in_rule__XAnnotationElementValue__Group_0_0_0__037764 = 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__137822 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_0_0__2_in_rule__XAnnotationElementValue__Group_0_0_0__137825 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XAnnotationElementValue__Group_0_0_0__1__Impl37853 = 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__237884 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_99_in_rule__XAnnotationElementValue__Group_0_0_0__2__Impl37912 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1__037949 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1_in_rule__XAnnotationElementValue__Group_0_1__037952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__ElementsAssignment_0_1_0_in_rule__XAnnotationElementValue__Group_0_1__0__Impl37979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1__1__Impl_in_rule__XAnnotationElementValue__Group_0_1__138009 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0_in_rule__XAnnotationElementValue__Group_0_1__1__Impl38036 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__0__Impl_in_rule__XAnnotationElementValue__Group_0_1_1__038071 = new BitSet(new long[]{0xF0801001800001F0L,0x4A00000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAnnotationElementValue__Group_0_1_1__1_in_rule__XAnnotationElementValue__Group_0_1_1__038074 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XAnnotationElementValue__Group_0_1_1__0__Impl38102 = 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__138133 = 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__Impl38160 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__0__Impl_in_rule__XAssignment__Group_0__038194 = new BitSet(new long[]{0xF000000000000010L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1_in_rule__XAssignment__Group_0__038197 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__1__Impl_in_rule__XAssignment__Group_0__138255 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2_in_rule__XAssignment__Group_0__138258 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__FeatureAssignment_0_1_in_rule__XAssignment__Group_0__1__Impl38285 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__2__Impl_in_rule__XAssignment__Group_0__238315 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3_in_rule__XAssignment__Group_0__238318 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XAssignment__Group_0__2__Impl38345 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_0__3__Impl_in_rule__XAssignment__Group_0__338374 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__ValueAssignment_0_3_in_rule__XAssignment__Group_0__3__Impl38401 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__0__Impl_in_rule__XAssignment__Group_1__038439 = new BitSet(new long[]{0x0000183E00000000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1_in_rule__XAssignment__Group_1__038442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOrExpression_in_rule__XAssignment__Group_1__0__Impl38469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1__1__Impl_in_rule__XAssignment__Group_1__138498 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0_in_rule__XAssignment__Group_1__1__Impl38525 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__0__Impl_in_rule__XAssignment__Group_1_1__038560 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1_in_rule__XAssignment__Group_1_1__038563 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0__0_in_rule__XAssignment__Group_1_1__0__Impl38590 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1__1__Impl_in_rule__XAssignment__Group_1_1__138620 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAssignment__RightOperandAssignment_1_1_1_in_rule__XAssignment__Group_1_1__1__Impl38647 = 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__038681 = 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__Impl38708 = 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__038740 = new BitSet(new long[]{0x0000183E00000000L});
+        public static final BitSet FOLLOW_rule__XAssignment__Group_1_1_0_0__1_in_rule__XAssignment__Group_1_1_0_0__038743 = 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__138801 = 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__Impl38828 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__0__Impl_in_rule__OpMultiAssign__Group_5__038862 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1_in_rule__OpMultiAssign__Group_5__038865 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpMultiAssign__Group_5__0__Impl38893 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__1__Impl_in_rule__OpMultiAssign__Group_5__138924 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2_in_rule__OpMultiAssign__Group_5__138927 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpMultiAssign__Group_5__1__Impl38955 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_5__2__Impl_in_rule__OpMultiAssign__Group_5__238986 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpMultiAssign__Group_5__2__Impl39014 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__0__Impl_in_rule__OpMultiAssign__Group_6__039051 = new BitSet(new long[]{0x00000C0000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1_in_rule__OpMultiAssign__Group_6__039054 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpMultiAssign__Group_6__0__Impl39082 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__1__Impl_in_rule__OpMultiAssign__Group_6__139113 = new BitSet(new long[]{0x00000C0000000000L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2_in_rule__OpMultiAssign__Group_6__139116 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpMultiAssign__Group_6__1__Impl39145 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpMultiAssign__Group_6__2__Impl_in_rule__OpMultiAssign__Group_6__239178 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_42_in_rule__OpMultiAssign__Group_6__2__Impl39206 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets017 {
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__0__Impl_in_rule__XOrExpression__Group__039243 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1_in_rule__XOrExpression__Group__039246 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAndExpression_in_rule__XOrExpression__Group__0__Impl39273 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group__1__Impl_in_rule__XOrExpression__Group__139302 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0_in_rule__XOrExpression__Group__1__Impl39329 = new BitSet(new long[]{0x0000000000004002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__0__Impl_in_rule__XOrExpression__Group_1__039364 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1_in_rule__XOrExpression__Group_1__039367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0_in_rule__XOrExpression__Group_1__0__Impl39394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1__1__Impl_in_rule__XOrExpression__Group_1__139424 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__RightOperandAssignment_1_1_in_rule__XOrExpression__Group_1__1__Impl39451 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0__0__Impl_in_rule__XOrExpression__Group_1_0__039485 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__0_in_rule__XOrExpression__Group_1_0__0__Impl39512 = 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__039544 = new BitSet(new long[]{0x0000000000004000L});
+        public static final BitSet FOLLOW_rule__XOrExpression__Group_1_0_0__1_in_rule__XOrExpression__Group_1_0_0__039547 = 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__139605 = 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__Impl39632 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__0__Impl_in_rule__XAndExpression__Group__039666 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1_in_rule__XAndExpression__Group__039669 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXEqualityExpression_in_rule__XAndExpression__Group__0__Impl39696 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group__1__Impl_in_rule__XAndExpression__Group__139725 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0_in_rule__XAndExpression__Group__1__Impl39752 = new BitSet(new long[]{0x0000000000008002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__0__Impl_in_rule__XAndExpression__Group_1__039787 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1_in_rule__XAndExpression__Group_1__039790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0_in_rule__XAndExpression__Group_1__0__Impl39817 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1__1__Impl_in_rule__XAndExpression__Group_1__139847 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__RightOperandAssignment_1_1_in_rule__XAndExpression__Group_1__1__Impl39874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0__0__Impl_in_rule__XAndExpression__Group_1_0__039908 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__0_in_rule__XAndExpression__Group_1_0__0__Impl39935 = 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__039967 = new BitSet(new long[]{0x0000000000008000L});
+        public static final BitSet FOLLOW_rule__XAndExpression__Group_1_0_0__1_in_rule__XAndExpression__Group_1_0_0__039970 = 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__140028 = 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__Impl40055 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__0__Impl_in_rule__XEqualityExpression__Group__040089 = new BitSet(new long[]{0x000003C000000000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1_in_rule__XEqualityExpression__Group__040092 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXRelationalExpression_in_rule__XEqualityExpression__Group__0__Impl40119 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group__1__Impl_in_rule__XEqualityExpression__Group__140148 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0_in_rule__XEqualityExpression__Group__1__Impl40175 = new BitSet(new long[]{0x000003C000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__0__Impl_in_rule__XEqualityExpression__Group_1__040210 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1_in_rule__XEqualityExpression__Group_1__040213 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0_in_rule__XEqualityExpression__Group_1__0__Impl40240 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1__1__Impl_in_rule__XEqualityExpression__Group_1__140270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__RightOperandAssignment_1_1_in_rule__XEqualityExpression__Group_1__1__Impl40297 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0__0__Impl_in_rule__XEqualityExpression__Group_1_0__040331 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__0_in_rule__XEqualityExpression__Group_1_0__0__Impl40358 = 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__040390 = new BitSet(new long[]{0x000003C000000000L});
+        public static final BitSet FOLLOW_rule__XEqualityExpression__Group_1_0_0__1_in_rule__XEqualityExpression__Group_1_0_0__040393 = 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__140451 = 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__Impl40478 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__0__Impl_in_rule__XRelationalExpression__Group__040512 = new BitSet(new long[]{0x00001C0000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1_in_rule__XRelationalExpression__Group__040515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXOtherOperatorExpression_in_rule__XRelationalExpression__Group__0__Impl40542 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group__1__Impl_in_rule__XRelationalExpression__Group__140571 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Alternatives_1_in_rule__XRelationalExpression__Group__1__Impl40598 = new BitSet(new long[]{0x00001C0000000002L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__0__Impl_in_rule__XRelationalExpression__Group_1_0__040633 = new BitSet(new long[]{0x0001000000000010L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1_in_rule__XRelationalExpression__Group_1_0__040636 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0__0_in_rule__XRelationalExpression__Group_1_0__0__Impl40663 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0__1__Impl_in_rule__XRelationalExpression__Group_1_0__140693 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__TypeAssignment_1_0_1_in_rule__XRelationalExpression__Group_1_0__1__Impl40720 = 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__040754 = 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__Impl40781 = 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__040813 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_0_0_0__1_in_rule__XRelationalExpression__Group_1_0_0_0__040816 = 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__140874 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_124_in_rule__XRelationalExpression__Group_1_0_0_0__1__Impl40902 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__0__Impl_in_rule__XRelationalExpression__Group_1_1__040937 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1_in_rule__XRelationalExpression__Group_1_1__040940 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0__0_in_rule__XRelationalExpression__Group_1_1__0__Impl40967 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1__1__Impl_in_rule__XRelationalExpression__Group_1_1__140997 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__RightOperandAssignment_1_1_1_in_rule__XRelationalExpression__Group_1_1__1__Impl41024 = 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__041058 = 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__Impl41085 = 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__041117 = new BitSet(new long[]{0x00001C0000000000L,0x1000000000000000L});
+        public static final BitSet FOLLOW_rule__XRelationalExpression__Group_1_1_0_0__1_in_rule__XRelationalExpression__Group_1_1_0_0__041120 = 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__141178 = 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__Impl41205 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__0__Impl_in_rule__OpCompare__Group_1__041239 = new BitSet(new long[]{0x0000000000002000L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1_in_rule__OpCompare__Group_1__041242 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpCompare__Group_1__0__Impl41270 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpCompare__Group_1__1__Impl_in_rule__OpCompare__Group_1__141301 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_13_in_rule__OpCompare__Group_1__1__Impl41329 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__0__Impl_in_rule__XOtherOperatorExpression__Group__041364 = new BitSet(new long[]{0x0007F80000000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1_in_rule__XOtherOperatorExpression__Group__041367 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXAdditiveExpression_in_rule__XOtherOperatorExpression__Group__0__Impl41394 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group__1__Impl_in_rule__XOtherOperatorExpression__Group__141423 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0_in_rule__XOtherOperatorExpression__Group__1__Impl41450 = new BitSet(new long[]{0x0007F80000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__0__Impl_in_rule__XOtherOperatorExpression__Group_1__041485 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1_in_rule__XOtherOperatorExpression__Group_1__041488 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0_in_rule__XOtherOperatorExpression__Group_1__0__Impl41515 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1__1__Impl_in_rule__XOtherOperatorExpression__Group_1__141545 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__RightOperandAssignment_1_1_in_rule__XOtherOperatorExpression__Group_1__1__Impl41572 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0__0__Impl_in_rule__XOtherOperatorExpression__Group_1_0__041606 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__0_in_rule__XOtherOperatorExpression__Group_1_0__0__Impl41633 = 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__041665 = new BitSet(new long[]{0x0007F80000000000L});
+        public static final BitSet FOLLOW_rule__XOtherOperatorExpression__Group_1_0_0__1_in_rule__XOtherOperatorExpression__Group_1_0_0__041668 = 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__141726 = 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__Impl41753 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__0__Impl_in_rule__OpOther__Group_2__041787 = new BitSet(new long[]{0x0000800000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1_in_rule__OpOther__Group_2__041790 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_2__0__Impl41818 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_2__1__Impl_in_rule__OpOther__Group_2__141849 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets018 {
+        public static final BitSet FOLLOW_47_in_rule__OpOther__Group_2__1__Impl41877 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__0__Impl_in_rule__OpOther__Group_5__041912 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1_in_rule__OpOther__Group_5__041915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5__0__Impl41943 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5__1__Impl_in_rule__OpOther__Group_5__141974 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_5_1_in_rule__OpOther__Group_5__1__Impl42001 = 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__042035 = 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__Impl42062 = 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__042094 = new BitSet(new long[]{0x0000080000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_5_1_0_0__1_in_rule__OpOther__Group_5_1_0_0__042097 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5_1_0_0__0__Impl42125 = 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__142156 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__OpOther__Group_5_1_0_0__1__Impl42184 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__0__Impl_in_rule__OpOther__Group_6__042219 = new BitSet(new long[]{0x0001100000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1_in_rule__OpOther__Group_6__042222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6__0__Impl42250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6__1__Impl_in_rule__OpOther__Group_6__142281 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__OpOther__Alternatives_6_1_in_rule__OpOther__Group_6__1__Impl42308 = 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__042342 = 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__Impl42369 = 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__042401 = new BitSet(new long[]{0x0000100000000000L});
+        public static final BitSet FOLLOW_rule__OpOther__Group_6_1_0_0__1_in_rule__OpOther__Group_6_1_0_0__042404 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6_1_0_0__0__Impl42432 = 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__142463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__OpOther__Group_6_1_0_0__1__Impl42491 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__0__Impl_in_rule__XAdditiveExpression__Group__042526 = new BitSet(new long[]{0x0000000180000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1_in_rule__XAdditiveExpression__Group__042529 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMultiplicativeExpression_in_rule__XAdditiveExpression__Group__0__Impl42556 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group__1__Impl_in_rule__XAdditiveExpression__Group__142585 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0_in_rule__XAdditiveExpression__Group__1__Impl42612 = new BitSet(new long[]{0x0000000180000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__0__Impl_in_rule__XAdditiveExpression__Group_1__042647 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1_in_rule__XAdditiveExpression__Group_1__042650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0_in_rule__XAdditiveExpression__Group_1__0__Impl42677 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1__1__Impl_in_rule__XAdditiveExpression__Group_1__142707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__RightOperandAssignment_1_1_in_rule__XAdditiveExpression__Group_1__1__Impl42734 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0__0__Impl_in_rule__XAdditiveExpression__Group_1_0__042768 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__0_in_rule__XAdditiveExpression__Group_1_0__0__Impl42795 = 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__042827 = new BitSet(new long[]{0x0000000180000000L});
+        public static final BitSet FOLLOW_rule__XAdditiveExpression__Group_1_0_0__1_in_rule__XAdditiveExpression__Group_1_0_0__042830 = 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__142888 = 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__Impl42915 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__0__Impl_in_rule__XMultiplicativeExpression__Group__042949 = new BitSet(new long[]{0x0078000000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1_in_rule__XMultiplicativeExpression__Group__042952 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXUnaryOperation_in_rule__XMultiplicativeExpression__Group__0__Impl42979 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group__1__Impl_in_rule__XMultiplicativeExpression__Group__143008 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0_in_rule__XMultiplicativeExpression__Group__1__Impl43035 = new BitSet(new long[]{0x0078000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__0__Impl_in_rule__XMultiplicativeExpression__Group_1__043070 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1_in_rule__XMultiplicativeExpression__Group_1__043073 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0_in_rule__XMultiplicativeExpression__Group_1__0__Impl43100 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1__1__Impl_in_rule__XMultiplicativeExpression__Group_1__143130 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__RightOperandAssignment_1_1_in_rule__XMultiplicativeExpression__Group_1__1__Impl43157 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0__0__Impl_in_rule__XMultiplicativeExpression__Group_1_0__043191 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__0_in_rule__XMultiplicativeExpression__Group_1_0__0__Impl43218 = 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__043250 = new BitSet(new long[]{0x0078000000000000L});
+        public static final BitSet FOLLOW_rule__XMultiplicativeExpression__Group_1_0_0__1_in_rule__XMultiplicativeExpression__Group_1_0_0__043253 = 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__143311 = 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__Impl43338 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__0__Impl_in_rule__XUnaryOperation__Group_0__043372 = new BitSet(new long[]{0x0080000180000000L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1_in_rule__XUnaryOperation__Group_0__043375 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__1__Impl_in_rule__XUnaryOperation__Group_0__143433 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2_in_rule__XUnaryOperation__Group_0__143436 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__FeatureAssignment_0_1_in_rule__XUnaryOperation__Group_0__1__Impl43463 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__Group_0__2__Impl_in_rule__XUnaryOperation__Group_0__243493 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XUnaryOperation__OperandAssignment_0_2_in_rule__XUnaryOperation__Group_0__2__Impl43520 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__0__Impl_in_rule__XCastedExpression__Group__043556 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1_in_rule__XCastedExpression__Group__043559 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPostfixOperation_in_rule__XCastedExpression__Group__0__Impl43586 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group__1__Impl_in_rule__XCastedExpression__Group__143615 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0_in_rule__XCastedExpression__Group__1__Impl43642 = new BitSet(new long[]{0x0000000000000002L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__0__Impl_in_rule__XCastedExpression__Group_1__043677 = new BitSet(new long[]{0x0001000000000010L,0x0000000020000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1_in_rule__XCastedExpression__Group_1__043680 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0_in_rule__XCastedExpression__Group_1__0__Impl43707 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1__1__Impl_in_rule__XCastedExpression__Group_1__143737 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__TypeAssignment_1_1_in_rule__XCastedExpression__Group_1__1__Impl43764 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0__0__Impl_in_rule__XCastedExpression__Group_1_0__043798 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__0_in_rule__XCastedExpression__Group_1_0__0__Impl43825 = 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__043857 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+        public static final BitSet FOLLOW_rule__XCastedExpression__Group_1_0_0__1_in_rule__XCastedExpression__Group_1_0_0__043860 = 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__143918 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_125_in_rule__XCastedExpression__Group_1_0_0__1__Impl43946 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__0__Impl_in_rule__XPostfixOperation__Group__043981 = new BitSet(new long[]{0x0300000000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1_in_rule__XPostfixOperation__Group__043984 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXMemberFeatureCall_in_rule__XPostfixOperation__Group__0__Impl44011 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group__1__Impl_in_rule__XPostfixOperation__Group__144040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0_in_rule__XPostfixOperation__Group__1__Impl44067 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1__0__Impl_in_rule__XPostfixOperation__Group_1__044102 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0_in_rule__XPostfixOperation__Group_1__0__Impl44129 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__0__Impl_in_rule__XPostfixOperation__Group_1_0__044161 = new BitSet(new long[]{0x0300000000000000L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1_in_rule__XPostfixOperation__Group_1_0__044164 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__Group_1_0__1__Impl_in_rule__XPostfixOperation__Group_1_0__144222 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XPostfixOperation__FeatureAssignment_1_0_1_in_rule__XPostfixOperation__Group_1_0__1__Impl44249 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__0__Impl_in_rule__XMemberFeatureCall__Group__044283 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1_in_rule__XMemberFeatureCall__Group__044286 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleXPrimaryExpression_in_rule__XMemberFeatureCall__Group__0__Impl44313 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group__1__Impl_in_rule__XMemberFeatureCall__Group__144342 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Alternatives_1_in_rule__XMemberFeatureCall__Group__1__Impl44369 = new BitSet(new long[]{0x0400000000000002L,0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__0__Impl_in_rule__XMemberFeatureCall__Group_1_0__044404 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1_in_rule__XMemberFeatureCall__Group_1_0__044407 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0__0_in_rule__XMemberFeatureCall__Group_1_0__0__Impl44434 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0__1__Impl_in_rule__XMemberFeatureCall__Group_1_0__144464 = new BitSet(new long[]{0x0000000000000002L});
+    }
+
+    protected static class FollowSets019 {
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__ValueAssignment_1_0_1_in_rule__XMemberFeatureCall__Group_1_0__1__Impl44491 = 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__044525 = 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__Impl44552 = 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__044584 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000000800000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__1_in_rule__XMemberFeatureCall__Group_1_0_0_0__044587 = 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__144645 = new BitSet(new long[]{0xF000000000000010L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_0_0_0__2_in_rule__XMemberFeatureCall__Group_1_0_0_0__144648 = 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__Impl44675 = 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__244705 = 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__244708 = 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__Impl44735 = 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__344765 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_ruleOpSingleAssign_in_rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl44792 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__0__Impl_in_rule__XMemberFeatureCall__Group_1_1__044829 = new BitSet(new long[]{0xF000100000000010L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1_in_rule__XMemberFeatureCall__Group_1_1__044832 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0__0_in_rule__XMemberFeatureCall__Group_1_1__0__Impl44859 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__1__Impl_in_rule__XMemberFeatureCall__Group_1_1__144889 = new BitSet(new long[]{0xF000100000000010L,0x0000000000000001L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2_in_rule__XMemberFeatureCall__Group_1_1__144892 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__0_in_rule__XMemberFeatureCall__Group_1_1__1__Impl44919 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__2__Impl_in_rule__XMemberFeatureCall__Group_1_1__244950 = new BitSet(new long[]{0x0000000000000000L,0x0000000820000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3_in_rule__XMemberFeatureCall__Group_1_1__244953 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__FeatureAssignment_1_1_2_in_rule__XMemberFeatureCall__Group_1_1__2__Impl44980 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1__345010 = new BitSet(new long[]{0x0000000000000000L,0x0000000820000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4_in_rule__XMemberFeatureCall__Group_1_1__345013 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__0_in_rule__XMemberFeatureCall__Group_1_1__3__Impl45040 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1__4__Impl_in_rule__XMemberFeatureCall__Group_1_1__445071 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4_in_rule__XMemberFeatureCall__Group_1_1__4__Impl45098 = 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__045139 = 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__Impl45166 = 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__045198 = new BitSet(new long[]{0x0400000000000000L,0x0000000000000000L,0x0000000001800000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_0_0__1_in_rule__XMemberFeatureCall__Group_1_1_0_0__045201 = 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__145259 = 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__Impl45286 = 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__045320 = new BitSet(new long[]{0x0001000000000010L,0x0000000020020000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_1__045323 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_44_in_rule__XMemberFeatureCall__Group_1_1_1__0__Impl45351 = 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__145382 = new BitSet(new long[]{0x0000080000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__2_in_rule__XMemberFeatureCall__Group_1_1_1__145385 = 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__Impl45412 = 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__245442 = new BitSet(new long[]{0x0000080000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3_in_rule__XMemberFeatureCall__Group_1_1_1__245445 = 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__Impl45472 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1__3__Impl_in_rule__XMemberFeatureCall__Group_1_1_1__345503 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_43_in_rule__XMemberFeatureCall__Group_1_1_1__3__Impl45531 = 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__045570 = new BitSet(new long[]{0x0001000000000010L,0x0000000020020000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_1_2__1_in_rule__XMemberFeatureCall__Group_1_1_1_2__045573 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl45601 = 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__145632 = 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__Impl45659 = 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__045693 = new BitSet(new long[]{0xF0811001800001F0L,0x4800000860200003L,0x0000000006005FF1L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__1_in_rule__XMemberFeatureCall__Group_1_1_3__045696 = 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__Impl45723 = 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__145753 = new BitSet(new long[]{0xF0811001800001F0L,0x4800000860200003L,0x0000000006005FF1L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3__2_in_rule__XMemberFeatureCall__Group_1_1_3__145756 = 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__Impl45783 = 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__245814 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_94_in_rule__XMemberFeatureCall__Group_1_1_3__2__Impl45842 = 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__045879 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XMemberFeatureCall__Group_1_1_3_1_1__1_in_rule__XMemberFeatureCall__Group_1_1_3_1_1__045882 = 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__Impl45909 = 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__145939 = new BitSet(new long[]{0x0000000000000002L});
+        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__Impl45966 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        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__046001 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        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__046004 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl46032 = 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__146063 = 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__Impl46090 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__0__Impl_in_rule__XSetLiteral__Group__046124 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1_in_rule__XSetLiteral__Group__046127 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__1__Impl_in_rule__XSetLiteral__Group__146185 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2_in_rule__XSetLiteral__Group__146188 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_123_in_rule__XSetLiteral__Group__1__Impl46216 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__2__Impl_in_rule__XSetLiteral__Group__246247 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820600003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3_in_rule__XSetLiteral__Group__246250 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_85_in_rule__XSetLiteral__Group__2__Impl46278 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__3__Impl_in_rule__XSetLiteral__Group__346309 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820600003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4_in_rule__XSetLiteral__Group__346312 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0_in_rule__XSetLiteral__Group__3__Impl46339 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group__4__Impl_in_rule__XSetLiteral__Group__446370 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_86_in_rule__XSetLiteral__Group__4__Impl46398 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__0__Impl_in_rule__XSetLiteral__Group_3__046439 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1_in_rule__XSetLiteral__Group_3__046442 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_0_in_rule__XSetLiteral__Group_3__0__Impl46469 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3__1__Impl_in_rule__XSetLiteral__Group_3__146499 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0_in_rule__XSetLiteral__Group_3__1__Impl46526 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__0__Impl_in_rule__XSetLiteral__Group_3_1__046561 = new BitSet(new long[]{0xF0801001800001F0L,0x4800000820200003L,0x0000000004005FF1L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1_in_rule__XSetLiteral__Group_3_1__046564 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_122_in_rule__XSetLiteral__Group_3_1__0__Impl46592 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__Group_3_1__1__Impl_in_rule__XSetLiteral__Group_3_1__146623 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XSetLiteral__ElementsAssignment_3_1_1_in_rule__XSetLiteral__Group_3_1__1__Impl46650 = new BitSet(new long[]{0x0000000000000002L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__0__Impl_in_rule__XListLiteral__Group__046684 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
+        public static final BitSet FOLLOW_rule__XListLiteral__Group__1_in_rule__XListLiteral__Group__046687 = new BitSet(new long[]{0x0000000000000002L});
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/internal/ServicesGrammarActivator.java b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/internal/ServicesGrammarActivator.java
new file mode 100644
index 0000000..4101835
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src-gen/org/eclipse/osbp/dsl/services/xtext/ui/internal/ServicesGrammarActivator.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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 ServicesGrammarActivator extends AbstractUIPlugin {
+	
+	public static final String ORG_ECLIPSE_OSBP_DSL_SERVICES_XTEXT_SERVICESGRAMMAR = "org.eclipse.osbp.dsl.services.xtext.ServicesGrammar";
+	
+	private static final Logger logger = Logger.getLogger(ServicesGrammarActivator.class);
+	
+	private static ServicesGrammarActivator 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 ServicesGrammarActivator 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_DSL_SERVICES_XTEXT_SERVICESGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.services.xtext.ServicesGrammarRuntimeModule();
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_DSL_SERVICES_XTEXT_SERVICESGRAMMAR.equals(grammar)) {
+			return new org.eclipse.osbp.dsl.services.xtext.ui.ServicesGrammarUiModule(this);
+		}
+		
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/ServicesGrammarUiModule.java b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/ServicesGrammarUiModule.java
new file mode 100644
index 0000000..8001a6f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/ServicesGrammarUiModule.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.ui;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
+/**
+ * Use this class to register components to be used within the IDE.
+ */
+public class ServicesGrammarUiModule extends org.eclipse.osbp.dsl.services.xtext.ui.AbstractServicesGrammarUiModule {
+	public ServicesGrammarUiModule(AbstractUIPlugin plugin) {
+		super(plugin);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/ServicesGrammarProposalProvider.java b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/ServicesGrammarProposalProvider.java
new file mode 100644
index 0000000..2ea0a0e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/contentassist/ServicesGrammarProposalProvider.java
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.ui.contentassist;
+
+/**
+ * see http://www.eclipse.org/Xtext/documentation.html#contentAssist on how to customize content assistant
+ */
+public class ServicesGrammarProposalProvider extends org.eclipse.osbp.dsl.services.xtext.ui.contentassist.AbstractServicesGrammarProposalProvider {
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/outline/ServicesGrammarOutlineTreeProvider.java b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/outline/ServicesGrammarOutlineTreeProvider.java
new file mode 100644
index 0000000..5126e7b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/outline/ServicesGrammarOutlineTreeProvider.java
@@ -0,0 +1,38 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.services.xtext.ui.outline;
+
+import org.eclipse.xtext.ui.editor.model.IXtextDocument;
+import org.eclipse.xtext.ui.editor.outline.IOutlineNode;
+import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode;
+import org.eclipse.xtext.util.TextRegion;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.ui.FastDocumentRootNode;
+
+/**
+ * Customization of the default outline structure.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#outline
+ */
+public class ServicesGrammarOutlineTreeProvider extends
+		org.eclipse.xtext.ui.editor.outline.impl.DefaultOutlineTreeProvider {
+
+	public IOutlineNode createRoot(IXtextDocument document) {
+		DocumentRootNode documentNode = new FastDocumentRootNode(
+				labelProvider.getImage(document),
+				labelProvider.getText(document), document, this);
+		documentNode.setTextRegion(new TextRegion(0, document.getLength()));
+		return documentNode;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/quickfix/ServicesGrammarQuickfixProvider.java b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/quickfix/ServicesGrammarQuickfixProvider.java
new file mode 100644
index 0000000..604bff2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext.ui/src/org/eclipse/osbp/dsl/services/xtext/ui/quickfix/ServicesGrammarQuickfixProvider.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.ui.quickfix;
+
+/**
+ * Custom quickfixes.
+ *
+ * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
+ */
+public class ServicesGrammarQuickfixProvider extends org.eclipse.osbp.dsl.common.xtext.ui.quickfix.CommonGrammarQuickfixProvider {
+
+//	@Fix(MyJavaValidator.INVALID_NAME)
+//	public void capitalizeName(final Issue issue, IssueResolutionAcceptor acceptor) {
+//		acceptor.accept(issue, "Capitalize name", "Capitalize the name.", "upcase.png", new IModification() {
+//			public void apply(IModificationContext context) throws BadLocationException {
+//				IXtextDocument xtextDocument = context.getXtextDocument();
+//				String firstLetter = xtextDocument.get(issue.getOffset(), 1);
+//				xtextDocument.replace(issue.getOffset(), 1, firstLetter.toUpperCase());
+//			}
+//		});
+//	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/.project b/org.eclipse.osbp.dsl.services.xtext/.project
new file mode 100644
index 0000000..c8b76cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.services.xtext</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.services.xtext/LICENSE.txt b/org.eclipse.osbp.dsl.services.xtext/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/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.dsl.services.xtext/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.services.xtext/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5dec3d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/META-INF/MANIFEST.MF
@@ -0,0 +1,82 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-Vendor: Eclipse OSBP
+Bundle-Localization: plugin
+Bundle-Version: 0.9.0.qualifier
+Bundle-ClassPath: .
+Bundle-SymbolicName: org.eclipse.osbp.dsl.services.xtext;singleton:=true
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)";resolution:=optional;visibility:=reexport,
+ org.eclipse.xtext.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.apache.commons.logging;bundle-version="1.0.4";resolution:=optional,
+ org.eclipse.emf.codegen.ecore;resolution:=optional,
+ org.eclipse.emf.mwe.utils;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;resolution:=optional,
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.emf.ecore.xcore;bundle-version="1.1.1";resolution:=optional,
+ org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.antlr.runtime,
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.emf.ecore.xcore.lib,
+ org.apache.commons.lang;bundle-version="2.6.0",
+ org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.dto.lib;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)"
+Import-Package: javax.persistence;version="2.1.0",
+ org.apache.log4j,
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.services.xtext;version="0.9.0";
+  uses:="org.eclipse.xtext,
+   org.eclipse.xtext.xtype,
+   org.eclipse.xtext.service,
+   org.eclipse.xtext.common.types,
+   com.google.inject",
+ org.eclipse.osbp.dsl.services.xtext.jvmmodel;version="0.9.0";
+  uses:="org.eclipse.osbp.dsl.xtext.lazyresolver,
+   org.eclipse.emf.ecore,
+   org.eclipse.osbp.dsl.semantic.service,
+   org.eclipse.xtext.xbase.jvmmodel,
+   org.eclipse.xtext.common.types,
+   org.slf4j",
+ org.eclipse.osbp.dsl.services.xtext.parser.antlr;version="0.9.0";
+  uses:="org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal,
+   org.eclipse.xtext.parser.antlr,
+   org.eclipse.osbp.dsl.services.xtext.services",
+ org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal;version="0.9.0";
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.common.util,
+   org.antlr.runtime,
+   org.eclipse.xtext.parser.antlr,
+   org.eclipse.osbp.dsl.services.xtext.services",
+ org.eclipse.osbp.dsl.services.xtext.serializer;version="0.9.0";
+  uses:="org.eclipse.xtext,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.serializer.sequencer,
+   org.eclipse.osbp.dsl.semantic.service,
+   org.eclipse.xtext.serializer.analysis,
+   org.eclipse.osbp.dsl.services.xtext.services,
+   org.eclipse.xtext.nodemodel,
+   org.eclipse.osbp.dsl.common.xtext.serializer",
+ org.eclipse.osbp.dsl.services.xtext.services;version="0.9.0";
+  uses:="org.eclipse.xtext,
+   org.eclipse.xtext.xbase.services,
+   org.eclipse.xtext.service,
+   org.eclipse.xtext.xbase.annotations.services,
+   org.eclipse.osbp.dsl.common.xtext.services",
+ org.eclipse.osbp.dsl.services.xtext.validation;version="0.9.0";
+  uses:="org.eclipse.osbp.dsl.common.xtext.validation",
+ org.eclipse.osbp.dsl.semantic.service,
+ org.eclipse.osbp.dsl.semantic.service.impl,
+ org.eclipse.osbp.dsl.semantic.service.util
+Service-Component: component.xml
diff --git a/org.eclipse.osbp.dsl.services.xtext/about.html b/org.eclipse.osbp.dsl.services.xtext/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/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.dsl.services.xtext/about.ini b/org.eclipse.osbp.dsl.services.xtext/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/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.dsl.services.xtext/about.mappings b/org.eclipse.osbp.dsl.services.xtext/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/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.dsl.services.xtext/about.properties b/org.eclipse.osbp.dsl.services.xtext/about.properties
new file mode 100644
index 0000000..53e0584
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.services.xtext
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.services.xtext/build.properties b/org.eclipse.osbp.dsl.services.xtext/build.properties
new file mode 100644
index 0000000..84ffe1f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/build.properties
@@ -0,0 +1,13 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               component.xml,\
+               LICENSE.txt,\
+               license.html,\
+               plugin.xml,\
+               plugin.properties,\
+               model/
+source.. = src/,\
+           src-gen/,\
+           xtend-gen/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt
diff --git a/org.eclipse.osbp.dsl.services.xtext/component.xml b/org.eclipse.osbp.dsl.services.xtext/component.xml
new file mode 100644
index 0000000..1d60594
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/component.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.services.xtext">
+   <implementation class="Component"/>
+   <service>
+      <provide interface="org.eclipse.xtext.naming.IQualifiedNameProvider"/>
+   </service>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.services.xtext/license.html b/org.eclipse.osbp.dsl.services.xtext/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/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.dsl.services.xtext/model/services.xcore b/org.eclipse.osbp.dsl.services.xtext/model/services.xcore
new file mode 100644
index 0000000..730d182
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/model/services.xcore
@@ -0,0 +1,88 @@
+@GenModel(fileExtensions="service", modelDirectory= "/org.eclipse.osbp.dsl.services.xtext/src-gen", editDirectory="/org.eclipse.osbp.dsl.services.xtext.edit/src", childCreationExtenders="true")
+@GenModel(modelName="Service")
+@GenModel(prefix="OSBPService")
+@GenModel(suppressEMFModelTags="true")
+@GenModel(runtimeVersion="2.9")
+@GenModel(copyrightText="Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ All rights reserved. This program and the accompanying materials 
+ are made available under the terms of the Eclipse Public License v1.0 
+ which accompanies this distribution, and is available at 
+ http://www.eclipse.org/legal/epl-v10.html 
+
+ Based on ideas from Xtext, Xtend, Xcore
+  
+ Contributors:  
+ 		Florian Pirchner - Initial implementation
+ ")
+@GenModel(operationReflection="false")
+@Ecore(nsURI="http://osbp.eclipse.org/dsl/services/v1")
+@Ecore(nsPrefix="services")
+@Ecore(rootPackage="services")
+package org.eclipse.osbp.dsl.semantic.service
+
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.osbp.dsl.semantic.common.types.LClass
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature
+
+class LServiceModel extends LLazyResolver {
+	contains LTypedPackage[] packages
+}
+
+abstract class LService extends LClass {
+	contains LInjectedServices injectedServices
+	contains LServiceOperation[*] operations
+}
+
+class LInjectedServices extends LLazyResolver {
+	contains LInjectedService[*] services
+}
+
+class LInjectedService extends LLazyResolver {
+	LCardinality cardinality
+	String attributeName
+	contains JvmTypeReference service
+}
+
+class LDTOService extends LService {
+	refers LDto dto
+	contains transient JvmTypeReference dtoJvm
+	boolean mutablePersistenceId
+	String persistenceId
+	contains LValidator[*] validators
+	contains LFilterableAttributes filterable opposite parent
+	contains LSortableAttributes sortable opposite parent
+}
+
+class LValidator extends LLazyResolver {
+	String validatorId
+	contains JvmTypeReference validatorType
+}
+
+class LFilterableAttributes extends LLazyResolver {
+	refers LDTOService parent opposite filterable
+	refers LDtoFeature[*] filterableFeatures
+}
+
+class LSortableAttributes extends LLazyResolver {
+	refers LDTOService parent opposite sortable
+	refers LDtoFeature[*] sortableFeatures
+}
+
+class LChartService extends LService {
+}
+
+class LFreeService extends LService {
+}
+
+enum LCardinality {
+	ZERO_TO_ONE
+	, ONE_TO_ONE
+	, ZERO_TO_MANY
+	, ONE_TO_MANY
+}
+
+class LServiceOperation extends org.eclipse.osbp.dsl.semantic.common.types.LOperation, LDtoFeature {
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/plugin.properties b/org.eclipse.osbp.dsl.services.xtext/plugin.properties
new file mode 100644
index 0000000..2a0a281
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+#  All rights reserved. This program and the accompanying materials 
+#  are made available under the terms of the Eclipse Public License v1.0 
+#  which accompanies this distribution, and is available at 
+#  http://www.eclipse.org/legal/epl-v10.html 
+# 
+#  Based on ideas from Xtext, Xtend, Xcore
+#    
+#  Contributors:  
+#  		Florian Pirchner - Initial implementation 
+#  
+
+pluginName = Service Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.services.xtext/plugin.xml b/org.eclipse.osbp.dsl.services.xtext/plugin.xml
new file mode 100644
index 0000000..0157ac4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/plugin.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 - 2012, Lunifera GmbH (Gross Enzersdorf, Austria), Hans Georg Glöckler, Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+ 
+ Sources generated by Xtext  
+ 
+ Contributors:
+  		Hans Georg Glöckler - Initial implementation
+  		Florian Pirchner - Initial implementation
+-->
+
+<plugin>
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated services -->
+      <package
+            uri="http://osbp.eclipse.org/dsl/services/v1"
+            class="org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage"
+            genModel="model/services.xcore"/>
+   </extension>
+</plugin>
diff --git a/org.eclipse.osbp.dsl.services.xtext/pom.xml b/org.eclipse.osbp.dsl.services.xtext/pom.xml
new file mode 100644
index 0000000..dd7d3bd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.services.xtext</artifactId>
+	<packaging>eclipse-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<plugins>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LCardinality.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LCardinality.java
new file mode 100644
index 0000000..811dac0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LCardinality.java
@@ -0,0 +1,265 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+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>LCardinality</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLCardinality()
+ * @generated
+ */
+public enum LCardinality implements Enumerator {
+	/**
+	 * The '<em><b>ZERO TO ONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ZERO_TO_ONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ZERO_TO_ONE(0, "ZERO_TO_ONE", "ZERO_TO_ONE"),
+
+	/**
+	 * The '<em><b>ONE TO ONE</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ONE_TO_ONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ONE_TO_ONE(0, "ONE_TO_ONE", "ONE_TO_ONE"),
+
+	/**
+	 * The '<em><b>ZERO TO MANY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ZERO_TO_MANY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ZERO_TO_MANY(0, "ZERO_TO_MANY", "ZERO_TO_MANY"),
+
+	/**
+	 * The '<em><b>ONE TO MANY</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ONE_TO_MANY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ONE_TO_MANY(0, "ONE_TO_MANY", "ONE_TO_MANY");
+
+	/**
+	 * The '<em><b>ZERO TO ONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ZERO TO ONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ZERO_TO_ONE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ZERO_TO_ONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>ONE TO ONE</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ONE TO ONE</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ONE_TO_ONE
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ONE_TO_ONE_VALUE = 0;
+
+	/**
+	 * The '<em><b>ZERO TO MANY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ZERO TO MANY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ZERO_TO_MANY
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ZERO_TO_MANY_VALUE = 0;
+
+	/**
+	 * The '<em><b>ONE TO MANY</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>ONE TO MANY</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ONE_TO_MANY
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ONE_TO_MANY_VALUE = 0;
+
+	/**
+	 * An array of all the '<em><b>LCardinality</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final LCardinality[] VALUES_ARRAY =
+		new LCardinality[] {
+			ZERO_TO_ONE,
+			ONE_TO_ONE,
+			ZERO_TO_MANY,
+			ONE_TO_MANY,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>LCardinality</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<LCardinality> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>LCardinality</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LCardinality get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LCardinality result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LCardinality</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LCardinality getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			LCardinality result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>LCardinality</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LCardinality get(int value) {
+		switch (value) {
+			case ZERO_TO_ONE_VALUE: return ZERO_TO_ONE;
+		}
+		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 LCardinality(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;
+	}
+	
+} //LCardinality
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LChartService.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LChartService.java
new file mode 100644
index 0000000..c549160
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LChartService.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LChart Service</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLChartService()
+ * @generated
+ */
+public interface LChartService extends LService {
+} // LChartService
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LDTOService.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LDTOService.java
new file mode 100644
index 0000000..ccddbbc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LDTOService.java
@@ -0,0 +1,213 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LDTO Service</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getDto <em>Dto</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getDtoJvm <em>Dto Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#isMutablePersistenceId <em>Mutable Persistence Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getPersistenceId <em>Persistence Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getValidators <em>Validators</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getFilterable <em>Filterable</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getSortable <em>Sortable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService()
+ * @generated
+ */
+public interface LDTOService extends LService {
+	/**
+	 * Returns the value of the '<em><b>Dto</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dto</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dto</em>' reference.
+	 * @see #setDto(LDto)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_Dto()
+	 * @generated
+	 */
+	LDto getDto();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getDto <em>Dto</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dto</em>' reference.
+	 * @see #getDto()
+	 * @generated
+	 */
+	void setDto(LDto value);
+
+	/**
+	 * Returns the value of the '<em><b>Dto Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dto Jvm</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dto Jvm</em>' containment reference.
+	 * @see #setDtoJvm(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_DtoJvm()
+	 * @generated
+	 */
+	JvmTypeReference getDtoJvm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getDtoJvm <em>Dto Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dto Jvm</em>' containment reference.
+	 * @see #getDtoJvm()
+	 * @generated
+	 */
+	void setDtoJvm(JvmTypeReference value);
+
+	/**
+	 * Returns the value of the '<em><b>Mutable Persistence Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mutable Persistence Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mutable Persistence Id</em>' attribute.
+	 * @see #setMutablePersistenceId(boolean)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_MutablePersistenceId()
+	 * @generated
+	 */
+	boolean isMutablePersistenceId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#isMutablePersistenceId <em>Mutable Persistence Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mutable Persistence Id</em>' attribute.
+	 * @see #isMutablePersistenceId()
+	 * @generated
+	 */
+	void setMutablePersistenceId(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Persistence Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Persistence Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Persistence Id</em>' attribute.
+	 * @see #setPersistenceId(String)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_PersistenceId()
+	 * @generated
+	 */
+	String getPersistenceId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getPersistenceId <em>Persistence Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Persistence Id</em>' attribute.
+	 * @see #getPersistenceId()
+	 * @generated
+	 */
+	void setPersistenceId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Validators</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.service.LValidator}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Validators</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>Validators</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_Validators()
+	 * @generated
+	 */
+	EList<LValidator> getValidators();
+
+	/**
+	 * Returns the value of the '<em><b>Filterable</b></em>' containment reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filterable</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>Filterable</em>' containment reference.
+	 * @see #setFilterable(LFilterableAttributes)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_Filterable()
+	 * @see org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getParent
+	 * @generated
+	 */
+	LFilterableAttributes getFilterable();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getFilterable <em>Filterable</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Filterable</em>' containment reference.
+	 * @see #getFilterable()
+	 * @generated
+	 */
+	void setFilterable(LFilterableAttributes value);
+
+	/**
+	 * Returns the value of the '<em><b>Sortable</b></em>' containment reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sortable</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>Sortable</em>' containment reference.
+	 * @see #setSortable(LSortableAttributes)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLDTOService_Sortable()
+	 * @see org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getParent
+	 * @generated
+	 */
+	LSortableAttributes getSortable();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getSortable <em>Sortable</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sortable</em>' containment reference.
+	 * @see #getSortable()
+	 * @generated
+	 */
+	void setSortable(LSortableAttributes value);
+
+} // LDTOService
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LFilterableAttributes.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LFilterableAttributes.java
new file mode 100644
index 0000000..62ce6a7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LFilterableAttributes.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LFilterable Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getFilterableFeatures <em>Filterable Features</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLFilterableAttributes()
+ * @generated
+ */
+public interface LFilterableAttributes extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Parent</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getFilterable <em>Filterable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parent</em>' container reference.
+	 * @see #setParent(LDTOService)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLFilterableAttributes_Parent()
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getFilterable
+	 * @generated
+	 */
+	LDTOService getParent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getParent <em>Parent</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parent</em>' container reference.
+	 * @see #getParent()
+	 * @generated
+	 */
+	void setParent(LDTOService value);
+
+	/**
+	 * Returns the value of the '<em><b>Filterable Features</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Filterable Features</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Filterable Features</em>' reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLFilterableAttributes_FilterableFeatures()
+	 * @generated
+	 */
+	EList<LDtoFeature> getFilterableFeatures();
+
+} // LFilterableAttributes
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LFreeService.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LFreeService.java
new file mode 100644
index 0000000..8213814
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LFreeService.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LFree Service</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLFreeService()
+ * @generated
+ */
+public interface LFreeService extends LService {
+} // LFreeService
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LInjectedService.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LInjectedService.java
new file mode 100644
index 0000000..b2a4de5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LInjectedService.java
@@ -0,0 +1,116 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LInjected Service</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getCardinality <em>Cardinality</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getAttributeName <em>Attribute Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getService <em>Service</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLInjectedService()
+ * @generated
+ */
+public interface LInjectedService extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Cardinality</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.osbp.dsl.semantic.service.LCardinality}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cardinality</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cardinality</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LCardinality
+	 * @see #setCardinality(LCardinality)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLInjectedService_Cardinality()
+	 * @generated
+	 */
+	LCardinality getCardinality();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getCardinality <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Cardinality</em>' attribute.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LCardinality
+	 * @see #getCardinality()
+	 * @generated
+	 */
+	void setCardinality(LCardinality value);
+
+	/**
+	 * Returns the value of the '<em><b>Attribute Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Attribute 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>Attribute Name</em>' attribute.
+	 * @see #setAttributeName(String)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLInjectedService_AttributeName()
+	 * @generated
+	 */
+	String getAttributeName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getAttributeName <em>Attribute Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Attribute Name</em>' attribute.
+	 * @see #getAttributeName()
+	 * @generated
+	 */
+	void setAttributeName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Service</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Service</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>Service</em>' containment reference.
+	 * @see #setService(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLInjectedService_Service()
+	 * @generated
+	 */
+	JvmTypeReference getService();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getService <em>Service</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Service</em>' containment reference.
+	 * @see #getService()
+	 * @generated
+	 */
+	void setService(JvmTypeReference value);
+
+} // LInjectedService
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LInjectedServices.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LInjectedServices.java
new file mode 100644
index 0000000..4fc202d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LInjectedServices.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LInjected Services</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices#getServices <em>Services</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLInjectedServices()
+ * @generated
+ */
+public interface LInjectedServices extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Services</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.service.LInjectedService}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Services</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>Services</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLInjectedServices_Services()
+	 * @generated
+	 */
+	EList<LInjectedService> getServices();
+
+} // LInjectedServices
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LService.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LService.java
new file mode 100644
index 0000000..9330ae6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LService.java
@@ -0,0 +1,77 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LService</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LService#getInjectedServices <em>Injected Services</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LService#getOperations <em>Operations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLService()
+ * @generated
+ */
+public interface LService extends LClass {
+	/**
+	 * Returns the value of the '<em><b>Injected Services</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Injected Services</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>Injected Services</em>' containment reference.
+	 * @see #setInjectedServices(LInjectedServices)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLService_InjectedServices()
+	 * @generated
+	 */
+	LInjectedServices getInjectedServices();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LService#getInjectedServices <em>Injected Services</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Injected Services</em>' containment reference.
+	 * @see #getInjectedServices()
+	 * @generated
+	 */
+	void setInjectedServices(LInjectedServices value);
+
+	/**
+	 * Returns the value of the '<em><b>Operations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.service.LServiceOperation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Operations</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>Operations</em>' containment reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLService_Operations()
+	 * @generated
+	 */
+	EList<LServiceOperation> getOperations();
+
+} // LService
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LServiceModel.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LServiceModel.java
new file mode 100644
index 0000000..56512f2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LServiceModel.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LService Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LServiceModel#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLServiceModel()
+ * @generated
+ */
+public interface LServiceModel extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage}.
+	 * <!-- 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.dsl.semantic.service.OSBPServicePackage#getLServiceModel_Packages()
+	 * @generated
+	 */
+	EList<LTypedPackage> getPackages();
+
+} // LServiceModel
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LServiceOperation.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LServiceOperation.java
new file mode 100644
index 0000000..310c282
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LServiceOperation.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LService Operation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLServiceOperation()
+ * @generated
+ */
+public interface LServiceOperation extends LOperation, LDtoFeature {
+} // LServiceOperation
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LSortableAttributes.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LSortableAttributes.java
new file mode 100644
index 0000000..6789deb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LSortableAttributes.java
@@ -0,0 +1,81 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LSortable Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getSortableFeatures <em>Sortable Features</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLSortableAttributes()
+ * @generated
+ */
+public interface LSortableAttributes extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Parent</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getSortable <em>Sortable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parent</em>' container reference.
+	 * @see #setParent(LDTOService)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLSortableAttributes_Parent()
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getSortable
+	 * @generated
+	 */
+	LDTOService getParent();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getParent <em>Parent</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parent</em>' container reference.
+	 * @see #getParent()
+	 * @generated
+	 */
+	void setParent(LDTOService value);
+
+	/**
+	 * Returns the value of the '<em><b>Sortable Features</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sortable Features</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sortable Features</em>' reference list.
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLSortableAttributes_SortableFeatures()
+	 * @generated
+	 */
+	EList<LDtoFeature> getSortableFeatures();
+
+} // LSortableAttributes
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LValidator.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LValidator.java
new file mode 100644
index 0000000..58470b5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/LValidator.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LValidator</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorId <em>Validator Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorType <em>Validator Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLValidator()
+ * @generated
+ */
+public interface LValidator extends LLazyResolver {
+	/**
+	 * Returns the value of the '<em><b>Validator Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Validator Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Validator Id</em>' attribute.
+	 * @see #setValidatorId(String)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLValidator_ValidatorId()
+	 * @generated
+	 */
+	String getValidatorId();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorId <em>Validator Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Validator Id</em>' attribute.
+	 * @see #getValidatorId()
+	 * @generated
+	 */
+	void setValidatorId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Validator Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Validator 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>Validator Type</em>' containment reference.
+	 * @see #setValidatorType(JvmTypeReference)
+	 * @see org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage#getLValidator_ValidatorType()
+	 * @generated
+	 */
+	JvmTypeReference getValidatorType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorType <em>Validator Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Validator Type</em>' containment reference.
+	 * @see #getValidatorType()
+	 * @generated
+	 */
+	void setValidatorType(JvmTypeReference value);
+
+} // LValidator
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/OSBPServiceFactory.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/OSBPServiceFactory.java
new file mode 100644
index 0000000..89dbe80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/OSBPServiceFactory.java
@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+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.dsl.semantic.service.OSBPServicePackage
+ * @generated
+ */
+public interface OSBPServiceFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPServiceFactory eINSTANCE = org.eclipse.osbp.dsl.semantic.service.impl.OSBPServiceFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>LService Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LService Model</em>'.
+	 * @generated
+	 */
+	LServiceModel createLServiceModel();
+
+	/**
+	 * Returns a new object of class '<em>LInjected Services</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LInjected Services</em>'.
+	 * @generated
+	 */
+	LInjectedServices createLInjectedServices();
+
+	/**
+	 * Returns a new object of class '<em>LInjected Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LInjected Service</em>'.
+	 * @generated
+	 */
+	LInjectedService createLInjectedService();
+
+	/**
+	 * Returns a new object of class '<em>LDTO Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LDTO Service</em>'.
+	 * @generated
+	 */
+	LDTOService createLDTOService();
+
+	/**
+	 * Returns a new object of class '<em>LValidator</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LValidator</em>'.
+	 * @generated
+	 */
+	LValidator createLValidator();
+
+	/**
+	 * Returns a new object of class '<em>LFilterable Attributes</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LFilterable Attributes</em>'.
+	 * @generated
+	 */
+	LFilterableAttributes createLFilterableAttributes();
+
+	/**
+	 * Returns a new object of class '<em>LSortable Attributes</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LSortable Attributes</em>'.
+	 * @generated
+	 */
+	LSortableAttributes createLSortableAttributes();
+
+	/**
+	 * Returns a new object of class '<em>LChart Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LChart Service</em>'.
+	 * @generated
+	 */
+	LChartService createLChartService();
+
+	/**
+	 * Returns a new object of class '<em>LFree Service</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LFree Service</em>'.
+	 * @generated
+	 */
+	LFreeService createLFreeService();
+
+	/**
+	 * Returns a new object of class '<em>LService Operation</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LService Operation</em>'.
+	 * @generated
+	 */
+	LServiceOperation createLServiceOperation();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	OSBPServicePackage getOSBPServicePackage();
+
+} //OSBPServiceFactory
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/OSBPServicePackage.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/OSBPServicePackage.java
new file mode 100644
index 0000000..1506d86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/OSBPServicePackage.java
@@ -0,0 +1,1466 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+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 enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory
+ * @generated
+ */
+public interface OSBPServicePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "service";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://osbp.eclipse.org/dsl/services/v1";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "services";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	OSBPServicePackage eINSTANCE = org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceModelImpl <em>LService Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LServiceModelImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLServiceModel()
+	 * @generated
+	 */
+	int LSERVICE_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_MODEL__PACKAGES = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LService Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_MODEL_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceImpl <em>LService</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LServiceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLService()
+	 * @generated
+	 */
+	int LSERVICE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__ANNOTATIONS = OSBPTypesPackage.LCLASS__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__NAME = OSBPTypesPackage.LCLASS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__ANNOTATION_INFO = OSBPTypesPackage.LCLASS__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__ABSTRACT = OSBPTypesPackage.LCLASS__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__SERIALIZABLE = OSBPTypesPackage.LCLASS__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__SHORT_NAME = OSBPTypesPackage.LCLASS__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Injected Services</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__INJECTED_SERVICES = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE__OPERATIONS = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LService</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_FEATURE_COUNT = OSBPTypesPackage.LCLASS_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServicesImpl <em>LInjected Services</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServicesImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLInjectedServices()
+	 * @generated
+	 */
+	int LINJECTED_SERVICES = 2;
+
+	/**
+	 * The feature id for the '<em><b>Services</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINJECTED_SERVICES__SERVICES = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>LInjected Services</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINJECTED_SERVICES_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl <em>LInjected Service</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLInjectedService()
+	 * @generated
+	 */
+	int LINJECTED_SERVICE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Cardinality</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINJECTED_SERVICE__CARDINALITY = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Attribute Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINJECTED_SERVICE__ATTRIBUTE_NAME = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Service</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINJECTED_SERVICE__SERVICE = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>LInjected Service</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINJECTED_SERVICE_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 3;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl <em>LDTO Service</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLDTOService()
+	 * @generated
+	 */
+	int LDTO_SERVICE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__ANNOTATIONS = LSERVICE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__NAME = LSERVICE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__ANNOTATION_INFO = LSERVICE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__ABSTRACT = LSERVICE__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__SERIALIZABLE = LSERVICE__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__SHORT_NAME = LSERVICE__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Injected Services</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__INJECTED_SERVICES = LSERVICE__INJECTED_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__OPERATIONS = LSERVICE__OPERATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Dto</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__DTO = LSERVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Dto Jvm</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__DTO_JVM = LSERVICE_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Mutable Persistence Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__MUTABLE_PERSISTENCE_ID = LSERVICE_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Persistence Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__PERSISTENCE_ID = LSERVICE_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Validators</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__VALIDATORS = LSERVICE_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Filterable</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__FILTERABLE = LSERVICE_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Sortable</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE__SORTABLE = LSERVICE_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>LDTO Service</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LDTO_SERVICE_FEATURE_COUNT = LSERVICE_FEATURE_COUNT + 7;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LValidatorImpl <em>LValidator</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LValidatorImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLValidator()
+	 * @generated
+	 */
+	int LVALIDATOR = 5;
+
+	/**
+	 * The feature id for the '<em><b>Validator Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LVALIDATOR__VALIDATOR_ID = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Validator Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LVALIDATOR__VALIDATOR_TYPE = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LValidator</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LVALIDATOR_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LFilterableAttributesImpl <em>LFilterable Attributes</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LFilterableAttributesImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLFilterableAttributes()
+	 * @generated
+	 */
+	int LFILTERABLE_ATTRIBUTES = 6;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFILTERABLE_ATTRIBUTES__PARENT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Filterable Features</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LFilterable Attributes</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFILTERABLE_ATTRIBUTES_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LSortableAttributesImpl <em>LSortable Attributes</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LSortableAttributesImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLSortableAttributes()
+	 * @generated
+	 */
+	int LSORTABLE_ATTRIBUTES = 7;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSORTABLE_ATTRIBUTES__PARENT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Sortable Features</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>LSortable Attributes</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSORTABLE_ATTRIBUTES_FEATURE_COUNT = OSBPTypesPackage.LLAZY_RESOLVER_FEATURE_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LChartServiceImpl <em>LChart Service</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LChartServiceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLChartService()
+	 * @generated
+	 */
+	int LCHART_SERVICE = 8;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__ANNOTATIONS = LSERVICE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__NAME = LSERVICE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__ANNOTATION_INFO = LSERVICE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__ABSTRACT = LSERVICE__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__SERIALIZABLE = LSERVICE__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__SHORT_NAME = LSERVICE__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Injected Services</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__INJECTED_SERVICES = LSERVICE__INJECTED_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE__OPERATIONS = LSERVICE__OPERATIONS;
+
+	/**
+	 * The number of structural features of the '<em>LChart Service</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LCHART_SERVICE_FEATURE_COUNT = LSERVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LFreeServiceImpl <em>LFree Service</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LFreeServiceImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLFreeService()
+	 * @generated
+	 */
+	int LFREE_SERVICE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__ANNOTATIONS = LSERVICE__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__NAME = LSERVICE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__ANNOTATION_INFO = LSERVICE__ANNOTATION_INFO;
+
+	/**
+	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__ABSTRACT = LSERVICE__ABSTRACT;
+
+	/**
+	 * The feature id for the '<em><b>Serializable</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__SERIALIZABLE = LSERVICE__SERIALIZABLE;
+
+	/**
+	 * The feature id for the '<em><b>Short Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__SHORT_NAME = LSERVICE__SHORT_NAME;
+
+	/**
+	 * The feature id for the '<em><b>Injected Services</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__INJECTED_SERVICES = LSERVICE__INJECTED_SERVICES;
+
+	/**
+	 * The feature id for the '<em><b>Operations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE__OPERATIONS = LSERVICE__OPERATIONS;
+
+	/**
+	 * The number of structural features of the '<em>LFree Service</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LFREE_SERVICE_FEATURE_COUNT = LSERVICE_FEATURE_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl <em>LService Operation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLServiceOperation()
+	 * @generated
+	 */
+	int LSERVICE_OPERATION = 10;
+
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__ANNOTATIONS = OSBPTypesPackage.LOPERATION__ANNOTATIONS;
+
+	/**
+	 * The feature id for the '<em><b>Modifier</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__MODIFIER = OSBPTypesPackage.LOPERATION__MODIFIER;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__TYPE = OSBPTypesPackage.LOPERATION__TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Params</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__PARAMS = OSBPTypesPackage.LOPERATION__PARAMS;
+
+	/**
+	 * The feature id for the '<em><b>Body</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__BODY = OSBPTypesPackage.LOPERATION__BODY;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__NAME = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Multiplicity</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__MULTIPLICITY = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Annotation Info</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__ANNOTATION_INFO = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Mapper</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION__MAPPER = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>LService Operation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSERVICE_OPERATION_FEATURE_COUNT = OSBPTypesPackage.LOPERATION_FEATURE_COUNT + 4;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.osbp.dsl.semantic.service.LCardinality <em>LCardinality</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.osbp.dsl.semantic.service.LCardinality
+	 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLCardinality()
+	 * @generated
+	 */
+	int LCARDINALITY = 11;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LServiceModel <em>LService Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LService Model</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LServiceModel
+	 * @generated
+	 */
+	EClass getLServiceModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.service.LServiceModel#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.dsl.semantic.service.LServiceModel#getPackages()
+	 * @see #getLServiceModel()
+	 * @generated
+	 */
+	EReference getLServiceModel_Packages();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LService <em>LService</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LService</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LService
+	 * @generated
+	 */
+	EClass getLService();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.service.LService#getInjectedServices <em>Injected Services</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Injected Services</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LService#getInjectedServices()
+	 * @see #getLService()
+	 * @generated
+	 */
+	EReference getLService_InjectedServices();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.service.LService#getOperations <em>Operations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Operations</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LService#getOperations()
+	 * @see #getLService()
+	 * @generated
+	 */
+	EReference getLService_Operations();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices <em>LInjected Services</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LInjected Services</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LInjectedServices
+	 * @generated
+	 */
+	EClass getLInjectedServices();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices#getServices <em>Services</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Services</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LInjectedServices#getServices()
+	 * @see #getLInjectedServices()
+	 * @generated
+	 */
+	EReference getLInjectedServices_Services();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService <em>LInjected Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LInjected Service</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LInjectedService
+	 * @generated
+	 */
+	EClass getLInjectedService();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getCardinality <em>Cardinality</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Cardinality</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LInjectedService#getCardinality()
+	 * @see #getLInjectedService()
+	 * @generated
+	 */
+	EAttribute getLInjectedService_Cardinality();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getAttributeName <em>Attribute Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Attribute Name</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LInjectedService#getAttributeName()
+	 * @see #getLInjectedService()
+	 * @generated
+	 */
+	EAttribute getLInjectedService_AttributeName();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService#getService <em>Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Service</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LInjectedService#getService()
+	 * @see #getLInjectedService()
+	 * @generated
+	 */
+	EReference getLInjectedService_Service();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService <em>LDTO Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LDTO Service</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService
+	 * @generated
+	 */
+	EClass getLDTOService();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getDto <em>Dto</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Dto</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getDto()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EReference getLDTOService_Dto();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getDtoJvm <em>Dto Jvm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Dto Jvm</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getDtoJvm()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EReference getLDTOService_DtoJvm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#isMutablePersistenceId <em>Mutable Persistence Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mutable Persistence Id</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#isMutablePersistenceId()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EAttribute getLDTOService_MutablePersistenceId();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getPersistenceId <em>Persistence Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Persistence Id</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getPersistenceId()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EAttribute getLDTOService_PersistenceId();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getValidators <em>Validators</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Validators</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getValidators()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EReference getLDTOService_Validators();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getFilterable <em>Filterable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Filterable</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getFilterable()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EReference getLDTOService_Filterable();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService#getSortable <em>Sortable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Sortable</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LDTOService#getSortable()
+	 * @see #getLDTOService()
+	 * @generated
+	 */
+	EReference getLDTOService_Sortable();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LValidator <em>LValidator</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LValidator</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LValidator
+	 * @generated
+	 */
+	EClass getLValidator();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorId <em>Validator Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Validator Id</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorId()
+	 * @see #getLValidator()
+	 * @generated
+	 */
+	EAttribute getLValidator_ValidatorId();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorType <em>Validator Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Validator Type</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LValidator#getValidatorType()
+	 * @see #getLValidator()
+	 * @generated
+	 */
+	EReference getLValidator_ValidatorType();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes <em>LFilterable Attributes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LFilterable Attributes</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes
+	 * @generated
+	 */
+	EClass getLFilterableAttributes();
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the container reference '<em>Parent</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getParent()
+	 * @see #getLFilterableAttributes()
+	 * @generated
+	 */
+	EReference getLFilterableAttributes_Parent();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getFilterableFeatures <em>Filterable Features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Filterable Features</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes#getFilterableFeatures()
+	 * @see #getLFilterableAttributes()
+	 * @generated
+	 */
+	EReference getLFilterableAttributes_FilterableFeatures();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes <em>LSortable Attributes</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LSortable Attributes</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LSortableAttributes
+	 * @generated
+	 */
+	EClass getLSortableAttributes();
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the container reference '<em>Parent</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getParent()
+	 * @see #getLSortableAttributes()
+	 * @generated
+	 */
+	EReference getLSortableAttributes_Parent();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getSortableFeatures <em>Sortable Features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Sortable Features</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LSortableAttributes#getSortableFeatures()
+	 * @see #getLSortableAttributes()
+	 * @generated
+	 */
+	EReference getLSortableAttributes_SortableFeatures();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LChartService <em>LChart Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LChart Service</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LChartService
+	 * @generated
+	 */
+	EClass getLChartService();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LFreeService <em>LFree Service</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LFree Service</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LFreeService
+	 * @generated
+	 */
+	EClass getLFreeService();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.osbp.dsl.semantic.service.LServiceOperation <em>LService Operation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LService Operation</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LServiceOperation
+	 * @generated
+	 */
+	EClass getLServiceOperation();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.osbp.dsl.semantic.service.LCardinality <em>LCardinality</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>LCardinality</em>'.
+	 * @see org.eclipse.osbp.dsl.semantic.service.LCardinality
+	 * @generated
+	 */
+	EEnum getLCardinality();
+
+	/**
+	 * 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
+	 */
+	OSBPServiceFactory getOSBPServiceFactory();
+
+	/**
+	 * <!-- 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 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.dsl.semantic.service.impl.LServiceModelImpl <em>LService Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LServiceModelImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLServiceModel()
+		 * @generated
+		 */
+		EClass LSERVICE_MODEL = eINSTANCE.getLServiceModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LSERVICE_MODEL__PACKAGES = eINSTANCE.getLServiceModel_Packages();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceImpl <em>LService</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LServiceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLService()
+		 * @generated
+		 */
+		EClass LSERVICE = eINSTANCE.getLService();
+
+		/**
+		 * The meta object literal for the '<em><b>Injected Services</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LSERVICE__INJECTED_SERVICES = eINSTANCE.getLService_InjectedServices();
+
+		/**
+		 * The meta object literal for the '<em><b>Operations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LSERVICE__OPERATIONS = eINSTANCE.getLService_Operations();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServicesImpl <em>LInjected Services</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServicesImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLInjectedServices()
+		 * @generated
+		 */
+		EClass LINJECTED_SERVICES = eINSTANCE.getLInjectedServices();
+
+		/**
+		 * The meta object literal for the '<em><b>Services</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LINJECTED_SERVICES__SERVICES = eINSTANCE.getLInjectedServices_Services();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl <em>LInjected Service</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLInjectedService()
+		 * @generated
+		 */
+		EClass LINJECTED_SERVICE = eINSTANCE.getLInjectedService();
+
+		/**
+		 * The meta object literal for the '<em><b>Cardinality</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINJECTED_SERVICE__CARDINALITY = eINSTANCE.getLInjectedService_Cardinality();
+
+		/**
+		 * The meta object literal for the '<em><b>Attribute Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINJECTED_SERVICE__ATTRIBUTE_NAME = eINSTANCE.getLInjectedService_AttributeName();
+
+		/**
+		 * The meta object literal for the '<em><b>Service</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LINJECTED_SERVICE__SERVICE = eINSTANCE.getLInjectedService_Service();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl <em>LDTO Service</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLDTOService()
+		 * @generated
+		 */
+		EClass LDTO_SERVICE = eINSTANCE.getLDTOService();
+
+		/**
+		 * The meta object literal for the '<em><b>Dto</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_SERVICE__DTO = eINSTANCE.getLDTOService_Dto();
+
+		/**
+		 * The meta object literal for the '<em><b>Dto Jvm</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_SERVICE__DTO_JVM = eINSTANCE.getLDTOService_DtoJvm();
+
+		/**
+		 * The meta object literal for the '<em><b>Mutable Persistence Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDTO_SERVICE__MUTABLE_PERSISTENCE_ID = eINSTANCE.getLDTOService_MutablePersistenceId();
+
+		/**
+		 * The meta object literal for the '<em><b>Persistence Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LDTO_SERVICE__PERSISTENCE_ID = eINSTANCE.getLDTOService_PersistenceId();
+
+		/**
+		 * The meta object literal for the '<em><b>Validators</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_SERVICE__VALIDATORS = eINSTANCE.getLDTOService_Validators();
+
+		/**
+		 * The meta object literal for the '<em><b>Filterable</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_SERVICE__FILTERABLE = eINSTANCE.getLDTOService_Filterable();
+
+		/**
+		 * The meta object literal for the '<em><b>Sortable</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LDTO_SERVICE__SORTABLE = eINSTANCE.getLDTOService_Sortable();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LValidatorImpl <em>LValidator</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LValidatorImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLValidator()
+		 * @generated
+		 */
+		EClass LVALIDATOR = eINSTANCE.getLValidator();
+
+		/**
+		 * The meta object literal for the '<em><b>Validator Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LVALIDATOR__VALIDATOR_ID = eINSTANCE.getLValidator_ValidatorId();
+
+		/**
+		 * The meta object literal for the '<em><b>Validator Type</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LVALIDATOR__VALIDATOR_TYPE = eINSTANCE.getLValidator_ValidatorType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LFilterableAttributesImpl <em>LFilterable Attributes</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LFilterableAttributesImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLFilterableAttributes()
+		 * @generated
+		 */
+		EClass LFILTERABLE_ATTRIBUTES = eINSTANCE.getLFilterableAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LFILTERABLE_ATTRIBUTES__PARENT = eINSTANCE.getLFilterableAttributes_Parent();
+
+		/**
+		 * The meta object literal for the '<em><b>Filterable Features</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES = eINSTANCE.getLFilterableAttributes_FilterableFeatures();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LSortableAttributesImpl <em>LSortable Attributes</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LSortableAttributesImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLSortableAttributes()
+		 * @generated
+		 */
+		EClass LSORTABLE_ATTRIBUTES = eINSTANCE.getLSortableAttributes();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LSORTABLE_ATTRIBUTES__PARENT = eINSTANCE.getLSortableAttributes_Parent();
+
+		/**
+		 * The meta object literal for the '<em><b>Sortable Features</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES = eINSTANCE.getLSortableAttributes_SortableFeatures();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LChartServiceImpl <em>LChart Service</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LChartServiceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLChartService()
+		 * @generated
+		 */
+		EClass LCHART_SERVICE = eINSTANCE.getLChartService();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LFreeServiceImpl <em>LFree Service</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LFreeServiceImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLFreeService()
+		 * @generated
+		 */
+		EClass LFREE_SERVICE = eINSTANCE.getLFreeService();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl <em>LService Operation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLServiceOperation()
+		 * @generated
+		 */
+		EClass LSERVICE_OPERATION = eINSTANCE.getLServiceOperation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.osbp.dsl.semantic.service.LCardinality <em>LCardinality</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.osbp.dsl.semantic.service.LCardinality
+		 * @see org.eclipse.osbp.dsl.semantic.service.impl.OSBPServicePackageImpl#getLCardinality()
+		 * @generated
+		 */
+		EEnum LCARDINALITY = eINSTANCE.getLCardinality();
+
+	}
+
+} //OSBPServicePackage
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LChartServiceImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LChartServiceImpl.java
new file mode 100644
index 0000000..d2c6f2f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LChartServiceImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.dsl.semantic.service.LChartService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LChart Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LChartServiceImpl extends LServiceImpl implements LChartService {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LChartServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LCHART_SERVICE;
+	}
+
+} //LChartServiceImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LDTOServiceImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LDTOServiceImpl.java
new file mode 100644
index 0000000..f31d2c1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LDTOServiceImpl.java
@@ -0,0 +1,570 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.dto.LDto;
+
+import org.eclipse.osbp.dsl.semantic.service.LDTOService;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LValidator;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LDTO Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#getDto <em>Dto</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#getDtoJvm <em>Dto Jvm</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#isMutablePersistenceId <em>Mutable Persistence Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#getPersistenceId <em>Persistence Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#getValidators <em>Validators</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#getFilterable <em>Filterable</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LDTOServiceImpl#getSortable <em>Sortable</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LDTOServiceImpl extends LServiceImpl implements LDTOService {
+	/**
+	 * The cached value of the '{@link #getDto() <em>Dto</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDto()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDto dto;
+
+	/**
+	 * The cached value of the '{@link #getDtoJvm() <em>Dto Jvm</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDtoJvm()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference dtoJvm;
+
+	/**
+	 * The default value of the '{@link #isMutablePersistenceId() <em>Mutable Persistence Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMutablePersistenceId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean MUTABLE_PERSISTENCE_ID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isMutablePersistenceId() <em>Mutable Persistence Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isMutablePersistenceId()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean mutablePersistenceId = MUTABLE_PERSISTENCE_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPersistenceId() <em>Persistence Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PERSISTENCE_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPersistenceId() <em>Persistence Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPersistenceId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String persistenceId = PERSISTENCE_ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getValidators() <em>Validators</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValidators()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LValidator> validators;
+
+	/**
+	 * The cached value of the '{@link #getFilterable() <em>Filterable</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilterable()
+	 * @generated
+	 * @ordered
+	 */
+	protected LFilterableAttributes filterable;
+
+	/**
+	 * The cached value of the '{@link #getSortable() <em>Sortable</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSortable()
+	 * @generated
+	 * @ordered
+	 */
+	protected LSortableAttributes sortable;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LDTOServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LDTO_SERVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getDto() {
+		if (dto != null && dto.eIsProxy()) {
+			InternalEObject oldDto = (InternalEObject)dto;
+			dto = (LDto)eResolveProxy(oldDto);
+			if (dto != oldDto) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, OSBPServicePackage.LDTO_SERVICE__DTO, oldDto, dto));
+			}
+		}
+		return dto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto basicGetDto() {
+		return dto;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDto(LDto newDto) {
+		LDto oldDto = dto;
+		dto = newDto;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__DTO, oldDto, dto));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getDtoJvm() {
+		return dtoJvm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetDtoJvm(JvmTypeReference newDtoJvm, NotificationChain msgs) {
+		JvmTypeReference oldDtoJvm = dtoJvm;
+		dtoJvm = newDtoJvm;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__DTO_JVM, oldDtoJvm, newDtoJvm);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setDtoJvm(JvmTypeReference newDtoJvm) {
+		if (newDtoJvm != dtoJvm) {
+			NotificationChain msgs = null;
+			if (dtoJvm != null)
+				msgs = ((InternalEObject)dtoJvm).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LDTO_SERVICE__DTO_JVM, null, msgs);
+			if (newDtoJvm != null)
+				msgs = ((InternalEObject)newDtoJvm).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LDTO_SERVICE__DTO_JVM, null, msgs);
+			msgs = basicSetDtoJvm(newDtoJvm, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__DTO_JVM, newDtoJvm, newDtoJvm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isMutablePersistenceId() {
+		return mutablePersistenceId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMutablePersistenceId(boolean newMutablePersistenceId) {
+		boolean oldMutablePersistenceId = mutablePersistenceId;
+		mutablePersistenceId = newMutablePersistenceId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID, oldMutablePersistenceId, mutablePersistenceId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPersistenceId() {
+		return persistenceId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPersistenceId(String newPersistenceId) {
+		String oldPersistenceId = persistenceId;
+		persistenceId = newPersistenceId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__PERSISTENCE_ID, oldPersistenceId, persistenceId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LValidator> getValidators() {
+		if (validators == null) {
+			validators = new EObjectContainmentEList<LValidator>(LValidator.class, this, OSBPServicePackage.LDTO_SERVICE__VALIDATORS);
+		}
+		return validators;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFilterableAttributes getFilterable() {
+		return filterable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFilterable(LFilterableAttributes newFilterable, NotificationChain msgs) {
+		LFilterableAttributes oldFilterable = filterable;
+		filterable = newFilterable;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__FILTERABLE, oldFilterable, newFilterable);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFilterable(LFilterableAttributes newFilterable) {
+		if (newFilterable != filterable) {
+			NotificationChain msgs = null;
+			if (filterable != null)
+				msgs = ((InternalEObject)filterable).eInverseRemove(this, OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT, LFilterableAttributes.class, msgs);
+			if (newFilterable != null)
+				msgs = ((InternalEObject)newFilterable).eInverseAdd(this, OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT, LFilterableAttributes.class, msgs);
+			msgs = basicSetFilterable(newFilterable, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__FILTERABLE, newFilterable, newFilterable));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LSortableAttributes getSortable() {
+		return sortable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSortable(LSortableAttributes newSortable, NotificationChain msgs) {
+		LSortableAttributes oldSortable = sortable;
+		sortable = newSortable;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__SORTABLE, oldSortable, newSortable);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSortable(LSortableAttributes newSortable) {
+		if (newSortable != sortable) {
+			NotificationChain msgs = null;
+			if (sortable != null)
+				msgs = ((InternalEObject)sortable).eInverseRemove(this, OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT, LSortableAttributes.class, msgs);
+			if (newSortable != null)
+				msgs = ((InternalEObject)newSortable).eInverseAdd(this, OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT, LSortableAttributes.class, msgs);
+			msgs = basicSetSortable(newSortable, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LDTO_SERVICE__SORTABLE, newSortable, newSortable));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+				if (filterable != null)
+					msgs = ((InternalEObject)filterable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LDTO_SERVICE__FILTERABLE, null, msgs);
+				return basicSetFilterable((LFilterableAttributes)otherEnd, msgs);
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				if (sortable != null)
+					msgs = ((InternalEObject)sortable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LDTO_SERVICE__SORTABLE, null, msgs);
+				return basicSetSortable((LSortableAttributes)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LDTO_SERVICE__DTO_JVM:
+				return basicSetDtoJvm(null, msgs);
+			case OSBPServicePackage.LDTO_SERVICE__VALIDATORS:
+				return ((InternalEList<?>)getValidators()).basicRemove(otherEnd, msgs);
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+				return basicSetFilterable(null, msgs);
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				return basicSetSortable(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 OSBPServicePackage.LDTO_SERVICE__DTO:
+				if (resolve) return getDto();
+				return basicGetDto();
+			case OSBPServicePackage.LDTO_SERVICE__DTO_JVM:
+				return getDtoJvm();
+			case OSBPServicePackage.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID:
+				return isMutablePersistenceId();
+			case OSBPServicePackage.LDTO_SERVICE__PERSISTENCE_ID:
+				return getPersistenceId();
+			case OSBPServicePackage.LDTO_SERVICE__VALIDATORS:
+				return getValidators();
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+				return getFilterable();
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				return getSortable();
+		}
+		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 OSBPServicePackage.LDTO_SERVICE__DTO:
+				setDto((LDto)newValue);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__DTO_JVM:
+				setDtoJvm((JvmTypeReference)newValue);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID:
+				setMutablePersistenceId((Boolean)newValue);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__PERSISTENCE_ID:
+				setPersistenceId((String)newValue);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__VALIDATORS:
+				getValidators().clear();
+				getValidators().addAll((Collection<? extends LValidator>)newValue);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+				setFilterable((LFilterableAttributes)newValue);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				setSortable((LSortableAttributes)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LDTO_SERVICE__DTO:
+				setDto((LDto)null);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__DTO_JVM:
+				setDtoJvm((JvmTypeReference)null);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID:
+				setMutablePersistenceId(MUTABLE_PERSISTENCE_ID_EDEFAULT);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__PERSISTENCE_ID:
+				setPersistenceId(PERSISTENCE_ID_EDEFAULT);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__VALIDATORS:
+				getValidators().clear();
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+				setFilterable((LFilterableAttributes)null);
+				return;
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				setSortable((LSortableAttributes)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LDTO_SERVICE__DTO:
+				return dto != null;
+			case OSBPServicePackage.LDTO_SERVICE__DTO_JVM:
+				return dtoJvm != null;
+			case OSBPServicePackage.LDTO_SERVICE__MUTABLE_PERSISTENCE_ID:
+				return mutablePersistenceId != MUTABLE_PERSISTENCE_ID_EDEFAULT;
+			case OSBPServicePackage.LDTO_SERVICE__PERSISTENCE_ID:
+				return PERSISTENCE_ID_EDEFAULT == null ? persistenceId != null : !PERSISTENCE_ID_EDEFAULT.equals(persistenceId);
+			case OSBPServicePackage.LDTO_SERVICE__VALIDATORS:
+				return validators != null && !validators.isEmpty();
+			case OSBPServicePackage.LDTO_SERVICE__FILTERABLE:
+				return filterable != null;
+			case OSBPServicePackage.LDTO_SERVICE__SORTABLE:
+				return sortable != 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(" (mutablePersistenceId: ");
+		result.append(mutablePersistenceId);
+		result.append(", persistenceId: ");
+		result.append(persistenceId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LDTOServiceImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LFilterableAttributesImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LFilterableAttributesImpl.java
new file mode 100644
index 0000000..a450c2d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LFilterableAttributesImpl.java
@@ -0,0 +1,261 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+import org.eclipse.osbp.dsl.semantic.service.LDTOService;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LFilterable Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LFilterableAttributesImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LFilterableAttributesImpl#getFilterableFeatures <em>Filterable Features</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LFilterableAttributesImpl extends LLazyResolverImpl implements LFilterableAttributes {
+	/**
+	 * The cached value of the '{@link #getFilterableFeatures() <em>Filterable Features</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFilterableFeatures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDtoFeature> filterableFeatures;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LFilterableAttributesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LFILTERABLE_ATTRIBUTES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDTOService getParent() {
+		if (eContainerFeatureID() != OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT) return null;
+		return (LDTOService)eContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDTOService basicGetParent() {
+		if (eContainerFeatureID() != OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT) return null;
+		return (LDTOService)eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(LDTOService newParent, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newParent, OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParent(LDTOService newParent) {
+		if (newParent != eInternalContainer() || (eContainerFeatureID() != OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT && newParent != null)) {
+			if (EcoreUtil.isAncestor(this, newParent))
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newParent != null)
+				msgs = ((InternalEObject)newParent).eInverseAdd(this, OSBPServicePackage.LDTO_SERVICE__FILTERABLE, LDTOService.class, msgs);
+			msgs = basicSetParent(newParent, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT, newParent, newParent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDtoFeature> getFilterableFeatures() {
+		if (filterableFeatures == null) {
+			filterableFeatures = new EObjectResolvingEList<LDtoFeature>(LDtoFeature.class, this, OSBPServicePackage.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES);
+		}
+		return filterableFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				if (eInternalContainer() != null)
+					msgs = eBasicRemoveFromContainer(msgs);
+				return basicSetParent((LDTOService)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				return basicSetParent(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				return eInternalContainer().eInverseRemove(this, OSBPServicePackage.LDTO_SERVICE__FILTERABLE, LDTOService.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES:
+				return getFilterableFeatures();
+		}
+		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 OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				setParent((LDTOService)newValue);
+				return;
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES:
+				getFilterableFeatures().clear();
+				getFilterableFeatures().addAll((Collection<? extends LDtoFeature>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				setParent((LDTOService)null);
+				return;
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES:
+				getFilterableFeatures().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__PARENT:
+				return basicGetParent() != null;
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES:
+				return filterableFeatures != null && !filterableFeatures.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LFilterableAttributesImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LFreeServiceImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LFreeServiceImpl.java
new file mode 100644
index 0000000..576d5c7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LFreeServiceImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.osbp.dsl.semantic.service.LFreeService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LFree Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class LFreeServiceImpl extends LServiceImpl implements LFreeService {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LFreeServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LFREE_SERVICE;
+	}
+
+} //LFreeServiceImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LInjectedServiceImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LInjectedServiceImpl.java
new file mode 100644
index 0000000..2e636ae
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LInjectedServiceImpl.java
@@ -0,0 +1,312 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.service.LCardinality;
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LInjected Service</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl#getCardinality <em>Cardinality</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl#getAttributeName <em>Attribute Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServiceImpl#getService <em>Service</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LInjectedServiceImpl extends LLazyResolverImpl implements LInjectedService {
+	/**
+	 * The default value of the '{@link #getCardinality() <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCardinality()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final LCardinality CARDINALITY_EDEFAULT = LCardinality.ZERO_TO_ONE;
+
+	/**
+	 * The cached value of the '{@link #getCardinality() <em>Cardinality</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCardinality()
+	 * @generated
+	 * @ordered
+	 */
+	protected LCardinality cardinality = CARDINALITY_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAttributeName() <em>Attribute Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ATTRIBUTE_NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getAttributeName() <em>Attribute Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAttributeName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String attributeName = ATTRIBUTE_NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getService() <em>Service</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getService()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference service;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LInjectedServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LINJECTED_SERVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LCardinality getCardinality() {
+		return cardinality;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setCardinality(LCardinality newCardinality) {
+		LCardinality oldCardinality = cardinality;
+		cardinality = newCardinality == null ? CARDINALITY_EDEFAULT : newCardinality;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LINJECTED_SERVICE__CARDINALITY, oldCardinality, cardinality));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getAttributeName() {
+		return attributeName;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAttributeName(String newAttributeName) {
+		String oldAttributeName = attributeName;
+		attributeName = newAttributeName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LINJECTED_SERVICE__ATTRIBUTE_NAME, oldAttributeName, attributeName));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getService() {
+		return service;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetService(JvmTypeReference newService, NotificationChain msgs) {
+		JvmTypeReference oldService = service;
+		service = newService;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LINJECTED_SERVICE__SERVICE, oldService, newService);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setService(JvmTypeReference newService) {
+		if (newService != service) {
+			NotificationChain msgs = null;
+			if (service != null)
+				msgs = ((InternalEObject)service).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LINJECTED_SERVICE__SERVICE, null, msgs);
+			if (newService != null)
+				msgs = ((InternalEObject)newService).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LINJECTED_SERVICE__SERVICE, null, msgs);
+			msgs = basicSetService(newService, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LINJECTED_SERVICE__SERVICE, newService, newService));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICE__SERVICE:
+				return basicSetService(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 OSBPServicePackage.LINJECTED_SERVICE__CARDINALITY:
+				return getCardinality();
+			case OSBPServicePackage.LINJECTED_SERVICE__ATTRIBUTE_NAME:
+				return getAttributeName();
+			case OSBPServicePackage.LINJECTED_SERVICE__SERVICE:
+				return getService();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICE__CARDINALITY:
+				setCardinality((LCardinality)newValue);
+				return;
+			case OSBPServicePackage.LINJECTED_SERVICE__ATTRIBUTE_NAME:
+				setAttributeName((String)newValue);
+				return;
+			case OSBPServicePackage.LINJECTED_SERVICE__SERVICE:
+				setService((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICE__CARDINALITY:
+				setCardinality(CARDINALITY_EDEFAULT);
+				return;
+			case OSBPServicePackage.LINJECTED_SERVICE__ATTRIBUTE_NAME:
+				setAttributeName(ATTRIBUTE_NAME_EDEFAULT);
+				return;
+			case OSBPServicePackage.LINJECTED_SERVICE__SERVICE:
+				setService((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICE__CARDINALITY:
+				return cardinality != CARDINALITY_EDEFAULT;
+			case OSBPServicePackage.LINJECTED_SERVICE__ATTRIBUTE_NAME:
+				return ATTRIBUTE_NAME_EDEFAULT == null ? attributeName != null : !ATTRIBUTE_NAME_EDEFAULT.equals(attributeName);
+			case OSBPServicePackage.LINJECTED_SERVICE__SERVICE:
+				return service != 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(" (cardinality: ");
+		result.append(cardinality);
+		result.append(", attributeName: ");
+		result.append(attributeName);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LInjectedServiceImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LInjectedServicesImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LInjectedServicesImpl.java
new file mode 100644
index 0000000..4e9d405
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LInjectedServicesImpl.java
@@ -0,0 +1,163 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService;
+import org.eclipse.osbp.dsl.semantic.service.LInjectedServices;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LInjected Services</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LInjectedServicesImpl#getServices <em>Services</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LInjectedServicesImpl extends LLazyResolverImpl implements LInjectedServices {
+	/**
+	 * The cached value of the '{@link #getServices() <em>Services</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getServices()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LInjectedService> services;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LInjectedServicesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LINJECTED_SERVICES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LInjectedService> getServices() {
+		if (services == null) {
+			services = new EObjectContainmentEList<LInjectedService>(LInjectedService.class, this, OSBPServicePackage.LINJECTED_SERVICES__SERVICES);
+		}
+		return services;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICES__SERVICES:
+				return ((InternalEList<?>)getServices()).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 OSBPServicePackage.LINJECTED_SERVICES__SERVICES:
+				return getServices();
+		}
+		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 OSBPServicePackage.LINJECTED_SERVICES__SERVICES:
+				getServices().clear();
+				getServices().addAll((Collection<? extends LInjectedService>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICES__SERVICES:
+				getServices().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LINJECTED_SERVICES__SERVICES:
+				return services != null && !services.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LInjectedServicesImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceImpl.java
new file mode 100644
index 0000000..4397c8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceImpl.java
@@ -0,0 +1,233 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.common.types.impl.LClassImpl;
+
+import org.eclipse.osbp.dsl.semantic.service.LInjectedServices;
+import org.eclipse.osbp.dsl.semantic.service.LService;
+import org.eclipse.osbp.dsl.semantic.service.LServiceOperation;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LService</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceImpl#getInjectedServices <em>Injected Services</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceImpl#getOperations <em>Operations</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class LServiceImpl extends LClassImpl implements LService {
+	/**
+	 * The cached value of the '{@link #getInjectedServices() <em>Injected Services</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInjectedServices()
+	 * @generated
+	 * @ordered
+	 */
+	protected LInjectedServices injectedServices;
+
+	/**
+	 * The cached value of the '{@link #getOperations() <em>Operations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOperations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LServiceOperation> operations;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LServiceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LSERVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LInjectedServices getInjectedServices() {
+		return injectedServices;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInjectedServices(LInjectedServices newInjectedServices, NotificationChain msgs) {
+		LInjectedServices oldInjectedServices = injectedServices;
+		injectedServices = newInjectedServices;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE__INJECTED_SERVICES, oldInjectedServices, newInjectedServices);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInjectedServices(LInjectedServices newInjectedServices) {
+		if (newInjectedServices != injectedServices) {
+			NotificationChain msgs = null;
+			if (injectedServices != null)
+				msgs = ((InternalEObject)injectedServices).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE__INJECTED_SERVICES, null, msgs);
+			if (newInjectedServices != null)
+				msgs = ((InternalEObject)newInjectedServices).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE__INJECTED_SERVICES, null, msgs);
+			msgs = basicSetInjectedServices(newInjectedServices, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE__INJECTED_SERVICES, newInjectedServices, newInjectedServices));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LServiceOperation> getOperations() {
+		if (operations == null) {
+			operations = new EObjectContainmentEList<LServiceOperation>(LServiceOperation.class, this, OSBPServicePackage.LSERVICE__OPERATIONS);
+		}
+		return operations;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE__INJECTED_SERVICES:
+				return basicSetInjectedServices(null, msgs);
+			case OSBPServicePackage.LSERVICE__OPERATIONS:
+				return ((InternalEList<?>)getOperations()).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 OSBPServicePackage.LSERVICE__INJECTED_SERVICES:
+				return getInjectedServices();
+			case OSBPServicePackage.LSERVICE__OPERATIONS:
+				return getOperations();
+		}
+		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 OSBPServicePackage.LSERVICE__INJECTED_SERVICES:
+				setInjectedServices((LInjectedServices)newValue);
+				return;
+			case OSBPServicePackage.LSERVICE__OPERATIONS:
+				getOperations().clear();
+				getOperations().addAll((Collection<? extends LServiceOperation>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE__INJECTED_SERVICES:
+				setInjectedServices((LInjectedServices)null);
+				return;
+			case OSBPServicePackage.LSERVICE__OPERATIONS:
+				getOperations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE__INJECTED_SERVICES:
+				return injectedServices != null;
+			case OSBPServicePackage.LSERVICE__OPERATIONS:
+				return operations != null && !operations.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LServiceImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceModelImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceModelImpl.java
new file mode 100644
index 0000000..9cba708
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceModelImpl.java
@@ -0,0 +1,164 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.LTypedPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.service.LServiceModel;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LService Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceModelImpl#getPackages <em>Packages</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LServiceModelImpl extends LLazyResolverImpl implements LServiceModel {
+	/**
+	 * 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<LTypedPackage> packages;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LServiceModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LSERVICE_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LTypedPackage> getPackages() {
+		if (packages == null) {
+			packages = new EObjectContainmentEList<LTypedPackage>(LTypedPackage.class, this, OSBPServicePackage.LSERVICE_MODEL__PACKAGES);
+		}
+		return packages;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_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 OSBPServicePackage.LSERVICE_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 OSBPServicePackage.LSERVICE_MODEL__PACKAGES:
+				getPackages().clear();
+				getPackages().addAll((Collection<? extends LTypedPackage>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_MODEL__PACKAGES:
+				getPackages().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_MODEL__PACKAGES:
+				return packages != null && !packages.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LServiceModelImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceOperationImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceOperationImpl.java
new file mode 100644
index 0000000..701d63a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LServiceOperationImpl.java
@@ -0,0 +1,480 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.impl;
+
+import com.google.common.base.Objects;
+
+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.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LOperationImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoMapper;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.osbp.dsl.semantic.service.LServiceOperation;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LService Operation</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl#getMultiplicity <em>Multiplicity</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl#getAnnotationInfo <em>Annotation Info</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LServiceOperationImpl#getMapper <em>Mapper</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LServiceOperationImpl extends LOperationImpl implements LServiceOperation {
+	/**
+	 * 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 #getMultiplicity() <em>Multiplicity</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMultiplicity()
+	 * @generated
+	 * @ordered
+	 */
+	protected LMultiplicity multiplicity;
+
+	/**
+	 * The cached value of the '{@link #getAnnotationInfo() <em>Annotation Info</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotationInfo()
+	 * @generated
+	 * @ordered
+	 */
+	protected LAnnotationTarget annotationInfo;
+
+	/**
+	 * The cached value of the '{@link #getMapper() <em>Mapper</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMapper()
+	 * @generated
+	 * @ordered
+	 */
+	protected LDtoMapper mapper;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LServiceOperationImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LSERVICE_OPERATION;
+	}
+
+	/**
+	 * <!-- 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, OSBPServicePackage.LSERVICE_OPERATION__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LMultiplicity getMultiplicity() {
+		return multiplicity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMultiplicity(LMultiplicity newMultiplicity, NotificationChain msgs) {
+		LMultiplicity oldMultiplicity = multiplicity;
+		multiplicity = newMultiplicity;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY, oldMultiplicity, newMultiplicity);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMultiplicity(LMultiplicity newMultiplicity) {
+		if (newMultiplicity != multiplicity) {
+			NotificationChain msgs = null;
+			if (multiplicity != null)
+				msgs = ((InternalEObject)multiplicity).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY, null, msgs);
+			if (newMultiplicity != null)
+				msgs = ((InternalEObject)newMultiplicity).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY, null, msgs);
+			msgs = basicSetMultiplicity(newMultiplicity, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY, newMultiplicity, newMultiplicity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LAnnotationTarget getAnnotationInfo() {
+		return annotationInfo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAnnotationInfo(LAnnotationTarget newAnnotationInfo, NotificationChain msgs) {
+		LAnnotationTarget oldAnnotationInfo = annotationInfo;
+		annotationInfo = newAnnotationInfo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO, oldAnnotationInfo, newAnnotationInfo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setAnnotationInfo(LAnnotationTarget newAnnotationInfo) {
+		if (newAnnotationInfo != annotationInfo) {
+			NotificationChain msgs = null;
+			if (annotationInfo != null)
+				msgs = ((InternalEObject)annotationInfo).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO, null, msgs);
+			if (newAnnotationInfo != null)
+				msgs = ((InternalEObject)newAnnotationInfo).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO, null, msgs);
+			msgs = basicSetAnnotationInfo(newAnnotationInfo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO, newAnnotationInfo, newAnnotationInfo));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDtoMapper getMapper() {
+		return mapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetMapper(LDtoMapper newMapper, NotificationChain msgs) {
+		LDtoMapper oldMapper = mapper;
+		mapper = newMapper;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE_OPERATION__MAPPER, oldMapper, newMapper);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setMapper(LDtoMapper newMapper) {
+		if (newMapper != mapper) {
+			NotificationChain msgs = null;
+			if (mapper != null)
+				msgs = ((InternalEObject)mapper).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE_OPERATION__MAPPER, null, msgs);
+			if (newMapper != null)
+				msgs = ((InternalEObject)newMapper).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LSERVICE_OPERATION__MAPPER, null, msgs);
+			msgs = basicSetMapper(newMapper, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSERVICE_OPERATION__MAPPER, newMapper, newMapper));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDto getDTO() {
+		EObject _eContainer = this.eContainer();
+		return ((LDto) _eContainer);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LAnnotationDef> getResolvedAnnotations() {
+		EList<LAnnotationDef> _xifexpression = null;
+		LAnnotationTarget _annotationInfo = this.getAnnotationInfo();
+		boolean _notEquals = (!Objects.equal(_annotationInfo, null));
+		if (_notEquals) {
+			LAnnotationTarget _annotationInfo_1 = this.getAnnotationInfo();
+			_xifexpression = _annotationInfo_1.getAnnotations();
+		}
+		else {
+			_xifexpression = this.getAnnotations();
+		}
+		return _xifexpression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY:
+				return basicSetMultiplicity(null, msgs);
+			case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO:
+				return basicSetAnnotationInfo(null, msgs);
+			case OSBPServicePackage.LSERVICE_OPERATION__MAPPER:
+				return basicSetMapper(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 OSBPServicePackage.LSERVICE_OPERATION__NAME:
+				return getName();
+			case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY:
+				return getMultiplicity();
+			case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO:
+				return getAnnotationInfo();
+			case OSBPServicePackage.LSERVICE_OPERATION__MAPPER:
+				return getMapper();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_OPERATION__NAME:
+				setName((String)newValue);
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)newValue);
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)newValue);
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__MAPPER:
+				setMapper((LDtoMapper)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_OPERATION__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY:
+				setMultiplicity((LMultiplicity)null);
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO:
+				setAnnotationInfo((LAnnotationTarget)null);
+				return;
+			case OSBPServicePackage.LSERVICE_OPERATION__MAPPER:
+				setMapper((LDtoMapper)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSERVICE_OPERATION__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY:
+				return multiplicity != null;
+			case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO:
+				return annotationInfo != null;
+			case OSBPServicePackage.LSERVICE_OPERATION__MAPPER:
+				return mapper != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == LFeature.class) {
+			switch (derivedFeatureID) {
+				case OSBPServicePackage.LSERVICE_OPERATION__NAME: return OSBPTypesPackage.LFEATURE__NAME;
+				case OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY: return OSBPTypesPackage.LFEATURE__MULTIPLICITY;
+				case OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO: return OSBPTypesPackage.LFEATURE__ANNOTATION_INFO;
+				default: return -1;
+			}
+		}
+		if (baseClass == LDtoFeature.class) {
+			switch (derivedFeatureID) {
+				case OSBPServicePackage.LSERVICE_OPERATION__MAPPER: return OSBPDtoPackage.LDTO_FEATURE__MAPPER;
+				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 == LFeature.class) {
+			switch (baseFeatureID) {
+				case OSBPTypesPackage.LFEATURE__NAME: return OSBPServicePackage.LSERVICE_OPERATION__NAME;
+				case OSBPTypesPackage.LFEATURE__MULTIPLICITY: return OSBPServicePackage.LSERVICE_OPERATION__MULTIPLICITY;
+				case OSBPTypesPackage.LFEATURE__ANNOTATION_INFO: return OSBPServicePackage.LSERVICE_OPERATION__ANNOTATION_INFO;
+				default: return -1;
+			}
+		}
+		if (baseClass == LDtoFeature.class) {
+			switch (baseFeatureID) {
+				case OSBPDtoPackage.LDTO_FEATURE__MAPPER: return OSBPServicePackage.LSERVICE_OPERATION__MAPPER;
+				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(" (name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LServiceOperationImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LSortableAttributesImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LSortableAttributesImpl.java
new file mode 100644
index 0000000..4284239
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LSortableAttributesImpl.java
@@ -0,0 +1,261 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.osbp.dsl.semantic.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+import org.eclipse.osbp.dsl.semantic.service.LDTOService;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LSortable Attributes</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LSortableAttributesImpl#getParent <em>Parent</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LSortableAttributesImpl#getSortableFeatures <em>Sortable Features</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LSortableAttributesImpl extends LLazyResolverImpl implements LSortableAttributes {
+	/**
+	 * The cached value of the '{@link #getSortableFeatures() <em>Sortable Features</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSortableFeatures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<LDtoFeature> sortableFeatures;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LSortableAttributesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LSORTABLE_ATTRIBUTES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDTOService getParent() {
+		if (eContainerFeatureID() != OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT) return null;
+		return (LDTOService)eContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDTOService basicGetParent() {
+		if (eContainerFeatureID() != OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT) return null;
+		return (LDTOService)eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(LDTOService newParent, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newParent, OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setParent(LDTOService newParent) {
+		if (newParent != eInternalContainer() || (eContainerFeatureID() != OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT && newParent != null)) {
+			if (EcoreUtil.isAncestor(this, newParent))
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newParent != null)
+				msgs = ((InternalEObject)newParent).eInverseAdd(this, OSBPServicePackage.LDTO_SERVICE__SORTABLE, LDTOService.class, msgs);
+			msgs = basicSetParent(newParent, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT, newParent, newParent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<LDtoFeature> getSortableFeatures() {
+		if (sortableFeatures == null) {
+			sortableFeatures = new EObjectResolvingEList<LDtoFeature>(LDtoFeature.class, this, OSBPServicePackage.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES);
+		}
+		return sortableFeatures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				if (eInternalContainer() != null)
+					msgs = eBasicRemoveFromContainer(msgs);
+				return basicSetParent((LDTOService)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				return basicSetParent(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				return eInternalContainer().eInverseRemove(this, OSBPServicePackage.LDTO_SERVICE__SORTABLE, LDTOService.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				if (resolve) return getParent();
+				return basicGetParent();
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES:
+				return getSortableFeatures();
+		}
+		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 OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				setParent((LDTOService)newValue);
+				return;
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES:
+				getSortableFeatures().clear();
+				getSortableFeatures().addAll((Collection<? extends LDtoFeature>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				setParent((LDTOService)null);
+				return;
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES:
+				getSortableFeatures().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__PARENT:
+				return basicGetParent() != null;
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES:
+				return sortableFeatures != null && !sortableFeatures.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //LSortableAttributesImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LValidatorImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LValidatorImpl.java
new file mode 100644
index 0000000..190736a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/LValidatorImpl.java
@@ -0,0 +1,257 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.common.types.impl.LLazyResolverImpl;
+
+import org.eclipse.osbp.dsl.semantic.service.LValidator;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LValidator</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LValidatorImpl#getValidatorId <em>Validator Id</em>}</li>
+ *   <li>{@link org.eclipse.osbp.dsl.semantic.service.impl.LValidatorImpl#getValidatorType <em>Validator Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LValidatorImpl extends LLazyResolverImpl implements LValidator {
+	/**
+	 * The default value of the '{@link #getValidatorId() <em>Validator Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValidatorId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String VALIDATOR_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getValidatorId() <em>Validator Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValidatorId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String validatorId = VALIDATOR_ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getValidatorType() <em>Validator Type</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValidatorType()
+	 * @generated
+	 * @ordered
+	 */
+	protected JvmTypeReference validatorType;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LValidatorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return OSBPServicePackage.Literals.LVALIDATOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getValidatorId() {
+		return validatorId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValidatorId(String newValidatorId) {
+		String oldValidatorId = validatorId;
+		validatorId = newValidatorId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LVALIDATOR__VALIDATOR_ID, oldValidatorId, validatorId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public JvmTypeReference getValidatorType() {
+		return validatorType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetValidatorType(JvmTypeReference newValidatorType, NotificationChain msgs) {
+		JvmTypeReference oldValidatorType = validatorType;
+		validatorType = newValidatorType;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE, oldValidatorType, newValidatorType);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setValidatorType(JvmTypeReference newValidatorType) {
+		if (newValidatorType != validatorType) {
+			NotificationChain msgs = null;
+			if (validatorType != null)
+				msgs = ((InternalEObject)validatorType).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE, null, msgs);
+			if (newValidatorType != null)
+				msgs = ((InternalEObject)newValidatorType).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE, null, msgs);
+			msgs = basicSetValidatorType(newValidatorType, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE, newValidatorType, newValidatorType));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE:
+				return basicSetValidatorType(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 OSBPServicePackage.LVALIDATOR__VALIDATOR_ID:
+				return getValidatorId();
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE:
+				return getValidatorType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_ID:
+				setValidatorId((String)newValue);
+				return;
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE:
+				setValidatorType((JvmTypeReference)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_ID:
+				setValidatorId(VALIDATOR_ID_EDEFAULT);
+				return;
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE:
+				setValidatorType((JvmTypeReference)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_ID:
+				return VALIDATOR_ID_EDEFAULT == null ? validatorId != null : !VALIDATOR_ID_EDEFAULT.equals(validatorId);
+			case OSBPServicePackage.LVALIDATOR__VALIDATOR_TYPE:
+				return validatorType != 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(" (validatorId: ");
+		result.append(validatorId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LValidatorImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/OSBPServiceFactoryImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/OSBPServiceFactoryImpl.java
new file mode 100644
index 0000000..715fefe
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/OSBPServiceFactoryImpl.java
@@ -0,0 +1,256 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.osbp.dsl.semantic.service.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPServiceFactoryImpl extends EFactoryImpl implements OSBPServiceFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static OSBPServiceFactory init() {
+		try {
+			OSBPServiceFactory theOSBPServiceFactory = (OSBPServiceFactory)EPackage.Registry.INSTANCE.getEFactory(OSBPServicePackage.eNS_URI);
+			if (theOSBPServiceFactory != null) {
+				return theOSBPServiceFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new OSBPServiceFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPServiceFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case OSBPServicePackage.LSERVICE_MODEL: return createLServiceModel();
+			case OSBPServicePackage.LINJECTED_SERVICES: return createLInjectedServices();
+			case OSBPServicePackage.LINJECTED_SERVICE: return createLInjectedService();
+			case OSBPServicePackage.LDTO_SERVICE: return createLDTOService();
+			case OSBPServicePackage.LVALIDATOR: return createLValidator();
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES: return createLFilterableAttributes();
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES: return createLSortableAttributes();
+			case OSBPServicePackage.LCHART_SERVICE: return createLChartService();
+			case OSBPServicePackage.LFREE_SERVICE: return createLFreeService();
+			case OSBPServicePackage.LSERVICE_OPERATION: return createLServiceOperation();
+			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 OSBPServicePackage.LCARDINALITY:
+				return createLCardinalityFromString(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 OSBPServicePackage.LCARDINALITY:
+				return convertLCardinalityToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LServiceModel createLServiceModel() {
+		LServiceModelImpl lServiceModel = new LServiceModelImpl();
+		return lServiceModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LInjectedServices createLInjectedServices() {
+		LInjectedServicesImpl lInjectedServices = new LInjectedServicesImpl();
+		return lInjectedServices;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LInjectedService createLInjectedService() {
+		LInjectedServiceImpl lInjectedService = new LInjectedServiceImpl();
+		return lInjectedService;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LDTOService createLDTOService() {
+		LDTOServiceImpl ldtoService = new LDTOServiceImpl();
+		return ldtoService;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LValidator createLValidator() {
+		LValidatorImpl lValidator = new LValidatorImpl();
+		return lValidator;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFilterableAttributes createLFilterableAttributes() {
+		LFilterableAttributesImpl lFilterableAttributes = new LFilterableAttributesImpl();
+		return lFilterableAttributes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LSortableAttributes createLSortableAttributes() {
+		LSortableAttributesImpl lSortableAttributes = new LSortableAttributesImpl();
+		return lSortableAttributes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LChartService createLChartService() {
+		LChartServiceImpl lChartService = new LChartServiceImpl();
+		return lChartService;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LFreeService createLFreeService() {
+		LFreeServiceImpl lFreeService = new LFreeServiceImpl();
+		return lFreeService;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LServiceOperation createLServiceOperation() {
+		LServiceOperationImpl lServiceOperation = new LServiceOperationImpl();
+		return lServiceOperation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LCardinality createLCardinalityFromString(EDataType eDataType, String initialValue) {
+		LCardinality result = LCardinality.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 convertLCardinalityToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPServicePackage getOSBPServicePackage() {
+		return (OSBPServicePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static OSBPServicePackage getPackage() {
+		return OSBPServicePackage.eINSTANCE;
+	}
+
+} //OSBPServiceFactoryImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/OSBPServicePackageImpl.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/OSBPServicePackageImpl.java
new file mode 100644
index 0000000..ac19736
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/impl/OSBPServicePackageImpl.java
@@ -0,0 +1,684 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+
+import org.eclipse.osbp.dsl.semantic.service.LCardinality;
+import org.eclipse.osbp.dsl.semantic.service.LChartService;
+import org.eclipse.osbp.dsl.semantic.service.LDTOService;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LFreeService;
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService;
+import org.eclipse.osbp.dsl.semantic.service.LInjectedServices;
+import org.eclipse.osbp.dsl.semantic.service.LService;
+import org.eclipse.osbp.dsl.semantic.service.LServiceModel;
+import org.eclipse.osbp.dsl.semantic.service.LServiceOperation;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LValidator;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+import org.eclipse.xtext.common.types.TypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class OSBPServicePackageImpl extends EPackageImpl implements OSBPServicePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lServiceModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lServiceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lInjectedServicesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lInjectedServiceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass ldtoServiceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lValidatorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lFilterableAttributesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lSortableAttributesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lChartServiceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lFreeServiceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lServiceOperationEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum lCardinalityEEnum = 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.dsl.semantic.service.OSBPServicePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private OSBPServicePackageImpl() {
+		super(eNS_URI, OSBPServiceFactory.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 OSBPServicePackage#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 OSBPServicePackage init() {
+		if (isInited) return (OSBPServicePackage)EPackage.Registry.INSTANCE.getEPackage(OSBPServicePackage.eNS_URI);
+
+		// Obtain or create and register package
+		OSBPServicePackageImpl theOSBPServicePackage = (OSBPServicePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof OSBPServicePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new OSBPServicePackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		OSBPDtoPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theOSBPServicePackage.createPackageContents();
+
+		// Initialize created meta-data
+		theOSBPServicePackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theOSBPServicePackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(OSBPServicePackage.eNS_URI, theOSBPServicePackage);
+		return theOSBPServicePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLServiceModel() {
+		return lServiceModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLServiceModel_Packages() {
+		return (EReference)lServiceModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLService() {
+		return lServiceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLService_InjectedServices() {
+		return (EReference)lServiceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLService_Operations() {
+		return (EReference)lServiceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLInjectedServices() {
+		return lInjectedServicesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLInjectedServices_Services() {
+		return (EReference)lInjectedServicesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLInjectedService() {
+		return lInjectedServiceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLInjectedService_Cardinality() {
+		return (EAttribute)lInjectedServiceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLInjectedService_AttributeName() {
+		return (EAttribute)lInjectedServiceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLInjectedService_Service() {
+		return (EReference)lInjectedServiceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLDTOService() {
+		return ldtoServiceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDTOService_Dto() {
+		return (EReference)ldtoServiceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDTOService_DtoJvm() {
+		return (EReference)ldtoServiceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDTOService_MutablePersistenceId() {
+		return (EAttribute)ldtoServiceEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLDTOService_PersistenceId() {
+		return (EAttribute)ldtoServiceEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDTOService_Validators() {
+		return (EReference)ldtoServiceEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDTOService_Filterable() {
+		return (EReference)ldtoServiceEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLDTOService_Sortable() {
+		return (EReference)ldtoServiceEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLValidator() {
+		return lValidatorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLValidator_ValidatorId() {
+		return (EAttribute)lValidatorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLValidator_ValidatorType() {
+		return (EReference)lValidatorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLFilterableAttributes() {
+		return lFilterableAttributesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLFilterableAttributes_Parent() {
+		return (EReference)lFilterableAttributesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLFilterableAttributes_FilterableFeatures() {
+		return (EReference)lFilterableAttributesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLSortableAttributes() {
+		return lSortableAttributesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLSortableAttributes_Parent() {
+		return (EReference)lSortableAttributesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLSortableAttributes_SortableFeatures() {
+		return (EReference)lSortableAttributesEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLChartService() {
+		return lChartServiceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLFreeService() {
+		return lFreeServiceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLServiceOperation() {
+		return lServiceOperationEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getLCardinality() {
+		return lCardinalityEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPServiceFactory getOSBPServiceFactory() {
+		return (OSBPServiceFactory)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
+		lServiceModelEClass = createEClass(LSERVICE_MODEL);
+		createEReference(lServiceModelEClass, LSERVICE_MODEL__PACKAGES);
+
+		lServiceEClass = createEClass(LSERVICE);
+		createEReference(lServiceEClass, LSERVICE__INJECTED_SERVICES);
+		createEReference(lServiceEClass, LSERVICE__OPERATIONS);
+
+		lInjectedServicesEClass = createEClass(LINJECTED_SERVICES);
+		createEReference(lInjectedServicesEClass, LINJECTED_SERVICES__SERVICES);
+
+		lInjectedServiceEClass = createEClass(LINJECTED_SERVICE);
+		createEAttribute(lInjectedServiceEClass, LINJECTED_SERVICE__CARDINALITY);
+		createEAttribute(lInjectedServiceEClass, LINJECTED_SERVICE__ATTRIBUTE_NAME);
+		createEReference(lInjectedServiceEClass, LINJECTED_SERVICE__SERVICE);
+
+		ldtoServiceEClass = createEClass(LDTO_SERVICE);
+		createEReference(ldtoServiceEClass, LDTO_SERVICE__DTO);
+		createEReference(ldtoServiceEClass, LDTO_SERVICE__DTO_JVM);
+		createEAttribute(ldtoServiceEClass, LDTO_SERVICE__MUTABLE_PERSISTENCE_ID);
+		createEAttribute(ldtoServiceEClass, LDTO_SERVICE__PERSISTENCE_ID);
+		createEReference(ldtoServiceEClass, LDTO_SERVICE__VALIDATORS);
+		createEReference(ldtoServiceEClass, LDTO_SERVICE__FILTERABLE);
+		createEReference(ldtoServiceEClass, LDTO_SERVICE__SORTABLE);
+
+		lValidatorEClass = createEClass(LVALIDATOR);
+		createEAttribute(lValidatorEClass, LVALIDATOR__VALIDATOR_ID);
+		createEReference(lValidatorEClass, LVALIDATOR__VALIDATOR_TYPE);
+
+		lFilterableAttributesEClass = createEClass(LFILTERABLE_ATTRIBUTES);
+		createEReference(lFilterableAttributesEClass, LFILTERABLE_ATTRIBUTES__PARENT);
+		createEReference(lFilterableAttributesEClass, LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES);
+
+		lSortableAttributesEClass = createEClass(LSORTABLE_ATTRIBUTES);
+		createEReference(lSortableAttributesEClass, LSORTABLE_ATTRIBUTES__PARENT);
+		createEReference(lSortableAttributesEClass, LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES);
+
+		lChartServiceEClass = createEClass(LCHART_SERVICE);
+
+		lFreeServiceEClass = createEClass(LFREE_SERVICE);
+
+		lServiceOperationEClass = createEClass(LSERVICE_OPERATION);
+
+		// Create enums
+		lCardinalityEEnum = createEEnum(LCARDINALITY);
+	}
+
+	/**
+	 * <!-- 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
+		OSBPTypesPackage theOSBPTypesPackage = (OSBPTypesPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPTypesPackage.eNS_URI);
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		OSBPDtoPackage theOSBPDtoPackage = (OSBPDtoPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPDtoPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		lServiceModelEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lServiceEClass.getESuperTypes().add(theOSBPTypesPackage.getLClass());
+		lInjectedServicesEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lInjectedServiceEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		ldtoServiceEClass.getESuperTypes().add(this.getLService());
+		lValidatorEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lFilterableAttributesEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lSortableAttributesEClass.getESuperTypes().add(theOSBPTypesPackage.getLLazyResolver());
+		lChartServiceEClass.getESuperTypes().add(this.getLService());
+		lFreeServiceEClass.getESuperTypes().add(this.getLService());
+		lServiceOperationEClass.getESuperTypes().add(theOSBPTypesPackage.getLOperation());
+		lServiceOperationEClass.getESuperTypes().add(theOSBPDtoPackage.getLDtoFeature());
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(lServiceModelEClass, LServiceModel.class, "LServiceModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLServiceModel_Packages(), theOSBPTypesPackage.getLTypedPackage(), null, "packages", null, 0, -1, LServiceModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lServiceEClass, LService.class, "LService", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLService_InjectedServices(), this.getLInjectedServices(), null, "injectedServices", null, 0, 1, LService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLService_Operations(), this.getLServiceOperation(), null, "operations", null, 0, -1, LService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lInjectedServicesEClass, LInjectedServices.class, "LInjectedServices", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLInjectedServices_Services(), this.getLInjectedService(), null, "services", null, 0, -1, LInjectedServices.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lInjectedServiceEClass, LInjectedService.class, "LInjectedService", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLInjectedService_Cardinality(), this.getLCardinality(), "cardinality", null, 0, 1, LInjectedService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLInjectedService_AttributeName(), theEcorePackage.getEString(), "attributeName", null, 0, 1, LInjectedService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLInjectedService_Service(), theTypesPackage.getJvmTypeReference(), null, "service", null, 0, 1, LInjectedService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(ldtoServiceEClass, LDTOService.class, "LDTOService", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLDTOService_Dto(), theOSBPDtoPackage.getLDto(), null, "dto", null, 0, 1, LDTOService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDTOService_DtoJvm(), theTypesPackage.getJvmTypeReference(), null, "dtoJvm", null, 0, 1, LDTOService.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDTOService_MutablePersistenceId(), theEcorePackage.getEBoolean(), "mutablePersistenceId", null, 0, 1, LDTOService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLDTOService_PersistenceId(), theEcorePackage.getEString(), "persistenceId", null, 0, 1, LDTOService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDTOService_Validators(), this.getLValidator(), null, "validators", null, 0, -1, LDTOService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDTOService_Filterable(), this.getLFilterableAttributes(), this.getLFilterableAttributes_Parent(), "filterable", null, 0, 1, LDTOService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLDTOService_Sortable(), this.getLSortableAttributes(), this.getLSortableAttributes_Parent(), "sortable", null, 0, 1, LDTOService.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lValidatorEClass, LValidator.class, "LValidator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLValidator_ValidatorId(), theEcorePackage.getEString(), "validatorId", null, 0, 1, LValidator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLValidator_ValidatorType(), theTypesPackage.getJvmTypeReference(), null, "validatorType", null, 0, 1, LValidator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lFilterableAttributesEClass, LFilterableAttributes.class, "LFilterableAttributes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLFilterableAttributes_Parent(), this.getLDTOService(), this.getLDTOService_Filterable(), "parent", null, 0, 1, LFilterableAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLFilterableAttributes_FilterableFeatures(), theOSBPDtoPackage.getLDtoFeature(), null, "filterableFeatures", null, 0, -1, LFilterableAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lSortableAttributesEClass, LSortableAttributes.class, "LSortableAttributes", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getLSortableAttributes_Parent(), this.getLDTOService(), this.getLDTOService_Sortable(), "parent", null, 0, 1, LSortableAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLSortableAttributes_SortableFeatures(), theOSBPDtoPackage.getLDtoFeature(), null, "sortableFeatures", null, 0, -1, LSortableAttributes.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(lChartServiceEClass, LChartService.class, "LChartService", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lFreeServiceEClass, LFreeService.class, "LFreeService", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(lServiceOperationEClass, LServiceOperation.class, "LServiceOperation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		// Initialize enums and add enum literals
+		initEEnum(lCardinalityEEnum, LCardinality.class, "LCardinality");
+		addEEnumLiteral(lCardinalityEEnum, LCardinality.ZERO_TO_ONE);
+		addEEnumLiteral(lCardinalityEEnum, LCardinality.ONE_TO_ONE);
+		addEEnumLiteral(lCardinalityEEnum, LCardinality.ZERO_TO_MANY);
+		addEEnumLiteral(lCardinalityEEnum, LCardinality.ONE_TO_MANY);
+
+		// 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", "services"
+		   });
+	}
+
+} //OSBPServicePackageImpl
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/util/OSBPServiceAdapterFactory.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/util/OSBPServiceAdapterFactory.java
new file mode 100644
index 0000000..353030c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/util/OSBPServiceAdapterFactory.java
@@ -0,0 +1,446 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+import org.eclipse.osbp.dsl.semantic.service.*;
+
+/**
+ * <!-- 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.dsl.semantic.service.OSBPServicePackage
+ * @generated
+ */
+public class OSBPServiceAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPServicePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPServiceAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = OSBPServicePackage.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 OSBPServiceSwitch<Adapter> modelSwitch =
+		new OSBPServiceSwitch<Adapter>() {
+			@Override
+			public Adapter caseLServiceModel(LServiceModel object) {
+				return createLServiceModelAdapter();
+			}
+			@Override
+			public Adapter caseLService(LService object) {
+				return createLServiceAdapter();
+			}
+			@Override
+			public Adapter caseLInjectedServices(LInjectedServices object) {
+				return createLInjectedServicesAdapter();
+			}
+			@Override
+			public Adapter caseLInjectedService(LInjectedService object) {
+				return createLInjectedServiceAdapter();
+			}
+			@Override
+			public Adapter caseLDTOService(LDTOService object) {
+				return createLDTOServiceAdapter();
+			}
+			@Override
+			public Adapter caseLValidator(LValidator object) {
+				return createLValidatorAdapter();
+			}
+			@Override
+			public Adapter caseLFilterableAttributes(LFilterableAttributes object) {
+				return createLFilterableAttributesAdapter();
+			}
+			@Override
+			public Adapter caseLSortableAttributes(LSortableAttributes object) {
+				return createLSortableAttributesAdapter();
+			}
+			@Override
+			public Adapter caseLChartService(LChartService object) {
+				return createLChartServiceAdapter();
+			}
+			@Override
+			public Adapter caseLFreeService(LFreeService object) {
+				return createLFreeServiceAdapter();
+			}
+			@Override
+			public Adapter caseLServiceOperation(LServiceOperation object) {
+				return createLServiceOperationAdapter();
+			}
+			@Override
+			public Adapter caseLLazyResolver(LLazyResolver object) {
+				return createLLazyResolverAdapter();
+			}
+			@Override
+			public Adapter caseLAnnotationTarget(LAnnotationTarget object) {
+				return createLAnnotationTargetAdapter();
+			}
+			@Override
+			public Adapter caseLType(LType object) {
+				return createLTypeAdapter();
+			}
+			@Override
+			public Adapter caseLClass(LClass object) {
+				return createLClassAdapter();
+			}
+			@Override
+			public Adapter caseLOperation(LOperation object) {
+				return createLOperationAdapter();
+			}
+			@Override
+			public Adapter caseLFeature(LFeature object) {
+				return createLFeatureAdapter();
+			}
+			@Override
+			public Adapter caseLDtoFeature(LDtoFeature object) {
+				return createLDtoFeatureAdapter();
+			}
+			@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.dsl.semantic.service.LServiceModel <em>LService 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.dsl.semantic.service.LServiceModel
+	 * @generated
+	 */
+	public Adapter createLServiceModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LService <em>LService</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.service.LService
+	 * @generated
+	 */
+	public Adapter createLServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedServices <em>LInjected Services</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.service.LInjectedServices
+	 * @generated
+	 */
+	public Adapter createLInjectedServicesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LInjectedService <em>LInjected Service</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.service.LInjectedService
+	 * @generated
+	 */
+	public Adapter createLInjectedServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LDTOService <em>LDTO Service</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.service.LDTOService
+	 * @generated
+	 */
+	public Adapter createLDTOServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LValidator <em>LValidator</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.service.LValidator
+	 * @generated
+	 */
+	public Adapter createLValidatorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes <em>LFilterable Attributes</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.service.LFilterableAttributes
+	 * @generated
+	 */
+	public Adapter createLFilterableAttributesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LSortableAttributes <em>LSortable Attributes</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.service.LSortableAttributes
+	 * @generated
+	 */
+	public Adapter createLSortableAttributesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LChartService <em>LChart Service</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.service.LChartService
+	 * @generated
+	 */
+	public Adapter createLChartServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LFreeService <em>LFree Service</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.service.LFreeService
+	 * @generated
+	 */
+	public Adapter createLFreeServiceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.service.LServiceOperation <em>LService Operation</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.service.LServiceOperation
+	 * @generated
+	 */
+	public Adapter createLServiceOperationAdapter() {
+		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.LAnnotationTarget <em>LAnnotation Target</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.LAnnotationTarget
+	 * @generated
+	 */
+	public Adapter createLAnnotationTargetAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LType <em>LType</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.LType
+	 * @generated
+	 */
+	public Adapter createLTypeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LClass <em>LClass</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.LClass
+	 * @generated
+	 */
+	public Adapter createLClassAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LOperation <em>LOperation</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.LOperation
+	 * @generated
+	 */
+	public Adapter createLOperationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.common.types.LFeature <em>LFeature</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.LFeature
+	 * @generated
+	 */
+	public Adapter createLFeatureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.osbp.dsl.semantic.dto.LDtoFeature <em>LDto Feature</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.dto.LDtoFeature
+	 * @generated
+	 */
+	public Adapter createLDtoFeatureAdapter() {
+		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;
+	}
+
+} //OSBPServiceAdapterFactory
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/util/OSBPServiceSwitch.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/util/OSBPServiceSwitch.java
new file mode 100644
index 0000000..ae740b2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/semantic/service/util/OSBPServiceSwitch.java
@@ -0,0 +1,475 @@
+/**
+ * Copyright (c) 2011, 2016 - Lunifera GmbH (Wien), Loetz GmbH&Co.KG (Heidelberg)
+ *  All rights reserved. This program and the accompanying materials 
+ *  are made available under the terms of the Eclipse Public License v1.0 
+ *  which accompanies this distribution, and is available at 
+ *  http://www.eclipse.org/legal/epl-v10.html 
+ * 
+ *  Based on ideas from Xtext, Xtend, Xcore
+ *   
+ *  Contributors:  
+ *  		Florian Pirchner - Initial implementation
+ *  
+ */
+package org.eclipse.osbp.dsl.semantic.service.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.LAnnotationTarget;
+import org.eclipse.osbp.dsl.semantic.common.types.LClass;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.common.types.LLazyResolver;
+import org.eclipse.osbp.dsl.semantic.common.types.LOperation;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature;
+
+import org.eclipse.osbp.dsl.semantic.service.*;
+
+/**
+ * <!-- 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.dsl.semantic.service.OSBPServicePackage
+ * @generated
+ */
+public class OSBPServiceSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static OSBPServicePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OSBPServiceSwitch() {
+		if (modelPackage == null) {
+			modelPackage = OSBPServicePackage.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 OSBPServicePackage.LSERVICE_MODEL: {
+				LServiceModel lServiceModel = (LServiceModel)theEObject;
+				T result = caseLServiceModel(lServiceModel);
+				if (result == null) result = caseLLazyResolver(lServiceModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LSERVICE: {
+				LService lService = (LService)theEObject;
+				T result = caseLService(lService);
+				if (result == null) result = caseLClass(lService);
+				if (result == null) result = caseLType(lService);
+				if (result == null) result = caseLAnnotationTarget(lService);
+				if (result == null) result = caseLLazyResolver(lService);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LINJECTED_SERVICES: {
+				LInjectedServices lInjectedServices = (LInjectedServices)theEObject;
+				T result = caseLInjectedServices(lInjectedServices);
+				if (result == null) result = caseLLazyResolver(lInjectedServices);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LINJECTED_SERVICE: {
+				LInjectedService lInjectedService = (LInjectedService)theEObject;
+				T result = caseLInjectedService(lInjectedService);
+				if (result == null) result = caseLLazyResolver(lInjectedService);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LDTO_SERVICE: {
+				LDTOService ldtoService = (LDTOService)theEObject;
+				T result = caseLDTOService(ldtoService);
+				if (result == null) result = caseLService(ldtoService);
+				if (result == null) result = caseLClass(ldtoService);
+				if (result == null) result = caseLType(ldtoService);
+				if (result == null) result = caseLAnnotationTarget(ldtoService);
+				if (result == null) result = caseLLazyResolver(ldtoService);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LVALIDATOR: {
+				LValidator lValidator = (LValidator)theEObject;
+				T result = caseLValidator(lValidator);
+				if (result == null) result = caseLLazyResolver(lValidator);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES: {
+				LFilterableAttributes lFilterableAttributes = (LFilterableAttributes)theEObject;
+				T result = caseLFilterableAttributes(lFilterableAttributes);
+				if (result == null) result = caseLLazyResolver(lFilterableAttributes);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES: {
+				LSortableAttributes lSortableAttributes = (LSortableAttributes)theEObject;
+				T result = caseLSortableAttributes(lSortableAttributes);
+				if (result == null) result = caseLLazyResolver(lSortableAttributes);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LCHART_SERVICE: {
+				LChartService lChartService = (LChartService)theEObject;
+				T result = caseLChartService(lChartService);
+				if (result == null) result = caseLService(lChartService);
+				if (result == null) result = caseLClass(lChartService);
+				if (result == null) result = caseLType(lChartService);
+				if (result == null) result = caseLAnnotationTarget(lChartService);
+				if (result == null) result = caseLLazyResolver(lChartService);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LFREE_SERVICE: {
+				LFreeService lFreeService = (LFreeService)theEObject;
+				T result = caseLFreeService(lFreeService);
+				if (result == null) result = caseLService(lFreeService);
+				if (result == null) result = caseLClass(lFreeService);
+				if (result == null) result = caseLType(lFreeService);
+				if (result == null) result = caseLAnnotationTarget(lFreeService);
+				if (result == null) result = caseLLazyResolver(lFreeService);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case OSBPServicePackage.LSERVICE_OPERATION: {
+				LServiceOperation lServiceOperation = (LServiceOperation)theEObject;
+				T result = caseLServiceOperation(lServiceOperation);
+				if (result == null) result = caseLOperation(lServiceOperation);
+				if (result == null) result = caseLDtoFeature(lServiceOperation);
+				if (result == null) result = caseLFeature(lServiceOperation);
+				if (result == null) result = caseLAnnotationTarget(lServiceOperation);
+				if (result == null) result = caseLLazyResolver(lServiceOperation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LService 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>LService Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLServiceModel(LServiceModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LService</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>LService</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLService(LService object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LInjected Services</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>LInjected Services</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLInjectedServices(LInjectedServices object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LInjected Service</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>LInjected Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLInjectedService(LInjectedService object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDTO Service</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>LDTO Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDTOService(LDTOService object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LValidator</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>LValidator</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLValidator(LValidator object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFilterable Attributes</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>LFilterable Attributes</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFilterableAttributes(LFilterableAttributes object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LSortable Attributes</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>LSortable Attributes</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLSortableAttributes(LSortableAttributes object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LChart Service</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>LChart Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLChartService(LChartService object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFree Service</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>LFree Service</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFreeService(LFreeService object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LService Operation</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>LService Operation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLServiceOperation(LServiceOperation 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>LAnnotation Target</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>LAnnotation Target</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLAnnotationTarget(LAnnotationTarget object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LType</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>LType</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLType(LType object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LClass</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>LClass</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLClass(LClass object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LOperation</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>LOperation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLOperation(LOperation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LFeature</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>LFeature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLFeature(LFeature object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LDto Feature</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>LDto Feature</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLDtoFeature(LDtoFeature 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;
+	}
+
+} //OSBPServiceSwitch
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/AbstractServicesGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/AbstractServicesGrammarRuntimeModule.java
new file mode 100644
index 0000000..1d8eeda
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/AbstractServicesGrammarRuntimeModule.java
@@ -0,0 +1,344 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext;
+
+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.dsl.services.xtext.ServicesGrammarRuntimeModule}
+ */
+ @SuppressWarnings("all")
+public abstract class AbstractServicesGrammarRuntimeModule extends DefaultRuntimeModule {
+
+	protected Properties properties = null;
+
+	@Override
+	public void configure(Binder binder) {
+		properties = tryBindProperties(binder, "org/eclipse/osbp/dsl/services/xtext/ServicesGrammar.properties");
+		super.configure(binder);
+	}
+	
+	public void configureLanguageName(Binder binder) {
+		binder.bind(String.class).annotatedWith(Names.named(Constants.LANGUAGE_NAME)).toInstance("org.eclipse.osbp.dsl.services.xtext.ServicesGrammar");
+	}
+	
+	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("service");
+	}
+	
+	// contributed by org.eclipse.xtext.generator.grammarAccess.GrammarAccessFragment
+	public Class<? extends org.eclipse.xtext.IGrammarAccess> bindIGrammarAccess() {
+		return org.eclipse.osbp.dsl.services.xtext.services.ServicesGrammarGrammarAccess.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
+		return org.eclipse.osbp.dsl.services.xtext.serializer.ServicesGrammarSemanticSequencer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
+		return org.eclipse.osbp.dsl.services.xtext.serializer.ServicesGrammarSyntacticSequencer.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.dsl.services.xtext.parser.antlr.ServicesGrammarParser.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.dsl.services.xtext.parser.antlr.ServicesGrammarAntlrTokenFileProvider.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public Class<? extends org.eclipse.xtext.parser.antlr.Lexer> bindLexer() {
+		return org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarLexer.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
+	public com.google.inject.Provider<org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarLexer> provideInternalServicesGrammarLexer() {
+		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarLexer.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.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarLexer.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.JavaValidatorFragment
+	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.dsl.services.xtext.validation.ServicesGrammarJavaValidator> bindServicesGrammarJavaValidator() {
+		return org.eclipse.osbp.dsl.services.xtext.validation.ServicesGrammarJavaValidator.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.types.TypesGeneratorFragment
+	public java.lang.ClassLoader bindClassLoaderToInstance() {
+		return getClass().getClassLoader();
+	}
+
+	// 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.dsl.services.xtext.jvmmodel.ServicesGrammarJvmModelInferrer.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarStandaloneSetupGenerated.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarStandaloneSetupGenerated.java
new file mode 100644
index 0000000..3e0798c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarStandaloneSetupGenerated.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext;
+
+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 ServicesGrammarStandaloneSetupGenerated implements ISetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		org.eclipse.osbp.dsl.common.xtext.CommonGrammarStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+	
+	public Injector createInjector() {
+		return Guice.createInjector(new org.eclipse.osbp.dsl.services.xtext.ServicesGrammarRuntimeModule());
+	}
+	
+	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("service", resourceFactory);
+		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("service", serviceProvider);
+		
+
+
+
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/ServicesGrammarAntlrTokenFileProvider.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/ServicesGrammarAntlrTokenFileProvider.java
new file mode 100644
index 0000000..09a4f3c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/ServicesGrammarAntlrTokenFileProvider.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.parser.antlr;
+
+import java.io.InputStream;
+import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
+
+public class ServicesGrammarAntlrTokenFileProvider implements IAntlrTokenFileProvider {
+	
+	public InputStream getAntlrTokenFile() {
+		ClassLoader classLoader = getClass().getClassLoader();
+    	return classLoader.getResourceAsStream("org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.tokens");
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/ServicesGrammarParser.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/ServicesGrammarParser.java
new file mode 100644
index 0000000..1b7afa7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/ServicesGrammarParser.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.parser.antlr;
+
+import com.google.inject.Inject;
+
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+public class ServicesGrammarParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
+	
+	@Inject
+	private ServicesGrammarGrammarAccess grammarAccess;
+	
+	@Override
+	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
+		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
+	}
+	
+	@Override
+	protected org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarParser createParser(XtextTokenStream stream) {
+		return new org.eclipse.osbp.dsl.services.xtext.parser.antlr.internal.InternalServicesGrammarParser(stream, getGrammarAccess());
+	}
+	
+	@Override 
+	protected String getDefaultRuleName() {
+		return "LServiceModel";
+	}
+	
+	public ServicesGrammarGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+	
+	public void setGrammarAccess(ServicesGrammarGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/DebugInternalServicesGrammar.g b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/DebugInternalServicesGrammar.g
new file mode 100644
index 0000000..5ef702e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/DebugInternalServicesGrammar.g
@@ -0,0 +1,3436 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar DebugInternalServicesGrammar;
+
+	
+
+
+
+
+
+
+// Rule LServiceModel
+ruleLServiceModel :
+(
+(
+ruleTypedPackage
+)
+)*
+;
+
+
+
+
+
+
+// Rule Class
+ruleClass :
+((
+)(
+(
+ruleAnnotationDef
+)
+)*(
+)	'dtoservice' 
+(
+(
+ruleValidIDWithKeywords
+)
+)	'provides' 
+(
+(
+		ruleTYPE_CROSS_REFERENCE
+)
+)	'{' 
+((
+(
+	'mutable' 
+ 
+
+)
+)?	'persistenceUnit' 
+(
+(
+ruleQualifiedName
+)
+)(	';' 
+)?)?(	'validators' 
+	'{' 
+(
+(
+ruleValidatorDef
+)
+)(	', ' 
+(
+(
+ruleValidatorDef
+)
+))*(	';' 
+)?	'}' 
+)?(
+(
+ruleInjectedServices
+)
+)(
+(
+ruleOperation
+)
+)*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule ValidatorDef
+ruleValidatorDef :
+((((
+(
+ruleJvmTypeReference
+)
+))=>(
+(
+ruleJvmTypeReference
+)
+))
+    |(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule InjectedServices
+ruleInjectedServices :
+((
+)(
+(
+ruleInjectedService
+)
+)*)
+;
+
+
+
+
+
+
+// Rule InjectedService
+ruleInjectedService :
+((
+)	'injectService' 
+(
+(
+ruleCardinality
+)
+)?(
+(
+ruleJvmTypeReference
+)
+)(
+(
+RULE_ID
+
+)
+)(	';' 
+)?)
+;
+
+
+
+
+
+
+
+
+
+
+// Rule Operation
+ruleOperation :
+((
+)(
+(
+ruleAnnotationDef
+)
+)*(	'def' 
+(
+(
+ruleJvmTypeReference
+)
+)(
+(
+RULE_ID
+
+)
+)	'(' 
+((
+(
+ruleFullJvmFormalParameter
+)
+)(	', ' 
+(
+(
+ruleFullJvmFormalParameter
+)
+))*)?	')' 
+(
+(
+ruleXExpression
+)
+)))
+;
+
+
+
+
+
+
+// Rule TypedPackage
+ruleTypedPackage :
+((
+)	'package' 
+(
+(
+ruleQualifiedName
+)
+)(	'{' 
+(
+(
+ruleImport
+)
+)*(
+(
+ruleType
+)
+)*	'}' 
+)?)
+;
+
+
+
+
+
+
+// Rule Type
+ruleType :
+(	ruleScalarType
+    |	ruleClass)
+;
+
+
+
+
+
+
+// Rule Import
+ruleImport :
+(	'import' 
+(
+(
+ruleLQualifiedNameWithWildCard
+)
+)(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule DataType
+ruleDataType :
+(	'datatype' 
+(
+(
+ruleValidIDWithKeywords
+)
+)((	'jvmType' 
+(
+(
+ruleJvmTypeReference
+)
+)(
+(
+	'as primitive' 
+ 
+
+)
+)?(
+(
+ruleDataTypeConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?)
+    |((
+(
+	'dateType' 
+ 
+
+)
+)(
+(
+ruleDateType
+)
+)(
+(
+ruleDateConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?)
+    |((
+(
+	'as blob' 
+ 
+
+)
+)(
+(
+ruleBlobTypeConstraint
+)
+)*(	'properties' 
+	'(' 
+(
+(
+ruleKeyAndValue
+)
+)(	', ' 
+(
+(
+ruleKeyAndValue
+)
+))*	')' 
+)?))(	';' 
+)?)
+;
+
+
+
+
+
+
+
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint :
+(	ruleDtCAssertFalse
+    |	ruleDtCAssertTrue
+    |	ruleDtCDecimalMax
+    |	ruleDtCDecimalMin
+    |	ruleDtCDigits
+    |	ruleDtCNumericMax
+    |	ruleDtCNumericMin
+    |	ruleDtCNotNull
+    |	ruleDtCNull
+    |	ruleDtCRegEx
+    |	ruleDtCSize)
+;
+
+
+
+
+
+
+// Rule DateConstraint
+ruleDateConstraint :
+(	ruleDtCFuture
+    |	ruleDtCPast
+    |	ruleDtCNotNull
+    |	ruleDtCNull)
+;
+
+
+
+
+
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint :
+(	ruleDtCNotNull
+    |	ruleDtCNull)
+;
+
+
+
+
+
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse :
+((
+)	'isFalse' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue :
+((
+)	'isTrue' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax :
+((
+)	'maxDecimal' 
+	'(' 
+(
+(
+ruleLDecimal
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin :
+((
+)	'minDecimal' 
+	'(' 
+(
+(
+ruleLDecimal
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCDigits
+ruleDtCDigits :
+((
+)	'digits' 
+	'(' 
+(
+(
+RULE_INT
+
+)
+)	', ' 
+(
+(
+RULE_INT
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCFuture
+ruleDtCFuture :
+((
+)	'isFuture' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCPast
+ruleDtCPast :
+((
+)	'isPast' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCNumericMax
+ruleDtCNumericMax :
+((
+)	'maxNumber' 
+	'(' 
+(
+(
+ruleLInt
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCNumericMin
+ruleDtCNumericMin :
+((
+)	'minNumber' 
+	'(' 
+(
+(
+ruleLInt
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCNotNull
+ruleDtCNotNull :
+((
+)	'isNotNull' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCNull
+ruleDtCNull :
+((
+)	'isNull' 
+(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?)
+;
+
+
+
+
+
+
+// Rule DtCRegEx
+ruleDtCRegEx :
+((
+)	'regex' 
+	'(' 
+(
+(
+RULE_STRING
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule DtCSize
+ruleDtCSize :
+((
+)	'minMaxSize' 
+	'(' 
+(
+(
+RULE_INT
+
+)
+)	', ' 
+(
+(
+RULE_INT
+
+)
+)(
+((	'[' 
+(	'msgCode' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?)
+    |(	'msgI18nKey' 
+	'=' 
+(
+(
+ruleQualifiedName
+)
+))?
+    |((	'severity' 
+	'=' 
+(
+(
+ruleConstraintSeverity
+)
+))?	']' 
+))*
+)?	')' 
+)
+;
+
+
+
+
+
+
+// Rule ScalarType
+ruleScalarType :
+(	ruleDataType
+    |	ruleEnum)
+;
+
+
+
+
+
+
+
+
+// Rule Enum
+ruleEnum :
+(	'enum' 
+(
+(
+RULE_ID
+
+)
+)	'{' 
+(
+(
+ruleEnumLiteral
+)
+)(	', ' 
+(
+(
+ruleEnumLiteral
+)
+))*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule EnumLiteral
+ruleEnumLiteral :
+((
+(
+RULE_ID
+
+)
+)(
+((	'(' 
+(
+(
+	'asDefault' 
+ 
+
+)
+)?)
+    |((
+(
+	'forNull' 
+ 
+
+)
+)?	')' 
+(	'=' 
+(
+(
+RULE_INT
+
+)
+))?))*
+)?)
+;
+
+
+
+
+
+
+// Rule AnnotationDef
+ruleAnnotationDef :
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+ruleXAnnotation
+)
+))
+;
+
+
+
+
+
+
+
+
+// Rule ResultFilter
+ruleResultFilter :
+	ruleAttributeMatchingConstraint
+;
+
+
+
+
+
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint :
+((
+(
+	RULE_ID
+
+)
+)(
+(
+ruleLComparatorType
+)
+)((
+(
+RULE_STRING
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+	RULE_ID
+
+)
+))(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule KeyAndValue
+ruleKeyAndValue :
+(	'key' 
+	'=' 
+(
+(
+RULE_STRING
+
+)
+)	'value' 
+	'=' 
+(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard :
+( ruleQualifiedName(
+	'.' 
+
+	'*' 
+)?)
+    ;
+
+
+
+
+
+
+// Rule LFQN
+ruleLFQN :
+( RULE_ID(
+	'.' 
+RULE_ID)*)
+    ;
+
+
+
+
+
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE :
+RULE_ID
+    ;
+
+
+
+
+
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords :
+(
+	'cachable' 
+
+    |
+	'id' 
+
+    |
+	'uuid' 
+
+    |
+	'transient' 
+
+    |
+	'version' 
+
+    |(
+	'derived' 
+
+	'collection' 
+)
+    |
+	'refers' 
+
+    |
+	'settings' 
+
+    |
+	'lazy' 
+
+    |
+	'notnull' 
+
+    |
+	'dto' 
+
+    |
+	'date' 
+
+    |
+	'mapto' 
+
+    |
+	'ref' 
+
+    |
+	'cascade' 
+
+    |
+	'var' 
+
+    | RULE_ID)
+    ;
+
+
+
+
+
+
+
+
+
+
+// Rule LInt
+ruleLInt :
+((
+	'+' 
+
+    |
+	'-' 
+)? RULE_INT)
+    ;
+
+
+
+
+
+
+// Rule LDecimal
+ruleLDecimal :
+( ruleLInt(
+	'.' 
+RULE_INT)?)
+    ;
+
+
+
+
+
+
+// Rule XAnnotation
+ruleXAnnotation :
+((
+)	'@' 
+(
+(
+		ruleQualifiedName
+)
+)(((	'(' 
+)=>	'(' 
+)((((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+ruleXAnnotationElementValuePair
+)
+)(	',' 
+((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>
+(
+ruleXAnnotationElementValuePair
+)
+))*)
+    |(
+(
+ruleXAnnotationElementValueOrCommaList
+)
+))?	')' 
+)?)
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValuePair
+ruleXAnnotationElementValuePair :
+(((((
+(
+		ruleValidID
+)
+)	'=' 
+))=>((
+(
+		ruleValidID
+)
+)	'=' 
+))(
+(
+ruleXAnnotationElementValue
+)
+))
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValueOrCommaList
+ruleXAnnotationElementValueOrCommaList :
+((((((
+)	'#' 
+	'[' 
+))=>((
+)	'#' 
+	'[' 
+))((
+(
+ruleXAnnotationOrExpression
+)
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))*)?	']' 
+)
+    |(	ruleXAnnotationOrExpression((
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))+)?))
+;
+
+
+
+
+
+
+// Rule XAnnotationElementValue
+ruleXAnnotationElementValue :
+((((((
+)	'#' 
+	'[' 
+))=>((
+)	'#' 
+	'[' 
+))((
+(
+ruleXAnnotationOrExpression
+)
+)(	',' 
+(
+(
+ruleXAnnotationOrExpression
+)
+))*)?	']' 
+)
+    |	ruleXAnnotationOrExpression)
+;
+
+
+
+
+
+
+// Rule XAnnotationOrExpression
+ruleXAnnotationOrExpression :
+(	ruleXAnnotation
+    |	ruleXExpression)
+;
+
+
+
+
+
+
+// Rule XExpression
+ruleXExpression :
+	ruleXAssignment
+;
+
+
+
+
+
+
+// Rule XAssignment
+ruleXAssignment :
+(((
+)(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign(
+(
+ruleXAssignment
+)
+))
+    |(	ruleXOrExpression(((((
+)(
+(
+		ruleOpMultiAssign
+)
+)))=>((
+)(
+(
+		ruleOpMultiAssign
+)
+)))(
+(
+ruleXAssignment
+)
+))?))
+;
+
+
+
+
+
+
+// Rule OpSingleAssign
+ruleOpSingleAssign :
+
+	'=' 
+
+    ;
+
+
+
+
+
+
+// Rule OpMultiAssign
+ruleOpMultiAssign :
+(
+	'+=' 
+
+    |
+	'-=' 
+
+    |
+	'*=' 
+
+    |
+	'/=' 
+
+    |
+	'%=' 
+
+    |(
+	'<' 
+
+	'<' 
+
+	'=' 
+)
+    |(
+	'>' 
+(
+	'>' 
+)?
+	'>=' 
+))
+    ;
+
+
+
+
+
+
+// Rule XOrExpression
+ruleXOrExpression :
+(	ruleXAndExpression(((((
+)(
+(
+		ruleOpOr
+)
+)))=>((
+)(
+(
+		ruleOpOr
+)
+)))(
+(
+ruleXAndExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpOr
+ruleOpOr :
+
+	'||' 
+
+    ;
+
+
+
+
+
+
+// Rule XAndExpression
+ruleXAndExpression :
+(	ruleXEqualityExpression(((((
+)(
+(
+		ruleOpAnd
+)
+)))=>((
+)(
+(
+		ruleOpAnd
+)
+)))(
+(
+ruleXEqualityExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpAnd
+ruleOpAnd :
+
+	'&&' 
+
+    ;
+
+
+
+
+
+
+// Rule XEqualityExpression
+ruleXEqualityExpression :
+(	ruleXRelationalExpression(((((
+)(
+(
+		ruleOpEquality
+)
+)))=>((
+)(
+(
+		ruleOpEquality
+)
+)))(
+(
+ruleXRelationalExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpEquality
+ruleOpEquality :
+(
+	'==' 
+
+    |
+	'!=' 
+
+    |
+	'===' 
+
+    |
+	'!==' 
+)
+    ;
+
+
+
+
+
+
+// Rule XRelationalExpression
+ruleXRelationalExpression :
+(	ruleXOtherOperatorExpression((((((
+)	'instanceof' 
+))=>((
+)	'instanceof' 
+))(
+(
+ruleJvmTypeReference
+)
+))
+    |(((((
+)(
+(
+		ruleOpCompare
+)
+)))=>((
+)(
+(
+		ruleOpCompare
+)
+)))(
+(
+ruleXOtherOperatorExpression
+)
+)))*)
+;
+
+
+
+
+
+
+// Rule OpCompare
+ruleOpCompare :
+(
+	'>=' 
+
+    |(
+	'<' 
+
+	'=' 
+)
+    |
+	'>' 
+
+    |
+	'<' 
+)
+    ;
+
+
+
+
+
+
+// Rule XOtherOperatorExpression
+ruleXOtherOperatorExpression :
+(	ruleXAdditiveExpression(((((
+)(
+(
+		ruleOpOther
+)
+)))=>((
+)(
+(
+		ruleOpOther
+)
+)))(
+(
+ruleXAdditiveExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpOther
+ruleOpOther :
+(
+	'->' 
+
+    |
+	'..<' 
+
+    |(
+	'>' 
+
+	'..' 
+)
+    |
+	'..' 
+
+    |
+	'=>' 
+
+    |(
+	'>' 
+((((
+	'>' 
+
+	'>' 
+))=>(
+	'>' 
+
+	'>' 
+))
+    |
+	'>' 
+))
+    |(
+	'<' 
+((((
+	'<' 
+
+	'<' 
+))=>(
+	'<' 
+
+	'<' 
+))
+    |
+	'<' 
+
+    |
+	'=>' 
+))
+    |
+	'<>' 
+
+    |
+	'?:' 
+)
+    ;
+
+
+
+
+
+
+// Rule XAdditiveExpression
+ruleXAdditiveExpression :
+(	ruleXMultiplicativeExpression(((((
+)(
+(
+		ruleOpAdd
+)
+)))=>((
+)(
+(
+		ruleOpAdd
+)
+)))(
+(
+ruleXMultiplicativeExpression
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpAdd
+ruleOpAdd :
+(
+	'+' 
+
+    |
+	'-' 
+)
+    ;
+
+
+
+
+
+
+// Rule XMultiplicativeExpression
+ruleXMultiplicativeExpression :
+(	ruleXUnaryOperation(((((
+)(
+(
+		ruleOpMulti
+)
+)))=>((
+)(
+(
+		ruleOpMulti
+)
+)))(
+(
+ruleXUnaryOperation
+)
+))*)
+;
+
+
+
+
+
+
+// Rule OpMulti
+ruleOpMulti :
+(
+	'*' 
+
+    |
+	'**' 
+
+    |
+	'/' 
+
+    |
+	'%' 
+)
+    ;
+
+
+
+
+
+
+// Rule XUnaryOperation
+ruleXUnaryOperation :
+(((
+)(
+(
+		ruleOpUnary
+)
+)(
+(
+ruleXUnaryOperation
+)
+))
+    |	ruleXCastedExpression)
+;
+
+
+
+
+
+
+// Rule OpUnary
+ruleOpUnary :
+(
+	'!' 
+
+    |
+	'-' 
+
+    |
+	'+' 
+)
+    ;
+
+
+
+
+
+
+// Rule XCastedExpression
+ruleXCastedExpression :
+(	ruleXPostfixOperation(((((
+)	'as' 
+))=>((
+)	'as' 
+))(
+(
+ruleJvmTypeReference
+)
+))*)
+;
+
+
+
+
+
+
+// Rule XPostfixOperation
+ruleXPostfixOperation :
+(	ruleXMemberFeatureCall((((
+)(
+(
+		ruleOpPostfix
+)
+)))=>((
+)(
+(
+		ruleOpPostfix
+)
+)))?)
+;
+
+
+
+
+
+
+// Rule OpPostfix
+ruleOpPostfix :
+(
+	'++' 
+
+    |
+	'--' 
+)
+    ;
+
+
+
+
+
+
+// Rule XMemberFeatureCall
+ruleXMemberFeatureCall :
+(	ruleXPrimaryExpression((((((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))=>((
+)(	'.' 
+
+    |(
+(
+	'::' 
+ 
+
+)
+))(
+(
+		ruleFeatureCallID
+)
+)	ruleOpSingleAssign))(
+(
+ruleXAssignment
+)
+))
+    |(((((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))=>((
+)(	'.' 
+
+    |(
+(
+	'?.' 
+ 
+
+)
+)
+    |(
+(
+	'::' 
+ 
+
+)
+))))(	'<' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(
+(
+		ruleIdOrSuper
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?))*)
+;
+
+
+
+
+
+
+// Rule XPrimaryExpression
+ruleXPrimaryExpression :
+(	ruleXConstructorCall
+    |	ruleXBlockExpression
+    |	ruleXSwitchExpression
+    |((((
+)	'synchronized' 
+	'(' 
+))=>	ruleXSynchronizedExpression)
+    |	ruleXFeatureCall
+    |	ruleXLiteral
+    |	ruleXIfExpression
+    |((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>	ruleXForLoopExpression)
+    |	ruleXBasicForLoopExpression
+    |	ruleXWhileExpression
+    |	ruleXDoWhileExpression
+    |	ruleXThrowExpression
+    |	ruleXReturnExpression
+    |	ruleXTryCatchFinallyExpression
+    |	ruleXParenthesizedExpression)
+;
+
+
+
+
+
+
+// Rule XLiteral
+ruleXLiteral :
+(	ruleXCollectionLiteral
+    |((((
+)	'[' 
+))=>	ruleXClosure)
+    |	ruleXBooleanLiteral
+    |	ruleXNumberLiteral
+    |	ruleXNullLiteral
+    |	ruleXStringLiteral
+    |	ruleXTypeLiteral)
+;
+
+
+
+
+
+
+// Rule XCollectionLiteral
+ruleXCollectionLiteral :
+(	ruleXSetLiteral
+    |	ruleXListLiteral)
+;
+
+
+
+
+
+
+// Rule XSetLiteral
+ruleXSetLiteral :
+((
+)	'#' 
+	'{' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XListLiteral
+ruleXListLiteral :
+((
+)	'#' 
+	'[' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	']' 
+)
+;
+
+
+
+
+
+
+// Rule XClosure
+ruleXClosure :
+(((((
+)	'[' 
+))=>((
+)	'[' 
+))(((((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>(((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))?(
+(
+ruleXExpressionInClosure
+)
+)	']' 
+)
+;
+
+
+
+
+
+
+// Rule XExpressionInClosure
+ruleXExpressionInClosure :
+((
+)((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	';' 
+)?)*)
+;
+
+
+
+
+
+
+// Rule XShortClosure
+ruleXShortClosure :
+(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XParenthesizedExpression
+ruleXParenthesizedExpression :
+(	'(' 
+	ruleXExpression	')' 
+)
+;
+
+
+
+
+
+
+// Rule XIfExpression
+ruleXIfExpression :
+((
+)	'if' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+)(((	'else' 
+)=>	'else' 
+)(
+(
+ruleXExpression
+)
+))?)
+;
+
+
+
+
+
+
+// Rule XSwitchExpression
+ruleXSwitchExpression :
+((
+)	'switch' 
+(((((	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>(	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+)
+    |(((((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))?(
+(
+ruleXExpression
+)
+)))	'{' 
+(
+(
+ruleXCasePart
+)
+)*(	'default' 
+	':' 
+(
+(
+ruleXExpression
+)
+))?	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XCasePart
+ruleXCasePart :
+((
+)(
+(
+ruleJvmTypeReference
+)
+)?(	'case' 
+(
+(
+ruleXExpression
+)
+))?((	':' 
+(
+(
+ruleXExpression
+)
+))
+    |(
+(
+	',' 
+ 
+
+)
+)))
+;
+
+
+
+
+
+
+// Rule XForLoopExpression
+ruleXForLoopExpression :
+(((((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))=>((
+)	'for' 
+	'(' 
+(
+(
+ruleJvmFormalParameter
+)
+)	':' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XBasicForLoopExpression
+ruleXBasicForLoopExpression :
+((
+)	'for' 
+	'(' 
+((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	',' 
+(
+(
+ruleXExpressionOrVarDeclaration
+)
+))*)?	';' 
+(
+(
+ruleXExpression
+)
+)?	';' 
+((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*)?	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XWhileExpression
+ruleXWhileExpression :
+((
+)	'while' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XDoWhileExpression
+ruleXDoWhileExpression :
+((
+)	'do' 
+(
+(
+ruleXExpression
+)
+)	'while' 
+	'(' 
+(
+(
+ruleXExpression
+)
+)	')' 
+)
+;
+
+
+
+
+
+
+// Rule XBlockExpression
+ruleXBlockExpression :
+((
+)	'{' 
+((
+(
+ruleXExpressionOrVarDeclaration
+)
+)(	';' 
+)?)*	'}' 
+)
+;
+
+
+
+
+
+
+// Rule XExpressionOrVarDeclaration
+ruleXExpressionOrVarDeclaration :
+(	ruleXVariableDeclaration
+    |	ruleXExpression)
+;
+
+
+
+
+
+
+// Rule XVariableDeclaration
+ruleXVariableDeclaration :
+((
+)((
+(
+	'var' 
+ 
+
+)
+)
+    |	'val' 
+)(((((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))=>((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+)))
+    |(
+(
+ruleValidID
+)
+))(	'=' 
+(
+(
+ruleXExpression
+)
+))?)
+;
+
+
+
+
+
+
+// Rule JvmFormalParameter
+ruleJvmFormalParameter :
+((
+(
+ruleJvmTypeReference
+)
+)?(
+(
+ruleValidID
+)
+))
+;
+
+
+
+
+
+
+// Rule FullJvmFormalParameter
+ruleFullJvmFormalParameter :
+((
+(
+ruleJvmTypeReference
+)
+)(
+(
+ruleValidID
+)
+))
+;
+
+
+
+
+
+
+// Rule XFeatureCall
+ruleXFeatureCall :
+((
+)(	'<' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(
+(
+		ruleIdOrSuper
+)
+)(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?)
+;
+
+
+
+
+
+
+// Rule FeatureCallID
+ruleFeatureCallID :
+( ruleValidID
+    |
+	'extends' 
+
+    |
+	'static' 
+
+    |
+	'import' 
+
+    |
+	'extension' 
+)
+    ;
+
+
+
+
+
+
+// Rule IdOrSuper
+ruleIdOrSuper :
+( ruleFeatureCallID
+    |
+	'super' 
+)
+    ;
+
+
+
+
+
+
+// Rule XConstructorCall
+ruleXConstructorCall :
+((
+)	'new' 
+(
+(
+		ruleQualifiedName
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?(((
+(
+	'(' 
+ 
+
+)
+)=>
+(
+	'(' 
+ 
+
+)
+)(((((
+)((
+(
+ruleJvmFormalParameter
+)
+)(	',' 
+(
+(
+ruleJvmFormalParameter
+)
+))*)?(
+(
+	'|' 
+ 
+
+)
+)))=>
+(
+ruleXShortClosure
+)
+)
+    |((
+(
+ruleXExpression
+)
+)(	',' 
+(
+(
+ruleXExpression
+)
+))*))?	')' 
+)?((((
+)	'[' 
+))=>
+(
+ruleXClosure
+)
+)?)
+;
+
+
+
+
+
+
+// Rule XBooleanLiteral
+ruleXBooleanLiteral :
+((
+)(	'false' 
+
+    |(
+(
+	'true' 
+ 
+
+)
+)))
+;
+
+
+
+
+
+
+// Rule XNullLiteral
+ruleXNullLiteral :
+((
+)	'null' 
+)
+;
+
+
+
+
+
+
+// Rule XNumberLiteral
+ruleXNumberLiteral :
+((
+)(
+(
+ruleNumber
+)
+))
+;
+
+
+
+
+
+
+// Rule XStringLiteral
+ruleXStringLiteral :
+((
+)(
+(
+RULE_STRING
+
+)
+))
+;
+
+
+
+
+
+
+// Rule XTypeLiteral
+ruleXTypeLiteral :
+((
+)	'typeof' 
+	'(' 
+(
+(
+		ruleQualifiedName
+)
+)(
+(
+ruleArrayBrackets
+)
+)*	')' 
+)
+;
+
+
+
+
+
+
+// Rule XThrowExpression
+ruleXThrowExpression :
+((
+)	'throw' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XReturnExpression
+ruleXReturnExpression :
+((
+)	'return' 
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+ruleXExpression
+)
+)?)
+;
+
+
+
+
+
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression :
+((
+)	'try' 
+(
+(
+ruleXExpression
+)
+)((((	'catch' 
+)=>
+(
+ruleXCatchClause
+)
+)+(((	'finally' 
+)=>	'finally' 
+)(
+(
+ruleXExpression
+)
+))?)
+    |(	'finally' 
+(
+(
+ruleXExpression
+)
+))))
+;
+
+
+
+
+
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression :
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+)	'synchronized' 
+	'(' 
+))(
+(
+ruleXExpression
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule XCatchClause
+ruleXCatchClause :
+(((	'catch' 
+)=>	'catch' 
+)	'(' 
+(
+(
+ruleFullJvmFormalParameter
+)
+)	')' 
+(
+(
+ruleXExpression
+)
+))
+;
+
+
+
+
+
+
+// Rule QualifiedName
+ruleQualifiedName :
+( ruleValidID(((
+	'.' 
+)=>
+	'.' 
+) ruleValidID)*)
+    ;
+
+
+
+
+
+
+// Rule Number
+ruleNumber :
+( RULE_HEX
+    |(( RULE_INT
+    | RULE_DECIMAL)(
+	'.' 
+( RULE_INT
+    | RULE_DECIMAL))?))
+    ;
+
+
+
+
+
+
+
+
+// Rule JvmTypeReference
+ruleJvmTypeReference :
+((	ruleJvmParameterizedTypeReference((((
+)	ruleArrayBrackets))=>((
+)	ruleArrayBrackets))*)
+    |	ruleXFunctionTypeRef)
+;
+
+
+
+
+
+
+// Rule ArrayBrackets
+ruleArrayBrackets :
+(
+	'[' 
+
+	']' 
+)
+    ;
+
+
+
+
+
+
+// Rule XFunctionTypeRef
+ruleXFunctionTypeRef :
+((	'(' 
+((
+(
+ruleJvmTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmTypeReference
+)
+))*)?	')' 
+)?	'=>' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmParameterizedTypeReference
+ruleJvmParameterizedTypeReference :
+((
+(
+		ruleQualifiedName
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+(((((
+)	'.' 
+))=>((
+)	'.' 
+))(
+(
+		ruleValidID
+)
+)(((	'<' 
+)=>	'<' 
+)(
+(
+ruleJvmArgumentTypeReference
+)
+)(	',' 
+(
+(
+ruleJvmArgumentTypeReference
+)
+))*	'>' 
+)?)*)?)
+;
+
+
+
+
+
+
+// Rule JvmArgumentTypeReference
+ruleJvmArgumentTypeReference :
+(	ruleJvmTypeReference
+    |	ruleJvmWildcardTypeReference)
+;
+
+
+
+
+
+
+// Rule JvmWildcardTypeReference
+ruleJvmWildcardTypeReference :
+((
+)	'?' 
+(((
+(
+ruleJvmUpperBound
+)
+)(
+(
+ruleJvmUpperBoundAnded
+)
+)*)
+    |((
+(
+ruleJvmLowerBound
+)
+)(
+(
+ruleJvmLowerBoundAnded
+)
+)*))?)
+;
+
+
+
+
+
+
+// Rule JvmUpperBound
+ruleJvmUpperBound :
+(	'extends' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmUpperBoundAnded
+ruleJvmUpperBoundAnded :
+(	'&' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmLowerBound
+ruleJvmLowerBound :
+(	'super' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+// Rule JvmLowerBoundAnded
+ruleJvmLowerBoundAnded :
+(	'&' 
+(
+(
+ruleJvmTypeReference
+)
+))
+;
+
+
+
+
+
+
+
+
+// Rule QualifiedNameWithWildcard
+ruleQualifiedNameWithWildcard :
+( ruleQualifiedName
+	'.' 
+
+	'*' 
+)
+    ;
+
+
+
+
+
+
+// Rule ValidID
+ruleValidID :
+RULE_ID
+    ;
+
+
+
+
+
+
+
+
+// Rule XImportDeclaration
+ruleXImportDeclaration :
+(	'import' 
+(((
+(
+	'static' 
+ 
+
+)
+)(
+(
+	'extension' 
+ 
+
+)
+)?(
+(
+		ruleQualifiedNameInStaticImport
+)
+)((
+(
+	'*' 
+ 
+
+)
+)
+    |(
+(
+ruleValidID
+)
+)))
+    |(
+(
+		ruleQualifiedName
+)
+)
+    |(
+(
+ruleQualifiedNameWithWildcard
+)
+))(	';' 
+)?)
+;
+
+
+
+
+
+
+// Rule QualifiedNameInStaticImport
+ruleQualifiedNameInStaticImport :
+( ruleValidID
+	'.' 
+)+
+    ;
+
+
+
+
+
+// Rule Cardinality
+ruleCardinality :
+((	'optional' 
+)
+    |(	'mandatory' 
+)
+    |(	'zeroToMany' 
+)
+    |(	'oneToMany' 
+));
+
+
+
+// Rule ConstraintSeverity
+ruleConstraintSeverity :
+((	'info' 
+)
+    |(	'warn' 
+)
+    |(	'error' 
+));
+
+
+
+// Rule DateType
+ruleDateType :
+((	'date' 
+)
+    |(	'time' 
+)
+    |(	'timestamp' 
+));
+
+
+
+// Rule LVisibility
+ruleLVisibility :
+((	'package' 
+)
+    |(	'private' 
+)
+    |(	'protected' 
+)
+    |(	'public' 
+));
+
+
+
+// Rule LComparatorType
+ruleLComparatorType :
+((	'==' 
+)
+    |(	'>' 
+)
+    |(	'<' 
+)
+    |(	'>=' 
+)
+    |(	'<=' 
+)
+    |(	'<>' 
+));
+
+
+
+// Rule LowerBound
+ruleLowerBound :
+((	'*' 
+)
+    |(	'0' 
+)
+    |(	'?' 
+)
+    |(	'+' 
+)
+    |(	'1' 
+));
+
+
+
+// Rule UpperBound
+ruleUpperBound :
+((	'*' 
+)
+    |(	'1' 
+));
+
+
+
+RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
+
+RULE_INT : '0'..'9' ('0'..'9'|'_')*;
+
+RULE_DECIMAL : RULE_INT (('e'|'E') ('+'|'-')? RULE_INT)? (('b'|'B') ('i'|'I'|'d'|'D')|('l'|'L'|'d'|'D'|'f'|'F'))?;
+
+RULE_ID : '^'? ('a'..'z'|'A'..'Z'|'$'|'_') ('a'..'z'|'A'..'Z'|'$'|'_'|'0'..'9')*;
+
+RULE_STRING : ('"' ('\\' .|~(('\\'|'"')))* '"'?|'\'' ('\\' .|~(('\\'|'\'')))* '\''?);
+
+RULE_ML_COMMENT : '/*' ( options {greedy=false;} : . )*'*/' {skip();};
+
+RULE_SL_COMMENT : '//' ~(('\n'|'\r'))* ('\r'? '\n')? {skip();};
+
+RULE_WS : (' '|'\t'|'\r'|'\n')+ {skip();};
+
+RULE_ANY_OTHER : .;
+
+
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g
new file mode 100644
index 0000000..7a52d36
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar InternalServicesGrammar;
+
+options {
+	superClass=AbstractInternalAntlrParser;
+	
+}
+
+@lexer::header {
+package org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.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.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+}
+
+@parser::members {
+
+ 	private ServicesGrammarGrammarAccess grammarAccess;
+ 	
+    public InternalServicesGrammarParser(TokenStream input, ServicesGrammarGrammarAccess grammarAccess) {
+        this(input);
+        this.grammarAccess = grammarAccess;
+        registerRules(grammarAccess.getGrammar());
+    }
+    
+    @Override
+    protected String getFirstRuleName() {
+    	return "LServiceModel";	
+   	}
+   	
+   	@Override
+   	protected ServicesGrammarGrammarAccess getGrammarAccess() {
+   		return grammarAccess;
+   	}
+}
+
+@rulecatch { 
+    catch (RecognitionException re) { 
+        recover(input,re); 
+        appendSkippedTokens();
+    } 
+}
+
+
+
+
+// Entry rule entryRuleLServiceModel
+entryRuleLServiceModel returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLServiceModelRule()); }
+	 iv_ruleLServiceModel=ruleLServiceModel 
+	 { $current=$iv_ruleLServiceModel.current; } 
+	 EOF 
+;
+
+// Rule LServiceModel
+ruleLServiceModel returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getLServiceModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+	    }
+		lv_packages_0_0=ruleTypedPackage		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getLServiceModelRule());
+	        }
+       		add(
+       			$current, 
+       			"packages",
+        		lv_packages_0_0, 
+        		"TypedPackage");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*
+;
+
+
+
+
+
+// Entry rule entryRuleClass
+entryRuleClass returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getClassRule()); }
+	 iv_ruleClass=ruleClass 
+	 { $current=$iv_ruleClass.current; } 
+	 EOF 
+;
+
+// Rule Class
+ruleClass returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getClassAccess().getLDTOServiceAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+    {
+        $current = forceCreateModelElementAndSet(
+            grammarAccess.getClassAccess().getLDTOServiceAnnotationInfoAction_2(),
+            $current);
+    }
+)	otherlv_3='dtoservice' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getClassAccess().getDtoserviceKeyword_3());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_4_0()); 
+	    }
+		lv_name_4_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_5='provides' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getClassAccess().getProvidesKeyword_5());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getDtoLDtoCrossReference_6_0()); 
+	    }
+		ruleTYPE_CROSS_REFERENCE		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_7='{' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_7());
+    }
+((
+(
+		lv_mutablePersistenceId_8_0=	'mutable' 
+    {
+        newLeafNode(lv_mutablePersistenceId_8_0, grammarAccess.getClassAccess().getMutablePersistenceIdMutableKeyword_8_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getClassRule());
+	        }
+       		setWithLastConsumed($current, "mutablePersistenceId", true, "mutable");
+	    }
+
+)
+)?	otherlv_9='persistenceUnit' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getClassAccess().getPersistenceUnitKeyword_8_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getPersistenceIdQualifiedNameParserRuleCall_8_2_0()); 
+	    }
+		lv_persistenceId_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"persistenceId",
+        		lv_persistenceId_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_11=';' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getClassAccess().getSemicolonKeyword_8_3());
+    }
+)?)?(	otherlv_12='validators' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getClassAccess().getValidatorsKeyword_9_0());
+    }
+	otherlv_13='{' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_9_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getValidatorsValidatorDefParserRuleCall_9_2_0()); 
+	    }
+		lv_validators_14_0=ruleValidatorDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"validators",
+        		lv_validators_14_0, 
+        		"ValidatorDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_15=', ' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getClassAccess().getCommaSpaceKeyword_9_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getValidatorsValidatorDefParserRuleCall_9_3_1_0()); 
+	    }
+		lv_validators_16_0=ruleValidatorDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"validators",
+        		lv_validators_16_0, 
+        		"ValidatorDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*(	otherlv_17=';' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getClassAccess().getSemicolonKeyword_9_4());
+    }
+)?	otherlv_18='}' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_9_5());
+    }
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getInjectedServicesInjectedServicesParserRuleCall_10_0()); 
+	    }
+		lv_injectedServices_19_0=ruleInjectedServices		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		set(
+       			$current, 
+       			"injectedServices",
+        		lv_injectedServices_19_0, 
+        		"InjectedServices");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getClassAccess().getOperationsOperationParserRuleCall_11_0()); 
+	    }
+		lv_operations_20_0=ruleOperation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getClassRule());
+	        }
+       		add(
+       			$current, 
+       			"operations",
+        		lv_operations_20_0, 
+        		"Operation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_21='}' 
+    {
+    	newLeafNode(otherlv_21, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_12());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleValidatorDef
+entryRuleValidatorDef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidatorDefRule()); }
+	 iv_ruleValidatorDef=ruleValidatorDef 
+	 { $current=$iv_ruleValidatorDef.current; } 
+	 EOF 
+;
+
+// Rule ValidatorDef
+ruleValidatorDef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((((
+(
+ruleJvmTypeReference
+)
+))=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getValidatorDefAccess().getValidatorTypeJvmTypeReferenceParserRuleCall_0_0_0()); 
+	    }
+		lv_validatorType_0_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getValidatorDefRule());
+	        }
+       		set(
+       			$current, 
+       			"validatorType",
+        		lv_validatorType_0_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+    |(
+(
+		lv_validatorId_1_0=RULE_STRING
+		{
+			newLeafNode(lv_validatorId_1_0, grammarAccess.getValidatorDefAccess().getValidatorIdSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getValidatorDefRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"validatorId",
+        		lv_validatorId_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleInjectedServices
+entryRuleInjectedServices returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInjectedServicesRule()); }
+	 iv_ruleInjectedServices=ruleInjectedServices 
+	 { $current=$iv_ruleInjectedServices.current; } 
+	 EOF 
+;
+
+// Rule InjectedServices
+ruleInjectedServices returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInjectedServicesAccess().getLInjectedServicesAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInjectedServicesAccess().getServicesInjectedServiceParserRuleCall_1_0()); 
+	    }
+		lv_services_1_0=ruleInjectedService		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInjectedServicesRule());
+	        }
+       		add(
+       			$current, 
+       			"services",
+        		lv_services_1_0, 
+        		"InjectedService");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*)
+;
+
+
+
+
+
+// Entry rule entryRuleInjectedService
+entryRuleInjectedService returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getInjectedServiceRule()); }
+	 iv_ruleInjectedService=ruleInjectedService 
+	 { $current=$iv_ruleInjectedService.current; } 
+	 EOF 
+;
+
+// Rule InjectedService
+ruleInjectedService returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getInjectedServiceAccess().getLInjectedServiceAction_0(),
+            $current);
+    }
+)	otherlv_1='injectService' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getInjectedServiceAccess().getInjectServiceKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInjectedServiceAccess().getCardinalityCardinalityEnumRuleCall_2_0()); 
+	    }
+		lv_cardinality_2_0=ruleCardinality		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInjectedServiceRule());
+	        }
+       		set(
+       			$current, 
+       			"cardinality",
+        		lv_cardinality_2_0, 
+        		"Cardinality");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getInjectedServiceAccess().getServiceJvmTypeReferenceParserRuleCall_3_0()); 
+	    }
+		lv_service_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getInjectedServiceRule());
+	        }
+       		set(
+       			$current, 
+       			"service",
+        		lv_service_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_attributeName_4_0=RULE_ID
+		{
+			newLeafNode(lv_attributeName_4_0, grammarAccess.getInjectedServiceAccess().getAttributeNameIDTerminalRuleCall_4_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getInjectedServiceRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"attributeName",
+        		lv_attributeName_4_0, 
+        		"ID");
+	    }
+
+)
+)(	otherlv_5=';' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getInjectedServiceAccess().getSemicolonKeyword_5());
+    }
+)?)
+;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleOperation
+entryRuleOperation returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getOperationRule()); }
+	 iv_ruleOperation=ruleOperation 
+	 { $current=$iv_ruleOperation.current; } 
+	 EOF 
+;
+
+// Rule Operation
+ruleOperation returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getOperationAccess().getLServiceOperationAction_0(),
+            $current);
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+	    }
+		lv_annotations_1_0=ruleAnnotationDef		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationRule());
+	        }
+       		add(
+       			$current, 
+       			"annotations",
+        		lv_annotations_1_0, 
+        		"AnnotationDef");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_2='def' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getOperationAccess().getDefKeyword_2_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationAccess().getTypeJvmTypeReferenceParserRuleCall_2_1_0()); 
+	    }
+		lv_type_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"type",
+        		lv_type_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_name_4_0=RULE_ID
+		{
+			newLeafNode(lv_name_4_0, grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_2_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getOperationRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_4_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_5='(' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2_3());
+    }
+((
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationAccess().getParamsFullJvmFormalParameterParserRuleCall_2_4_0_0()); 
+	    }
+		lv_params_6_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_6_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_7=', ' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getOperationAccess().getCommaSpaceKeyword_2_4_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationAccess().getParamsFullJvmFormalParameterParserRuleCall_2_4_1_1_0()); 
+	    }
+		lv_params_8_0=ruleFullJvmFormalParameter		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationRule());
+	        }
+       		add(
+       			$current, 
+       			"params",
+        		lv_params_8_0, 
+        		"FullJvmFormalParameter");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*)?	otherlv_9=')' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getOperationAccess().getRightParenthesisKeyword_2_5());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getOperationAccess().getBodyXExpressionParserRuleCall_2_6_0()); 
+	    }
+		lv_body_10_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getOperationRule());
+	        }
+       		set(
+       			$current, 
+       			"body",
+        		lv_body_10_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+;
+
+
+
+
+
+// Entry rule entryRuleTypedPackage
+entryRuleTypedPackage returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypedPackageRule()); }
+	 iv_ruleTypedPackage=ruleTypedPackage 
+	 { $current=$iv_ruleTypedPackage.current; } 
+	 EOF 
+;
+
+// Rule TypedPackage
+ruleTypedPackage returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+            $current);
+    }
+)	otherlv_1='package' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+	    }
+		lv_name_2_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_2_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_3='{' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+	    }
+		lv_imports_4_0=ruleImport		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"imports",
+        		lv_imports_4_0, 
+        		"Import");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+	    }
+		lv_types_5_0=ruleType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+	        }
+       		add(
+       			$current, 
+       			"types",
+        		lv_types_5_0, 
+        		"Type");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleType
+entryRuleType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTypeRule()); }
+	 iv_ruleType=ruleType 
+	 { $current=$iv_ruleType.current; } 
+	 EOF 
+;
+
+// Rule Type
+ruleType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+    }
+    this_ScalarType_0=ruleScalarType
+    { 
+        $current = $this_ScalarType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+    }
+    this_Class_1=ruleClass
+    { 
+        $current = $this_Class_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleImport
+entryRuleImport returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getImportRule()); }
+	 iv_ruleImport=ruleImport 
+	 { $current=$iv_ruleImport.current; } 
+	 EOF 
+;
+
+// Rule Import
+ruleImport returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='import' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+	    }
+		lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getImportRule());
+	        }
+       		set(
+       			$current, 
+       			"importedNamespace",
+        		lv_importedNamespace_1_0, 
+        		"LQualifiedNameWithWildCard");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_2=';' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDataType
+entryRuleDataType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeRule()); }
+	 iv_ruleDataType=ruleDataType 
+	 { $current=$iv_ruleDataType.current; } 
+	 EOF 
+;
+
+// Rule DataType
+ruleDataType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='datatype' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+	    }
+		lv_name_1_0=ruleValidIDWithKeywords		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ValidIDWithKeywords");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((	otherlv_2='jvmType' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+	    }
+		lv_jvmTypeReference_3_0=ruleJvmTypeReference		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"jvmTypeReference",
+        		lv_jvmTypeReference_3_0, 
+        		"JvmTypeReference");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		lv_asPrimitive_4_0=	'as primitive' 
+    {
+        newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asPrimitive", true, "as primitive");
+	    }
+
+)
+)?(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+	    }
+		lv_constraints_5_0=ruleDataTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_5_0, 
+        		"DataTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_6='properties' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+    }
+	otherlv_7='(' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+	    }
+		lv_properties_8_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_8_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_9=', ' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+	    }
+		lv_properties_10_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_10_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_11=')' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+    }
+)?)
+    |((
+(
+		lv_date_12_0=	'dateType' 
+    {
+        newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "date", true, "dateType");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+	    }
+		lv_dateType_13_0=ruleDateType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		set(
+       			$current, 
+       			"dateType",
+        		lv_dateType_13_0, 
+        		"DateType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+	    }
+		lv_constraints_14_0=ruleDateConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_14_0, 
+        		"DateConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_15='properties' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+    }
+	otherlv_16='(' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+	    }
+		lv_properties_17_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_17_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_18=', ' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+	    }
+		lv_properties_19_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_19_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_20=')' 
+    {
+    	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+    }
+)?)
+    |((
+(
+		lv_asBlob_21_0=	'as blob' 
+    {
+        newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDataTypeRule());
+	        }
+       		setWithLastConsumed($current, "asBlob", true, "as blob");
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+	    }
+		lv_constraints_22_0=ruleBlobTypeConstraint		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"constraints",
+        		lv_constraints_22_0, 
+        		"BlobTypeConstraint");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*(	otherlv_23='properties' 
+    {
+    	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+    }
+	otherlv_24='(' 
+    {
+    	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+	    }
+		lv_properties_25_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_25_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_26=', ' 
+    {
+    	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+	    }
+		lv_properties_27_0=ruleKeyAndValue		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDataTypeRule());
+	        }
+       		add(
+       			$current, 
+       			"properties",
+        		lv_properties_27_0, 
+        		"KeyAndValue");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_28=')' 
+    {
+    	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+    }
+)?))(	otherlv_29=';' 
+    {
+    	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleDataTypeConstraint
+entryRuleDataTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDataTypeConstraintRule()); }
+	 iv_ruleDataTypeConstraint=ruleDataTypeConstraint 
+	 { $current=$iv_ruleDataTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule DataTypeConstraint
+ruleDataTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+    }
+    this_DtCAssertFalse_0=ruleDtCAssertFalse
+    { 
+        $current = $this_DtCAssertFalse_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+    }
+    this_DtCAssertTrue_1=ruleDtCAssertTrue
+    { 
+        $current = $this_DtCAssertTrue_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+    }
+    this_DtCDecimalMax_2=ruleDtCDecimalMax
+    { 
+        $current = $this_DtCDecimalMax_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+    }
+    this_DtCDecimalMin_3=ruleDtCDecimalMin
+    { 
+        $current = $this_DtCDecimalMin_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+    }
+    this_DtCDigits_4=ruleDtCDigits
+    { 
+        $current = $this_DtCDigits_4.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+    }
+    this_DtCNumericMax_5=ruleDtCNumericMax
+    { 
+        $current = $this_DtCNumericMax_5.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+    }
+    this_DtCNumericMin_6=ruleDtCNumericMin
+    { 
+        $current = $this_DtCNumericMin_6.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+    }
+    this_DtCNotNull_7=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_7.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+    }
+    this_DtCNull_8=ruleDtCNull
+    { 
+        $current = $this_DtCNull_8.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+    }
+    this_DtCRegEx_9=ruleDtCRegEx
+    { 
+        $current = $this_DtCRegEx_9.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+    }
+    this_DtCSize_10=ruleDtCSize
+    { 
+        $current = $this_DtCSize_10.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDateConstraint
+entryRuleDateConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDateConstraintRule()); }
+	 iv_ruleDateConstraint=ruleDateConstraint 
+	 { $current=$iv_ruleDateConstraint.current; } 
+	 EOF 
+;
+
+// Rule DateConstraint
+ruleDateConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+    }
+    this_DtCFuture_0=ruleDtCFuture
+    { 
+        $current = $this_DtCFuture_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+    }
+    this_DtCPast_1=ruleDtCPast
+    { 
+        $current = $this_DtCPast_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+    }
+    this_DtCNotNull_2=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_2.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+    }
+    this_DtCNull_3=ruleDtCNull
+    { 
+        $current = $this_DtCNull_3.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleBlobTypeConstraint
+entryRuleBlobTypeConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); }
+	 iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint 
+	 { $current=$iv_ruleBlobTypeConstraint.current; } 
+	 EOF 
+;
+
+// Rule BlobTypeConstraint
+ruleBlobTypeConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+    }
+    this_DtCNotNull_0=ruleDtCNotNull
+    { 
+        $current = $this_DtCNotNull_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+    }
+    this_DtCNull_1=ruleDtCNull
+    { 
+        $current = $this_DtCNull_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertFalse
+entryRuleDtCAssertFalse returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertFalseRule()); }
+	 iv_ruleDtCAssertFalse=ruleDtCAssertFalse 
+	 { $current=$iv_ruleDtCAssertFalse.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertFalse
+ruleDtCAssertFalse returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+            $current);
+    }
+)	otherlv_1='isFalse' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCAssertTrue
+entryRuleDtCAssertTrue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCAssertTrueRule()); }
+	 iv_ruleDtCAssertTrue=ruleDtCAssertTrue 
+	 { $current=$iv_ruleDtCAssertTrue.current; } 
+	 EOF 
+;
+
+// Rule DtCAssertTrue
+ruleDtCAssertTrue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+            $current);
+    }
+)	otherlv_1='isTrue' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMax
+entryRuleDtCDecimalMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); }
+	 iv_ruleDtCDecimalMax=ruleDtCDecimalMax 
+	 { $current=$iv_ruleDtCDecimalMax.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMax
+ruleDtCDecimalMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDecimalMin
+entryRuleDtCDecimalMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDecimalMinRule()); }
+	 iv_ruleDtCDecimalMin=ruleDtCDecimalMin 
+	 { $current=$iv_ruleDtCDecimalMin.current; } 
+	 EOF 
+;
+
+// Rule DtCDecimalMin
+ruleDtCDecimalMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minDecimal' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLDecimal		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LDecimal");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCDigits
+entryRuleDtCDigits returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCDigitsRule()); }
+	 iv_ruleDtCDigits=ruleDtCDigits 
+	 { $current=$iv_ruleDtCDigits.current; } 
+	 EOF 
+;
+
+// Rule DtCDigits
+ruleDtCDigits returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+            $current);
+    }
+)	otherlv_1='digits' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_intDigits_3_0=RULE_INT
+		{
+			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"intDigits",
+        		lv_intDigits_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_fractionDigits_5_0=RULE_INT
+		{
+			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCDigitsRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"fractionDigits",
+        		lv_fractionDigits_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCFuture
+entryRuleDtCFuture returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCFutureRule()); }
+	 iv_ruleDtCFuture=ruleDtCFuture 
+	 { $current=$iv_ruleDtCFuture.current; } 
+	 EOF 
+;
+
+// Rule DtCFuture
+ruleDtCFuture returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+            $current);
+    }
+)	otherlv_1='isFuture' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCPast
+entryRuleDtCPast returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCPastRule()); }
+	 iv_ruleDtCPast=ruleDtCPast 
+	 { $current=$iv_ruleDtCPast.current; } 
+	 EOF 
+;
+
+// Rule DtCPast
+ruleDtCPast returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+            $current);
+    }
+)	otherlv_1='isPast' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCPastRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMax
+entryRuleDtCNumericMax returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMaxRule()); }
+	 iv_ruleDtCNumericMax=ruleDtCNumericMax 
+	 { $current=$iv_ruleDtCNumericMax.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMax
+ruleDtCNumericMax returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+            $current);
+    }
+)	otherlv_1='maxNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+	    }
+		lv_max_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"max",
+        		lv_max_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNumericMin
+entryRuleDtCNumericMin returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNumericMinRule()); }
+	 iv_ruleDtCNumericMin=ruleDtCNumericMin 
+	 { $current=$iv_ruleDtCNumericMin.current; } 
+	 EOF 
+;
+
+// Rule DtCNumericMin
+ruleDtCNumericMin returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+            $current);
+    }
+)	otherlv_1='minNumber' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+	    }
+		lv_min_3_0=ruleLInt		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"LInt");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNotNull
+entryRuleDtCNotNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNotNullRule()); }
+	 iv_ruleDtCNotNull=ruleDtCNotNull 
+	 { $current=$iv_ruleDtCNotNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNotNull
+ruleDtCNotNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNotNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCNull
+entryRuleDtCNull returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCNullRule()); }
+	 iv_ruleDtCNull=ruleDtCNull 
+	 { $current=$iv_ruleDtCNull.current; } 
+	 EOF 
+;
+
+// Rule DtCNull
+ruleDtCNull returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+            $current);
+    }
+)	otherlv_1='isNull' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+    }
+(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+	 				}
+					({true}?=>(	otherlv_3='[' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+    }
+(	otherlv_4='msgCode' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+    }
+	otherlv_5='=' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+	    }
+		lv_msgCode_6_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_6_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+	 				}
+					({true}?=>(	otherlv_7='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+    }
+	otherlv_8='=' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+	    }
+		lv_msgI18nKey_9_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_9_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+	 				}
+					({true}?=>((	otherlv_10='severity' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+    }
+	otherlv_11='=' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+	    }
+		lv_severity_12_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCNullRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_12_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_13=']' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCRegEx
+entryRuleDtCRegEx returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCRegExRule()); }
+	 iv_ruleDtCRegEx=ruleDtCRegEx 
+	 { $current=$iv_ruleDtCRegEx.current; } 
+	 EOF 
+;
+
+// Rule DtCRegEx
+ruleDtCRegEx returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+            $current);
+    }
+)	otherlv_1='regex' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_pattern_3_0=RULE_STRING
+		{
+			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCRegExRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"pattern",
+        		lv_pattern_3_0, 
+        		"STRING");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0);
+	 				}
+					({true}?=>(	otherlv_5='[' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0());
+    }
+(	otherlv_6='msgCode' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getDtCRegExAccess().getMsgCodeKeyword_4_0_1_0());
+    }
+	otherlv_7='=' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+	    }
+		lv_msgCode_8_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_8_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1);
+	 				}
+					({true}?=>(	otherlv_9='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCRegExAccess().getMsgI18nKeyKeyword_4_1_0());
+    }
+	otherlv_10='=' 
+    {
+    	newLeafNode(otherlv_10, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+	    }
+		lv_msgI18nKey_11_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_11_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2);
+	 				}
+					({true}?=>((	otherlv_12='severity' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCRegExAccess().getSeverityKeyword_4_2_0_0());
+    }
+	otherlv_13='=' 
+    {
+    	newLeafNode(otherlv_13, grammarAccess.getDtCRegExAccess().getEqualsSignKeyword_4_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCRegExAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+	    }
+		lv_severity_14_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCRegExRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_14_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_15=']' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+	}
+
+)?	otherlv_16=')' 
+    {
+    	newLeafNode(otherlv_16, grammarAccess.getDtCRegExAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleDtCSize
+entryRuleDtCSize returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getDtCSizeRule()); }
+	 iv_ruleDtCSize=ruleDtCSize 
+	 { $current=$iv_ruleDtCSize.current; } 
+	 EOF 
+;
+
+// Rule DtCSize
+ruleDtCSize returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getDtCSizeAccess().getLDtCSizeAction_0(),
+            $current);
+    }
+)	otherlv_1='minMaxSize' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getDtCSizeAccess().getMinMaxSizeKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getDtCSizeAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		lv_min_3_0=RULE_INT
+		{
+			newLeafNode(lv_min_3_0, grammarAccess.getDtCSizeAccess().getMinINTTerminalRuleCall_3_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"min",
+        		lv_min_3_0, 
+        		"INT");
+	    }
+
+)
+)	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getDtCSizeAccess().getCommaSpaceKeyword_4());
+    }
+(
+(
+		lv_max_5_0=RULE_INT
+		{
+			newLeafNode(lv_max_5_0, grammarAccess.getDtCSizeAccess().getMaxINTTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getDtCSizeRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"max",
+        		lv_max_5_0, 
+        		"INT");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 0);
+	 				}
+					({true}?=>(	otherlv_7='[' 
+    {
+    	newLeafNode(otherlv_7, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0());
+    }
+(	otherlv_8='msgCode' 
+    {
+    	newLeafNode(otherlv_8, grammarAccess.getDtCSizeAccess().getMsgCodeKeyword_6_0_1_0());
+    }
+	otherlv_9='=' 
+    {
+    	newLeafNode(otherlv_9, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_0_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+	    }
+		lv_msgCode_10_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgCode",
+        		lv_msgCode_10_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 1);
+	 				}
+					({true}?=>(	otherlv_11='msgI18nKey' 
+    {
+    	newLeafNode(otherlv_11, grammarAccess.getDtCSizeAccess().getMsgI18nKeyKeyword_6_1_0());
+    }
+	otherlv_12='=' 
+    {
+    	newLeafNode(otherlv_12, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_1_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+	    }
+		lv_msgI18nKey_13_0=ruleQualifiedName		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"msgI18nKey",
+        		lv_msgI18nKey_13_0, 
+        		"QualifiedName");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6(), 2);
+	 				}
+					({true}?=>((	otherlv_14='severity' 
+    {
+    	newLeafNode(otherlv_14, grammarAccess.getDtCSizeAccess().getSeverityKeyword_6_2_0_0());
+    }
+	otherlv_15='=' 
+    {
+    	newLeafNode(otherlv_15, grammarAccess.getDtCSizeAccess().getEqualsSignKeyword_6_2_0_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getDtCSizeAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+	    }
+		lv_severity_16_0=ruleConstraintSeverity		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getDtCSizeRule());
+	        }
+       		set(
+       			$current, 
+       			"severity",
+        		lv_severity_16_0, 
+        		"ConstraintSeverity");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?	otherlv_17=']' 
+    {
+    	newLeafNode(otherlv_17, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1());
+    }
+))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getDtCSizeAccess().getUnorderedGroup_6());
+	}
+
+)?	otherlv_18=')' 
+    {
+    	newLeafNode(otherlv_18, grammarAccess.getDtCSizeAccess().getRightParenthesisKeyword_7());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleScalarType
+entryRuleScalarType returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getScalarTypeRule()); }
+	 iv_ruleScalarType=ruleScalarType 
+	 { $current=$iv_ruleScalarType.current; } 
+	 EOF 
+;
+
+// Rule ScalarType
+ruleScalarType returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getDataTypeParserRuleCall_0()); 
+    }
+    this_DataType_0=ruleDataType
+    { 
+        $current = $this_DataType_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+    |
+    { 
+        newCompositeNode(grammarAccess.getScalarTypeAccess().getEnumParserRuleCall_1()); 
+    }
+    this_Enum_1=ruleEnum
+    { 
+        $current = $this_Enum_1.current; 
+        afterParserOrEnumRuleCall();
+    }
+)
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleEnum
+entryRuleEnum returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumRule()); }
+	 iv_ruleEnum=ruleEnum 
+	 { $current=$iv_ruleEnum.current; } 
+	 EOF 
+;
+
+// Rule Enum
+ruleEnum returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='enum' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
+    }
+(
+(
+		lv_name_1_0=RULE_ID
+		{
+			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_1_0, 
+        		"ID");
+	    }
+
+)
+)	otherlv_2='{' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_3_0()); 
+	    }
+		lv_literals_3_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_3_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(	otherlv_4=', ' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getCommaSpaceKeyword_4_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getEnumAccess().getLiteralsEnumLiteralParserRuleCall_4_1_0()); 
+	    }
+		lv_literals_5_0=ruleEnumLiteral		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getEnumRule());
+	        }
+       		add(
+       			$current, 
+       			"literals",
+        		lv_literals_5_0, 
+        		"EnumLiteral");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))*	otherlv_6='}' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleEnumLiteral
+entryRuleEnumLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getEnumLiteralRule()); }
+	 iv_ruleEnumLiteral=ruleEnumLiteral 
+	 { $current=$iv_ruleEnumLiteral.current; } 
+	 EOF 
+;
+
+// Rule EnumLiteral
+ruleEnumLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		lv_name_0_0=RULE_ID
+		{
+			newLeafNode(lv_name_0_0, grammarAccess.getEnumLiteralAccess().getNameIDTerminalRuleCall_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"name",
+        		lv_name_0_0, 
+        		"ID");
+	    }
+
+)
+)(
+
+(
+	{ 
+	  getUnorderedGroupHelper().enter(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+	(
+		(
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 0);
+	 				}
+					({true}?=>(	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0());
+    }
+(
+(
+		lv_default_3_0=	'asDefault' 
+    {
+        newLeafNode(lv_default_3_0, grammarAccess.getEnumLiteralAccess().getDefaultAsDefaultKeyword_1_0_1_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "default", true, "asDefault");
+	    }
+
+)
+)?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  |
+
+			( 
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1)}?=>(
+					{ 
+	 				  getUnorderedGroupHelper().select(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1(), 1);
+	 				}
+					({true}?=>((
+(
+		lv_null_4_0=	'forNull' 
+    {
+        newLeafNode(lv_null_4_0, grammarAccess.getEnumLiteralAccess().getNullForNullKeyword_1_1_0_0());
+    }
+ 
+	    {
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed($current, "null", true, "forNull");
+	    }
+
+)
+)?	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1());
+    }
+(	otherlv_6='=' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getEnumLiteralAccess().getEqualsSignKeyword_1_1_2_0());
+    }
+(
+(
+		lv_value_7_0=RULE_INT
+		{
+			newLeafNode(lv_value_7_0, grammarAccess.getEnumLiteralAccess().getValueINTTerminalRuleCall_1_1_2_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getEnumLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_7_0, 
+        		"INT");
+	    }
+
+)
+))?))
+					{ 
+	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	 				}
+ 				)
+			)  
+
+		)+
+	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1())}?	
+	)
+)
+	{ 
+	  getUnorderedGroupHelper().leave(grammarAccess.getEnumLiteralAccess().getUnorderedGroup_1());
+	}
+
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleAnnotationDef
+entryRuleAnnotationDef returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAnnotationDefRule()); }
+	 iv_ruleAnnotationDef=ruleAnnotationDef 
+	 { $current=$iv_ruleAnnotationDef.current; } 
+	 EOF 
+;
+
+// Rule AnnotationDef
+ruleAnnotationDef returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((
+(
+ruleXAnnotation
+)
+))=>(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAnnotationDefAccess().getAnnotationXAnnotationParserRuleCall_0_0()); 
+	    }
+		lv_annotation_0_0=ruleXAnnotation		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAnnotationDefRule());
+	        }
+       		set(
+       			$current, 
+       			"annotation",
+        		lv_annotation_0_0, 
+        		"XAnnotation");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+
+
+// Entry rule entryRuleResultFilter
+entryRuleResultFilter returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getResultFilterRule()); }
+	 iv_ruleResultFilter=ruleResultFilter 
+	 { $current=$iv_ruleResultFilter.current; } 
+	 EOF 
+;
+
+// Rule ResultFilter
+ruleResultFilter returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+
+    { 
+        newCompositeNode(grammarAccess.getResultFilterAccess().getAttributeMatchingConstraintParserRuleCall()); 
+    }
+    this_AttributeMatchingConstraint_0=ruleAttributeMatchingConstraint
+    { 
+        $current = $this_AttributeMatchingConstraint_0.current; 
+        afterParserOrEnumRuleCall();
+    }
+
+;
+
+
+
+
+
+// Entry rule entryRuleAttributeMatchingConstraint
+entryRuleAttributeMatchingConstraint returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getAttributeMatchingConstraintRule()); }
+	 iv_ruleAttributeMatchingConstraint=ruleAttributeMatchingConstraint 
+	 { $current=$iv_ruleAttributeMatchingConstraint.current; } 
+	 EOF 
+;
+
+// Rule AttributeMatchingConstraint
+ruleAttributeMatchingConstraint returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_0=RULE_ID
+	{
+		newLeafNode(otherlv_0, grammarAccess.getAttributeMatchingConstraintAccess().getAttributeLAttributeCrossReference_0_0()); 
+	}
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getAttributeMatchingConstraintAccess().getComparatorTypeLComparatorTypeEnumRuleCall_1_0()); 
+	    }
+		lv_comparatorType_1_0=ruleLComparatorType		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		set(
+       			$current, 
+       			"comparatorType",
+        		lv_comparatorType_1_0, 
+        		"LComparatorType");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((
+(
+		lv_matchingValue_2_0=RULE_STRING
+		{
+			newLeafNode(lv_matchingValue_2_0, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingValueSTRINGTerminalRuleCall_2_0_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"matchingValue",
+        		lv_matchingValue_2_0, 
+        		"STRING");
+	    }
+
+)
+)
+    |((
+(
+	RULE_ID
+
+)
+)=>
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getAttributeMatchingConstraintRule());
+	        }
+        }
+	otherlv_3=RULE_ID
+	{
+		newLeafNode(otherlv_3, grammarAccess.getAttributeMatchingConstraintAccess().getMatchingLiteralLEnumLiteralCrossReference_2_1_0()); 
+	}
+
+)
+))(	otherlv_4=';' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+    }
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleKeyAndValue
+entryRuleKeyAndValue returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getKeyAndValueRule()); }
+	 iv_ruleKeyAndValue=ruleKeyAndValue 
+	 { $current=$iv_ruleKeyAndValue.current; } 
+	 EOF 
+;
+
+// Rule KeyAndValue
+ruleKeyAndValue returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(	otherlv_0='key' 
+    {
+    	newLeafNode(otherlv_0, grammarAccess.getKeyAndValueAccess().getKeyKeyword_0());
+    }
+	otherlv_1='=' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_1());
+    }
+(
+(
+		lv_key_2_0=RULE_STRING
+		{
+			newLeafNode(lv_key_2_0, grammarAccess.getKeyAndValueAccess().getKeySTRINGTerminalRuleCall_2_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"key",
+        		lv_key_2_0, 
+        		"STRING");
+	    }
+
+)
+)	otherlv_3='value' 
+    {
+    	newLeafNode(otherlv_3, grammarAccess.getKeyAndValueAccess().getValueKeyword_3());
+    }
+	otherlv_4='=' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getKeyAndValueAccess().getEqualsSignKeyword_4());
+    }
+(
+(
+		lv_value_5_0=RULE_STRING
+		{
+			newLeafNode(lv_value_5_0, grammarAccess.getKeyAndValueAccess().getValueSTRINGTerminalRuleCall_5_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getKeyAndValueRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_5_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleLQualifiedNameWithWildCard
+entryRuleLQualifiedNameWithWildCard returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardRule()); } 
+	 iv_ruleLQualifiedNameWithWildCard=ruleLQualifiedNameWithWildCard 
+	 { $current=$iv_ruleLQualifiedNameWithWildCard.current.getText(); }  
+	 EOF 
+;
+
+// Rule LQualifiedNameWithWildCard
+ruleLQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
+    }
+    this_QualifiedName_0=ruleQualifiedName    {
+		$current.merge(this_QualifiedName_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
+    }
+
+	kw='*' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
+    }
+)?)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLFQNRule()); } 
+	 iv_ruleLFQN=ruleLFQN 
+	 { $current=$iv_ruleLFQN.current.getText(); }  
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+    }
+    this_ID_2=RULE_ID    {
+		$current.merge(this_ID_2);
+    }
+
+    { 
+    newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+    }
+)*)
+    ;
+
+
+
+
+
+// Entry rule entryRuleTYPE_CROSS_REFERENCE
+entryRuleTYPE_CROSS_REFERENCE returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getTYPE_CROSS_REFERENCERule()); } 
+	 iv_ruleTYPE_CROSS_REFERENCE=ruleTYPE_CROSS_REFERENCE 
+	 { $current=$iv_ruleTYPE_CROSS_REFERENCE.current.getText(); }  
+	 EOF 
+;
+
+// Rule TYPE_CROSS_REFERENCE
+ruleTYPE_CROSS_REFERENCE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+    this_ID_0=RULE_ID    {
+		$current.merge(this_ID_0);
+    }
+
+    { 
+    newLeafNode(this_ID_0, grammarAccess.getTYPE_CROSS_REFERENCEAccess().getIDTerminalRuleCall()); 
+    }
+
+    ;
+
+
+
+
+
+// Entry rule entryRuleValidIDWithKeywords
+entryRuleValidIDWithKeywords returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getValidIDWithKeywordsRule()); } 
+	 iv_ruleValidIDWithKeywords=ruleValidIDWithKeywords 
+	 { $current=$iv_ruleValidIDWithKeywords.current.getText(); }  
+	 EOF 
+;
+
+// Rule ValidIDWithKeywords
+ruleValidIDWithKeywords returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+	kw='cachable' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCachableKeyword_0()); 
+    }
+
+    |
+	kw='id' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getIdKeyword_1()); 
+    }
+
+    |
+	kw='uuid' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getUuidKeyword_2()); 
+    }
+
+    |
+	kw='transient' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getTransientKeyword_3()); 
+    }
+
+    |
+	kw='version' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVersionKeyword_4()); 
+    }
+
+    |(
+	kw='derived' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDerivedKeyword_5_0()); 
+    }
+
+	kw='collection' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCollectionKeyword_5_1()); 
+    }
+)
+    |
+	kw='refers' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefersKeyword_6()); 
+    }
+
+    |
+	kw='settings' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getSettingsKeyword_7()); 
+    }
+
+    |
+	kw='lazy' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getLazyKeyword_8()); 
+    }
+
+    |
+	kw='notnull' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getNotnullKeyword_9()); 
+    }
+
+    |
+	kw='dto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDtoKeyword_10()); 
+    }
+
+    |
+	kw='date' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getDateKeyword_11()); 
+    }
+
+    |
+	kw='mapto' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getMaptoKeyword_12()); 
+    }
+
+    |
+	kw='ref' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getRefKeyword_13()); 
+    }
+
+    |
+	kw='cascade' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getCascadeKeyword_14()); 
+    }
+
+    |
+	kw='var' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getValidIDWithKeywordsAccess().getVarKeyword_15()); 
+    }
+
+    |    this_ID_17=RULE_ID    {
+		$current.merge(this_ID_17);
+    }
+
+    { 
+    newLeafNode(this_ID_17, grammarAccess.getValidIDWithKeywordsAccess().getIDTerminalRuleCall_16()); 
+    }
+)
+    ;
+
+
+
+
+
+
+
+
+
+// Entry rule entryRuleLInt
+entryRuleLInt returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLIntRule()); } 
+	 iv_ruleLInt=ruleLInt 
+	 { $current=$iv_ruleLInt.current.getText(); }  
+	 EOF 
+;
+
+// Rule LInt
+ruleLInt returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+	kw='+' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getPlusSignKeyword_0_0()); 
+    }
+
+    |
+	kw='-' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLIntAccess().getHyphenMinusKeyword_0_1()); 
+    }
+)?    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLIntAccess().getINTTerminalRuleCall_1()); 
+    }
+)
+    ;
+
+
+
+
+
+// Entry rule entryRuleLDecimal
+entryRuleLDecimal returns [String current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getLDecimalRule()); } 
+	 iv_ruleLDecimal=ruleLDecimal 
+	 { $current=$iv_ruleLDecimal.current.getText(); }  
+	 EOF 
+;
+
+// Rule LDecimal
+ruleLDecimal returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(
+    { 
+        newCompositeNode(grammarAccess.getLDecimalAccess().getLIntParserRuleCall_0()); 
+    }
+    this_LInt_0=ruleLInt    {
+		$current.merge(this_LInt_0);
+    }
+
+    { 
+        afterParserOrEnumRuleCall();
+    }
+(
+	kw='.' 
+    {
+        $current.merge(kw);
+        newLeafNode(kw, grammarAccess.getLDecimalAccess().getFullStopKeyword_1_0()); 
+    }
+    this_INT_2=RULE_INT    {
+		$current.merge(this_INT_2);
+    }
+
+    { 
+    newLeafNode(this_INT_2, grammarAccess.getLDecimalAccess().getINTTerminalRuleCall_1_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 
+	 { $current=$iv_ruleXStringLiteral.current; } 
+	 EOF 
+;
+
+// Rule XStringLiteral
+ruleXStringLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+            $current);
+    }
+)(
+(
+		lv_value_1_0=RULE_STRING
+		{
+			newLeafNode(lv_value_1_0, grammarAccess.getXStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
+		}
+		{
+	        if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
+	        }
+       		setWithLastConsumed(
+       			$current, 
+       			"value",
+        		lv_value_1_0, 
+        		"STRING");
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXTypeLiteral
+entryRuleXTypeLiteral returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTypeLiteralRule()); }
+	 iv_ruleXTypeLiteral=ruleXTypeLiteral 
+	 { $current=$iv_ruleXTypeLiteral.current; } 
+	 EOF 
+;
+
+// Rule XTypeLiteral
+ruleXTypeLiteral returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+            $current);
+    }
+)	otherlv_1='typeof' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+    }
+(
+(
+		{
+			if ($current==null) {
+	            $current = createModelElement(grammarAccess.getXTypeLiteralRule());
+	        }
+        }
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+	    }
+		ruleQualifiedName		{ 
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0()); 
+	    }
+		lv_arrayDimensions_4_0=ruleArrayBrackets		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTypeLiteralRule());
+	        }
+       		add(
+       			$current, 
+       			"arrayDimensions",
+        		lv_arrayDimensions_4_0, 
+        		"ArrayBrackets");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)*	otherlv_5=')' 
+    {
+    	newLeafNode(otherlv_5, grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5());
+    }
+)
+;
+
+
+
+
+
+// Entry rule entryRuleXThrowExpression
+entryRuleXThrowExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXThrowExpressionRule()); }
+	 iv_ruleXThrowExpression=ruleXThrowExpression 
+	 { $current=$iv_ruleXThrowExpression.current; } 
+	 EOF 
+;
+
+// Rule XThrowExpression
+ruleXThrowExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='throw' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXThrowExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXThrowExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))
+;
+
+
+
+
+
+// Entry rule entryRuleXReturnExpression
+entryRuleXReturnExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXReturnExpressionRule()); }
+	 iv_ruleXReturnExpression=ruleXReturnExpression 
+	 { $current=$iv_ruleXReturnExpression.current; } 
+	 EOF 
+;
+
+// Rule XReturnExpression
+ruleXReturnExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='return' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+    }
+((	'extends' 
+ | 	'static' 
+ | 	'import' 
+ | 	'extension' 
+ | 	'!' 
+ | 	'-' 
+ | 	'+' 
+ | 	'new' 
+ | 	'{' 
+ | 	'switch' 
+ | 	'synchronized' 
+ | 	'<' 
+ | 	'super' 
+ | 	'#' 
+ | 	'[' 
+ | 	'false' 
+ | 	'true' 
+ | 	'null' 
+ | 	'typeof' 
+ | 	'if' 
+ | 	'for' 
+ | 	'while' 
+ | 	'do' 
+ | 	'throw' 
+ | 	'return' 
+ | 	'try' 
+ | 	'(' 
+ | 	RULE_ID | 	RULE_HEX | 	RULE_INT | 	RULE_DECIMAL | 	RULE_STRING)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXReturnExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXReturnExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)?)
+;
+
+
+
+
+
+// Entry rule entryRuleXTryCatchFinallyExpression
+entryRuleXTryCatchFinallyExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionRule()); }
+	 iv_ruleXTryCatchFinallyExpression=ruleXTryCatchFinallyExpression 
+	 { $current=$iv_ruleXTryCatchFinallyExpression.current; } 
+	 EOF 
+;
+
+// Rule XTryCatchFinallyExpression
+ruleXTryCatchFinallyExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+            $current);
+    }
+)	otherlv_1='try' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0()); 
+	    }
+		lv_expression_2_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"expression",
+        		lv_expression_2_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)((((	'catch' 
+)=>
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0()); 
+	    }
+		lv_catchClauses_3_0=ruleXCatchClause		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		add(
+       			$current, 
+       			"catchClauses",
+        		lv_catchClauses_3_0, 
+        		"XCatchClause");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)+(((	'finally' 
+)=>	otherlv_4='finally' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+    }
+)(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_0_1_1_0()); 
+	    }
+		lv_finallyExpression_5_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_5_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))?)
+    |(	otherlv_6='finally' 
+    {
+    	newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+    }
+(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionXExpressionParserRuleCall_3_1_1_0()); 
+	    }
+		lv_finallyExpression_7_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXTryCatchFinallyExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"finallyExpression",
+        		lv_finallyExpression_7_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+))))
+;
+
+
+
+
+
+// Entry rule entryRuleXSynchronizedExpression
+entryRuleXSynchronizedExpression returns [EObject current=null] 
+	:
+	{ newCompositeNode(grammarAccess.getXSynchronizedExpressionRule()); }
+	 iv_ruleXSynchronizedExpression=ruleXSynchronizedExpression 
+	 { $current=$iv_ruleXSynchronizedExpression.current; } 
+	 EOF 
+;
+
+// Rule XSynchronizedExpression
+ruleXSynchronizedExpression returns [EObject current=null] 
+    @init { enterRule(); 
+    }
+    @after { leaveRule(); }:
+(((((
+)	'synchronized' 
+	'(' 
+))=>((
+    {
+        $current = forceCreateModelElement(
+            grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+            $current);
+    }
+)	otherlv_1='synchronized' 
+    {
+    	newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+    }
+	otherlv_2='(' 
+    {
+    	newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+    }
+))(
+(
+		{ 
+	        newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0()); 
+	    }
+		lv_param_3_0=ruleXExpression		{
+	        if ($current==null) {
+	            $current = createModelElementForParent(grammarAccess.getXSynchronizedExpressionRule());
+	        }
+       		set(
+       			$current, 
+       			"param",
+        		lv_param_3_0, 
+        		"XExpression");
+	        afterParserOrEnumRuleCall();
+	    }
+
+)
+)	otherlv_4=')' 
+    {
+    	newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+    }
+(
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.tokens b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.tokens
new file mode 100644
index 0000000..24678e4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.tokens
@@ -0,0 +1,293 @@
+'!'=106
+'!='=93
+'!=='=95
+'#'=81
+'%'=105
+'%='=86
+'&&'=91
+'&'=139
+'('=24
+')'=25
+'*'=59
+'**'=103
+'*='=84
+'+'=77
+'++'=108
+'+='=82
+', '=20
+','=80
+'-'=78
+'--'=109
+'-='=83
+'->'=97
+'.'=58
+'..'=99
+'..<'=98
+'/'=104
+'/='=85
+'0'=153
+'1'=154
+':'=116
+'::'=110
+';'=18
+'<'=87
+'<='=152
+'<>'=101
+'='=37
+'=='=92
+'==='=94
+'=>'=100
+'>'=88
+'>='=89
+'?'=138
+'?.'=111
+'?:'=102
+'@'=79
+'['=35
+']'=40
+'as blob'=33
+'as primitive'=30
+'as'=107
+'asDefault'=54
+'cachable'=60
+'cascade'=75
+'case'=118
+'catch'=137
+'collection'=66
+'datatype'=28
+'date'=72
+'dateType'=32
+'def'=23
+'default'=117
+'derived'=65
+'digits'=44
+'do'=121
+'dto'=71
+'dtoservice'=13
+'else'=114
+'enum'=53
+'error'=146
+'extends'=123
+'extension'=125
+'false'=128
+'finally'=135
+'for'=119
+'forNull'=55
+'id'=61
+'if'=113
+'import'=27
+'info'=144
+'injectService'=22
+'instanceof'=96
+'isFalse'=34
+'isFuture'=45
+'isNotNull'=49
+'isNull'=50
+'isPast'=46
+'isTrue'=41
+'jvmType'=29
+'key'=56
+'lazy'=69
+'mandatory'=141
+'mapto'=73
+'maxDecimal'=42
+'maxNumber'=47
+'minDecimal'=43
+'minMaxSize'=52
+'minNumber'=48
+'msgCode'=36
+'msgI18nKey'=38
+'mutable'=16
+'new'=127
+'notnull'=70
+'null'=130
+'oneToMany'=143
+'optional'=140
+'package'=26
+'persistenceUnit'=17
+'private'=149
+'properties'=31
+'protected'=150
+'provides'=14
+'public'=151
+'ref'=74
+'refers'=67
+'regex'=51
+'return'=133
+'settings'=68
+'severity'=39
+'static'=124
+'super'=126
+'switch'=115
+'synchronized'=136
+'throw'=132
+'time'=147
+'timestamp'=148
+'transient'=63
+'true'=129
+'try'=134
+'typeof'=131
+'uuid'=62
+'val'=122
+'validators'=19
+'value'=57
+'var'=76
+'version'=64
+'warn'=145
+'while'=120
+'zeroToMany'=142
+'{'=15
+'|'=112
+'||'=90
+'}'=21
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=7
+RULE_ID=5
+RULE_INT=6
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=4
+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__15=15
+T__16=16
+T__17=17
+T__18=18
+T__19=19
+T__20=20
+T__21=21
+T__22=22
+T__23=23
+T__24=24
+T__25=25
+T__26=26
+T__27=27
+T__28=28
+T__29=29
+T__30=30
+T__31=31
+T__32=32
+T__33=33
+T__34=34
+T__35=35
+T__36=36
+T__37=37
+T__38=38
+T__39=39
+T__40=40
+T__41=41
+T__42=42
+T__43=43
+T__44=44
+T__45=45
+T__46=46
+T__47=47
+T__48=48
+T__49=49
+T__50=50
+T__51=51
+T__52=52
+T__53=53
+T__54=54
+T__55=55
+T__56=56
+T__57=57
+T__58=58
+T__59=59
+T__60=60
+T__61=61
+T__62=62
+T__63=63
+T__64=64
+T__65=65
+T__66=66
+T__67=67
+T__68=68
+T__69=69
+T__70=70
+T__71=71
+T__72=72
+T__73=73
+T__74=74
+T__75=75
+T__76=76
+T__77=77
+T__78=78
+T__79=79
+T__80=80
+T__81=81
+T__82=82
+T__83=83
+T__84=84
+T__85=85
+T__86=86
+T__87=87
+T__88=88
+T__89=89
+T__90=90
+T__91=91
+T__92=92
+T__93=93
+T__94=94
+T__95=95
+T__96=96
+T__97=97
+T__98=98
+T__99=99
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammarLexer.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammarLexer.java
new file mode 100644
index 0000000..12fe664
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammarLexer.java
@@ -0,0 +1,5872 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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 InternalServicesGrammarLexer 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 RULE_HEX=7;
+    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=5;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+    public InternalServicesGrammarLexer() {;} 
+    public InternalServicesGrammarLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalServicesGrammarLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11:7: ( 'dtoservice' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11:9: 'dtoservice'
+            {
+            match("dtoservice"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:12:7: ( 'provides' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:12:9: 'provides'
+            {
+            match("provides"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:13:7: ( '{' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:14:7: ( 'mutable' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:14:9: 'mutable'
+            {
+            match("mutable"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:15:7: ( 'persistenceUnit' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:15:9: 'persistenceUnit'
+            {
+            match("persistenceUnit"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:16:7: ( ';' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:17:7: ( 'validators' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:17:9: 'validators'
+            {
+            match("validators"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:18:7: ( ', ' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:19:7: ( '}' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:20:7: ( 'injectService' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:20:9: 'injectService'
+            {
+            match("injectService"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:21:7: ( 'def' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:21:9: 'def'
+            {
+            match("def"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:22:7: ( '(' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:23:7: ( ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:24:7: ( 'package' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:24:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:25:7: ( 'import' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:25:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:26:7: ( 'datatype' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:26:9: 'datatype'
+            {
+            match("datatype"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:27:7: ( 'jvmType' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:27:9: 'jvmType'
+            {
+            match("jvmType"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:28:7: ( 'as primitive' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:28:9: 'as primitive'
+            {
+            match("as primitive"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:29:7: ( 'properties' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:29:9: 'properties'
+            {
+            match("properties"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:30:7: ( 'dateType' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:30:9: 'dateType'
+            {
+            match("dateType"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:31:7: ( 'as blob' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:31:9: 'as blob'
+            {
+            match("as blob"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:32:7: ( 'isFalse' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:32:9: 'isFalse'
+            {
+            match("isFalse"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:33:7: ( '[' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:34:7: ( 'msgCode' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:34:9: 'msgCode'
+            {
+            match("msgCode"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:35:7: ( '=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:36:7: ( 'msgI18nKey' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:36:9: 'msgI18nKey'
+            {
+            match("msgI18nKey"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:37:7: ( 'severity' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:37:9: 'severity'
+            {
+            match("severity"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:38:7: ( ']' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:39:7: ( 'isTrue' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:39:9: 'isTrue'
+            {
+            match("isTrue"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:40:7: ( 'maxDecimal' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:40:9: 'maxDecimal'
+            {
+            match("maxDecimal"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:41:7: ( 'minDecimal' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:41:9: 'minDecimal'
+            {
+            match("minDecimal"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:42:7: ( 'digits' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:42:9: 'digits'
+            {
+            match("digits"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:43:7: ( 'isFuture' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:43:9: 'isFuture'
+            {
+            match("isFuture"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:44:7: ( 'isPast' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:44:9: 'isPast'
+            {
+            match("isPast"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:45:7: ( 'maxNumber' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:45:9: 'maxNumber'
+            {
+            match("maxNumber"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:46:7: ( 'minNumber' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:46:9: 'minNumber'
+            {
+            match("minNumber"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:47:7: ( 'isNotNull' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:47:9: 'isNotNull'
+            {
+            match("isNotNull"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:48:7: ( 'isNull' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:48:9: 'isNull'
+            {
+            match("isNull"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:49:7: ( 'regex' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:49:9: 'regex'
+            {
+            match("regex"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:50:7: ( 'minMaxSize' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:50:9: 'minMaxSize'
+            {
+            match("minMaxSize"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:51:7: ( 'enum' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:51:9: 'enum'
+            {
+            match("enum"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:52:7: ( 'asDefault' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:52:9: 'asDefault'
+            {
+            match("asDefault"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:53:7: ( 'forNull' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:53:9: 'forNull'
+            {
+            match("forNull"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:54:7: ( 'key' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:54:9: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:55:7: ( 'value' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:55:9: 'value'
+            {
+            match("value"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:56:7: ( '.' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:56:9: '.'
+            {
+            match('.'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__58"
+
+    // $ANTLR start "T__59"
+    public final void mT__59() throws RecognitionException {
+        try {
+            int _type = T__59;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:57:7: ( '*' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:57:9: '*'
+            {
+            match('*'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__59"
+
+    // $ANTLR start "T__60"
+    public final void mT__60() throws RecognitionException {
+        try {
+            int _type = T__60;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:58:7: ( 'cachable' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:58:9: 'cachable'
+            {
+            match("cachable"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:59:7: ( 'id' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:59:9: 'id'
+            {
+            match("id"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:60:7: ( 'uuid' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:60:9: 'uuid'
+            {
+            match("uuid"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:61:7: ( 'transient' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:61:9: 'transient'
+            {
+            match("transient"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:62:7: ( 'version' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:62:9: 'version'
+            {
+            match("version"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:63:7: ( 'derived' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:63:9: 'derived'
+            {
+            match("derived"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:64:7: ( 'collection' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:64:9: 'collection'
+            {
+            match("collection"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:65:7: ( 'refers' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:65:9: 'refers'
+            {
+            match("refers"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:66:7: ( 'settings' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:66:9: 'settings'
+            {
+            match("settings"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:67:7: ( 'lazy' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:67:9: 'lazy'
+            {
+            match("lazy"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:68:7: ( 'notnull' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:68:9: 'notnull'
+            {
+            match("notnull"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:69:7: ( 'dto' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:69:9: 'dto'
+            {
+            match("dto"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:70:7: ( 'date' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:70:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:71:7: ( 'mapto' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:71:9: 'mapto'
+            {
+            match("mapto"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:72:7: ( 'ref' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:72:9: 'ref'
+            {
+            match("ref"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:73:7: ( 'cascade' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:73:9: 'cascade'
+            {
+            match("cascade"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:74:7: ( 'var' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:74:9: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:75:7: ( '+' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:76:7: ( '-' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:76:9: '-'
+            {
+            match('-'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__78"
+
+    // $ANTLR start "T__79"
+    public final void mT__79() throws RecognitionException {
+        try {
+            int _type = T__79;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:77:7: ( '@' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:77:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__79"
+
+    // $ANTLR start "T__80"
+    public final void mT__80() throws RecognitionException {
+        try {
+            int _type = T__80;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:78:7: ( ',' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:78:9: ','
+            {
+            match(','); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__80"
+
+    // $ANTLR start "T__81"
+    public final void mT__81() throws RecognitionException {
+        try {
+            int _type = T__81;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:79:7: ( '#' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:79:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:80:7: ( '+=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:80:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:81:7: ( '-=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:81:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:82:7: ( '*=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:82:9: '*='
+            {
+            match("*="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__84"
+
+    // $ANTLR start "T__85"
+    public final void mT__85() throws RecognitionException {
+        try {
+            int _type = T__85;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:83:7: ( '/=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:83:9: '/='
+            {
+            match("/="); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:84:7: ( '%=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:84:9: '%='
+            {
+            match("%="); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:85:7: ( '<' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:85:9: '<'
+            {
+            match('<'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__87"
+
+    // $ANTLR start "T__88"
+    public final void mT__88() throws RecognitionException {
+        try {
+            int _type = T__88;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:86:7: ( '>' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:86:9: '>'
+            {
+            match('>'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__88"
+
+    // $ANTLR start "T__89"
+    public final void mT__89() throws RecognitionException {
+        try {
+            int _type = T__89;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:87:7: ( '>=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:87:9: '>='
+            {
+            match(">="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__89"
+
+    // $ANTLR start "T__90"
+    public final void mT__90() throws RecognitionException {
+        try {
+            int _type = T__90;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:88:7: ( '||' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:88:9: '||'
+            {
+            match("||"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__90"
+
+    // $ANTLR start "T__91"
+    public final void mT__91() throws RecognitionException {
+        try {
+            int _type = T__91;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:89:7: ( '&&' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:89:9: '&&'
+            {
+            match("&&"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__91"
+
+    // $ANTLR start "T__92"
+    public final void mT__92() throws RecognitionException {
+        try {
+            int _type = T__92;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:90:7: ( '==' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:90:9: '=='
+            {
+            match("=="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__92"
+
+    // $ANTLR start "T__93"
+    public final void mT__93() throws RecognitionException {
+        try {
+            int _type = T__93;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:91:7: ( '!=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:91:9: '!='
+            {
+            match("!="); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__93"
+
+    // $ANTLR start "T__94"
+    public final void mT__94() throws RecognitionException {
+        try {
+            int _type = T__94;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:92:7: ( '===' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:92:9: '==='
+            {
+            match("==="); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:93:7: ( '!==' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:94:7: ( 'instanceof' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:94:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:95:7: ( '->' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:96:7: ( '..<' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:97:7: ( '..' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:98:8: ( '=>' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:99:8: ( '<>' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:100:8: ( '?:' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:101:8: ( '**' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:102:8: ( '/' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:103:8: ( '%' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:104:8: ( '!' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:105:8: ( 'as' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:105:10: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:106:8: ( '++' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:107:8: ( '--' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:108:8: ( '::' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:109:8: ( '?.' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:110:8: ( '|' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:111:8: ( 'if' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:111:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:112:8: ( 'else' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:112:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:113:8: ( 'switch' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:113:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:114:8: ( ':' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:115:8: ( 'default' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:115:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:116:8: ( 'case' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:116:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:117:8: ( 'for' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:117:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:118:8: ( 'while' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:118:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:119:8: ( 'do' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:119:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:120:8: ( 'val' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:120:10: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:121:8: ( 'extends' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:121:10: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:122:8: ( 'static' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:122:10: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:123:8: ( 'extension' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:123:10: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:124:8: ( 'super' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:124:10: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:125:8: ( 'new' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:125:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:126:8: ( 'false' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:126:10: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:127:8: ( 'true' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:127:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:128:8: ( 'null' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:128:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:129:8: ( 'typeof' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:129:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:130:8: ( 'throw' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:130:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:131:8: ( 'return' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:131:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:132:8: ( 'try' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:132:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:133:8: ( 'finally' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:133:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:134:8: ( 'synchronized' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:134:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:135:8: ( 'catch' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:135:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:136:8: ( '?' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:136:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:137:8: ( '&' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:138:8: ( 'optional' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:138:10: 'optional'
+            {
+            match("optional"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:139:8: ( 'mandatory' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:139:10: 'mandatory'
+            {
+            match("mandatory"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:140:8: ( 'zeroToMany' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:140:10: 'zeroToMany'
+            {
+            match("zeroToMany"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:141:8: ( 'oneToMany' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:141:10: 'oneToMany'
+            {
+            match("oneToMany"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:142:8: ( 'info' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:142:10: 'info'
+            {
+            match("info"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:143:8: ( 'warn' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:143:10: 'warn'
+            {
+            match("warn"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:144:8: ( 'error' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:144:10: 'error'
+            {
+            match("error"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:145:8: ( 'time' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:145:10: 'time'
+            {
+            match("time"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:146:8: ( 'timestamp' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:146:10: 'timestamp'
+            {
+            match("timestamp"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:147:8: ( 'private' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:147:10: 'private'
+            {
+            match("private"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:148:8: ( 'protected' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:148:10: 'protected'
+            {
+            match("protected"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:149:8: ( 'public' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:149:10: 'public'
+            {
+            match("public"); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:150:8: ( '<=' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:150:10: '<='
+            {
+            match("<="); 
+
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:151:8: ( '0' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:151:10: '0'
+            {
+            match('0'); 
+
+            }
+
+            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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:152:8: ( '1' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:152:10: '1'
+            {
+            match('1'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11351: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11353:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11353:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11353: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11355: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11357:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11357:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11357:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11357: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11357: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11359: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11361:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11361:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11361: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11361: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363:41: ( '\\r' )? '\\n'
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11363: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11365:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11365:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11365: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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11367:16: ( . )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:11367:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=151;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:917: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 144 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:926: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 145 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:935: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 146 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:948: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 147 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:956: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 148 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:968: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 149 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:984: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 150 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:1000: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 151 :
+                // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1:1008: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\2\73\1\uffff\1\73\1\uffff\1\73\1\111\1\uffff\1\73\2\uffff\2\73\1\uffff\1\127\1\73\1\uffff\4\73\1\150\1\153\5\73\1\171\1\175\2\uffff\1\u0083\1\u0085\1\u0088\1\u008a\1\u008c\1\u008e\1\u0090\1\u0093\1\u0095\3\73\1\u009d\1\u009f\1\u00a0\1\65\5\uffff\4\73\1\u00a8\1\uffff\4\73\1\uffff\4\73\1\uffff\2\73\3\uffff\3\73\1\u00bf\1\u00c0\2\uffff\1\73\1\u00c4\1\uffff\1\u00c6\2\uffff\5\73\1\uffff\11\73\1\u00d9\4\uffff\13\73\30\uffff\1\u00ea\6\uffff\5\73\1\uffff\1\u00a0\6\uffff\1\u00f1\1\u00f3\3\73\1\uffff\13\73\1\u010b\1\u010c\11\73\2\uffff\1\73\1\uffff\1\73\3\uffff\7\73\1\u0124\5\73\1\u012b\2\73\1\u012e\2\uffff\7\73\1\u0137\5\73\1\u013d\1\73\2\uffff\6\73\1\uffff\1\73\1\uffff\2\73\1\u0149\24\73\2\uffff\3\73\1\u0161\10\73\2\uffff\11\73\1\uffff\1\73\1\u0174\1\u0175\3\73\1\uffff\2\73\1\uffff\2\73\1\u017d\2\73\1\u0180\1\73\1\u0182\1\uffff\2\73\1\u0186\1\u0187\1\73\1\uffff\1\u0189\1\73\1\u018b\10\73\1\uffff\15\73\1\u01a1\5\73\1\u01a7\3\73\1\uffff\15\73\1\u01b8\1\73\1\u01ba\2\73\2\uffff\1\73\1\u01bf\1\73\1\u01c1\3\73\1\uffff\1\u01c5\1\73\1\uffff\1\73\1\uffff\1\73\1\u01c9\1\73\2\uffff\1\73\1\uffff\1\u01cc\1\uffff\10\73\1\u01d5\6\73\1\u01dc\5\73\1\uffff\5\73\1\uffff\3\73\1\u01ea\2\73\1\u01ed\1\u01ee\1\73\1\u01f0\4\73\1\u01f5\1\u01f6\1\uffff\1\73\1\uffff\1\u01f8\1\u01f9\2\73\1\uffff\1\73\1\uffff\3\73\1\uffff\2\73\1\u0202\1\uffff\2\73\1\uffff\4\73\1\u0209\1\u020a\2\73\1\uffff\3\73\1\u0210\1\73\1\u0212\1\uffff\1\u0213\1\u0214\10\73\1\u021d\2\73\1\uffff\1\u0220\1\73\2\uffff\1\73\1\uffff\1\u0223\3\73\2\uffff\1\73\2\uffff\1\u0228\1\73\1\u022a\1\u022b\1\73\1\u022d\2\73\1\uffff\1\73\1\u0231\4\73\2\uffff\1\u0236\1\u0237\1\u0238\2\73\1\uffff\1\73\3\uffff\10\73\1\uffff\2\73\1\uffff\1\u0246\1\73\1\uffff\1\73\1\u0249\1\u024a\1\73\1\uffff\1\73\2\uffff\1\u024d\1\uffff\3\73\1\uffff\1\u0251\3\73\3\uffff\1\73\1\u0256\3\73\1\u025a\1\u025b\1\73\1\u025d\4\73\1\uffff\1\u0262\1\u0263\2\uffff\1\73\1\u0265\1\uffff\1\73\1\u0267\1\u0268\1\uffff\1\u0269\1\73\1\u026b\1\u026c\1\uffff\1\73\1\u026e\1\u026f\2\uffff\1\u0270\1\uffff\1\u0271\1\u0272\1\73\1\u0274\2\uffff\1\73\1\uffff\1\u0276\3\uffff\1\u0277\2\uffff\1\73\5\uffff\1\73\1\uffff\1\73\2\uffff\2\73\1\u027d\1\73\1\u027f\1\uffff\1\73\1\uffff\1\u0281\1\uffff";
+    static final String DFA21_eofS =
+        "\u0282\uffff";
+    static final String DFA21_minS =
+        "\1\0\2\141\1\uffff\1\141\1\uffff\1\141\1\40\1\uffff\1\144\2\uffff\1\166\1\163\1\uffff\1\75\1\145\1\uffff\1\145\1\154\1\141\1\145\1\56\1\52\1\141\1\165\1\150\1\141\1\145\1\53\1\55\2\uffff\1\52\3\75\1\174\1\46\1\75\1\56\1\72\1\141\1\156\1\145\3\60\1\44\5\uffff\1\157\1\146\1\164\1\147\1\44\1\uffff\1\151\1\162\1\143\1\142\1\uffff\1\164\1\147\2\156\1\uffff\1\154\1\162\3\uffff\1\146\1\160\1\106\2\44\2\uffff\1\155\1\40\1\uffff\1\75\2\uffff\1\164\1\151\1\141\1\160\1\156\1\uffff\1\146\1\165\1\163\1\164\2\162\1\154\1\156\1\171\1\74\4\uffff\1\143\1\154\1\151\1\141\1\160\1\162\1\155\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\164\1\145\1\162\1\uffff\1\60\6\uffff\2\44\1\151\1\141\1\151\1\uffff\1\160\1\166\1\163\1\153\1\154\1\141\1\103\1\104\1\164\1\144\1\104\2\44\1\163\1\145\1\164\2\157\1\141\1\162\1\141\1\157\2\uffff\1\124\1\142\1\145\3\uffff\1\145\3\164\1\145\1\143\1\145\1\44\1\165\1\155\2\145\1\157\1\44\1\163\1\141\1\44\2\uffff\1\150\2\143\1\154\1\144\1\156\1\145\1\44\1\145\1\157\1\145\1\171\1\156\1\44\1\154\2\uffff\1\154\1\156\1\151\1\124\1\157\1\145\1\uffff\1\165\1\uffff\1\166\1\164\1\44\1\164\1\151\2\145\1\141\1\151\1\141\1\151\1\142\1\157\1\61\1\145\1\165\1\157\1\141\1\145\1\165\1\141\1\144\1\145\2\uffff\1\151\1\143\1\141\1\44\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\171\2\uffff\1\146\1\162\1\151\1\143\1\151\1\162\1\150\1\170\1\162\1\uffff\1\162\2\44\1\156\1\162\1\165\1\uffff\1\145\1\154\1\uffff\2\141\1\44\1\150\1\145\1\44\1\163\1\44\1\uffff\1\157\1\167\2\44\1\165\1\uffff\1\44\1\145\1\44\2\157\1\124\1\162\1\154\1\145\2\171\1\uffff\1\163\1\144\1\162\1\143\1\164\1\163\1\147\1\143\1\154\1\144\1\70\1\143\1\155\1\44\1\164\1\143\1\155\1\170\1\141\1\44\1\157\1\164\1\156\1\uffff\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\160\1\141\1\151\1\156\1\150\1\143\1\44\1\162\1\44\1\163\1\156\2\uffff\1\144\1\44\1\154\1\44\1\154\1\142\1\144\1\uffff\1\44\1\143\1\uffff\1\151\1\uffff\1\146\1\44\1\164\2\uffff\1\154\1\uffff\1\44\1\uffff\1\156\1\115\1\157\1\166\1\164\1\144\2\160\1\44\1\145\2\164\1\145\1\164\1\145\1\44\2\145\1\156\1\151\1\142\1\uffff\1\157\1\151\1\142\1\123\1\164\1\uffff\1\156\1\123\1\143\1\44\1\145\1\162\2\44\1\165\1\44\1\145\1\165\1\164\1\147\2\44\1\uffff\1\157\1\uffff\2\44\1\163\1\151\1\uffff\1\154\1\uffff\1\171\1\154\1\145\1\uffff\1\164\1\145\1\44\1\uffff\1\141\1\154\1\uffff\2\141\1\115\1\151\2\44\2\145\1\uffff\1\163\1\151\1\145\1\44\1\145\1\44\1\uffff\2\44\1\113\1\155\1\145\1\162\1\155\1\145\1\151\1\157\1\44\2\145\1\uffff\1\44\1\145\2\uffff\1\154\1\uffff\1\44\1\154\1\171\1\163\2\uffff\1\156\2\uffff\1\44\1\157\2\44\1\145\1\44\1\151\1\156\1\uffff\1\155\1\44\1\154\1\156\1\141\1\143\2\uffff\3\44\1\145\1\144\1\uffff\1\156\3\uffff\1\145\1\141\1\162\1\171\1\141\1\162\1\172\1\162\1\uffff\1\162\1\157\1\uffff\1\44\1\154\1\uffff\1\164\2\44\1\151\1\uffff\1\156\2\uffff\1\44\1\uffff\1\157\1\164\1\160\1\uffff\1\44\1\171\1\156\1\145\3\uffff\1\163\1\44\1\143\1\171\1\154\2\44\1\154\1\44\1\145\1\163\1\166\1\146\1\uffff\2\44\2\uffff\1\172\1\44\1\uffff\1\156\2\44\1\uffff\1\44\1\171\2\44\1\uffff\1\145\2\44\2\uffff\1\44\1\uffff\2\44\1\151\1\44\2\uffff\1\145\1\uffff\1\44\3\uffff\1\44\2\uffff\1\125\5\uffff\1\143\1\uffff\1\144\2\uffff\1\156\1\145\1\44\1\151\1\44\1\uffff\1\164\1\uffff\1\44\1\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\164\1\165\1\uffff\1\165\1\uffff\1\145\1\40\1\uffff\1\163\2\uffff\1\166\1\163\1\uffff\1\76\1\171\1\uffff\1\145\1\170\1\157\1\145\1\56\1\75\1\157\1\165\1\171\1\141\1\165\1\75\1\76\2\uffff\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\150\1\160\1\145\1\170\2\154\1\172\5\uffff\1\157\1\162\1\164\1\147\1\172\1\uffff\1\157\1\162\1\143\1\142\1\uffff\1\164\1\147\1\170\1\156\1\uffff\2\162\3\uffff\1\163\1\160\1\124\2\172\2\uffff\1\155\1\172\1\uffff\1\75\2\uffff\1\166\1\151\1\141\1\160\1\156\1\uffff\1\164\1\165\1\163\1\164\2\162\1\154\1\156\1\171\1\74\4\uffff\1\164\1\154\1\151\1\171\1\160\1\162\1\155\1\172\1\164\1\167\1\154\30\uffff\1\75\6\uffff\1\151\1\162\1\164\1\145\1\162\1\uffff\1\154\6\uffff\2\172\1\151\1\145\1\151\1\uffff\2\166\1\163\1\153\1\154\1\141\1\111\1\116\1\164\1\144\1\116\2\172\1\163\1\145\1\164\2\157\1\165\1\162\1\141\1\165\2\uffff\1\124\1\160\1\145\3\uffff\1\145\3\164\1\145\1\143\1\145\1\172\1\165\1\155\2\145\1\157\1\172\1\163\1\141\1\172\2\uffff\1\150\1\145\1\143\1\154\1\144\1\156\1\145\1\172\1\145\1\157\1\145\1\171\1\156\1\172\1\154\2\uffff\1\154\1\156\1\151\1\124\1\157\1\145\1\uffff\1\165\1\uffff\1\166\1\164\1\172\1\164\1\151\2\145\1\141\1\151\1\141\1\151\1\142\1\157\1\61\1\145\1\165\1\157\1\141\1\145\1\165\1\141\1\144\1\145\2\uffff\1\151\1\143\1\141\1\172\1\162\1\154\1\164\1\165\1\163\1\164\1\154\1\171\2\uffff\1\146\1\162\1\151\1\143\1\151\1\162\1\150\1\170\1\162\1\uffff\1\162\2\172\1\156\1\162\1\165\1\uffff\1\145\1\154\1\uffff\2\141\1\172\1\150\1\145\1\172\1\163\1\172\1\uffff\1\157\1\167\2\172\1\165\1\uffff\1\172\1\145\1\172\2\157\1\124\1\162\1\154\1\145\2\171\1\uffff\1\163\1\144\1\162\1\143\1\164\1\163\1\147\1\143\1\154\1\144\1\70\1\143\1\155\1\172\1\164\1\143\1\155\1\170\1\141\1\172\1\157\1\164\1\156\1\uffff\1\164\1\163\1\165\1\145\1\164\1\116\1\154\1\160\1\141\1\151\1\156\1\150\1\143\1\172\1\162\1\172\1\163\1\156\2\uffff\1\163\1\172\1\154\1\172\1\154\1\142\1\144\1\uffff\1\172\1\143\1\uffff\1\151\1\uffff\1\146\1\172\1\164\2\uffff\1\154\1\uffff\1\172\1\uffff\1\156\1\115\1\157\1\166\1\164\1\144\2\160\1\172\1\145\2\164\1\145\1\164\1\145\1\172\2\145\1\156\1\151\1\142\1\uffff\1\157\1\151\1\142\1\123\1\164\1\uffff\1\156\1\123\1\143\1\172\1\145\1\162\2\172\1\165\1\172\1\145\1\165\1\164\1\147\2\172\1\uffff\1\157\1\uffff\2\172\1\163\1\151\1\uffff\1\154\1\uffff\1\171\1\154\1\145\1\uffff\1\164\1\145\1\172\1\uffff\1\141\1\154\1\uffff\2\141\1\115\1\151\2\172\2\145\1\uffff\1\163\1\151\1\145\1\172\1\145\1\172\1\uffff\2\172\1\113\1\155\1\145\1\162\1\155\1\145\1\151\1\157\1\172\2\145\1\uffff\1\172\1\145\2\uffff\1\154\1\uffff\1\172\1\154\1\171\1\163\2\uffff\1\156\2\uffff\1\172\1\157\2\172\1\145\1\172\1\151\1\156\1\uffff\1\155\1\172\1\154\1\156\1\141\1\143\2\uffff\3\172\1\145\1\144\1\uffff\1\156\3\uffff\1\145\1\141\1\162\1\171\1\141\1\162\1\172\1\162\1\uffff\1\162\1\157\1\uffff\1\172\1\154\1\uffff\1\164\2\172\1\151\1\uffff\1\156\2\uffff\1\172\1\uffff\1\157\1\164\1\160\1\uffff\1\172\1\171\1\156\1\145\3\uffff\1\163\1\172\1\143\1\171\1\154\2\172\1\154\1\172\1\145\1\163\1\166\1\146\1\uffff\2\172\2\uffff\2\172\1\uffff\1\156\2\172\1\uffff\1\172\1\171\2\172\1\uffff\1\145\2\172\2\uffff\1\172\1\uffff\2\172\1\151\1\172\2\uffff\1\145\1\uffff\1\172\3\uffff\1\172\2\uffff\1\125\5\uffff\1\143\1\uffff\1\144\2\uffff\1\156\1\145\1\172\1\151\1\172\1\uffff\1\164\1\uffff\1\172\1\uffff";
+    static final String DFA21_acceptS =
+        "\3\uffff\1\3\1\uffff\1\6\2\uffff\1\11\1\uffff\1\14\1\15\2\uffff\1\27\2\uffff\1\34\15\uffff\1\103\1\105\20\uffff\1\u0092\2\u0093\1\u0096\1\u0097\5\uffff\1\u0092\4\uffff\1\3\4\uffff\1\6\2\uffff\1\10\1\104\1\11\5\uffff\1\14\1\15\2\uffff\1\27\1\uffff\1\130\1\31\5\uffff\1\34\12\uffff\1\56\1\110\1\133\1\57\13\uffff\1\106\1\140\1\101\1\107\1\125\1\141\1\102\1\103\1\105\1\111\1\u0094\1\u0095\1\134\1\112\1\135\1\131\1\u008c\1\113\1\115\1\114\1\116\1\144\1\117\1\177\1\uffff\1\136\1\132\1\143\1\176\1\142\1\150\5\uffff\1\u008f\1\uffff\1\u008d\1\u0091\1\u008e\1\u0090\1\u0093\1\u0096\5\uffff\1\155\26\uffff\1\61\1\145\3\uffff\1\137\1\122\1\120\21\uffff\1\126\1\127\17\uffff\1\123\1\121\6\uffff\1\73\1\uffff\1\13\27\uffff\1\156\1\100\14\uffff\1\22\1\25\11\uffff\1\76\6\uffff\1\153\2\uffff\1\54\10\uffff\1\172\5\uffff\1\163\13\uffff\1\74\27\uffff\1\u0084\22\uffff\1\51\1\146\7\uffff\1\152\2\uffff\1\62\1\uffff\1\165\3\uffff\1\u0087\1\71\1\uffff\1\166\1\uffff\1\u0085\25\uffff\1\75\5\uffff\1\55\20\uffff\1\162\1\uffff\1\47\4\uffff\1\u0086\1\uffff\1\164\3\uffff\1\175\3\uffff\1\170\2\uffff\1\154\10\uffff\1\40\6\uffff\1\u008b\15\uffff\1\17\2\uffff\1\35\1\42\1\uffff\1\46\4\uffff\1\147\1\160\1\uffff\1\67\1\171\10\uffff\1\167\6\uffff\1\151\1\65\5\uffff\1\u0089\1\uffff\1\16\1\4\1\30\10\uffff\1\64\2\uffff\1\26\2\uffff\1\21\4\uffff\1\157\1\uffff\1\53\1\173\1\uffff\1\77\3\uffff\1\72\4\uffff\1\20\1\24\1\2\15\uffff\1\41\2\uffff\1\33\1\70\2\uffff\1\60\3\uffff\1\u0080\4\uffff\1\u008a\3\uffff\1\43\1\u0081\1\uffff\1\44\4\uffff\1\45\1\52\1\uffff\1\161\1\uffff\1\63\1\u0088\1\u0083\1\uffff\1\1\1\23\1\uffff\1\32\1\36\1\37\1\50\1\7\1\uffff\1\124\1\uffff\1\66\1\u0082\5\uffff\1\174\1\uffff\1\12\1\uffff\1\5";
+    static final String DFA21_specialS =
+        "\1\0\u0281\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\65\2\64\2\65\1\64\22\65\1\64\1\47\1\62\1\40\1\61\1\42\1\46\1\63\1\12\1\13\1\27\1\35\1\7\1\36\1\26\1\41\1\55\1\56\10\57\1\51\1\5\1\43\1\17\1\44\1\50\1\37\32\61\1\16\1\65\1\21\1\60\1\61\1\65\1\15\1\61\1\30\1\1\1\23\1\24\2\61\1\11\1\14\1\25\1\33\1\4\1\34\1\53\1\2\1\61\1\22\1\20\1\32\1\31\1\6\1\52\2\61\1\54\1\3\1\45\1\10\uff82\65",
+            "\1\70\3\uffff\1\67\3\uffff\1\71\5\uffff\1\72\4\uffff\1\66",
+            "\1\76\3\uffff\1\75\14\uffff\1\74\2\uffff\1\77",
+            "",
+            "\1\103\7\uffff\1\104\11\uffff\1\102\1\uffff\1\101",
+            "",
+            "\1\106\3\uffff\1\107",
+            "\1\110",
+            "",
+            "\1\116\1\uffff\1\117\6\uffff\1\114\1\113\4\uffff\1\115",
+            "",
+            "",
+            "\1\122",
+            "\1\123",
+            "",
+            "\1\125\1\126",
+            "\1\130\16\uffff\1\132\1\133\1\uffff\1\131\1\uffff\1\134",
+            "",
+            "\1\136",
+            "\1\140\1\uffff\1\137\3\uffff\1\142\5\uffff\1\141",
+            "\1\144\7\uffff\1\145\5\uffff\1\143",
+            "\1\146",
+            "\1\147",
+            "\1\152\22\uffff\1\151",
+            "\1\154\15\uffff\1\155",
+            "\1\156",
+            "\1\161\1\162\10\uffff\1\157\6\uffff\1\160",
+            "\1\163",
+            "\1\165\11\uffff\1\164\5\uffff\1\166",
+            "\1\170\21\uffff\1\167",
+            "\1\174\17\uffff\1\172\1\173",
+            "",
+            "",
+            "\1\u0081\4\uffff\1\u0082\15\uffff\1\u0080",
+            "\1\u0084",
+            "\1\u0087\1\u0086",
+            "\1\u0089",
+            "\1\u008b",
+            "\1\u008d",
+            "\1\u008f",
+            "\1\u0092\13\uffff\1\u0091",
+            "\1\u0094",
+            "\1\u0097\6\uffff\1\u0096",
+            "\1\u0099\1\uffff\1\u0098",
+            "\1\u009a",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\13\uffff\1\u009b\6\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\13\uffff\1\u009b",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\22\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\22\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e",
+            "\1\73\34\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a3",
+            "\1\u00a4\13\uffff\1\u00a5",
+            "\1\u00a6",
+            "\1\u00a7",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u00aa\5\uffff\1\u00a9",
+            "\1\u00ab",
+            "\1\u00ac",
+            "\1\u00ad",
+            "",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b2\1\uffff\1\u00b1\7\uffff\1\u00b0",
+            "\1\u00b3",
+            "",
+            "\1\u00b4\5\uffff\1\u00b5",
+            "\1\u00b6",
+            "",
+            "",
+            "",
+            "\1\u00b9\3\uffff\1\u00b7\10\uffff\1\u00b8",
+            "\1\u00ba",
+            "\1\u00bb\7\uffff\1\u00be\1\uffff\1\u00bd\3\uffff\1\u00bc",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "\1\u00c1",
+            "\1\u00c2\3\uffff\1\73\13\uffff\12\73\7\uffff\3\73\1\u00c3\26\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u00c5",
+            "",
+            "",
+            "\1\u00c8\1\uffff\1\u00c7",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "",
+            "\1\u00ce\1\u00cd\14\uffff\1\u00cf",
+            "\1\u00d0",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00da\17\uffff\1\u00db\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df\23\uffff\1\u00e0\3\uffff\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00e9",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "",
+            "\12\u009c\10\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e\22\uffff\1\u009c\2\uffff\1\u009e\1\uffff\3\u009e\5\uffff\1\u009e",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u00f0\7\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\1\u00f2\31\73",
+            "\1\u00f4",
+            "\1\u00f5\3\uffff\1\u00f6",
+            "\1\u00f7",
+            "",
+            "\1\u00f9\3\uffff\1\u00fa\1\uffff\1\u00f8",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100\5\uffff\1\u0101",
+            "\1\u0102\11\uffff\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\u0106\10\uffff\1\u0108\1\u0107",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\10\73\1\u0109\13\73\1\u010a\5\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u010d",
+            "\1\u010e",
+            "\1\u010f",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\u0112\23\uffff\1\u0113",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\u0116\5\uffff\1\u0117",
+            "",
+            "",
+            "\1\u0118",
+            "\1\u011a\15\uffff\1\u0119",
+            "\1\u011b",
+            "",
+            "",
+            "",
+            "\1\u011c",
+            "\1\u011d",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0120",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\4\73\1\u0123\25\73",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\73\13\uffff\12\73\7\uffff\15\73\1\u012a\14\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u012c",
+            "\1\u012d",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "\1\u012f",
+            "\1\u0130\1\uffff\1\u0131",
+            "\1\u0132",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0138",
+            "\1\u0139",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u013e",
+            "",
+            "",
+            "\1\u013f",
+            "\1\u0140",
+            "\1\u0141",
+            "\1\u0142",
+            "\1\u0143",
+            "\1\u0144",
+            "",
+            "\1\u0145",
+            "",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\73\13\uffff\12\73\7\uffff\23\73\1\u0148\6\73\4\uffff\1\73\1\uffff\32\73",
+            "\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\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "",
+            "",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\u0165",
+            "\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\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0176",
+            "\1\u0177",
+            "\1\u0178",
+            "",
+            "\1\u0179",
+            "\1\u017a",
+            "",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0181",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\22\73\1\u0185\7\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0188",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u018a",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\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",
+            "\1\u01a0",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01a2",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\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\u01b6",
+            "\1\u01b7",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01b9",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01bb",
+            "\1\u01bc",
+            "",
+            "",
+            "\1\u01bd\16\uffff\1\u01be",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01c0",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01c6",
+            "",
+            "\1\u01c7",
+            "",
+            "\1\u01c8",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01ca",
+            "",
+            "",
+            "\1\u01cb",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u01cd",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "\1\u01d2",
+            "\1\u01d3",
+            "\1\u01d4",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01d6",
+            "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01dd",
+            "\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\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01ef",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u01f7",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u01fa",
+            "\1\u01fb",
+            "",
+            "\1\u01fc",
+            "",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "",
+            "\1\u0200",
+            "\1\u0201",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u0203",
+            "\1\u0204",
+            "",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u020b",
+            "\1\u020c",
+            "",
+            "\1\u020d",
+            "\1\u020e",
+            "\1\u020f",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0211",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0215",
+            "\1\u0216",
+            "\1\u0217",
+            "\1\u0218",
+            "\1\u0219",
+            "\1\u021a",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u021e",
+            "\1\u021f",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0221",
+            "",
+            "",
+            "\1\u0222",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0224",
+            "\1\u0225",
+            "\1\u0226",
+            "",
+            "",
+            "\1\u0227",
+            "",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0229",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u022c",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u022e",
+            "\1\u022f",
+            "",
+            "\1\u0230",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0232",
+            "\1\u0233",
+            "\1\u0234",
+            "\1\u0235",
+            "",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0239",
+            "\1\u023a",
+            "",
+            "\1\u023b",
+            "",
+            "",
+            "",
+            "\1\u023c",
+            "\1\u023d",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\u0240",
+            "\1\u0241",
+            "\1\u0242",
+            "\1\u0243",
+            "",
+            "\1\u0244",
+            "\1\u0245",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0247",
+            "",
+            "\1\u0248",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u024b",
+            "",
+            "\1\u024c",
+            "",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u024e",
+            "\1\u024f",
+            "\1\u0250",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0252",
+            "\1\u0253",
+            "\1\u0254",
+            "",
+            "",
+            "",
+            "\1\u0255",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0257",
+            "\1\u0258",
+            "\1\u0259",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u025c",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u025e",
+            "\1\u025f",
+            "\1\u0260",
+            "\1\u0261",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "\1\u0264",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u0266",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u026a",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u026d",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u0273",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "\1\u0275",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "",
+            "\1\u0278",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u0279",
+            "",
+            "\1\u027a",
+            "",
+            "",
+            "\1\u027b",
+            "\1\u027c",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "\1\u027e",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            "",
+            "\1\u0280",
+            "",
+            "\1\73\13\uffff\12\73\7\uffff\32\73\4\uffff\1\73\1\uffff\32\73",
+            ""
+    };
+
+    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 | 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=='d') ) {s = 1;}
+
+                        else if ( (LA21_0=='p') ) {s = 2;}
+
+                        else if ( (LA21_0=='{') ) {s = 3;}
+
+                        else if ( (LA21_0=='m') ) {s = 4;}
+
+                        else if ( (LA21_0==';') ) {s = 5;}
+
+                        else if ( (LA21_0=='v') ) {s = 6;}
+
+                        else if ( (LA21_0==',') ) {s = 7;}
+
+                        else if ( (LA21_0=='}') ) {s = 8;}
+
+                        else if ( (LA21_0=='i') ) {s = 9;}
+
+                        else if ( (LA21_0=='(') ) {s = 10;}
+
+                        else if ( (LA21_0==')') ) {s = 11;}
+
+                        else if ( (LA21_0=='j') ) {s = 12;}
+
+                        else if ( (LA21_0=='a') ) {s = 13;}
+
+                        else if ( (LA21_0=='[') ) {s = 14;}
+
+                        else if ( (LA21_0=='=') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0==']') ) {s = 17;}
+
+                        else if ( (LA21_0=='r') ) {s = 18;}
+
+                        else if ( (LA21_0=='e') ) {s = 19;}
+
+                        else if ( (LA21_0=='f') ) {s = 20;}
+
+                        else if ( (LA21_0=='k') ) {s = 21;}
+
+                        else if ( (LA21_0=='.') ) {s = 22;}
+
+                        else if ( (LA21_0=='*') ) {s = 23;}
+
+                        else if ( (LA21_0=='c') ) {s = 24;}
+
+                        else if ( (LA21_0=='u') ) {s = 25;}
+
+                        else if ( (LA21_0=='t') ) {s = 26;}
+
+                        else if ( (LA21_0=='l') ) {s = 27;}
+
+                        else if ( (LA21_0=='n') ) {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=='w') ) {s = 42;}
+
+                        else if ( (LA21_0=='o') ) {s = 43;}
+
+                        else if ( (LA21_0=='z') ) {s = 44;}
+
+                        else if ( (LA21_0=='0') ) {s = 45;}
+
+                        else if ( (LA21_0=='1') ) {s = 46;}
+
+                        else if ( ((LA21_0>='2' && LA21_0<='9')) ) {s = 47;}
+
+                        else if ( (LA21_0=='^') ) {s = 48;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||(LA21_0>='g' && LA21_0<='h')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='y')) ) {s = 49;}
+
+                        else if ( (LA21_0=='\"') ) {s = 50;}
+
+                        else if ( (LA21_0=='\'') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 52;}
+
+                        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 = 53;}
+
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 21, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammarParser.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammarParser.java
new file mode 100644
index 0000000..49f01ba
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammarParser.java
@@ -0,0 +1,10011 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+
+
+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 InternalServicesGrammarParser extends AbstractInternalAntlrParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'dtoservice'", "'provides'", "'{'", "'mutable'", "'persistenceUnit'", "';'", "'validators'", "', '", "'}'", "'injectService'", "'def'", "'('", "')'", "'package'", "'import'", "'datatype'", "'jvmType'", "'as primitive'", "'properties'", "'dateType'", "'as blob'", "'isFalse'", "'['", "'msgCode'", "'='", "'msgI18nKey'", "'severity'", "']'", "'isTrue'", "'maxDecimal'", "'minDecimal'", "'digits'", "'isFuture'", "'isPast'", "'maxNumber'", "'minNumber'", "'isNotNull'", "'isNull'", "'regex'", "'minMaxSize'", "'enum'", "'asDefault'", "'forNull'", "'key'", "'value'", "'.'", "'*'", "'cachable'", "'id'", "'uuid'", "'transient'", "'version'", "'derived'", "'collection'", "'refers'", "'settings'", "'lazy'", "'notnull'", "'dto'", "'date'", "'mapto'", "'ref'", "'cascade'", "'var'", "'+'", "'-'", "'@'", "','", "'#'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'**'", "'/'", "'%'", "'!'", "'as'", "'++'", "'--'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'val'", "'extends'", "'static'", "'extension'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'optional'", "'mandatory'", "'zeroToMany'", "'oneToMany'", "'info'", "'warn'", "'error'", "'time'", "'timestamp'", "'private'", "'protected'", "'public'", "'<='", "'0'", "'1'"
+    };
+    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 RULE_HEX=7;
+    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=5;
+    public static final int T__131=131;
+    public static final int T__130=130;
+    public static final int RULE_INT=6;
+    public static final int T__66=66;
+    public static final int RULE_ML_COMMENT=9;
+    public static final int T__67=67;
+    public static final int T__129=129;
+    public static final int T__68=68;
+    public static final int T__69=69;
+    public static final int T__62=62;
+    public static final int T__126=126;
+    public static final int T__63=63;
+    public static final int T__125=125;
+    public static final int T__64=64;
+    public static final int T__128=128;
+    public static final int T__65=65;
+    public static final int T__127=127;
+    public static final int T__37=37;
+    public static final int T__38=38;
+    public static final int T__39=39;
+    public static final int T__33=33;
+    public static final int T__34=34;
+    public static final int T__35=35;
+    public static final int T__36=36;
+    public static final int T__30=30;
+    public static final int T__31=31;
+    public static final int T__32=32;
+    public static final int T__154=154;
+    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__91=91;
+    public static final int T__100=100;
+    public static final int T__92=92;
+    public static final int T__93=93;
+    public static final int T__102=102;
+    public static final int T__94=94;
+    public static final int T__101=101;
+    public static final int T__90=90;
+    public static final int T__19=19;
+    public static final int T__15=15;
+    public static final int T__16=16;
+    public static final int T__17=17;
+    public static final int T__18=18;
+    public static final int T__99=99;
+    public static final int T__13=13;
+    public static final int T__14=14;
+    public static final int T__95=95;
+    public static final int T__96=96;
+    public static final int T__97=97;
+    public static final int T__98=98;
+    public static final int RULE_DECIMAL=8;
+    public static final int T__26=26;
+    public static final int T__27=27;
+    public static final int T__28=28;
+    public static final int T__29=29;
+    public static final int T__22=22;
+    public static final int T__23=23;
+    public static final int T__24=24;
+    public static final int T__25=25;
+    public static final int T__20=20;
+    public static final int T__21=21;
+    public static final int T__122=122;
+    public static final int T__70=70;
+    public static final int T__121=121;
+    public static final int T__71=71;
+    public static final int T__124=124;
+    public static final int T__72=72;
+    public static final int T__123=123;
+    public static final int T__120=120;
+    public static final int RULE_STRING=4;
+    public static final int RULE_SL_COMMENT=10;
+    public static final int T__77=77;
+    public static final int T__119=119;
+    public static final int T__78=78;
+    public static final int T__118=118;
+    public static final int T__79=79;
+    public static final int T__73=73;
+    public static final int T__115=115;
+    public static final int EOF=-1;
+    public static final int T__74=74;
+    public static final int T__114=114;
+    public static final int T__75=75;
+    public static final int T__117=117;
+    public static final int T__76=76;
+    public static final int T__116=116;
+    public static final int T__80=80;
+    public static final int T__111=111;
+    public static final int T__81=81;
+    public static final int T__110=110;
+    public static final int T__82=82;
+    public static final int T__113=113;
+    public static final int T__83=83;
+    public static final int T__112=112;
+    public static final int RULE_WS=11;
+    public static final int RULE_ANY_OTHER=12;
+    public static final int T__88=88;
+    public static final int T__108=108;
+    public static final int T__89=89;
+    public static final int T__107=107;
+    public static final int T__109=109;
+    public static final int T__84=84;
+    public static final int T__104=104;
+    public static final int T__85=85;
+    public static final int T__103=103;
+    public static final int T__86=86;
+    public static final int T__106=106;
+    public static final int T__87=87;
+    public static final int T__105=105;
+
+    // delegates
+    // delegators
+
+
+        public InternalServicesGrammarParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalServicesGrammarParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalServicesGrammarParser.tokenNames; }
+    public String getGrammarFileName() { return "../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g"; }
+
+
+
+     	private ServicesGrammarGrammarAccess grammarAccess;
+     	
+        public InternalServicesGrammarParser(TokenStream input, ServicesGrammarGrammarAccess grammarAccess) {
+            this(input);
+            this.grammarAccess = grammarAccess;
+            registerRules(grammarAccess.getGrammar());
+        }
+        
+        @Override
+        protected String getFirstRuleName() {
+        	return "LServiceModel";	
+       	}
+       	
+       	@Override
+       	protected ServicesGrammarGrammarAccess getGrammarAccess() {
+       		return grammarAccess;
+       	}
+
+
+
+    // $ANTLR start "entryRuleLServiceModel"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:68:1: entryRuleLServiceModel returns [EObject current=null] : iv_ruleLServiceModel= ruleLServiceModel EOF ;
+    public final EObject entryRuleLServiceModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleLServiceModel = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:69:2: (iv_ruleLServiceModel= ruleLServiceModel EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:70:2: iv_ruleLServiceModel= ruleLServiceModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getLServiceModelRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLServiceModel_in_entryRuleLServiceModel75);
+            iv_ruleLServiceModel=ruleLServiceModel();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleLServiceModel; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLServiceModel85); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleLServiceModel"
+
+
+    // $ANTLR start "ruleLServiceModel"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:77:1: ruleLServiceModel returns [EObject current=null] : ( (lv_packages_0_0= ruleTypedPackage ) )* ;
+    public final EObject ruleLServiceModel() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_packages_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:80:28: ( ( (lv_packages_0_0= ruleTypedPackage ) )* )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:81:1: ( (lv_packages_0_0= ruleTypedPackage ) )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==26) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:82:1: (lv_packages_0_0= ruleTypedPackage )
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:83:3: lv_packages_0_0= ruleTypedPackage
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getLServiceModelAccess().getPackagesTypedPackageParserRuleCall_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_ruleLServiceModel130);
+            	    lv_packages_0_0=ruleTypedPackage();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getLServiceModelRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"packages",
+            	              		lv_packages_0_0, 
+            	              		"TypedPackage");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop1;
+                }
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLServiceModel"
+
+
+    // $ANTLR start "entryRuleClass"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:107:1: entryRuleClass returns [EObject current=null] : iv_ruleClass= ruleClass EOF ;
+    public final EObject entryRuleClass() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleClass = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:108:2: (iv_ruleClass= ruleClass EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:109:2: iv_ruleClass= ruleClass EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getClassRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleClass_in_entryRuleClass166);
+            iv_ruleClass=ruleClass();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleClass; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleClass176); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleClass"
+
+
+    // $ANTLR start "ruleClass"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:116:1: ruleClass returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'dtoservice' ( (lv_name_4_0= ruleValidIDWithKeywords ) ) otherlv_5= 'provides' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_7= '{' ( ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )? )? (otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}' )? ( (lv_injectedServices_19_0= ruleInjectedServices ) ) ( (lv_operations_20_0= ruleOperation ) )* otherlv_21= '}' ) ;
+    public final EObject ruleClass() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_3=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token lv_mutablePersistenceId_8_0=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        Token otherlv_21=null;
+        EObject lv_annotations_1_0 = null;
+
+        AntlrDatatypeRuleToken lv_name_4_0 = null;
+
+        AntlrDatatypeRuleToken lv_persistenceId_10_0 = null;
+
+        EObject lv_validators_14_0 = null;
+
+        EObject lv_validators_16_0 = null;
+
+        EObject lv_injectedServices_19_0 = null;
+
+        EObject lv_operations_20_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:119:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'dtoservice' ( (lv_name_4_0= ruleValidIDWithKeywords ) ) otherlv_5= 'provides' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_7= '{' ( ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )? )? (otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}' )? ( (lv_injectedServices_19_0= ruleInjectedServices ) ) ( (lv_operations_20_0= ruleOperation ) )* otherlv_21= '}' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:120:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'dtoservice' ( (lv_name_4_0= ruleValidIDWithKeywords ) ) otherlv_5= 'provides' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_7= '{' ( ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )? )? (otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}' )? ( (lv_injectedServices_19_0= ruleInjectedServices ) ) ( (lv_operations_20_0= ruleOperation ) )* otherlv_21= '}' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:120:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'dtoservice' ( (lv_name_4_0= ruleValidIDWithKeywords ) ) otherlv_5= 'provides' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_7= '{' ( ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )? )? (otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}' )? ( (lv_injectedServices_19_0= ruleInjectedServices ) ) ( (lv_operations_20_0= ruleOperation ) )* otherlv_21= '}' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:120:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* () otherlv_3= 'dtoservice' ( (lv_name_4_0= ruleValidIDWithKeywords ) ) otherlv_5= 'provides' ( ( ruleTYPE_CROSS_REFERENCE ) ) otherlv_7= '{' ( ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )? )? (otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}' )? ( (lv_injectedServices_19_0= ruleInjectedServices ) ) ( (lv_operations_20_0= ruleOperation ) )* otherlv_21= '}'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:120:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:121:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getClassAccess().getLDTOServiceAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:126:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==79) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:127:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:127:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:128:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getClassAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleClass231);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:144:3: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:145:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElementAndSet(
+                          grammarAccess.getClassAccess().getLDTOServiceAnnotationInfoAction_2(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_3=(Token)match(input,13,FollowSets000.FOLLOW_13_in_ruleClass253); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_3, grammarAccess.getClassAccess().getDtoserviceKeyword_3());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:154:1: ( (lv_name_4_0= ruleValidIDWithKeywords ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:155:1: (lv_name_4_0= ruleValidIDWithKeywords )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:155:1: (lv_name_4_0= ruleValidIDWithKeywords )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:156:3: lv_name_4_0= ruleValidIDWithKeywords
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getClassAccess().getNameValidIDWithKeywordsParserRuleCall_4_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleClass274);
+            lv_name_4_0=ruleValidIDWithKeywords();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getClassRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_4_0, 
+                      		"ValidIDWithKeywords");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,14,FollowSets000.FOLLOW_14_in_ruleClass286); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getClassAccess().getProvidesKeyword_5());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:176:1: ( ( ruleTYPE_CROSS_REFERENCE ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:177:1: ( ruleTYPE_CROSS_REFERENCE )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:177:1: ( ruleTYPE_CROSS_REFERENCE )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:178:3: ruleTYPE_CROSS_REFERENCE
+            {
+            if ( state.backtracking==0 ) {
+
+              			if (current==null) {
+              	            current = createModelElement(grammarAccess.getClassRule());
+              	        }
+                      
+            }
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getClassAccess().getDtoLDtoCrossReference_6_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleTYPE_CROSS_REFERENCE_in_ruleClass309);
+            ruleTYPE_CROSS_REFERENCE();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_7=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleClass321); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_7, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_7());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:195:1: ( ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )? )?
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( ((LA5_0>=16 && LA5_0<=17)) ) {
+                alt5=1;
+            }
+            switch (alt5) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:195:2: ( (lv_mutablePersistenceId_8_0= 'mutable' ) )? otherlv_9= 'persistenceUnit' ( (lv_persistenceId_10_0= ruleQualifiedName ) ) (otherlv_11= ';' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:195:2: ( (lv_mutablePersistenceId_8_0= 'mutable' ) )?
+                    int alt3=2;
+                    int LA3_0 = input.LA(1);
+
+                    if ( (LA3_0==16) ) {
+                        alt3=1;
+                    }
+                    switch (alt3) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:196:1: (lv_mutablePersistenceId_8_0= 'mutable' )
+                            {
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:196:1: (lv_mutablePersistenceId_8_0= 'mutable' )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:197:3: lv_mutablePersistenceId_8_0= 'mutable'
+                            {
+                            lv_mutablePersistenceId_8_0=(Token)match(input,16,FollowSets000.FOLLOW_16_in_ruleClass340); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_mutablePersistenceId_8_0, grammarAccess.getClassAccess().getMutablePersistenceIdMutableKeyword_8_0_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getClassRule());
+                              	        }
+                                     		setWithLastConsumed(current, "mutablePersistenceId", true, "mutable");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_9=(Token)match(input,17,FollowSets000.FOLLOW_17_in_ruleClass366); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_9, grammarAccess.getClassAccess().getPersistenceUnitKeyword_8_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:214:1: ( (lv_persistenceId_10_0= ruleQualifiedName ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:215:1: (lv_persistenceId_10_0= ruleQualifiedName )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:215:1: (lv_persistenceId_10_0= ruleQualifiedName )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:216:3: lv_persistenceId_10_0= ruleQualifiedName
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getPersistenceIdQualifiedNameParserRuleCall_8_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleClass387);
+                    lv_persistenceId_10_0=ruleQualifiedName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"persistenceId",
+                              		lv_persistenceId_10_0, 
+                              		"QualifiedName");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:232:2: (otherlv_11= ';' )?
+                    int alt4=2;
+                    int LA4_0 = input.LA(1);
+
+                    if ( (LA4_0==18) ) {
+                        alt4=1;
+                    }
+                    switch (alt4) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:232:4: otherlv_11= ';'
+                            {
+                            otherlv_11=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleClass400); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_11, grammarAccess.getClassAccess().getSemicolonKeyword_8_3());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:236:5: (otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}' )?
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==19) ) {
+                alt8=1;
+            }
+            switch (alt8) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:236:7: otherlv_12= 'validators' otherlv_13= '{' ( (lv_validators_14_0= ruleValidatorDef ) ) (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )* (otherlv_17= ';' )? otherlv_18= '}'
+                    {
+                    otherlv_12=(Token)match(input,19,FollowSets000.FOLLOW_19_in_ruleClass417); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_12, grammarAccess.getClassAccess().getValidatorsKeyword_9_0());
+                          
+                    }
+                    otherlv_13=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleClass429); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_13, grammarAccess.getClassAccess().getLeftCurlyBracketKeyword_9_1());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:244:1: ( (lv_validators_14_0= ruleValidatorDef ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:245:1: (lv_validators_14_0= ruleValidatorDef )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:245:1: (lv_validators_14_0= ruleValidatorDef )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:246:3: lv_validators_14_0= ruleValidatorDef
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getClassAccess().getValidatorsValidatorDefParserRuleCall_9_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleValidatorDef_in_ruleClass450);
+                    lv_validators_14_0=ruleValidatorDef();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"validators",
+                              		lv_validators_14_0, 
+                              		"ValidatorDef");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:262:2: (otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) ) )*
+                    loop6:
+                    do {
+                        int alt6=2;
+                        int LA6_0 = input.LA(1);
+
+                        if ( (LA6_0==20) ) {
+                            alt6=1;
+                        }
+
+
+                        switch (alt6) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:262:4: otherlv_15= ', ' ( (lv_validators_16_0= ruleValidatorDef ) )
+                    	    {
+                    	    otherlv_15=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleClass463); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getClassAccess().getCommaSpaceKeyword_9_3_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:266:1: ( (lv_validators_16_0= ruleValidatorDef ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:267:1: (lv_validators_16_0= ruleValidatorDef )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:267:1: (lv_validators_16_0= ruleValidatorDef )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:268:3: lv_validators_16_0= ruleValidatorDef
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getClassAccess().getValidatorsValidatorDefParserRuleCall_9_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleValidatorDef_in_ruleClass484);
+                    	    lv_validators_16_0=ruleValidatorDef();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"validators",
+                    	              		lv_validators_16_0, 
+                    	              		"ValidatorDef");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop6;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:284:4: (otherlv_17= ';' )?
+                    int alt7=2;
+                    int LA7_0 = input.LA(1);
+
+                    if ( (LA7_0==18) ) {
+                        alt7=1;
+                    }
+                    switch (alt7) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:284:6: otherlv_17= ';'
+                            {
+                            otherlv_17=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleClass499); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_17, grammarAccess.getClassAccess().getSemicolonKeyword_9_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_18=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleClass513); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_18, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_9_5());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:292:3: ( (lv_injectedServices_19_0= ruleInjectedServices ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:293:1: (lv_injectedServices_19_0= ruleInjectedServices )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:293:1: (lv_injectedServices_19_0= ruleInjectedServices )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:294:3: lv_injectedServices_19_0= ruleInjectedServices
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getClassAccess().getInjectedServicesInjectedServicesParserRuleCall_10_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleInjectedServices_in_ruleClass536);
+            lv_injectedServices_19_0=ruleInjectedServices();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getClassRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"injectedServices",
+                      		lv_injectedServices_19_0, 
+                      		"InjectedServices");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:310:2: ( (lv_operations_20_0= ruleOperation ) )*
+            loop9:
+            do {
+                int alt9=2;
+                int LA9_0 = input.LA(1);
+
+                if ( (LA9_0==23||LA9_0==79) ) {
+                    alt9=1;
+                }
+
+
+                switch (alt9) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:311:1: (lv_operations_20_0= ruleOperation )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:311:1: (lv_operations_20_0= ruleOperation )
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:312:3: lv_operations_20_0= ruleOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getClassAccess().getOperationsOperationParserRuleCall_11_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleOperation_in_ruleClass557);
+            	    lv_operations_20_0=ruleOperation();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getClassRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"operations",
+            	              		lv_operations_20_0, 
+            	              		"Operation");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop9;
+                }
+            } while (true);
+
+            otherlv_21=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleClass570); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_21, grammarAccess.getClassAccess().getRightCurlyBracketKeyword_12());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleClass"
+
+
+    // $ANTLR start "entryRuleValidatorDef"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:340:1: entryRuleValidatorDef returns [EObject current=null] : iv_ruleValidatorDef= ruleValidatorDef EOF ;
+    public final EObject entryRuleValidatorDef() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleValidatorDef = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:341:2: (iv_ruleValidatorDef= ruleValidatorDef EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:342:2: iv_ruleValidatorDef= ruleValidatorDef EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getValidatorDefRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidatorDef_in_entryRuleValidatorDef606);
+            iv_ruleValidatorDef=ruleValidatorDef();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleValidatorDef; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleValidatorDef616); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleValidatorDef"
+
+
+    // $ANTLR start "ruleValidatorDef"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:349:1: ruleValidatorDef returns [EObject current=null] : ( ( ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) ) ) | ( (lv_validatorId_1_0= RULE_STRING ) ) ) ;
+    public final EObject ruleValidatorDef() throws RecognitionException {
+        EObject current = null;
+
+        Token lv_validatorId_1_0=null;
+        EObject lv_validatorType_0_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:352:28: ( ( ( ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) ) ) | ( (lv_validatorId_1_0= RULE_STRING ) ) ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:353:1: ( ( ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) ) ) | ( (lv_validatorId_1_0= RULE_STRING ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:353:1: ( ( ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) ) ) | ( (lv_validatorId_1_0= RULE_STRING ) ) )
+            int alt10=2;
+            int LA10_0 = input.LA(1);
+
+            if ( (LA10_0==RULE_ID) && (synpred1_InternalServicesGrammar())) {
+                alt10=1;
+            }
+            else if ( (LA10_0==24) && (synpred1_InternalServicesGrammar())) {
+                alt10=1;
+            }
+            else if ( (LA10_0==100) && (synpred1_InternalServicesGrammar())) {
+                alt10=1;
+            }
+            else if ( (LA10_0==RULE_STRING) ) {
+                alt10=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+            switch (alt10) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:353:2: ( ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:353:2: ( ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:353:3: ( ( ( ruleJvmTypeReference ) ) )=> ( (lv_validatorType_0_0= ruleJvmTypeReference ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:357:5: ( (lv_validatorType_0_0= ruleJvmTypeReference ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:358:1: (lv_validatorType_0_0= ruleJvmTypeReference )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:358:1: (lv_validatorType_0_0= ruleJvmTypeReference )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:359:3: lv_validatorType_0_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getValidatorDefAccess().getValidatorTypeJvmTypeReferenceParserRuleCall_0_0_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleValidatorDef675);
+                    lv_validatorType_0_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getValidatorDefRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"validatorType",
+                              		lv_validatorType_0_0, 
+                              		"JvmTypeReference");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:376:6: ( (lv_validatorId_1_0= RULE_STRING ) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:376:6: ( (lv_validatorId_1_0= RULE_STRING ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:377:1: (lv_validatorId_1_0= RULE_STRING )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:377:1: (lv_validatorId_1_0= RULE_STRING )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:378:3: lv_validatorId_1_0= RULE_STRING
+                    {
+                    lv_validatorId_1_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleValidatorDef699); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			newLeafNode(lv_validatorId_1_0, grammarAccess.getValidatorDefAccess().getValidatorIdSTRINGTerminalRuleCall_1_0()); 
+                      		
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getValidatorDefRule());
+                      	        }
+                             		setWithLastConsumed(
+                             			current, 
+                             			"validatorId",
+                              		lv_validatorId_1_0, 
+                              		"STRING");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleValidatorDef"
+
+
+    // $ANTLR start "entryRuleInjectedServices"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:402:1: entryRuleInjectedServices returns [EObject current=null] : iv_ruleInjectedServices= ruleInjectedServices EOF ;
+    public final EObject entryRuleInjectedServices() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInjectedServices = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:403:2: (iv_ruleInjectedServices= ruleInjectedServices EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:404:2: iv_ruleInjectedServices= ruleInjectedServices EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getInjectedServicesRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleInjectedServices_in_entryRuleInjectedServices740);
+            iv_ruleInjectedServices=ruleInjectedServices();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleInjectedServices; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInjectedServices750); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInjectedServices"
+
+
+    // $ANTLR start "ruleInjectedServices"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:411:1: ruleInjectedServices returns [EObject current=null] : ( () ( (lv_services_1_0= ruleInjectedService ) )* ) ;
+    public final EObject ruleInjectedServices() throws RecognitionException {
+        EObject current = null;
+
+        EObject lv_services_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:414:28: ( ( () ( (lv_services_1_0= ruleInjectedService ) )* ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:415:1: ( () ( (lv_services_1_0= ruleInjectedService ) )* )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:415:1: ( () ( (lv_services_1_0= ruleInjectedService ) )* )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:415:2: () ( (lv_services_1_0= ruleInjectedService ) )*
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:415:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:416:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getInjectedServicesAccess().getLInjectedServicesAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:421:2: ( (lv_services_1_0= ruleInjectedService ) )*
+            loop11:
+            do {
+                int alt11=2;
+                int LA11_0 = input.LA(1);
+
+                if ( (LA11_0==22) ) {
+                    alt11=1;
+                }
+
+
+                switch (alt11) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:422:1: (lv_services_1_0= ruleInjectedService )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:422:1: (lv_services_1_0= ruleInjectedService )
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:423:3: lv_services_1_0= ruleInjectedService
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getInjectedServicesAccess().getServicesInjectedServiceParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleInjectedService_in_ruleInjectedServices805);
+            	    lv_services_1_0=ruleInjectedService();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getInjectedServicesRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"services",
+            	              		lv_services_1_0, 
+            	              		"InjectedService");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop11;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInjectedServices"
+
+
+    // $ANTLR start "entryRuleInjectedService"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:447:1: entryRuleInjectedService returns [EObject current=null] : iv_ruleInjectedService= ruleInjectedService EOF ;
+    public final EObject entryRuleInjectedService() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleInjectedService = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:448:2: (iv_ruleInjectedService= ruleInjectedService EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:449:2: iv_ruleInjectedService= ruleInjectedService EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getInjectedServiceRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleInjectedService_in_entryRuleInjectedService842);
+            iv_ruleInjectedService=ruleInjectedService();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleInjectedService; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInjectedService852); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleInjectedService"
+
+
+    // $ANTLR start "ruleInjectedService"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:456:1: ruleInjectedService returns [EObject current=null] : ( () otherlv_1= 'injectService' ( (lv_cardinality_2_0= ruleCardinality ) )? ( (lv_service_3_0= ruleJvmTypeReference ) ) ( (lv_attributeName_4_0= RULE_ID ) ) (otherlv_5= ';' )? ) ;
+    public final EObject ruleInjectedService() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token lv_attributeName_4_0=null;
+        Token otherlv_5=null;
+        Enumerator lv_cardinality_2_0 = null;
+
+        EObject lv_service_3_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:459:28: ( ( () otherlv_1= 'injectService' ( (lv_cardinality_2_0= ruleCardinality ) )? ( (lv_service_3_0= ruleJvmTypeReference ) ) ( (lv_attributeName_4_0= RULE_ID ) ) (otherlv_5= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:460:1: ( () otherlv_1= 'injectService' ( (lv_cardinality_2_0= ruleCardinality ) )? ( (lv_service_3_0= ruleJvmTypeReference ) ) ( (lv_attributeName_4_0= RULE_ID ) ) (otherlv_5= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:460:1: ( () otherlv_1= 'injectService' ( (lv_cardinality_2_0= ruleCardinality ) )? ( (lv_service_3_0= ruleJvmTypeReference ) ) ( (lv_attributeName_4_0= RULE_ID ) ) (otherlv_5= ';' )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:460:2: () otherlv_1= 'injectService' ( (lv_cardinality_2_0= ruleCardinality ) )? ( (lv_service_3_0= ruleJvmTypeReference ) ) ( (lv_attributeName_4_0= RULE_ID ) ) (otherlv_5= ';' )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:460:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:461:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getInjectedServiceAccess().getLInjectedServiceAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,22,FollowSets000.FOLLOW_22_in_ruleInjectedService898); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getInjectedServiceAccess().getInjectServiceKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:470:1: ( (lv_cardinality_2_0= ruleCardinality ) )?
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( ((LA12_0>=140 && LA12_0<=143)) ) {
+                alt12=1;
+            }
+            switch (alt12) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:471:1: (lv_cardinality_2_0= ruleCardinality )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:471:1: (lv_cardinality_2_0= ruleCardinality )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:472:3: lv_cardinality_2_0= ruleCardinality
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getInjectedServiceAccess().getCardinalityCardinalityEnumRuleCall_2_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleCardinality_in_ruleInjectedService919);
+                    lv_cardinality_2_0=ruleCardinality();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getInjectedServiceRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"cardinality",
+                              		lv_cardinality_2_0, 
+                              		"Cardinality");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:488:3: ( (lv_service_3_0= ruleJvmTypeReference ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:489:1: (lv_service_3_0= ruleJvmTypeReference )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:489:1: (lv_service_3_0= ruleJvmTypeReference )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:490:3: lv_service_3_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getInjectedServiceAccess().getServiceJvmTypeReferenceParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleInjectedService941);
+            lv_service_3_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getInjectedServiceRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"service",
+                      		lv_service_3_0, 
+                      		"JvmTypeReference");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:506:2: ( (lv_attributeName_4_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:507:1: (lv_attributeName_4_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:507:1: (lv_attributeName_4_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:508:3: lv_attributeName_4_0= RULE_ID
+            {
+            lv_attributeName_4_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleInjectedService958); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_attributeName_4_0, grammarAccess.getInjectedServiceAccess().getAttributeNameIDTerminalRuleCall_4_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getInjectedServiceRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"attributeName",
+                      		lv_attributeName_4_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:524:2: (otherlv_5= ';' )?
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==18) ) {
+                alt13=1;
+            }
+            switch (alt13) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:524:4: otherlv_5= ';'
+                    {
+                    otherlv_5=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleInjectedService976); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_5, grammarAccess.getInjectedServiceAccess().getSemicolonKeyword_5());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleInjectedService"
+
+
+    // $ANTLR start "entryRuleOperation"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:540:1: entryRuleOperation returns [EObject current=null] : iv_ruleOperation= ruleOperation EOF ;
+    public final EObject entryRuleOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleOperation = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:541:2: (iv_ruleOperation= ruleOperation EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:542:2: iv_ruleOperation= ruleOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOperationRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleOperation_in_entryRuleOperation1018);
+            iv_ruleOperation=ruleOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOperation; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleOperation1028); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOperation"
+
+
+    // $ANTLR start "ruleOperation"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:549:1: ruleOperation returns [EObject current=null] : ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* (otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) ) ) ) ;
+    public final EObject ruleOperation() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        Token lv_name_4_0=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        EObject lv_annotations_1_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+        EObject lv_params_6_0 = null;
+
+        EObject lv_params_8_0 = null;
+
+        EObject lv_body_10_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:552:28: ( ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* (otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) ) ) ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:553:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* (otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:553:1: ( () ( (lv_annotations_1_0= ruleAnnotationDef ) )* (otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) ) ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:553:2: () ( (lv_annotations_1_0= ruleAnnotationDef ) )* (otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) ) )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:553:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:554:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getOperationAccess().getLServiceOperationAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:559:2: ( (lv_annotations_1_0= ruleAnnotationDef ) )*
+            loop14:
+            do {
+                int alt14=2;
+                int LA14_0 = input.LA(1);
+
+                if ( (LA14_0==79) ) {
+                    alt14=1;
+                }
+
+
+                switch (alt14) {
+            	case 1 :
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:560:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    {
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:560:1: (lv_annotations_1_0= ruleAnnotationDef )
+            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:561:3: lv_annotations_1_0= ruleAnnotationDef
+            	    {
+            	    if ( state.backtracking==0 ) {
+            	       
+            	      	        newCompositeNode(grammarAccess.getOperationAccess().getAnnotationsAnnotationDefParserRuleCall_1_0()); 
+            	      	    
+            	    }
+            	    pushFollow(FollowSets000.FOLLOW_ruleAnnotationDef_in_ruleOperation1083);
+            	    lv_annotations_1_0=ruleAnnotationDef();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      	        if (current==null) {
+            	      	            current = createModelElementForParent(grammarAccess.getOperationRule());
+            	      	        }
+            	             		add(
+            	             			current, 
+            	             			"annotations",
+            	              		lv_annotations_1_0, 
+            	              		"AnnotationDef");
+            	      	        afterParserOrEnumRuleCall();
+            	      	    
+            	    }
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop14;
+                }
+            } while (true);
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:577:3: (otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:577:5: otherlv_2= 'def' ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )? otherlv_9= ')' ( (lv_body_10_0= ruleXExpression ) )
+            {
+            otherlv_2=(Token)match(input,23,FollowSets000.FOLLOW_23_in_ruleOperation1097); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getOperationAccess().getDefKeyword_2_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:581:1: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:582:1: (lv_type_3_0= ruleJvmTypeReference )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:582:1: (lv_type_3_0= ruleJvmTypeReference )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:583:3: lv_type_3_0= ruleJvmTypeReference
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getOperationAccess().getTypeJvmTypeReferenceParserRuleCall_2_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleOperation1118);
+            lv_type_3_0=ruleJvmTypeReference();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getOperationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"type",
+                      		lv_type_3_0, 
+                      		"JvmTypeReference");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:599:2: ( (lv_name_4_0= RULE_ID ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:600:1: (lv_name_4_0= RULE_ID )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:600:1: (lv_name_4_0= RULE_ID )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:601:3: lv_name_4_0= RULE_ID
+            {
+            lv_name_4_0=(Token)match(input,RULE_ID,FollowSets000.FOLLOW_RULE_ID_in_ruleOperation1135); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_name_4_0, grammarAccess.getOperationAccess().getNameIDTerminalRuleCall_2_2_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getOperationRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"name",
+                      		lv_name_4_0, 
+                      		"ID");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_5=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleOperation1152); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_5, grammarAccess.getOperationAccess().getLeftParenthesisKeyword_2_3());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:621:1: ( ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )* )?
+            int alt16=2;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==RULE_ID||LA16_0==24||LA16_0==100) ) {
+                alt16=1;
+            }
+            switch (alt16) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:621:2: ( (lv_params_6_0= ruleFullJvmFormalParameter ) ) (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )*
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:621:2: ( (lv_params_6_0= ruleFullJvmFormalParameter ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:622:1: (lv_params_6_0= ruleFullJvmFormalParameter )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:622:1: (lv_params_6_0= ruleFullJvmFormalParameter )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:623:3: lv_params_6_0= ruleFullJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getOperationAccess().getParamsFullJvmFormalParameterParserRuleCall_2_4_0_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleFullJvmFormalParameter_in_ruleOperation1174);
+                    lv_params_6_0=ruleFullJvmFormalParameter();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getOperationRule());
+                      	        }
+                             		add(
+                             			current, 
+                             			"params",
+                              		lv_params_6_0, 
+                              		"FullJvmFormalParameter");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:639:2: (otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) ) )*
+                    loop15:
+                    do {
+                        int alt15=2;
+                        int LA15_0 = input.LA(1);
+
+                        if ( (LA15_0==20) ) {
+                            alt15=1;
+                        }
+
+
+                        switch (alt15) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:639:4: otherlv_7= ', ' ( (lv_params_8_0= ruleFullJvmFormalParameter ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleOperation1187); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getOperationAccess().getCommaSpaceKeyword_2_4_1_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:643:1: ( (lv_params_8_0= ruleFullJvmFormalParameter ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:644:1: (lv_params_8_0= ruleFullJvmFormalParameter )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:644:1: (lv_params_8_0= ruleFullJvmFormalParameter )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:645:3: lv_params_8_0= ruleFullJvmFormalParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getOperationAccess().getParamsFullJvmFormalParameterParserRuleCall_2_4_1_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleFullJvmFormalParameter_in_ruleOperation1208);
+                    	    lv_params_8_0=ruleFullJvmFormalParameter();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getOperationRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"params",
+                    	              		lv_params_8_0, 
+                    	              		"FullJvmFormalParameter");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop15;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_9=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleOperation1224); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_9, grammarAccess.getOperationAccess().getRightParenthesisKeyword_2_5());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:665:1: ( (lv_body_10_0= ruleXExpression ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:666:1: (lv_body_10_0= ruleXExpression )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:666:1: (lv_body_10_0= ruleXExpression )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:667:3: lv_body_10_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getOperationAccess().getBodyXExpressionParserRuleCall_2_6_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleXExpression_in_ruleOperation1245);
+            lv_body_10_0=ruleXExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getOperationRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"body",
+                      		lv_body_10_0, 
+                      		"XExpression");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOperation"
+
+
+    // $ANTLR start "entryRuleTypedPackage"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:691:1: entryRuleTypedPackage returns [EObject current=null] : iv_ruleTypedPackage= ruleTypedPackage EOF ;
+    public final EObject entryRuleTypedPackage() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleTypedPackage = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:692:2: (iv_ruleTypedPackage= ruleTypedPackage EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:693:2: iv_ruleTypedPackage= ruleTypedPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypedPackageRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleTypedPackage_in_entryRuleTypedPackage1282);
+            iv_ruleTypedPackage=ruleTypedPackage();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleTypedPackage; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedPackage1292); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleTypedPackage"
+
+
+    // $ANTLR start "ruleTypedPackage"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:700:1: ruleTypedPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? ) ;
+    public final EObject ruleTypedPackage() 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_types_5_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:703:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:704:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:704:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:704:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:704:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:705:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getTypedPackageAccess().getLTypedPackageAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleTypedPackage1338); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getTypedPackageAccess().getPackageKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:714:1: ( (lv_name_2_0= ruleQualifiedName ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:715:1: (lv_name_2_0= ruleQualifiedName )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:715:1: (lv_name_2_0= ruleQualifiedName )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:716:3: lv_name_2_0= ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getTypedPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleTypedPackage1359);
+            lv_name_2_0=ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_2_0, 
+                      		"QualifiedName");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:732:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}' )?
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( (LA19_0==15) ) {
+                alt19=1;
+            }
+            switch (alt19) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:732:4: otherlv_3= '{' ( (lv_imports_4_0= ruleImport ) )* ( (lv_types_5_0= ruleType ) )* otherlv_6= '}'
+                    {
+                    otherlv_3=(Token)match(input,15,FollowSets000.FOLLOW_15_in_ruleTypedPackage1372); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_3, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:736:1: ( (lv_imports_4_0= ruleImport ) )*
+                    loop17:
+                    do {
+                        int alt17=2;
+                        int LA17_0 = input.LA(1);
+
+                        if ( (LA17_0==27) ) {
+                            alt17=1;
+                        }
+
+
+                        switch (alt17) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:737:1: (lv_imports_4_0= ruleImport )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:737:1: (lv_imports_4_0= ruleImport )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:738:3: lv_imports_4_0= ruleImport
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getImportsImportParserRuleCall_3_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleImport_in_ruleTypedPackage1393);
+                    	    lv_imports_4_0=ruleImport();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"imports",
+                    	              		lv_imports_4_0, 
+                    	              		"Import");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop17;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:754:3: ( (lv_types_5_0= ruleType ) )*
+                    loop18:
+                    do {
+                        int alt18=2;
+                        int LA18_0 = input.LA(1);
+
+                        if ( (LA18_0==13||LA18_0==28||LA18_0==53||LA18_0==79) ) {
+                            alt18=1;
+                        }
+
+
+                        switch (alt18) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:755:1: (lv_types_5_0= ruleType )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:755:1: (lv_types_5_0= ruleType )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:756:3: lv_types_5_0= ruleType
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getTypedPackageAccess().getTypesTypeParserRuleCall_3_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleTypedPackage1415);
+                    	    lv_types_5_0=ruleType();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getTypedPackageRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"types",
+                    	              		lv_types_5_0, 
+                    	              		"Type");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop18;
+                        }
+                    } while (true);
+
+                    otherlv_6=(Token)match(input,21,FollowSets000.FOLLOW_21_in_ruleTypedPackage1428); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_6, grammarAccess.getTypedPackageAccess().getRightCurlyBracketKeyword_3_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTypedPackage"
+
+
+    // $ANTLR start "entryRuleType"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:784:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
+    public final EObject entryRuleType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:785:2: (iv_ruleType= ruleType EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:786:2: iv_ruleType= ruleType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleType_in_entryRuleType1466);
+            iv_ruleType=ruleType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleType1476); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleType"
+
+
+    // $ANTLR start "ruleType"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:793:1: ruleType returns [EObject current=null] : (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass ) ;
+    public final EObject ruleType() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_ScalarType_0 = null;
+
+        EObject this_Class_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:796:28: ( (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:797:1: (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:797:1: (this_ScalarType_0= ruleScalarType | this_Class_1= ruleClass )
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==28||LA20_0==53) ) {
+                alt20=1;
+            }
+            else if ( (LA20_0==13||LA20_0==79) ) {
+                alt20=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+            switch (alt20) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:798:5: this_ScalarType_0= ruleScalarType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getTypeAccess().getScalarTypeParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleScalarType_in_ruleType1523);
+                    this_ScalarType_0=ruleScalarType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_ScalarType_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:808:5: this_Class_1= ruleClass
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getTypeAccess().getClassParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleClass_in_ruleType1550);
+                    this_Class_1=ruleClass();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_Class_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleType"
+
+
+    // $ANTLR start "entryRuleImport"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:824:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
+    public final EObject entryRuleImport() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleImport = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:825:2: (iv_ruleImport= ruleImport EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:826:2: iv_ruleImport= ruleImport EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getImportRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleImport_in_entryRuleImport1585);
+            iv_ruleImport=ruleImport();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleImport; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleImport1595); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleImport"
+
+
+    // $ANTLR start "ruleImport"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:833:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? ) ;
+    public final EObject ruleImport() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:836:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:837:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:837:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:837:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) ) (otherlv_2= ';' )?
+            {
+            otherlv_0=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleImport1632); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:841:1: ( (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:842:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:842:1: (lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:843:3: lv_importedNamespace_1_0= ruleLQualifiedNameWithWildCard
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceLQualifiedNameWithWildCardParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleLQualifiedNameWithWildCard_in_ruleImport1653);
+            lv_importedNamespace_1_0=ruleLQualifiedNameWithWildCard();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getImportRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"importedNamespace",
+                      		lv_importedNamespace_1_0, 
+                      		"LQualifiedNameWithWildCard");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:859:2: (otherlv_2= ';' )?
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==18) ) {
+                alt21=1;
+            }
+            switch (alt21) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:859:4: otherlv_2= ';'
+                    {
+                    otherlv_2=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleImport1666); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleImport"
+
+
+    // $ANTLR start "entryRuleDataType"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:871:1: entryRuleDataType returns [EObject current=null] : iv_ruleDataType= ruleDataType EOF ;
+    public final EObject entryRuleDataType() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataType = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:872:2: (iv_ruleDataType= ruleDataType EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:873:2: iv_ruleDataType= ruleDataType EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataType_in_entryRuleDataType1704);
+            iv_ruleDataType=ruleDataType();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataType; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataType1714); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataType"
+
+
+    // $ANTLR start "ruleDataType"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:880:1: ruleDataType returns [EObject current=null] : (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) ;
+    public final EObject ruleDataType() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_0=null;
+        Token otherlv_2=null;
+        Token lv_asPrimitive_4_0=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token lv_date_12_0=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        Token otherlv_18=null;
+        Token otherlv_20=null;
+        Token lv_asBlob_21_0=null;
+        Token otherlv_23=null;
+        Token otherlv_24=null;
+        Token otherlv_26=null;
+        Token otherlv_28=null;
+        Token otherlv_29=null;
+        AntlrDatatypeRuleToken lv_name_1_0 = null;
+
+        EObject lv_jvmTypeReference_3_0 = null;
+
+        EObject lv_constraints_5_0 = null;
+
+        EObject lv_properties_8_0 = null;
+
+        EObject lv_properties_10_0 = null;
+
+        Enumerator lv_dateType_13_0 = null;
+
+        EObject lv_constraints_14_0 = null;
+
+        EObject lv_properties_17_0 = null;
+
+        EObject lv_properties_19_0 = null;
+
+        EObject lv_constraints_22_0 = null;
+
+        EObject lv_properties_25_0 = null;
+
+        EObject lv_properties_27_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:883:28: ( (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:884:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:884:1: (otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:884:3: otherlv_0= 'datatype' ( (lv_name_1_0= ruleValidIDWithKeywords ) ) ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) ) (otherlv_29= ';' )?
+            {
+            otherlv_0=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleDataType1751); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_0, grammarAccess.getDataTypeAccess().getDatatypeKeyword_0());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:888:1: ( (lv_name_1_0= ruleValidIDWithKeywords ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:889:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:889:1: (lv_name_1_0= ruleValidIDWithKeywords )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:890:3: lv_name_1_0= ruleValidIDWithKeywords
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDataTypeAccess().getNameValidIDWithKeywordsParserRuleCall_1_0()); 
+              	    
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleValidIDWithKeywords_in_ruleDataType1772);
+            lv_name_1_0=ruleValidIDWithKeywords();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"name",
+                      		lv_name_1_0, 
+                      		"ValidIDWithKeywords");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:906:2: ( (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? ) | ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? ) | ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? ) )
+            int alt32=3;
+            switch ( input.LA(1) ) {
+            case 29:
+                {
+                alt32=1;
+                }
+                break;
+            case 32:
+                {
+                alt32=2;
+                }
+                break;
+            case 33:
+                {
+                alt32=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 32, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt32) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:906:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:906:3: (otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )? )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:906:5: otherlv_2= 'jvmType' ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) ) ( (lv_asPrimitive_4_0= 'as primitive' ) )? ( (lv_constraints_5_0= ruleDataTypeConstraint ) )* (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    {
+                    otherlv_2=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleDataType1786); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_2, grammarAccess.getDataTypeAccess().getJvmTypeKeyword_2_0_0());
+                          
+                    }
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:910:1: ( (lv_jvmTypeReference_3_0= ruleJvmTypeReference ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:911:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:911:1: (lv_jvmTypeReference_3_0= ruleJvmTypeReference )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:912:3: lv_jvmTypeReference_3_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getJvmTypeReferenceJvmTypeReferenceParserRuleCall_2_0_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleJvmTypeReference_in_ruleDataType1807);
+                    lv_jvmTypeReference_3_0=ruleJvmTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"jvmTypeReference",
+                              		lv_jvmTypeReference_3_0, 
+                              		"JvmTypeReference");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:928:2: ( (lv_asPrimitive_4_0= 'as primitive' ) )?
+                    int alt22=2;
+                    int LA22_0 = input.LA(1);
+
+                    if ( (LA22_0==30) ) {
+                        alt22=1;
+                    }
+                    switch (alt22) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:929:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            {
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:929:1: (lv_asPrimitive_4_0= 'as primitive' )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:930:3: lv_asPrimitive_4_0= 'as primitive'
+                            {
+                            lv_asPrimitive_4_0=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleDataType1825); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                      newLeafNode(lv_asPrimitive_4_0, grammarAccess.getDataTypeAccess().getAsPrimitiveAsPrimitiveKeyword_2_0_2_0());
+                                  
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElement(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		setWithLastConsumed(current, "asPrimitive", true, "as primitive");
+                              	    
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:943:3: ( (lv_constraints_5_0= ruleDataTypeConstraint ) )*
+                    loop23:
+                    do {
+                        int alt23=2;
+                        int LA23_0 = input.LA(1);
+
+                        if ( (LA23_0==34||(LA23_0>=41 && LA23_0<=44)||(LA23_0>=47 && LA23_0<=52)) ) {
+                            alt23=1;
+                        }
+
+
+                        switch (alt23) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:944:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:944:1: (lv_constraints_5_0= ruleDataTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:945:3: lv_constraints_5_0= ruleDataTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDataTypeConstraintParserRuleCall_2_0_3_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_ruleDataType1860);
+                    	    lv_constraints_5_0=ruleDataTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_5_0, 
+                    	              		"DataTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop23;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:961:3: (otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')' )?
+                    int alt25=2;
+                    int LA25_0 = input.LA(1);
+
+                    if ( (LA25_0==31) ) {
+                        alt25=1;
+                    }
+                    switch (alt25) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:961:5: otherlv_6= 'properties' otherlv_7= '(' ( (lv_properties_8_0= ruleKeyAndValue ) ) (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )* otherlv_11= ')'
+                            {
+                            otherlv_6=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDataType1874); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_6, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_0_4_0());
+                                  
+                            }
+                            otherlv_7=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType1886); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_7, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_0_4_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:969:1: ( (lv_properties_8_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:970:1: (lv_properties_8_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:970:1: (lv_properties_8_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:971:3: lv_properties_8_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1907);
+                            lv_properties_8_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_8_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:987:2: (otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) ) )*
+                            loop24:
+                            do {
+                                int alt24=2;
+                                int LA24_0 = input.LA(1);
+
+                                if ( (LA24_0==20) ) {
+                                    alt24=1;
+                                }
+
+
+                                switch (alt24) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:987:4: otherlv_9= ', ' ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleDataType1920); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_9, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_0_4_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:991:1: ( (lv_properties_10_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:992:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:992:1: (lv_properties_10_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:993:3: lv_properties_10_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_0_4_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType1941);
+                            	    lv_properties_10_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_10_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop24;
+                                }
+                            } while (true);
+
+                            otherlv_11=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType1955); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_11, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_0_4_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1014:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1014:6: ( ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )? )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1014:7: ( (lv_date_12_0= 'dateType' ) ) ( (lv_dateType_13_0= ruleDateType ) ) ( (lv_constraints_14_0= ruleDateConstraint ) )* (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1014:7: ( (lv_date_12_0= 'dateType' ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1015:1: (lv_date_12_0= 'dateType' )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1015:1: (lv_date_12_0= 'dateType' )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1016:3: lv_date_12_0= 'dateType'
+                    {
+                    lv_date_12_0=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleDataType1983); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_date_12_0, grammarAccess.getDataTypeAccess().getDateDateTypeKeyword_2_1_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "date", true, "dateType");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1029:2: ( (lv_dateType_13_0= ruleDateType ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1030:1: (lv_dateType_13_0= ruleDateType )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1030:1: (lv_dateType_13_0= ruleDateType )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1031:3: lv_dateType_13_0= ruleDateType
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                      	        newCompositeNode(grammarAccess.getDataTypeAccess().getDateTypeDateTypeEnumRuleCall_2_1_1_0()); 
+                      	    
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDateType_in_ruleDataType2017);
+                    lv_dateType_13_0=ruleDateType();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                      	        }
+                             		set(
+                             			current, 
+                             			"dateType",
+                              		lv_dateType_13_0, 
+                              		"DateType");
+                      	        afterParserOrEnumRuleCall();
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1047:2: ( (lv_constraints_14_0= ruleDateConstraint ) )*
+                    loop26:
+                    do {
+                        int alt26=2;
+                        int LA26_0 = input.LA(1);
+
+                        if ( ((LA26_0>=45 && LA26_0<=46)||(LA26_0>=49 && LA26_0<=50)) ) {
+                            alt26=1;
+                        }
+
+
+                        switch (alt26) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1048:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1048:1: (lv_constraints_14_0= ruleDateConstraint )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1049:3: lv_constraints_14_0= ruleDateConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsDateConstraintParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_ruleDataType2038);
+                    	    lv_constraints_14_0=ruleDateConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_14_0, 
+                    	              		"DateConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop26;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1065:3: (otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')' )?
+                    int alt28=2;
+                    int LA28_0 = input.LA(1);
+
+                    if ( (LA28_0==31) ) {
+                        alt28=1;
+                    }
+                    switch (alt28) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1065:5: otherlv_15= 'properties' otherlv_16= '(' ( (lv_properties_17_0= ruleKeyAndValue ) ) (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )* otherlv_20= ')'
+                            {
+                            otherlv_15=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDataType2052); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_15, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_1_3_0());
+                                  
+                            }
+                            otherlv_16=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType2064); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_16, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_1_3_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1073:1: ( (lv_properties_17_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1074:1: (lv_properties_17_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1074:1: (lv_properties_17_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1075:3: lv_properties_17_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType2085);
+                            lv_properties_17_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_17_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1091:2: (otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) ) )*
+                            loop27:
+                            do {
+                                int alt27=2;
+                                int LA27_0 = input.LA(1);
+
+                                if ( (LA27_0==20) ) {
+                                    alt27=1;
+                                }
+
+
+                                switch (alt27) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1091:4: otherlv_18= ', ' ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_18=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleDataType2098); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_18, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_1_3_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1095:1: ( (lv_properties_19_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1096:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1096:1: (lv_properties_19_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1097:3: lv_properties_19_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_1_3_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType2119);
+                            	    lv_properties_19_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_19_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop27;
+                                }
+                            } while (true);
+
+                            otherlv_20=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType2133); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_20, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_1_3_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1118:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1118:6: ( ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )? )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1118:7: ( (lv_asBlob_21_0= 'as blob' ) ) ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )* (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1118:7: ( (lv_asBlob_21_0= 'as blob' ) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1119:1: (lv_asBlob_21_0= 'as blob' )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1119:1: (lv_asBlob_21_0= 'as blob' )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1120:3: lv_asBlob_21_0= 'as blob'
+                    {
+                    lv_asBlob_21_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleDataType2161); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                              newLeafNode(lv_asBlob_21_0, grammarAccess.getDataTypeAccess().getAsBlobAsBlobKeyword_2_2_0_0());
+                          
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      	        if (current==null) {
+                      	            current = createModelElement(grammarAccess.getDataTypeRule());
+                      	        }
+                             		setWithLastConsumed(current, "asBlob", true, "as blob");
+                      	    
+                    }
+
+                    }
+
+
+                    }
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1133:2: ( (lv_constraints_22_0= ruleBlobTypeConstraint ) )*
+                    loop29:
+                    do {
+                        int alt29=2;
+                        int LA29_0 = input.LA(1);
+
+                        if ( ((LA29_0>=49 && LA29_0<=50)) ) {
+                            alt29=1;
+                        }
+
+
+                        switch (alt29) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1134:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1134:1: (lv_constraints_22_0= ruleBlobTypeConstraint )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1135:3: lv_constraints_22_0= ruleBlobTypeConstraint
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getConstraintsBlobTypeConstraintParserRuleCall_2_2_1_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_ruleDataType2195);
+                    	    lv_constraints_22_0=ruleBlobTypeConstraint();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                    	      	        }
+                    	             		add(
+                    	             			current, 
+                    	             			"constraints",
+                    	              		lv_constraints_22_0, 
+                    	              		"BlobTypeConstraint");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop29;
+                        }
+                    } while (true);
+
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1151:3: (otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')' )?
+                    int alt31=2;
+                    int LA31_0 = input.LA(1);
+
+                    if ( (LA31_0==31) ) {
+                        alt31=1;
+                    }
+                    switch (alt31) {
+                        case 1 :
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1151:5: otherlv_23= 'properties' otherlv_24= '(' ( (lv_properties_25_0= ruleKeyAndValue ) ) (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )* otherlv_28= ')'
+                            {
+                            otherlv_23=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleDataType2209); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_23, grammarAccess.getDataTypeAccess().getPropertiesKeyword_2_2_2_0());
+                                  
+                            }
+                            otherlv_24=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleDataType2221); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_24, grammarAccess.getDataTypeAccess().getLeftParenthesisKeyword_2_2_2_1());
+                                  
+                            }
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1159:1: ( (lv_properties_25_0= ruleKeyAndValue ) )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1160:1: (lv_properties_25_0= ruleKeyAndValue )
+                            {
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1160:1: (lv_properties_25_0= ruleKeyAndValue )
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1161:3: lv_properties_25_0= ruleKeyAndValue
+                            {
+                            if ( state.backtracking==0 ) {
+                               
+                              	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_2_0()); 
+                              	    
+                            }
+                            pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType2242);
+                            lv_properties_25_0=ruleKeyAndValue();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              	        if (current==null) {
+                              	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                              	        }
+                                     		add(
+                                     			current, 
+                                     			"properties",
+                                      		lv_properties_25_0, 
+                                      		"KeyAndValue");
+                              	        afterParserOrEnumRuleCall();
+                              	    
+                            }
+
+                            }
+
+
+                            }
+
+                            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1177:2: (otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) ) )*
+                            loop30:
+                            do {
+                                int alt30=2;
+                                int LA30_0 = input.LA(1);
+
+                                if ( (LA30_0==20) ) {
+                                    alt30=1;
+                                }
+
+
+                                switch (alt30) {
+                            	case 1 :
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1177:4: otherlv_26= ', ' ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    {
+                            	    otherlv_26=(Token)match(input,20,FollowSets000.FOLLOW_20_in_ruleDataType2255); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	          	newLeafNode(otherlv_26, grammarAccess.getDataTypeAccess().getCommaSpaceKeyword_2_2_2_3_0());
+                            	          
+                            	    }
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1181:1: ( (lv_properties_27_0= ruleKeyAndValue ) )
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1182:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    {
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1182:1: (lv_properties_27_0= ruleKeyAndValue )
+                            	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1183:3: lv_properties_27_0= ruleKeyAndValue
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+                            	       
+                            	      	        newCompositeNode(grammarAccess.getDataTypeAccess().getPropertiesKeyAndValueParserRuleCall_2_2_2_3_1_0()); 
+                            	      	    
+                            	    }
+                            	    pushFollow(FollowSets000.FOLLOW_ruleKeyAndValue_in_ruleDataType2276);
+                            	    lv_properties_27_0=ruleKeyAndValue();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      	        if (current==null) {
+                            	      	            current = createModelElementForParent(grammarAccess.getDataTypeRule());
+                            	      	        }
+                            	             		add(
+                            	             			current, 
+                            	             			"properties",
+                            	              		lv_properties_27_0, 
+                            	              		"KeyAndValue");
+                            	      	        afterParserOrEnumRuleCall();
+                            	      	    
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    break loop30;
+                                }
+                            } while (true);
+
+                            otherlv_28=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleDataType2290); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                                  	newLeafNode(otherlv_28, grammarAccess.getDataTypeAccess().getRightParenthesisKeyword_2_2_2_4());
+                                  
+                            }
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1203:5: (otherlv_29= ';' )?
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==18) ) {
+                alt33=1;
+            }
+            switch (alt33) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1203:7: otherlv_29= ';'
+                    {
+                    otherlv_29=(Token)match(input,18,FollowSets000.FOLLOW_18_in_ruleDataType2307); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                          	newLeafNode(otherlv_29, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataType"
+
+
+    // $ANTLR start "entryRuleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1217:1: entryRuleDataTypeConstraint returns [EObject current=null] : iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF ;
+    public final EObject entryRuleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDataTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1218:2: (iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1219:2: iv_ruleDataTypeConstraint= ruleDataTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDataTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDataTypeConstraint_in_entryRuleDataTypeConstraint2347);
+            iv_ruleDataTypeConstraint=ruleDataTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDataTypeConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDataTypeConstraint2357); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDataTypeConstraint"
+
+
+    // $ANTLR start "ruleDataTypeConstraint"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1226:1: ruleDataTypeConstraint returns [EObject current=null] : (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) ;
+    public final EObject ruleDataTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCAssertFalse_0 = null;
+
+        EObject this_DtCAssertTrue_1 = null;
+
+        EObject this_DtCDecimalMax_2 = null;
+
+        EObject this_DtCDecimalMin_3 = null;
+
+        EObject this_DtCDigits_4 = null;
+
+        EObject this_DtCNumericMax_5 = null;
+
+        EObject this_DtCNumericMin_6 = null;
+
+        EObject this_DtCNotNull_7 = null;
+
+        EObject this_DtCNull_8 = null;
+
+        EObject this_DtCRegEx_9 = null;
+
+        EObject this_DtCSize_10 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1229:28: ( (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1230:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1230:1: (this_DtCAssertFalse_0= ruleDtCAssertFalse | this_DtCAssertTrue_1= ruleDtCAssertTrue | this_DtCDecimalMax_2= ruleDtCDecimalMax | this_DtCDecimalMin_3= ruleDtCDecimalMin | this_DtCDigits_4= ruleDtCDigits | this_DtCNumericMax_5= ruleDtCNumericMax | this_DtCNumericMin_6= ruleDtCNumericMin | this_DtCNotNull_7= ruleDtCNotNull | this_DtCNull_8= ruleDtCNull | this_DtCRegEx_9= ruleDtCRegEx | this_DtCSize_10= ruleDtCSize )
+            int alt34=11;
+            switch ( input.LA(1) ) {
+            case 34:
+                {
+                alt34=1;
+                }
+                break;
+            case 41:
+                {
+                alt34=2;
+                }
+                break;
+            case 42:
+                {
+                alt34=3;
+                }
+                break;
+            case 43:
+                {
+                alt34=4;
+                }
+                break;
+            case 44:
+                {
+                alt34=5;
+                }
+                break;
+            case 47:
+                {
+                alt34=6;
+                }
+                break;
+            case 48:
+                {
+                alt34=7;
+                }
+                break;
+            case 49:
+                {
+                alt34=8;
+                }
+                break;
+            case 50:
+                {
+                alt34=9;
+                }
+                break;
+            case 51:
+                {
+                alt34=10;
+                }
+                break;
+            case 52:
+                {
+                alt34=11;
+                }
+                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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1231:5: this_DtCAssertFalse_0= ruleDtCAssertFalse
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertFalseParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCAssertFalse_in_ruleDataTypeConstraint2404);
+                    this_DtCAssertFalse_0=ruleDtCAssertFalse();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertFalse_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1241:5: this_DtCAssertTrue_1= ruleDtCAssertTrue
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCAssertTrueParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCAssertTrue_in_ruleDataTypeConstraint2431);
+                    this_DtCAssertTrue_1=ruleDtCAssertTrue();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCAssertTrue_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1251:5: this_DtCDecimalMax_2= ruleDtCDecimalMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMaxParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMax_in_ruleDataTypeConstraint2458);
+                    this_DtCDecimalMax_2=ruleDtCDecimalMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMax_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1261:5: this_DtCDecimalMin_3= ruleDtCDecimalMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDecimalMinParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDecimalMin_in_ruleDataTypeConstraint2485);
+                    this_DtCDecimalMin_3=ruleDtCDecimalMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDecimalMin_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1271:5: this_DtCDigits_4= ruleDtCDigits
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCDigitsParserRuleCall_4()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCDigits_in_ruleDataTypeConstraint2512);
+                    this_DtCDigits_4=ruleDtCDigits();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCDigits_4; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 6 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1281:5: this_DtCNumericMax_5= ruleDtCNumericMax
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMaxParserRuleCall_5()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNumericMax_in_ruleDataTypeConstraint2539);
+                    this_DtCNumericMax_5=ruleDtCNumericMax();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMax_5; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 7 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1291:5: this_DtCNumericMin_6= ruleDtCNumericMin
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNumericMinParserRuleCall_6()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNumericMin_in_ruleDataTypeConstraint2566);
+                    this_DtCNumericMin_6=ruleDtCNumericMin();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNumericMin_6; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 8 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1301:5: this_DtCNotNull_7= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNotNullParserRuleCall_7()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleDataTypeConstraint2593);
+                    this_DtCNotNull_7=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_7; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 9 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1311:5: this_DtCNull_8= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCNullParserRuleCall_8()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleDataTypeConstraint2620);
+                    this_DtCNull_8=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_8; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 10 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1321:5: this_DtCRegEx_9= ruleDtCRegEx
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCRegExParserRuleCall_9()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCRegEx_in_ruleDataTypeConstraint2647);
+                    this_DtCRegEx_9=ruleDtCRegEx();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCRegEx_9; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 11 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1331:5: this_DtCSize_10= ruleDtCSize
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDataTypeConstraintAccess().getDtCSizeParserRuleCall_10()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCSize_in_ruleDataTypeConstraint2674);
+                    this_DtCSize_10=ruleDtCSize();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCSize_10; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDataTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDateConstraint"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1347:1: entryRuleDateConstraint returns [EObject current=null] : iv_ruleDateConstraint= ruleDateConstraint EOF ;
+    public final EObject entryRuleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDateConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1348:2: (iv_ruleDateConstraint= ruleDateConstraint EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1349:2: iv_ruleDateConstraint= ruleDateConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDateConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDateConstraint_in_entryRuleDateConstraint2709);
+            iv_ruleDateConstraint=ruleDateConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDateConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDateConstraint2719); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDateConstraint"
+
+
+    // $ANTLR start "ruleDateConstraint"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1356:1: ruleDateConstraint returns [EObject current=null] : (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) ;
+    public final EObject ruleDateConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCFuture_0 = null;
+
+        EObject this_DtCPast_1 = null;
+
+        EObject this_DtCNotNull_2 = null;
+
+        EObject this_DtCNull_3 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1359:28: ( (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1360:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1360:1: (this_DtCFuture_0= ruleDtCFuture | this_DtCPast_1= ruleDtCPast | this_DtCNotNull_2= ruleDtCNotNull | this_DtCNull_3= ruleDtCNull )
+            int alt35=4;
+            switch ( input.LA(1) ) {
+            case 45:
+                {
+                alt35=1;
+                }
+                break;
+            case 46:
+                {
+                alt35=2;
+                }
+                break;
+            case 49:
+                {
+                alt35=3;
+                }
+                break;
+            case 50:
+                {
+                alt35=4;
+                }
+                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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1361:5: this_DtCFuture_0= ruleDtCFuture
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCFutureParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCFuture_in_ruleDateConstraint2766);
+                    this_DtCFuture_0=ruleDtCFuture();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCFuture_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1371:5: this_DtCPast_1= ruleDtCPast
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCPastParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCPast_in_ruleDateConstraint2793);
+                    this_DtCPast_1=ruleDtCPast();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCPast_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1381:5: this_DtCNotNull_2= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNotNullParserRuleCall_2()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleDateConstraint2820);
+                    this_DtCNotNull_2=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_2; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1391:5: this_DtCNull_3= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getDateConstraintAccess().getDtCNullParserRuleCall_3()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleDateConstraint2847);
+                    this_DtCNull_3=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_3; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDateConstraint"
+
+
+    // $ANTLR start "entryRuleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1407:1: entryRuleBlobTypeConstraint returns [EObject current=null] : iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF ;
+    public final EObject entryRuleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleBlobTypeConstraint = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1408:2: (iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1409:2: iv_ruleBlobTypeConstraint= ruleBlobTypeConstraint EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getBlobTypeConstraintRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleBlobTypeConstraint_in_entryRuleBlobTypeConstraint2882);
+            iv_ruleBlobTypeConstraint=ruleBlobTypeConstraint();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleBlobTypeConstraint; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlobTypeConstraint2892); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleBlobTypeConstraint"
+
+
+    // $ANTLR start "ruleBlobTypeConstraint"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1416:1: ruleBlobTypeConstraint returns [EObject current=null] : (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) ;
+    public final EObject ruleBlobTypeConstraint() throws RecognitionException {
+        EObject current = null;
+
+        EObject this_DtCNotNull_0 = null;
+
+        EObject this_DtCNull_1 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1419:28: ( (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1420:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1420:1: (this_DtCNotNull_0= ruleDtCNotNull | this_DtCNull_1= ruleDtCNull )
+            int alt36=2;
+            int LA36_0 = input.LA(1);
+
+            if ( (LA36_0==49) ) {
+                alt36=1;
+            }
+            else if ( (LA36_0==50) ) {
+                alt36=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 36, 0, input);
+
+                throw nvae;
+            }
+            switch (alt36) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1421:5: this_DtCNotNull_0= ruleDtCNotNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNotNullParserRuleCall_0()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNotNull_in_ruleBlobTypeConstraint2939);
+                    this_DtCNotNull_0=ruleDtCNotNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNotNull_0; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1431:5: this_DtCNull_1= ruleDtCNull
+                    {
+                    if ( state.backtracking==0 ) {
+                       
+                              newCompositeNode(grammarAccess.getBlobTypeConstraintAccess().getDtCNullParserRuleCall_1()); 
+                          
+                    }
+                    pushFollow(FollowSets000.FOLLOW_ruleDtCNull_in_ruleBlobTypeConstraint2966);
+                    this_DtCNull_1=ruleDtCNull();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+                       
+                              current = this_DtCNull_1; 
+                              afterParserOrEnumRuleCall();
+                          
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleBlobTypeConstraint"
+
+
+    // $ANTLR start "entryRuleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1447:1: entryRuleDtCAssertFalse returns [EObject current=null] : iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF ;
+    public final EObject entryRuleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertFalse = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1448:2: (iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1449:2: iv_ruleDtCAssertFalse= ruleDtCAssertFalse EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertFalseRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCAssertFalse_in_entryRuleDtCAssertFalse3001);
+            iv_ruleDtCAssertFalse=ruleDtCAssertFalse();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertFalse; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCAssertFalse3011); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertFalse"
+
+
+    // $ANTLR start "ruleDtCAssertFalse"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1456:1: ruleDtCAssertFalse returns [EObject current=null] : ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertFalse() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1459:28: ( ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1460:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1460:1: ( () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1460:2: () otherlv_1= 'isFalse' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1460:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1461:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertFalseAccess().getLDtCAssertFalseAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleDtCAssertFalse3057); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertFalseAccess().getIsFalseKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1470:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==35||(LA40_0>=38 && LA40_0<=40)) ) {
+                alt40=1;
+            }
+            switch (alt40) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1472:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1472:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1473:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1476:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1477:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1477:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt39=0;
+                    loop39:
+                    do {
+                        int alt39=4;
+                        int LA39_0 = input.LA(1);
+
+                        if ( LA39_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                            alt39=1;
+                        }
+                        else if ( LA39_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                            alt39=2;
+                        }
+                        else if ( LA39_0 >=39 && LA39_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                            alt39=3;
+                        }
+
+
+                        switch (alt39) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1479:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1479:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1480:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1480:111: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1481:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1484:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1484:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1484:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1484:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleDtCAssertFalse3115); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1488:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt37=2;
+                    	    int LA37_0 = input.LA(1);
+
+                    	    if ( (LA37_0==36) ) {
+                    	        alt37=1;
+                    	    }
+                    	    switch (alt37) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1488:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleDtCAssertFalse3128); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertFalseAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCAssertFalse3140); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1496:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1497:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1497:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1498:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse3161);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1521:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1521:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1522:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1522:111: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1523:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1526:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1526:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1526:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1526:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleDtCAssertFalse3231); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCAssertFalse3243); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1534:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1535:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1535:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1536:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertFalse3264);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1559:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1559:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1560:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1560:111: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1561:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1564:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1564:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1564:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1564:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1564:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt38=2;
+                    	    int LA38_0 = input.LA(1);
+
+                    	    if ( (LA38_0==39) ) {
+                    	        alt38=1;
+                    	    }
+                    	    switch (alt38) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1564:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleDtCAssertFalse3333); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertFalseAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCAssertFalse3345); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertFalseAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1572:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1573:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1573:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1574:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertFalseAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertFalse3366);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertFalseRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleDtCAssertFalse3380); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt39 >= 1 ) break loop39;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(39, input);
+                                throw eee;
+                        }
+                        cnt39++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertFalse", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertFalseAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertFalse"
+
+
+    // $ANTLR start "entryRuleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1617:1: entryRuleDtCAssertTrue returns [EObject current=null] : iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF ;
+    public final EObject entryRuleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCAssertTrue = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1618:2: (iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1619:2: iv_ruleDtCAssertTrue= ruleDtCAssertTrue EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCAssertTrueRule()); 
+            }
+            pushFollow(FollowSets000.FOLLOW_ruleDtCAssertTrue_in_entryRuleDtCAssertTrue3464);
+            iv_ruleDtCAssertTrue=ruleDtCAssertTrue();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCAssertTrue; 
+            }
+            match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleDtCAssertTrue3474); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCAssertTrue"
+
+
+    // $ANTLR start "ruleDtCAssertTrue"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1626:1: ruleDtCAssertTrue returns [EObject current=null] : ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCAssertTrue() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1629:28: ( ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1630:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1630:1: ( () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1630:2: () otherlv_1= 'isTrue' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1630:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1631:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCAssertTrueAccess().getLDtCAssertTrueAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleDtCAssertTrue3520); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCAssertTrueAccess().getIsTrueKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1640:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==35||(LA44_0>=38 && LA44_0<=40)) ) {
+                alt44=1;
+            }
+            switch (alt44) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1642:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1642:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1643:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1646:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1647:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1647:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt43=0;
+                    loop43:
+                    do {
+                        int alt43=4;
+                        int LA43_0 = input.LA(1);
+
+                        if ( LA43_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                            alt43=1;
+                        }
+                        else if ( LA43_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                            alt43=2;
+                        }
+                        else if ( LA43_0 >=39 && LA43_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                            alt43=3;
+                        }
+
+
+                        switch (alt43) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1649:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1649:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1650:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1650:110: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1651:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1654:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1654:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1654:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1654:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleDtCAssertTrue3578); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1658:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt41=2;
+                    	    int LA41_0 = input.LA(1);
+
+                    	    if ( (LA41_0==36) ) {
+                    	        alt41=1;
+                    	    }
+                    	    switch (alt41) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1658:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleDtCAssertTrue3591); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCAssertTrueAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCAssertTrue3603); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1666:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1667:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1667:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1668:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue3624);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1691:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1691:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1692:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1692:110: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1693:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1696:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1696:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1696:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1696:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleDtCAssertTrue3694); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCAssertTrue3706); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1704:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1705:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1705:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1706:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets000.FOLLOW_ruleQualifiedName_in_ruleDtCAssertTrue3727);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1729:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1729:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1730:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1730:110: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1731:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1734:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1734:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1734:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1734:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1734:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt42=2;
+                    	    int LA42_0 = input.LA(1);
+
+                    	    if ( (LA42_0==39) ) {
+                    	        alt42=1;
+                    	    }
+                    	    switch (alt42) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1734:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleDtCAssertTrue3796); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCAssertTrueAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleDtCAssertTrue3808); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCAssertTrueAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1742:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1743:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1743:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1744:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCAssertTrueAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets000.FOLLOW_ruleConstraintSeverity_in_ruleDtCAssertTrue3829);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCAssertTrueRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCAssertTrue3843); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt43 >= 1 ) break loop43;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(43, input);
+                                throw eee;
+                        }
+                        cnt43++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCAssertTrue", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCAssertTrueAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCAssertTrue"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1787:1: entryRuleDtCDecimalMax returns [EObject current=null] : iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF ;
+    public final EObject entryRuleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1788:2: (iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1789:2: iv_ruleDtCDecimalMax= ruleDtCDecimalMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMaxRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMax_in_entryRuleDtCDecimalMax3927);
+            iv_ruleDtCDecimalMax=ruleDtCDecimalMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMax; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCDecimalMax3937); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMax"
+
+
+    // $ANTLR start "ruleDtCDecimalMax"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1796:1: ruleDtCDecimalMax returns [EObject current=null] : ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1799:28: ( ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1800:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1800:1: ( () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1800:2: () otherlv_1= 'maxDecimal' otherlv_2= '(' ( (lv_max_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1800:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1801:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMaxAccess().getLDtCDecimalMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,42,FollowSets001.FOLLOW_42_in_ruleDtCDecimalMax3983); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMaxAccess().getMaxDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCDecimalMax3995); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1814:1: ( (lv_max_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1815:1: (lv_max_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1815:1: (lv_max_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1816:3: lv_max_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMaxLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMax4016);
+            lv_max_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1832:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+
+            if ( (LA48_0==35||(LA48_0>=38 && LA48_0<=40)) ) {
+                alt48=1;
+            }
+            switch (alt48) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1834:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1834:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1835:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1838:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1839:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1839:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt47=0;
+                    loop47:
+                    do {
+                        int alt47=4;
+                        int LA47_0 = input.LA(1);
+
+                        if ( LA47_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt47=1;
+                        }
+                        else if ( LA47_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt47=2;
+                        }
+                        else if ( LA47_0 >=39 && LA47_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt47=3;
+                        }
+
+
+                        switch (alt47) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1841:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1841:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1842:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1842:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1843:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1846:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1846:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1846:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1846:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCDecimalMax4074); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1850:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt45=2;
+                    	    int LA45_0 = input.LA(1);
+
+                    	    if ( (LA45_0==36) ) {
+                    	        alt45=1;
+                    	    }
+                    	    switch (alt45) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1850:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCDecimalMax4087); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDecimalMax4099); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1858:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1859:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1859:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1860:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax4120);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1883:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1883:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1884:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1884:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1885:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1888:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1888:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1888:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1888:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCDecimalMax4190); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDecimalMax4202); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1896:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1897:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1897:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1898:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMax4223);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1921:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1921:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1922:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1922:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1923:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1926:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1926:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1926:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1926:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1926:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt46=2;
+                    	    int LA46_0 = input.LA(1);
+
+                    	    if ( (LA46_0==39) ) {
+                    	        alt46=1;
+                    	    }
+                    	    switch (alt46) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1926:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCDecimalMax4292); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDecimalMax4304); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1934:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1935:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1935:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1936:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMax4325);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCDecimalMax4339); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt47 >= 1 ) break loop47;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(47, input);
+                                throw eee;
+                        }
+                        cnt47++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCDecimalMax4399); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMax"
+
+
+    // $ANTLR start "entryRuleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1983:1: entryRuleDtCDecimalMin returns [EObject current=null] : iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF ;
+    public final EObject entryRuleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDecimalMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1984:2: (iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1985:2: iv_ruleDtCDecimalMin= ruleDtCDecimalMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDecimalMinRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCDecimalMin_in_entryRuleDtCDecimalMin4435);
+            iv_ruleDtCDecimalMin=ruleDtCDecimalMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDecimalMin; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCDecimalMin4445); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDecimalMin"
+
+
+    // $ANTLR start "ruleDtCDecimalMin"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1992:1: ruleDtCDecimalMin returns [EObject current=null] : ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCDecimalMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1995:28: ( ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1996:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1996:1: ( () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1996:2: () otherlv_1= 'minDecimal' otherlv_2= '(' ( (lv_min_3_0= ruleLDecimal ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1996:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:1997:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDecimalMinAccess().getLDtCDecimalMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,43,FollowSets001.FOLLOW_43_in_ruleDtCDecimalMin4491); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDecimalMinAccess().getMinDecimalKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCDecimalMin4503); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDecimalMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2010:1: ( (lv_min_3_0= ruleLDecimal ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2011:1: (lv_min_3_0= ruleLDecimal )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2011:1: (lv_min_3_0= ruleLDecimal )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2012:3: lv_min_3_0= ruleLDecimal
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMinLDecimalParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLDecimal_in_ruleDtCDecimalMin4524);
+            lv_min_3_0=ruleLDecimal();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LDecimal");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2028:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt52=2;
+            int LA52_0 = input.LA(1);
+
+            if ( (LA52_0==35||(LA52_0>=38 && LA52_0<=40)) ) {
+                alt52=1;
+            }
+            switch (alt52) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2030:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2030:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2031:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2034:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2035:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2035:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt51=0;
+                    loop51:
+                    do {
+                        int alt51=4;
+                        int LA51_0 = input.LA(1);
+
+                        if ( LA51_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt51=1;
+                        }
+                        else if ( LA51_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt51=2;
+                        }
+                        else if ( LA51_0 >=39 && LA51_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt51=3;
+                        }
+
+
+                        switch (alt51) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2037:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2037:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2038:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2038:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2039:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2042:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2042:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2042:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2042:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCDecimalMin4582); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2046:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt49=2;
+                    	    int LA49_0 = input.LA(1);
+
+                    	    if ( (LA49_0==36) ) {
+                    	        alt49=1;
+                    	    }
+                    	    switch (alt49) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2046:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCDecimalMin4595); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCDecimalMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDecimalMin4607); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2054:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2055:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2055:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2056:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin4628);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2079:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2079:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2080:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2080:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2081:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2084:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2084:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2084:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2084:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCDecimalMin4698); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDecimalMin4710); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2092:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2093:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2093:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2094:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDecimalMin4731);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2117:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2117:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2118:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2118:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2119:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2122:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2122:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2122:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2122:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2122:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt50=2;
+                    	    int LA50_0 = input.LA(1);
+
+                    	    if ( (LA50_0==39) ) {
+                    	        alt50=1;
+                    	    }
+                    	    switch (alt50) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2122:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCDecimalMin4800); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCDecimalMinAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDecimalMin4812); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCDecimalMinAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2130:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2131:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2131:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2132:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDecimalMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCDecimalMin4833);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDecimalMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCDecimalMin4847); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt51 >= 1 ) break loop51;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(51, input);
+                                throw eee;
+                        }
+                        cnt51++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDecimalMin", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDecimalMinAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCDecimalMin4907); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCDecimalMinAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDecimalMin"
+
+
+    // $ANTLR start "entryRuleDtCDigits"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2179:1: entryRuleDtCDigits returns [EObject current=null] : iv_ruleDtCDigits= ruleDtCDigits EOF ;
+    public final EObject entryRuleDtCDigits() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCDigits = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2180:2: (iv_ruleDtCDigits= ruleDtCDigits EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2181:2: iv_ruleDtCDigits= ruleDtCDigits EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCDigitsRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCDigits_in_entryRuleDtCDigits4943);
+            iv_ruleDtCDigits=ruleDtCDigits();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCDigits; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCDigits4953); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCDigits"
+
+
+    // $ANTLR start "ruleDtCDigits"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2188:1: ruleDtCDigits returns [EObject current=null] : ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) ;
+    public final EObject ruleDtCDigits() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_intDigits_3_0=null;
+        Token otherlv_4=null;
+        Token lv_fractionDigits_5_0=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_9=null;
+        Token otherlv_11=null;
+        Token otherlv_12=null;
+        Token otherlv_14=null;
+        Token otherlv_15=null;
+        Token otherlv_17=null;
+        Token otherlv_18=null;
+        AntlrDatatypeRuleToken lv_msgCode_10_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_13_0 = null;
+
+        Enumerator lv_severity_16_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2191:28: ( ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2192:1: ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2192:1: ( () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2192:2: () otherlv_1= 'digits' otherlv_2= '(' ( (lv_intDigits_3_0= RULE_INT ) ) otherlv_4= ', ' ( (lv_fractionDigits_5_0= RULE_INT ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )? otherlv_18= ')'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2192:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2193:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCDigitsAccess().getLDtCDigitsAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,44,FollowSets001.FOLLOW_44_in_ruleDtCDigits4999); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCDigitsAccess().getDigitsKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCDigits5011); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCDigitsAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2206:1: ( (lv_intDigits_3_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2207:1: (lv_intDigits_3_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2207:1: (lv_intDigits_3_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2208:3: lv_intDigits_3_0= RULE_INT
+            {
+            lv_intDigits_3_0=(Token)match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_ruleDtCDigits5028); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_intDigits_3_0, grammarAccess.getDtCDigitsAccess().getIntDigitsINTTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCDigitsRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"intDigits",
+                      		lv_intDigits_3_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            otherlv_4=(Token)match(input,20,FollowSets001.FOLLOW_20_in_ruleDtCDigits5045); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_4, grammarAccess.getDtCDigitsAccess().getCommaSpaceKeyword_4());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2228:1: ( (lv_fractionDigits_5_0= RULE_INT ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2229:1: (lv_fractionDigits_5_0= RULE_INT )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2229:1: (lv_fractionDigits_5_0= RULE_INT )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2230:3: lv_fractionDigits_5_0= RULE_INT
+            {
+            lv_fractionDigits_5_0=(Token)match(input,RULE_INT,FollowSets001.FOLLOW_RULE_INT_in_ruleDtCDigits5062); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_fractionDigits_5_0, grammarAccess.getDtCDigitsAccess().getFractionDigitsINTTerminalRuleCall_5_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCDigitsRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"fractionDigits",
+                      		lv_fractionDigits_5_0, 
+                      		"INT");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2246:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==35||(LA56_0>=38 && LA56_0<=40)) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2248:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2248:1: ( ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2249:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2252:2: ( ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2253:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2253:3: ( ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) ) )+
+                    int cnt55=0;
+                    loop55:
+                    do {
+                        int alt55=4;
+                        int LA55_0 = input.LA(1);
+
+                        if ( LA55_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0) ) {
+                            alt55=1;
+                        }
+                        else if ( LA55_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1) ) {
+                            alt55=2;
+                        }
+                        else if ( LA55_0 >=39 && LA55_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2) ) {
+                            alt55=3;
+                        }
+
+
+                        switch (alt55) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2255:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2255:4: ({...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2256:5: {...}? => ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2256:106: ( ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2257:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2260:6: ({...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2260:7: {...}? => (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2260:16: (otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2260:18: otherlv_7= '[' (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_7=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCDigits5125); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2264:1: (otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) ) )?
+                    	    int alt53=2;
+                    	    int LA53_0 = input.LA(1);
+
+                    	    if ( (LA53_0==36) ) {
+                    	        alt53=1;
+                    	    }
+                    	    switch (alt53) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2264:3: otherlv_8= 'msgCode' otherlv_9= '=' ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_8=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCDigits5138); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_8, grammarAccess.getDtCDigitsAccess().getMsgCodeKeyword_6_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_9=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDigits5150); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_9, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2272:1: ( (lv_msgCode_10_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2273:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2273:1: (lv_msgCode_10_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2274:3: lv_msgCode_10_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgCodeQualifiedNameParserRuleCall_6_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDigits5171);
+                    	            lv_msgCode_10_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_10_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2297:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2297:4: ({...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2298:5: {...}? => ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2298:106: ( ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2299:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2302:6: ({...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2302:7: {...}? => (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2302:16: (otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2302:18: otherlv_11= 'msgI18nKey' otherlv_12= '=' ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_11=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCDigits5241); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_11, grammarAccess.getDtCDigitsAccess().getMsgI18nKeyKeyword_6_1_0());
+                    	          
+                    	    }
+                    	    otherlv_12=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDigits5253); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_12, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2310:1: ( (lv_msgI18nKey_13_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2311:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2311:1: (lv_msgI18nKey_13_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2312:3: lv_msgI18nKey_13_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getMsgI18nKeyQualifiedNameParserRuleCall_6_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCDigits5274);
+                    	    lv_msgI18nKey_13_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_13_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2335:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2335:4: ({...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2336:5: {...}? => ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2336:106: ( ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2337:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2340:6: ({...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2340:7: {...}? => ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCDigits", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2340:16: ( (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2340:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )? otherlv_17= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2340:17: (otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) ) )?
+                    	    int alt54=2;
+                    	    int LA54_0 = input.LA(1);
+
+                    	    if ( (LA54_0==39) ) {
+                    	        alt54=1;
+                    	    }
+                    	    switch (alt54) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2340:19: otherlv_14= 'severity' otherlv_15= '=' ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_14=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCDigits5343); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_14, grammarAccess.getDtCDigitsAccess().getSeverityKeyword_6_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_15=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCDigits5355); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_15, grammarAccess.getDtCDigitsAccess().getEqualsSignKeyword_6_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2348:1: ( (lv_severity_16_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2349:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2349:1: (lv_severity_16_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2350:3: lv_severity_16_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCDigitsAccess().getSeverityConstraintSeverityEnumRuleCall_6_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCDigits5376);
+                    	            lv_severity_16_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCDigitsRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_16_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_17=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCDigits5390); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_17, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt55 >= 1 ) break loop55;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(55, input);
+                                throw eee;
+                        }
+                        cnt55++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCDigits", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCDigitsAccess().getUnorderedGroup_6());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_18=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCDigits5450); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_18, grammarAccess.getDtCDigitsAccess().getRightParenthesisKeyword_7());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCDigits"
+
+
+    // $ANTLR start "entryRuleDtCFuture"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2397:1: entryRuleDtCFuture returns [EObject current=null] : iv_ruleDtCFuture= ruleDtCFuture EOF ;
+    public final EObject entryRuleDtCFuture() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCFuture = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2398:2: (iv_ruleDtCFuture= ruleDtCFuture EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2399:2: iv_ruleDtCFuture= ruleDtCFuture EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCFutureRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCFuture_in_entryRuleDtCFuture5486);
+            iv_ruleDtCFuture=ruleDtCFuture();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCFuture; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCFuture5496); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCFuture"
+
+
+    // $ANTLR start "ruleDtCFuture"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2406:1: ruleDtCFuture returns [EObject current=null] : ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCFuture() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2409:28: ( ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2410:1: ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2410:1: ( () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2410:2: () otherlv_1= 'isFuture' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2410:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2411:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCFutureAccess().getLDtCFutureAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,45,FollowSets001.FOLLOW_45_in_ruleDtCFuture5542); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCFutureAccess().getIsFutureKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2420:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==35||(LA60_0>=38 && LA60_0<=40)) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2422:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2422:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2423:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2426:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2427:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2427:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt59=0;
+                    loop59:
+                    do {
+                        int alt59=4;
+                        int LA59_0 = input.LA(1);
+
+                        if ( LA59_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {
+                            alt59=1;
+                        }
+                        else if ( LA59_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {
+                            alt59=2;
+                        }
+                        else if ( LA59_0 >=39 && LA59_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {
+                            alt59=3;
+                        }
+
+
+                        switch (alt59) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2429:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2429:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2430:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2430:106: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2431:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2434:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2434:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2434:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2434:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCFuture5600); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2438:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt57=2;
+                    	    int LA57_0 = input.LA(1);
+
+                    	    if ( (LA57_0==36) ) {
+                    	        alt57=1;
+                    	    }
+                    	    switch (alt57) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2438:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCFuture5613); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCFutureAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCFuture5625); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2446:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2447:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2447:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2448:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCFuture5646);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2471:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2471:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2472:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2472:106: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2473:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2476:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2476:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2476:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2476:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCFuture5716); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCFutureAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCFuture5728); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2484:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2485:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2485:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2486:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCFutureAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCFuture5749);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2509:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2509:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2510:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2510:106: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2511:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2514:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2514:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCFuture", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2514:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2514:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2514:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt58=2;
+                    	    int LA58_0 = input.LA(1);
+
+                    	    if ( (LA58_0==39) ) {
+                    	        alt58=1;
+                    	    }
+                    	    switch (alt58) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2514:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCFuture5818); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCFutureAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCFuture5830); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCFutureAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2522:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2523:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2523:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2524:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCFutureAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCFuture5851);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCFutureRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCFuture5865); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt59 >= 1 ) break loop59;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(59, input);
+                                throw eee;
+                        }
+                        cnt59++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCFuture", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCFutureAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCFuture"
+
+
+    // $ANTLR start "entryRuleDtCPast"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2567:1: entryRuleDtCPast returns [EObject current=null] : iv_ruleDtCPast= ruleDtCPast EOF ;
+    public final EObject entryRuleDtCPast() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCPast = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2568:2: (iv_ruleDtCPast= ruleDtCPast EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2569:2: iv_ruleDtCPast= ruleDtCPast EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCPastRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCPast_in_entryRuleDtCPast5949);
+            iv_ruleDtCPast=ruleDtCPast();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCPast; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCPast5959); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCPast"
+
+
+    // $ANTLR start "ruleDtCPast"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2576:1: ruleDtCPast returns [EObject current=null] : ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCPast() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2579:28: ( ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2580:1: ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2580:1: ( () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2580:2: () otherlv_1= 'isPast' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2580:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2581:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCPastAccess().getLDtCPastAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,46,FollowSets001.FOLLOW_46_in_ruleDtCPast6005); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCPastAccess().getIsPastKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2590:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( (LA64_0==35||(LA64_0>=38 && LA64_0<=40)) ) {
+                alt64=1;
+            }
+            switch (alt64) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2592:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2592:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2593:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2596:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2597:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2597:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt63=0;
+                    loop63:
+                    do {
+                        int alt63=4;
+                        int LA63_0 = input.LA(1);
+
+                        if ( LA63_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {
+                            alt63=1;
+                        }
+                        else if ( LA63_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {
+                            alt63=2;
+                        }
+                        else if ( LA63_0 >=39 && LA63_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {
+                            alt63=3;
+                        }
+
+
+                        switch (alt63) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2599:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2599:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2600:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2600:104: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2601:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2604:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2604:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2604:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2604:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCPast6063); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2608:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt61=2;
+                    	    int LA61_0 = input.LA(1);
+
+                    	    if ( (LA61_0==36) ) {
+                    	        alt61=1;
+                    	    }
+                    	    switch (alt61) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2608:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCPast6076); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCPastAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCPast6088); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2616:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2617:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2617:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2618:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCPast6109);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2641:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2641:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2642:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2642:104: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2643:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2646:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2646:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2646:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2646:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCPast6179); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCPastAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCPast6191); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2654:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2655:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2655:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2656:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCPastAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCPast6212);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2679:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2679:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2680:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2680:104: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2681:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCPastAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2684:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2684:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCPast", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2684:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2684:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2684:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt62=2;
+                    	    int LA62_0 = input.LA(1);
+
+                    	    if ( (LA62_0==39) ) {
+                    	        alt62=1;
+                    	    }
+                    	    switch (alt62) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2684:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCPast6281); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCPastAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCPast6293); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCPastAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2692:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2693:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2693:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2694:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCPastAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCPast6314);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCPastRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCPast6328); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt63 >= 1 ) break loop63;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(63, input);
+                                throw eee;
+                        }
+                        cnt63++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCPast", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCPastAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCPast"
+
+
+    // $ANTLR start "entryRuleDtCNumericMax"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2737:1: entryRuleDtCNumericMax returns [EObject current=null] : iv_ruleDtCNumericMax= ruleDtCNumericMax EOF ;
+    public final EObject entryRuleDtCNumericMax() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNumericMax = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2738:2: (iv_ruleDtCNumericMax= ruleDtCNumericMax EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2739:2: iv_ruleDtCNumericMax= ruleDtCNumericMax EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNumericMaxRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMax_in_entryRuleDtCNumericMax6412);
+            iv_ruleDtCNumericMax=ruleDtCNumericMax();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNumericMax; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNumericMax6422); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNumericMax"
+
+
+    // $ANTLR start "ruleDtCNumericMax"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2746:1: ruleDtCNumericMax returns [EObject current=null] : ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCNumericMax() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_max_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2749:28: ( ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2750:1: ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2750:1: ( () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2750:2: () otherlv_1= 'maxNumber' otherlv_2= '(' ( (lv_max_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2750:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2751:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNumericMaxAccess().getLDtCNumericMaxAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,47,FollowSets001.FOLLOW_47_in_ruleDtCNumericMax6468); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMaxAccess().getMaxNumberKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCNumericMax6480); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMaxAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2764:1: ( (lv_max_3_0= ruleLInt ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2765:1: (lv_max_3_0= ruleLInt )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2765:1: (lv_max_3_0= ruleLInt )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2766:3: lv_max_3_0= ruleLInt
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMaxLIntParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLInt_in_ruleDtCNumericMax6501);
+            lv_max_3_0=ruleLInt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"max",
+                      		lv_max_3_0, 
+                      		"LInt");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2782:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==35||(LA68_0>=38 && LA68_0<=40)) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2784:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2784:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2785:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2788:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2789:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2789:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt67=0;
+                    loop67:
+                    do {
+                        int alt67=4;
+                        int LA67_0 = input.LA(1);
+
+                        if ( LA67_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0) ) {
+                            alt67=1;
+                        }
+                        else if ( LA67_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1) ) {
+                            alt67=2;
+                        }
+                        else if ( LA67_0 >=39 && LA67_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2) ) {
+                            alt67=3;
+                        }
+
+
+                        switch (alt67) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2791:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2791:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2792:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2792:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2793:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2796:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2796:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2796:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2796:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCNumericMax6559); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2800:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt65=2;
+                    	    int LA65_0 = input.LA(1);
+
+                    	    if ( (LA65_0==36) ) {
+                    	        alt65=1;
+                    	    }
+                    	    switch (alt65) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2800:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCNumericMax6572); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMaxAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNumericMax6584); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2808:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2809:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2809:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2810:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax6605);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2833:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2833:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2834:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2834:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2835:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2838:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2838:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2838:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2838:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCNumericMax6675); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNumericMax6687); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2846:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2847:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2847:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2848:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMax6708);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2871:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2871:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2872:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2872:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2873:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2876:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2876:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMax", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2876:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2876:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2876:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt66=2;
+                    	    int LA66_0 = input.LA(1);
+
+                    	    if ( (LA66_0==39) ) {
+                    	        alt66=1;
+                    	    }
+                    	    switch (alt66) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2876:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCNumericMax6777); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMaxAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNumericMax6789); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMaxAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2884:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2885:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2885:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2886:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMaxAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMax6810);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMaxRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCNumericMax6824); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt67 >= 1 ) break loop67;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(67, input);
+                                throw eee;
+                        }
+                        cnt67++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNumericMax", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMaxAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCNumericMax6884); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMaxAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNumericMax"
+
+
+    // $ANTLR start "entryRuleDtCNumericMin"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2933:1: entryRuleDtCNumericMin returns [EObject current=null] : iv_ruleDtCNumericMin= ruleDtCNumericMin EOF ;
+    public final EObject entryRuleDtCNumericMin() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNumericMin = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2934:2: (iv_ruleDtCNumericMin= ruleDtCNumericMin EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2935:2: iv_ruleDtCNumericMin= ruleDtCNumericMin EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNumericMinRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNumericMin_in_entryRuleDtCNumericMin6920);
+            iv_ruleDtCNumericMin=ruleDtCNumericMin();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNumericMin; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNumericMin6930); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNumericMin"
+
+
+    // $ANTLR start "ruleDtCNumericMin"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2942:1: ruleDtCNumericMin returns [EObject current=null] : ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCNumericMin() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_min_3_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2945:28: ( ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2946:1: ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2946:1: ( () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2946:2: () otherlv_1= 'minNumber' otherlv_2= '(' ( (lv_min_3_0= ruleLInt ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2946:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2947:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNumericMinAccess().getLDtCNumericMinAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,48,FollowSets001.FOLLOW_48_in_ruleDtCNumericMin6976); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNumericMinAccess().getMinNumberKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCNumericMin6988); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCNumericMinAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2960:1: ( (lv_min_3_0= ruleLInt ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2961:1: (lv_min_3_0= ruleLInt )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2961:1: (lv_min_3_0= ruleLInt )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2962:3: lv_min_3_0= ruleLInt
+            {
+            if ( state.backtracking==0 ) {
+               
+              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMinLIntParserRuleCall_3_0()); 
+              	    
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleLInt_in_ruleDtCNumericMin7009);
+            lv_min_3_0=ruleLInt();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+              	        }
+                     		set(
+                     			current, 
+                     			"min",
+                      		lv_min_3_0, 
+                      		"LInt");
+              	        afterParserOrEnumRuleCall();
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2978:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==35||(LA72_0>=38 && LA72_0<=40)) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2980:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2980:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2981:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2984:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2985:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2985:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt71=0;
+                    loop71:
+                    do {
+                        int alt71=4;
+                        int LA71_0 = input.LA(1);
+
+                        if ( LA71_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0) ) {
+                            alt71=1;
+                        }
+                        else if ( LA71_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1) ) {
+                            alt71=2;
+                        }
+                        else if ( LA71_0 >=39 && LA71_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2) ) {
+                            alt71=3;
+                        }
+
+
+                        switch (alt71) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2987:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2987:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2988:5: {...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2988:110: ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2989:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2992:6: ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2992:7: {...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2992:16: (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2992:18: otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_5=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCNumericMin7067); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_5, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2996:1: (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )?
+                    	    int alt69=2;
+                    	    int LA69_0 = input.LA(1);
+
+                    	    if ( (LA69_0==36) ) {
+                    	        alt69=1;
+                    	    }
+                    	    switch (alt69) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:2996:3: otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_6=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCNumericMin7080); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_6, grammarAccess.getDtCNumericMinAccess().getMsgCodeKeyword_4_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_7=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNumericMin7092); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_7, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3004:1: ( (lv_msgCode_8_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3005:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3005:1: (lv_msgCode_8_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3006:3: lv_msgCode_8_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgCodeQualifiedNameParserRuleCall_4_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin7113);
+                    	            lv_msgCode_8_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_8_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3029:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3029:4: ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3030:5: {...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3030:110: ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3031:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3034:6: ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3034:7: {...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3034:16: (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3034:18: otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_9=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCNumericMin7183); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_9, grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyKeyword_4_1_0());
+                    	          
+                    	    }
+                    	    otherlv_10=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNumericMin7195); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_10, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3042:1: ( (lv_msgI18nKey_11_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3043:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3043:1: (lv_msgI18nKey_11_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3044:3: lv_msgI18nKey_11_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getMsgI18nKeyQualifiedNameParserRuleCall_4_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNumericMin7216);
+                    	    lv_msgI18nKey_11_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_11_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3067:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3067:4: ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3068:5: {...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3068:110: ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3069:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3072:6: ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3072:7: {...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNumericMin", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3072:16: ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3072:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3072:17: (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )?
+                    	    int alt70=2;
+                    	    int LA70_0 = input.LA(1);
+
+                    	    if ( (LA70_0==39) ) {
+                    	        alt70=1;
+                    	    }
+                    	    switch (alt70) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3072:19: otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_12=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCNumericMin7285); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_12, grammarAccess.getDtCNumericMinAccess().getSeverityKeyword_4_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_13=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNumericMin7297); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_13, grammarAccess.getDtCNumericMinAccess().getEqualsSignKeyword_4_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3080:1: ( (lv_severity_14_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3081:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3081:1: (lv_severity_14_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3082:3: lv_severity_14_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNumericMinAccess().getSeverityConstraintSeverityEnumRuleCall_4_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNumericMin7318);
+                    	            lv_severity_14_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNumericMinRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_14_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_15=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCNumericMin7332); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_15, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt71 >= 1 ) break loop71;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(71, input);
+                                throw eee;
+                        }
+                        cnt71++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNumericMin", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNumericMinAccess().getUnorderedGroup_4());
+
+                    }
+                    break;
+
+            }
+
+            otherlv_16=(Token)match(input,25,FollowSets001.FOLLOW_25_in_ruleDtCNumericMin7392); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_16, grammarAccess.getDtCNumericMinAccess().getRightParenthesisKeyword_5());
+                  
+            }
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNumericMin"
+
+
+    // $ANTLR start "entryRuleDtCNotNull"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3129:1: entryRuleDtCNotNull returns [EObject current=null] : iv_ruleDtCNotNull= ruleDtCNotNull EOF ;
+    public final EObject entryRuleDtCNotNull() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNotNull = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3130:2: (iv_ruleDtCNotNull= ruleDtCNotNull EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3131:2: iv_ruleDtCNotNull= ruleDtCNotNull EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNotNullRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNotNull_in_entryRuleDtCNotNull7428);
+            iv_ruleDtCNotNull=ruleDtCNotNull();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNotNull; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNotNull7438); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNotNull"
+
+
+    // $ANTLR start "ruleDtCNotNull"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3138:1: ruleDtCNotNull returns [EObject current=null] : ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCNotNull() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3141:28: ( ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3142:1: ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3142:1: ( () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3142:2: () otherlv_1= 'isNotNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3142:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3143:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNotNullAccess().getLDtCNotNullAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,49,FollowSets001.FOLLOW_49_in_ruleDtCNotNull7484); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNotNullAccess().getIsNotNullKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3152:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==35||(LA76_0>=38 && LA76_0<=40)) ) {
+                alt76=1;
+            }
+            switch (alt76) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3154:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3154:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3155:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3158:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3159:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3159:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt75=0;
+                    loop75:
+                    do {
+                        int alt75=4;
+                        int LA75_0 = input.LA(1);
+
+                        if ( LA75_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {
+                            alt75=1;
+                        }
+                        else if ( LA75_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {
+                            alt75=2;
+                        }
+                        else if ( LA75_0 >=39 && LA75_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {
+                            alt75=3;
+                        }
+
+
+                        switch (alt75) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3161:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3161:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3162:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3162:107: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3163:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3166:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3166:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3166:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3166:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCNotNull7542); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3170:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt73=2;
+                    	    int LA73_0 = input.LA(1);
+
+                    	    if ( (LA73_0==36) ) {
+                    	        alt73=1;
+                    	    }
+                    	    switch (alt73) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3170:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCNotNull7555); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCNotNullAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNotNull7567); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3178:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3179:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3179:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3180:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNotNull7588);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3203:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3203:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3204:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3204:107: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3205:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3208:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3208:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3208:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3208:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCNotNull7658); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCNotNullAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNotNull7670); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3216:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3217:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3217:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3218:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNotNull7691);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3241:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3241:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3242:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3242:107: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3243:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3246:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3246:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNotNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3246:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3246:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3246:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt74=2;
+                    	    int LA74_0 = input.LA(1);
+
+                    	    if ( (LA74_0==39) ) {
+                    	        alt74=1;
+                    	    }
+                    	    switch (alt74) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3246:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCNotNull7760); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCNotNullAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNotNull7772); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCNotNullAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3254:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3255:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3255:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3256:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNotNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNotNull7793);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNotNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCNotNull7807); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt75 >= 1 ) break loop75;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(75, input);
+                                throw eee;
+                        }
+                        cnt75++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNotNull", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNotNullAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNotNull"
+
+
+    // $ANTLR start "entryRuleDtCNull"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3299:1: entryRuleDtCNull returns [EObject current=null] : iv_ruleDtCNull= ruleDtCNull EOF ;
+    public final EObject entryRuleDtCNull() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCNull = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3300:2: (iv_ruleDtCNull= ruleDtCNull EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3301:2: iv_ruleDtCNull= ruleDtCNull EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCNullRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCNull_in_entryRuleDtCNull7891);
+            iv_ruleDtCNull=ruleDtCNull();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCNull; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCNull7901); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCNull"
+
+
+    // $ANTLR start "ruleDtCNull"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3308:1: ruleDtCNull returns [EObject current=null] : ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) ;
+    public final EObject ruleDtCNull() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_3=null;
+        Token otherlv_4=null;
+        Token otherlv_5=null;
+        Token otherlv_7=null;
+        Token otherlv_8=null;
+        Token otherlv_10=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        AntlrDatatypeRuleToken lv_msgCode_6_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_9_0 = null;
+
+        Enumerator lv_severity_12_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3311:28: ( ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3312:1: ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3312:1: ( () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )? )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3312:2: () otherlv_1= 'isNull' ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3312:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3313:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCNullAccess().getLDtCNullAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,50,FollowSets001.FOLLOW_50_in_ruleDtCNull7947); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCNullAccess().getIsNullKeyword_1());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3322:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==35||(LA80_0>=38 && LA80_0<=40)) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3324:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3324:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3325:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3328:2: ( ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3329:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3329:3: ( ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) ) )+
+                    int cnt79=0;
+                    loop79:
+                    do {
+                        int alt79=4;
+                        int LA79_0 = input.LA(1);
+
+                        if ( LA79_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {
+                            alt79=1;
+                        }
+                        else if ( LA79_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {
+                            alt79=2;
+                        }
+                        else if ( LA79_0 >=39 && LA79_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {
+                            alt79=3;
+                        }
+
+
+                        switch (alt79) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3331:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3331:4: ({...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3332:5: {...}? => ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3332:104: ( ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3333:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 0);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3336:6: ({...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3336:7: {...}? => (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3336:16: (otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )? )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3336:18: otherlv_3= '[' (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    {
+                    	    otherlv_3=(Token)match(input,35,FollowSets001.FOLLOW_35_in_ruleDtCNull8005); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_3, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3340:1: (otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) ) )?
+                    	    int alt77=2;
+                    	    int LA77_0 = input.LA(1);
+
+                    	    if ( (LA77_0==36) ) {
+                    	        alt77=1;
+                    	    }
+                    	    switch (alt77) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3340:3: otherlv_4= 'msgCode' otherlv_5= '=' ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            {
+                    	            otherlv_4=(Token)match(input,36,FollowSets001.FOLLOW_36_in_ruleDtCNull8018); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_4, grammarAccess.getDtCNullAccess().getMsgCodeKeyword_2_0_1_0());
+                    	                  
+                    	            }
+                    	            otherlv_5=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNull8030); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_5, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_0_1_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3348:1: ( (lv_msgCode_6_0= ruleQualifiedName ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3349:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3349:1: (lv_msgCode_6_0= ruleQualifiedName )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3350:3: lv_msgCode_6_0= ruleQualifiedName
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgCodeQualifiedNameParserRuleCall_2_0_1_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNull8051);
+                    	            lv_msgCode_6_0=ruleQualifiedName();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"msgCode",
+                    	                      		lv_msgCode_6_0, 
+                    	                      		"QualifiedName");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3373:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3373:4: ({...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3374:5: {...}? => ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3374:104: ( ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3375:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 1);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3378:6: ({...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3378:7: {...}? => (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3378:16: (otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3378:18: otherlv_7= 'msgI18nKey' otherlv_8= '=' ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    {
+                    	    otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleDtCNull8121); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_7, grammarAccess.getDtCNullAccess().getMsgI18nKeyKeyword_2_1_0());
+                    	          
+                    	    }
+                    	    otherlv_8=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNull8133); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_8, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_1_1());
+                    	          
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3386:1: ( (lv_msgI18nKey_9_0= ruleQualifiedName ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3387:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3387:1: (lv_msgI18nKey_9_0= ruleQualifiedName )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3388:3: lv_msgI18nKey_9_0= ruleQualifiedName
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+                    	       
+                    	      	        newCompositeNode(grammarAccess.getDtCNullAccess().getMsgI18nKeyQualifiedNameParserRuleCall_2_1_2_0()); 
+                    	      	    
+                    	    }
+                    	    pushFollow(FollowSets001.FOLLOW_ruleQualifiedName_in_ruleDtCNull8154);
+                    	    lv_msgI18nKey_9_0=ruleQualifiedName();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      	        if (current==null) {
+                    	      	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	      	        }
+                    	             		set(
+                    	             			current, 
+                    	             			"msgI18nKey",
+                    	              		lv_msgI18nKey_9_0, 
+                    	              		"QualifiedName");
+                    	      	        afterParserOrEnumRuleCall();
+                    	      	    
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+                    	case 3 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3411:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3411:4: ({...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3412:5: {...}? => ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    {
+                    	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canSelect(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2)");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3412:104: ( ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3413:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    {
+                    	    getUnorderedGroupHelper().select(grammarAccess.getDtCNullAccess().getUnorderedGroup_2(), 2);
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3416:6: ({...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' ) )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3416:7: {...}? => ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    {
+                    	    if ( !((true)) ) {
+                    	        if (state.backtracking>0) {state.failed=true; return current;}
+                    	        throw new FailedPredicateException(input, "ruleDtCNull", "true");
+                    	    }
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3416:16: ( (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']' )
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3416:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )? otherlv_13= ']'
+                    	    {
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3416:17: (otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) ) )?
+                    	    int alt78=2;
+                    	    int LA78_0 = input.LA(1);
+
+                    	    if ( (LA78_0==39) ) {
+                    	        alt78=1;
+                    	    }
+                    	    switch (alt78) {
+                    	        case 1 :
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3416:19: otherlv_10= 'severity' otherlv_11= '=' ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            {
+                    	            otherlv_10=(Token)match(input,39,FollowSets001.FOLLOW_39_in_ruleDtCNull8223); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_10, grammarAccess.getDtCNullAccess().getSeverityKeyword_2_2_0_0());
+                    	                  
+                    	            }
+                    	            otherlv_11=(Token)match(input,37,FollowSets001.FOLLOW_37_in_ruleDtCNull8235); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	                  	newLeafNode(otherlv_11, grammarAccess.getDtCNullAccess().getEqualsSignKeyword_2_2_0_1());
+                    	                  
+                    	            }
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3424:1: ( (lv_severity_12_0= ruleConstraintSeverity ) )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3425:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            {
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3425:1: (lv_severity_12_0= ruleConstraintSeverity )
+                    	            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3426:3: lv_severity_12_0= ruleConstraintSeverity
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+                    	               
+                    	              	        newCompositeNode(grammarAccess.getDtCNullAccess().getSeverityConstraintSeverityEnumRuleCall_2_2_0_2_0()); 
+                    	              	    
+                    	            }
+                    	            pushFollow(FollowSets001.FOLLOW_ruleConstraintSeverity_in_ruleDtCNull8256);
+                    	            lv_severity_12_0=ruleConstraintSeverity();
+
+                    	            state._fsp--;
+                    	            if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              	        if (current==null) {
+                    	              	            current = createModelElementForParent(grammarAccess.getDtCNullRule());
+                    	              	        }
+                    	                     		set(
+                    	                     			current, 
+                    	                     			"severity",
+                    	                      		lv_severity_12_0, 
+                    	                      		"ConstraintSeverity");
+                    	              	        afterParserOrEnumRuleCall();
+                    	              	    
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+                    	    otherlv_13=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleDtCNull8270); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	          	newLeafNode(otherlv_13, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1());
+                    	          
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    	    }
+
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    if ( cnt79 >= 1 ) break loop79;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(79, input);
+                                throw eee;
+                        }
+                        cnt79++;
+                    } while (true);
+
+                    if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2()) ) {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        throw new FailedPredicateException(input, "ruleDtCNull", "getUnorderedGroupHelper().canLeave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2())");
+                    }
+
+                    }
+
+
+                    }
+
+                    getUnorderedGroupHelper().leave(grammarAccess.getDtCNullAccess().getUnorderedGroup_2());
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+               leaveRule(); 
+            }
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleDtCNull"
+
+
+    // $ANTLR start "entryRuleDtCRegEx"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3469:1: entryRuleDtCRegEx returns [EObject current=null] : iv_ruleDtCRegEx= ruleDtCRegEx EOF ;
+    public final EObject entryRuleDtCRegEx() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleDtCRegEx = null;
+
+
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3470:2: (iv_ruleDtCRegEx= ruleDtCRegEx EOF )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3471:2: iv_ruleDtCRegEx= ruleDtCRegEx EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getDtCRegExRule()); 
+            }
+            pushFollow(FollowSets001.FOLLOW_ruleDtCRegEx_in_entryRuleDtCRegEx8354);
+            iv_ruleDtCRegEx=ruleDtCRegEx();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleDtCRegEx; 
+            }
+            match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleDtCRegEx8364); if (state.failed) return current;
+
+            }
+
+        }
+         
+            catch (RecognitionException re) { 
+                recover(input,re); 
+                appendSkippedTokens();
+            } 
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleDtCRegEx"
+
+
+    // $ANTLR start "ruleDtCRegEx"
+    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3478:1: ruleDtCRegEx returns [EObject current=null] : ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) ;
+    public final EObject ruleDtCRegEx() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token lv_pattern_3_0=null;
+        Token otherlv_5=null;
+        Token otherlv_6=null;
+        Token otherlv_7=null;
+        Token otherlv_9=null;
+        Token otherlv_10=null;
+        Token otherlv_12=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token otherlv_16=null;
+        AntlrDatatypeRuleToken lv_msgCode_8_0 = null;
+
+        AntlrDatatypeRuleToken lv_msgI18nKey_11_0 = null;
+
+        Enumerator lv_severity_14_0 = null;
+
+
+         enterRule(); 
+            
+        try {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3481:28: ( ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3482:1: ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3482:1: ( () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')' )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3482:2: () otherlv_1= 'regex' otherlv_2= '(' ( (lv_pattern_3_0= RULE_STRING ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )? otherlv_16= ')'
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3482:2: ()
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3483:5: 
+            {
+            if ( state.backtracking==0 ) {
+
+                      current = forceCreateModelElement(
+                          grammarAccess.getDtCRegExAccess().getLDtCRegExAction_0(),
+                          current);
+                  
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,51,FollowSets001.FOLLOW_51_in_ruleDtCRegEx8410); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_1, grammarAccess.getDtCRegExAccess().getRegexKeyword_1());
+                  
+            }
+            otherlv_2=(Token)match(input,24,FollowSets001.FOLLOW_24_in_ruleDtCRegEx8422); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+                  	newLeafNode(otherlv_2, grammarAccess.getDtCRegExAccess().getLeftParenthesisKeyword_2());
+                  
+            }
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3496:1: ( (lv_pattern_3_0= RULE_STRING ) )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3497:1: (lv_pattern_3_0= RULE_STRING )
+            {
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3497:1: (lv_pattern_3_0= RULE_STRING )
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3498:3: lv_pattern_3_0= RULE_STRING
+            {
+            lv_pattern_3_0=(Token)match(input,RULE_STRING,FollowSets001.FOLLOW_RULE_STRING_in_ruleDtCRegEx8439); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(lv_pattern_3_0, grammarAccess.getDtCRegExAccess().getPatternSTRINGTerminalRuleCall_3_0()); 
+              		
+            }
+            if ( state.backtracking==0 ) {
+
+              	        if (current==null) {
+              	            current = createModelElement(grammarAccess.getDtCRegExRule());
+              	        }
+                     		setWithLastConsumed(
+                     			current, 
+                     			"pattern",
+                      		lv_pattern_3_0, 
+                      		"STRING");
+              	    
+            }
+
+            }
+
+
+            }
+
+            // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3514:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) ) )?
+            int alt84=2;
+            int LA84_0 = input.LA(1);
+
+            if ( (LA84_0==35||(LA84_0>=38 && LA84_0<=40)) ) {
+                alt84=1;
+            }
+            switch (alt84) {
+                case 1 :
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3516:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3516:1: ( ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?) )
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3517:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    {
+                    getUnorderedGroupHelper().enter(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4());
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3520:2: ( ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?)
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3521:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+ {...}?
+                    {
+                    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3521:3: ( ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) ) | ({...}? => ( ({...}? => (otherlv_9= 'msgI18nKey' otherlv_10= '=' ( (lv_msgI18nKey_11_0= ruleQualifiedName ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_12= 'severity' otherlv_13= '=' ( (lv_severity_14_0= ruleConstraintSeverity ) ) )? otherlv_15= ']' ) ) ) ) )+
+                    int cnt83=0;
+                    loop83:
+                    do {
+                        int alt83=4;
+                        int LA83_0 = input.LA(1);
+
+                        if ( LA83_0 ==35 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 0) ) {
+                            alt83=1;
+                        }
+                        else if ( LA83_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 1) ) {
+                            alt83=2;
+                        }
+                        else if ( LA83_0 >=39 && LA83_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getDtCRegExAccess().getUnorderedGroup_4(), 2) ) {
+                            alt83=3;
+                        }
+
+
+                        switch (alt83) {
+                    	case 1 :
+                    	    // ../org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/parser/antlr/internal/InternalServicesGrammar.g:3523:4: ({...}? => ( ({...}? => (otherlv_5= '[' (otherlv_6= 'msgCode' otherlv_7= '=' ( (lv_msgCode_8_0= ruleQualifiedName ) ) )? ) ) ) )
+                    	    {
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/serializer/AbstractServicesGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/serializer/AbstractServicesGrammarSemanticSequencer.java
new file mode 100644
index 0000000..6d1d5e7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/serializer/AbstractServicesGrammarSemanticSequencer.java
@@ -0,0 +1,1683 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.serializer;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.common.xtext.serializer.CommonGrammarSemanticSequencer;
+import org.eclipse.osbp.dsl.semantic.common.types.LAnnotationDef;
+import org.eclipse.osbp.dsl.semantic.common.types.LAttributeMatchingConstraint;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertFalse;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCAssertTrue;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDecimalMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCDigits;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCFuture;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNotNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNull;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMax;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCNumericMin;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCPast;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCRegEx;
+import org.eclipse.osbp.dsl.semantic.common.types.LDtCSize;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnum;
+import org.eclipse.osbp.dsl.semantic.common.types.LEnumLiteral;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
+import org.eclipse.osbp.dsl.semantic.common.types.LModifier;
+import org.eclipse.osbp.dsl.semantic.common.types.LMultiplicity;
+import org.eclipse.osbp.dsl.semantic.common.types.LResultFilters;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.service.LDTOService;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService;
+import org.eclipse.osbp.dsl.semantic.service.LInjectedServices;
+import org.eclipse.osbp.dsl.semantic.service.LServiceModel;
+import org.eclipse.osbp.dsl.semantic.service.LServiceOperation;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LValidator;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+import org.eclipse.osbp.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+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.diagnostic.ISemanticSequencerDiagnosticProvider;
+import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
+import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
+import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
+import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
+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.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 abstract class AbstractServicesGrammarSemanticSequencer extends CommonGrammarSemanticSequencer {
+
+	@Inject
+	private ServicesGrammarGrammarAccess grammarAccess;
+	
+	public void createSequence(EObject context, EObject semanticObject) {
+		if(semanticObject.eClass().getEPackage() == OSBPServicePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPServicePackage.LDTO_SERVICE:
+				if(context == grammarAccess.getClassRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Class(context, (LDTOService) semanticObject); 
+					return; 
+				}
+				else if(context == grammarAccess.getClassAccess().getLDTOServiceAnnotationInfoAction_2()) {
+					sequence_Class_LDTOService_2(context, (LDTOService) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LFILTERABLE_ATTRIBUTES:
+				if(context == grammarAccess.getFilterableAttributesRule()) {
+					sequence_FilterableAttributes(context, (LFilterableAttributes) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LINJECTED_SERVICE:
+				if(context == grammarAccess.getInjectedServiceRule()) {
+					sequence_InjectedService(context, (LInjectedService) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LINJECTED_SERVICES:
+				if(context == grammarAccess.getInjectedServicesRule()) {
+					sequence_InjectedServices(context, (LInjectedServices) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LSERVICE_MODEL:
+				if(context == grammarAccess.getLServiceModelRule()) {
+					sequence_LServiceModel(context, (LServiceModel) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LSERVICE_OPERATION:
+				if(context == grammarAccess.getOperationRule()) {
+					sequence_Operation(context, (LServiceOperation) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LSORTABLE_ATTRIBUTES:
+				if(context == grammarAccess.getSortableAttributesRule()) {
+					sequence_SortableAttributes(context, (LSortableAttributes) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPServicePackage.LVALIDATOR:
+				if(context == grammarAccess.getValidatorDefRule()) {
+					sequence_ValidatorDef(context, (LValidator) semanticObject); 
+					return; 
+				}
+				else break;
+			}
+		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
+			case OSBPTypesPackage.LANNOTATION_DEF:
+				if(context == grammarAccess.getAnnotationDefRule()) {
+					sequence_AnnotationDef(context, (LAnnotationDef) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LATTRIBUTE_MATCHING_CONSTRAINT:
+				if(context == grammarAccess.getAttributeMatchingConstraintRule() ||
+				   context == grammarAccess.getResultFilterRule()) {
+					sequence_AttributeMatchingConstraint(context, (LAttributeMatchingConstraint) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDATA_TYPE:
+				if(context == grammarAccess.getDataTypeRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_DataType(context, (LDataType) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_FALSE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertFalseRule()) {
+					sequence_DtCAssertFalse(context, (LDtCAssertFalse) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CASSERT_TRUE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCAssertTrueRule()) {
+					sequence_DtCAssertTrue(context, (LDtCAssertTrue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMaxRule()) {
+					sequence_DtCDecimalMax(context, (LDtCDecimalMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDECIMAL_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDecimalMinRule()) {
+					sequence_DtCDecimalMin(context, (LDtCDecimalMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CDIGITS:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCDigitsRule()) {
+					sequence_DtCDigits(context, (LDtCDigits) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CFUTURE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCFutureRule()) {
+					sequence_DtCFuture(context, (LDtCFuture) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNOT_NULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNotNullRule()) {
+					sequence_DtCNotNull(context, (LDtCNotNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNULL:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getBlobTypeConstraintRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCNullRule()) {
+					sequence_DtCNull(context, (LDtCNull) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MAX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMaxRule()) {
+					sequence_DtCNumericMax(context, (LDtCNumericMax) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CNUMERIC_MIN:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCNumericMinRule()) {
+					sequence_DtCNumericMin(context, (LDtCNumericMin) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CPAST:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDateConstraintRule() ||
+				   context == grammarAccess.getDtCPastRule()) {
+					sequence_DtCPast(context, (LDtCPast) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CREG_EX:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCRegExRule()) {
+					sequence_DtCRegEx(context, (LDtCRegEx) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LDT_CSIZE:
+				if(context == grammarAccess.getAllConstraintsRule() ||
+				   context == grammarAccess.getDataTypeConstraintRule() ||
+				   context == grammarAccess.getDtCSizeRule()) {
+					sequence_DtCSize(context, (LDtCSize) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM:
+				if(context == grammarAccess.getEnumRule() ||
+				   context == grammarAccess.getScalarTypeRule() ||
+				   context == grammarAccess.getTypeRule()) {
+					sequence_Enum(context, (LEnum) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LENUM_LITERAL:
+				if(context == grammarAccess.getEnumLiteralRule()) {
+					sequence_EnumLiteral(context, (LEnumLiteral) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LIMPORT:
+				if(context == grammarAccess.getImportRule()) {
+					sequence_Import(context, (LImport) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LKEY_AND_VALUE:
+				if(context == grammarAccess.getKeyAndValueRule()) {
+					sequence_KeyAndValue(context, (LKeyAndValue) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMODIFIER:
+				if(context == grammarAccess.getModifierRule()) {
+					sequence_Modifier(context, (LModifier) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LMULTIPLICITY:
+				if(context == grammarAccess.getMultiplicityRule()) {
+					sequence_Multiplicity(context, (LMultiplicity) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LRESULT_FILTERS:
+				if(context == grammarAccess.getResultFiltersRule()) {
+					sequence_ResultFilters(context, (LResultFilters) semanticObject); 
+					return; 
+				}
+				else break;
+			case OSBPTypesPackage.LTYPED_PACKAGE:
+				if(context == grammarAccess.getTypedPackageRule()) {
+					sequence_TypedPackage(context, (LTypedPackage) 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:
+	 *     (
+	 *         annotationInfo=Class_LDTOService_2 
+	 *         name=ValidIDWithKeywords 
+	 *         dto=[LDto|TYPE_CROSS_REFERENCE] 
+	 *         (mutablePersistenceId?='mutable'? persistenceId=QualifiedName)? 
+	 *         (validators+=ValidatorDef validators+=ValidatorDef*)? 
+	 *         injectedServices=InjectedServices 
+	 *         operations+=Operation*
+	 *     )
+	 */
+	protected void sequence_Class(EObject context, LDTOService semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     annotations+=AnnotationDef+
+	 */
+	protected void sequence_Class_LDTOService_2(EObject context, LDTOService semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (filterableFeatures+=[LDtoFeature|LFQN] filterableFeatures+=[LDtoFeature|LFQN]*)
+	 */
+	protected void sequence_FilterableAttributes(EObject context, LFilterableAttributes semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (cardinality=Cardinality? service=JvmTypeReference attributeName=ID)
+	 */
+	protected void sequence_InjectedService(EObject context, LInjectedService semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (services+=InjectedService*)
+	 */
+	protected void sequence_InjectedServices(EObject context, LInjectedServices semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     packages+=TypedPackage*
+	 */
+	protected void sequence_LServiceModel(EObject context, LServiceModel semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (annotations+=AnnotationDef* type=JvmTypeReference name=ID (params+=FullJvmFormalParameter params+=FullJvmFormalParameter*)? body=XExpression)
+	 */
+	protected void sequence_Operation(EObject context, LServiceOperation semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (sortableFeatures+=[LDtoFeature|LFQN] sortableFeatures+=[LDtoFeature|LFQN]*)
+	 */
+	protected void sequence_SortableAttributes(EObject context, LSortableAttributes semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Constraint:
+	 *     (validatorType=JvmTypeReference | validatorId=STRING)
+	 */
+	protected void sequence_ValidatorDef(EObject context, LValidator semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/serializer/AbstractServicesGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/serializer/AbstractServicesGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..9932d9f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/serializer/AbstractServicesGrammarSyntacticSequencer.java
@@ -0,0 +1,967 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.serializer;
+
+import com.google.inject.Inject;
+import java.util.List;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+import org.eclipse.xtext.IGrammarAccess;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
+import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
+import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynTransition;
+import org.eclipse.xtext.serializer.sequencer.AbstractSyntacticSequencer;
+
+@SuppressWarnings("all")
+public abstract class AbstractServicesGrammarSyntacticSequencer extends AbstractSyntacticSequencer {
+
+	protected ServicesGrammarGrammarAccess grammarAccess;
+	protected AbstractElementAlias match_AttributeMatchingConstraint_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_Class_SemicolonKeyword_8_3_q;
+	protected AbstractElementAlias match_Class_SemicolonKeyword_9_4_q;
+	protected AbstractElementAlias match_DataType_SemicolonKeyword_3_q;
+	protected AbstractElementAlias match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p;
+	protected AbstractElementAlias match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p;
+	protected AbstractElementAlias match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p;
+	protected AbstractElementAlias match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p;
+	protected AbstractElementAlias match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p;
+	protected AbstractElementAlias match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p;
+	protected AbstractElementAlias match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p;
+	protected AbstractElementAlias match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p;
+	protected AbstractElementAlias match_FilterableAttributes_SemicolonKeyword_4_q;
+	protected AbstractElementAlias match_Import_SemicolonKeyword_2_q;
+	protected AbstractElementAlias match_InjectedService_SemicolonKeyword_5_q;
+	protected AbstractElementAlias match_SortableAttributes_SemicolonKeyword_4_q;
+	protected AbstractElementAlias match_TypedPackage___LeftCurlyBracketKeyword_3_0_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 = (ServicesGrammarGrammarAccess) access;
+		match_AttributeMatchingConstraint_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getAttributeMatchingConstraintAccess().getSemicolonKeyword_3());
+		match_Class_SemicolonKeyword_8_3_q = new TokenAlias(false, true, grammarAccess.getClassAccess().getSemicolonKeyword_8_3());
+		match_Class_SemicolonKeyword_9_4_q = new TokenAlias(false, true, grammarAccess.getClassAccess().getSemicolonKeyword_9_4());
+		match_DataType_SemicolonKeyword_3_q = new TokenAlias(false, true, grammarAccess.getDataTypeAccess().getSemicolonKeyword_3());
+		match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertFalseAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCAssertTrueAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDecimalMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCDigitsAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCFutureAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNotNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNullAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMaxAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCNumericMinAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(false, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getRightSquareBracketKeyword_2_2_1()), new TokenAlias(true, false, grammarAccess.getDtCPastAccess().getLeftSquareBracketKeyword_2_0_0()));
+		match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(false, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getRightSquareBracketKeyword_4_2_1()), new TokenAlias(true, false, grammarAccess.getDtCRegExAccess().getLeftSquareBracketKeyword_4_0_0()));
+		match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(false, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getRightSquareBracketKeyword_6_2_1()), new TokenAlias(true, false, grammarAccess.getDtCSizeAccess().getLeftSquareBracketKeyword_6_0_0()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a = new GroupAlias(true, true, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a = new AlternativeAlias(true, true, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p = new GroupAlias(true, false, new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p = new GroupAlias(true, false, new TokenAlias(true, true, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(false, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p = new GroupAlias(true, false, new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getRightParenthesisKeyword_1_1_1()), new TokenAlias(true, false, grammarAccess.getEnumLiteralAccess().getLeftParenthesisKeyword_1_0_0()));
+		match_FilterableAttributes_SemicolonKeyword_4_q = new TokenAlias(false, true, grammarAccess.getFilterableAttributesAccess().getSemicolonKeyword_4());
+		match_Import_SemicolonKeyword_2_q = new TokenAlias(false, true, grammarAccess.getImportAccess().getSemicolonKeyword_2());
+		match_InjectedService_SemicolonKeyword_5_q = new TokenAlias(false, true, grammarAccess.getInjectedServiceAccess().getSemicolonKeyword_5());
+		match_SortableAttributes_SemicolonKeyword_4_q = new TokenAlias(false, true, grammarAccess.getSortableAttributesAccess().getSemicolonKeyword_4());
+		match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getTypedPackageAccess().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_AttributeMatchingConstraint_SemicolonKeyword_3_q.equals(syntax))
+				emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Class_SemicolonKeyword_8_3_q.equals(syntax))
+				emit_Class_SemicolonKeyword_8_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Class_SemicolonKeyword_9_4_q.equals(syntax))
+				emit_Class_SemicolonKeyword_9_4_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DataType_SemicolonKeyword_3_q.equals(syntax))
+				emit_DataType_SemicolonKeyword_3_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a.equals(syntax))
+				emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p.equals(syntax))
+				emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a.equals(syntax))
+				emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p.equals(syntax))
+				emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a.equals(syntax))
+				emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p.equals(syntax))
+				emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a.equals(syntax))
+				emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p.equals(syntax))
+				emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_FilterableAttributes_SemicolonKeyword_4_q.equals(syntax))
+				emit_FilterableAttributes_SemicolonKeyword_4_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_Import_SemicolonKeyword_2_q.equals(syntax))
+				emit_Import_SemicolonKeyword_2_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_InjectedService_SemicolonKeyword_5_q.equals(syntax))
+				emit_InjectedService_SemicolonKeyword_5_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_SortableAttributes_SemicolonKeyword_4_q.equals(syntax))
+				emit_SortableAttributes_SemicolonKeyword_4_q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if(match_TypedPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
+				emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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:
+	 *     ';'?
+	 */
+	protected void emit_AttributeMatchingConstraint_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Class_SemicolonKeyword_8_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Class_SemicolonKeyword_9_4_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_DataType_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertFalse___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertFalse___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCAssertTrue___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCAssertTrue___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDecimalMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDecimalMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCDigits___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCDigits___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCFuture___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCFuture___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNotNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNotNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNull___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNull___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMax___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMax___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCNumericMin___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCNumericMin___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCPast___LeftSquareBracketKeyword_2_0_0_or_RightSquareBracketKeyword_2_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_LeftSquareBracketKeyword_2_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_a_LeftSquareBracketKeyword_2_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCPast___RightSquareBracketKeyword_2_2_1_p_LeftSquareBracketKeyword_2_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCRegEx___LeftSquareBracketKeyword_4_0_0_or_RightSquareBracketKeyword_4_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_LeftSquareBracketKeyword_4_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_a_LeftSquareBracketKeyword_4_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCRegEx___RightSquareBracketKeyword_4_2_1_p_LeftSquareBracketKeyword_4_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('[' | ']')*
+	 */
+	protected void emit_DtCSize___LeftSquareBracketKeyword_6_0_0_or_RightSquareBracketKeyword_6_2_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']' '['*)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_LeftSquareBracketKeyword_6_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'* '[')+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_a_LeftSquareBracketKeyword_6_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (']'+ '['+)+
+	 */
+	protected void emit_DtCSize___RightSquareBracketKeyword_6_2_1_p_LeftSquareBracketKeyword_6_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('('* ')')+
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_a_RightParenthesisKeyword_1_1_1__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('(' | ')')*
+	 */
+	protected void emit_EnumLiteral___LeftParenthesisKeyword_1_0_0_or_RightParenthesisKeyword_1_1_1__a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')' '('*)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_LeftParenthesisKeyword_1_0_0_a__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'* '(')+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_a_LeftParenthesisKeyword_1_0_0__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     (')'+ '('+)+
+	 */
+	protected void emit_EnumLiteral___RightParenthesisKeyword_1_1_1_p_LeftParenthesisKeyword_1_0_0_p__p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_FilterableAttributes_SemicolonKeyword_4_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_Import_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_InjectedService_SemicolonKeyword_5_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ';'?
+	 */
+	protected void emit_SortableAttributes_SemicolonKeyword_4_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * Syntax:
+	 *     ('{' '}')?
+	 */
+	protected void emit_TypedPackage___LeftCurlyBracketKeyword_3_0_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.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/services/ServicesGrammarGrammarAccess.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/services/ServicesGrammarGrammarAccess.java
new file mode 100644
index 0000000..f1608d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/services/ServicesGrammarGrammarAccess.java
@@ -0,0 +1,2111 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.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.osbp.dsl.common.xtext.services.CommonGrammarGrammarAccess;
+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 ServicesGrammarGrammarAccess extends AbstractGrammarElementFinder {
+	
+	
+	public class LServiceModelElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LServiceModel");
+		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
+		private final RuleCall cPackagesTypedPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		
+		//LServiceModel returns service::LServiceModel:
+		//	packages+=TypedPackage*;
+		public ParserRule getRule() { return rule; }
+
+		//packages+=TypedPackage*
+		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
+
+		//TypedPackage
+		public RuleCall getPackagesTypedPackageParserRuleCall_0() { return cPackagesTypedPackageParserRuleCall_0; }
+	}
+
+	public class ClassElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Class");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLDTOServiceAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Action cLDTOServiceAnnotationInfoAction_2 = (Action)cGroup.eContents().get(2);
+		private final Keyword cDtoserviceKeyword_3 = (Keyword)cGroup.eContents().get(3);
+		private final Assignment cNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cNameValidIDWithKeywordsParserRuleCall_4_0 = (RuleCall)cNameAssignment_4.eContents().get(0);
+		private final Keyword cProvidesKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		private final Assignment cDtoAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final CrossReference cDtoLDtoCrossReference_6_0 = (CrossReference)cDtoAssignment_6.eContents().get(0);
+		private final RuleCall cDtoLDtoTYPE_CROSS_REFERENCEParserRuleCall_6_0_1 = (RuleCall)cDtoLDtoCrossReference_6_0.eContents().get(1);
+		private final Keyword cLeftCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
+		private final Group cGroup_8 = (Group)cGroup.eContents().get(8);
+		private final Assignment cMutablePersistenceIdAssignment_8_0 = (Assignment)cGroup_8.eContents().get(0);
+		private final Keyword cMutablePersistenceIdMutableKeyword_8_0_0 = (Keyword)cMutablePersistenceIdAssignment_8_0.eContents().get(0);
+		private final Keyword cPersistenceUnitKeyword_8_1 = (Keyword)cGroup_8.eContents().get(1);
+		private final Assignment cPersistenceIdAssignment_8_2 = (Assignment)cGroup_8.eContents().get(2);
+		private final RuleCall cPersistenceIdQualifiedNameParserRuleCall_8_2_0 = (RuleCall)cPersistenceIdAssignment_8_2.eContents().get(0);
+		private final Keyword cSemicolonKeyword_8_3 = (Keyword)cGroup_8.eContents().get(3);
+		private final Group cGroup_9 = (Group)cGroup.eContents().get(9);
+		private final Keyword cValidatorsKeyword_9_0 = (Keyword)cGroup_9.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_9_1 = (Keyword)cGroup_9.eContents().get(1);
+		private final Assignment cValidatorsAssignment_9_2 = (Assignment)cGroup_9.eContents().get(2);
+		private final RuleCall cValidatorsValidatorDefParserRuleCall_9_2_0 = (RuleCall)cValidatorsAssignment_9_2.eContents().get(0);
+		private final Group cGroup_9_3 = (Group)cGroup_9.eContents().get(3);
+		private final Keyword cCommaSpaceKeyword_9_3_0 = (Keyword)cGroup_9_3.eContents().get(0);
+		private final Assignment cValidatorsAssignment_9_3_1 = (Assignment)cGroup_9_3.eContents().get(1);
+		private final RuleCall cValidatorsValidatorDefParserRuleCall_9_3_1_0 = (RuleCall)cValidatorsAssignment_9_3_1.eContents().get(0);
+		private final Keyword cSemicolonKeyword_9_4 = (Keyword)cGroup_9.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_9_5 = (Keyword)cGroup_9.eContents().get(5);
+		private final Assignment cInjectedServicesAssignment_10 = (Assignment)cGroup.eContents().get(10);
+		private final RuleCall cInjectedServicesInjectedServicesParserRuleCall_10_0 = (RuleCall)cInjectedServicesAssignment_10.eContents().get(0);
+		private final Assignment cOperationsAssignment_11 = (Assignment)cGroup.eContents().get(11);
+		private final RuleCall cOperationsOperationParserRuleCall_11_0 = (RuleCall)cOperationsAssignment_11.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_12 = (Keyword)cGroup.eContents().get(12);
+		
+		//Class returns service::LDTOService:
+		//	{service::LDTOService} annotations+=AnnotationDef* {service::LDTOService.annotationInfo=current} "dtoservice"
+		//	name=ValidIDWithKeywords "provides" dto=[dto::LDto|TYPE_CROSS_REFERENCE] "{" (mutablePersistenceId?="mutable"?
+		//	"persistenceUnit" persistenceId=QualifiedName ";"?)? ("validators" "{" validators+=ValidatorDef (", "
+		//	validators+=ValidatorDef)* ";"? "}")? injectedServices=InjectedServices operations+=Operation* "}";
+		public ParserRule getRule() { return rule; }
+
+		//{service::LDTOService} annotations+=AnnotationDef* {service::LDTOService.annotationInfo=current} "dtoservice"
+		//name=ValidIDWithKeywords "provides" dto=[dto::LDto|TYPE_CROSS_REFERENCE] "{" (mutablePersistenceId?="mutable"?
+		//"persistenceUnit" persistenceId=QualifiedName ";"?)? ("validators" "{" validators+=ValidatorDef (", "
+		//validators+=ValidatorDef)* ";"? "}")? injectedServices=InjectedServices operations+=Operation* "}"
+		public Group getGroup() { return cGroup; }
+
+		//{service::LDTOService}
+		public Action getLDTOServiceAction_0() { return cLDTOServiceAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//{service::LDTOService.annotationInfo=current}
+		public Action getLDTOServiceAnnotationInfoAction_2() { return cLDTOServiceAnnotationInfoAction_2; }
+
+		//"dtoservice"
+		public Keyword getDtoserviceKeyword_3() { return cDtoserviceKeyword_3; }
+
+		//name=ValidIDWithKeywords
+		public Assignment getNameAssignment_4() { return cNameAssignment_4; }
+
+		//ValidIDWithKeywords
+		public RuleCall getNameValidIDWithKeywordsParserRuleCall_4_0() { return cNameValidIDWithKeywordsParserRuleCall_4_0; }
+
+		//"provides"
+		public Keyword getProvidesKeyword_5() { return cProvidesKeyword_5; }
+
+		//dto=[dto::LDto|TYPE_CROSS_REFERENCE]
+		public Assignment getDtoAssignment_6() { return cDtoAssignment_6; }
+
+		//[dto::LDto|TYPE_CROSS_REFERENCE]
+		public CrossReference getDtoLDtoCrossReference_6_0() { return cDtoLDtoCrossReference_6_0; }
+
+		//TYPE_CROSS_REFERENCE
+		public RuleCall getDtoLDtoTYPE_CROSS_REFERENCEParserRuleCall_6_0_1() { return cDtoLDtoTYPE_CROSS_REFERENCEParserRuleCall_6_0_1; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_7() { return cLeftCurlyBracketKeyword_7; }
+
+		//(mutablePersistenceId?="mutable"? "persistenceUnit" persistenceId=QualifiedName ";"?)?
+		public Group getGroup_8() { return cGroup_8; }
+
+		//mutablePersistenceId?="mutable"?
+		public Assignment getMutablePersistenceIdAssignment_8_0() { return cMutablePersistenceIdAssignment_8_0; }
+
+		//"mutable"
+		public Keyword getMutablePersistenceIdMutableKeyword_8_0_0() { return cMutablePersistenceIdMutableKeyword_8_0_0; }
+
+		//"persistenceUnit"
+		public Keyword getPersistenceUnitKeyword_8_1() { return cPersistenceUnitKeyword_8_1; }
+
+		//persistenceId=QualifiedName
+		public Assignment getPersistenceIdAssignment_8_2() { return cPersistenceIdAssignment_8_2; }
+
+		//QualifiedName
+		public RuleCall getPersistenceIdQualifiedNameParserRuleCall_8_2_0() { return cPersistenceIdQualifiedNameParserRuleCall_8_2_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_8_3() { return cSemicolonKeyword_8_3; }
+
+		//("validators" "{" validators+=ValidatorDef (", " validators+=ValidatorDef)* ";"? "}")?
+		public Group getGroup_9() { return cGroup_9; }
+
+		//"validators"
+		public Keyword getValidatorsKeyword_9_0() { return cValidatorsKeyword_9_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_9_1() { return cLeftCurlyBracketKeyword_9_1; }
+
+		//validators+=ValidatorDef
+		public Assignment getValidatorsAssignment_9_2() { return cValidatorsAssignment_9_2; }
+
+		//ValidatorDef
+		public RuleCall getValidatorsValidatorDefParserRuleCall_9_2_0() { return cValidatorsValidatorDefParserRuleCall_9_2_0; }
+
+		//(", " validators+=ValidatorDef)*
+		public Group getGroup_9_3() { return cGroup_9_3; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_9_3_0() { return cCommaSpaceKeyword_9_3_0; }
+
+		//validators+=ValidatorDef
+		public Assignment getValidatorsAssignment_9_3_1() { return cValidatorsAssignment_9_3_1; }
+
+		//ValidatorDef
+		public RuleCall getValidatorsValidatorDefParserRuleCall_9_3_1_0() { return cValidatorsValidatorDefParserRuleCall_9_3_1_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_9_4() { return cSemicolonKeyword_9_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_9_5() { return cRightCurlyBracketKeyword_9_5; }
+
+		//injectedServices=InjectedServices
+		public Assignment getInjectedServicesAssignment_10() { return cInjectedServicesAssignment_10; }
+
+		//InjectedServices
+		public RuleCall getInjectedServicesInjectedServicesParserRuleCall_10_0() { return cInjectedServicesInjectedServicesParserRuleCall_10_0; }
+
+		//operations+=Operation*
+		public Assignment getOperationsAssignment_11() { return cOperationsAssignment_11; }
+
+		//Operation
+		public RuleCall getOperationsOperationParserRuleCall_11_0() { return cOperationsOperationParserRuleCall_11_0; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_12() { return cRightCurlyBracketKeyword_12; }
+	}
+
+	public class ValidatorDefElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ValidatorDef");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final Group cGroup_0 = (Group)cAlternatives.eContents().get(0);
+		private final Assignment cValidatorTypeAssignment_0_0 = (Assignment)cGroup_0.eContents().get(0);
+		private final RuleCall cValidatorTypeJvmTypeReferenceParserRuleCall_0_0_0 = (RuleCall)cValidatorTypeAssignment_0_0.eContents().get(0);
+		private final Assignment cValidatorIdAssignment_1 = (Assignment)cAlternatives.eContents().get(1);
+		private final RuleCall cValidatorIdSTRINGTerminalRuleCall_1_0 = (RuleCall)cValidatorIdAssignment_1.eContents().get(0);
+		
+		//ValidatorDef returns service::LValidator:
+		//	=> (validatorType=JvmTypeReference) | validatorId=STRING;
+		public ParserRule getRule() { return rule; }
+
+		//=> (validatorType=JvmTypeReference) | validatorId=STRING
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//=> (validatorType=JvmTypeReference)
+		public Group getGroup_0() { return cGroup_0; }
+
+		//validatorType=JvmTypeReference
+		public Assignment getValidatorTypeAssignment_0_0() { return cValidatorTypeAssignment_0_0; }
+
+		//JvmTypeReference
+		public RuleCall getValidatorTypeJvmTypeReferenceParserRuleCall_0_0_0() { return cValidatorTypeJvmTypeReferenceParserRuleCall_0_0_0; }
+
+		//validatorId=STRING
+		public Assignment getValidatorIdAssignment_1() { return cValidatorIdAssignment_1; }
+
+		//STRING
+		public RuleCall getValidatorIdSTRINGTerminalRuleCall_1_0() { return cValidatorIdSTRINGTerminalRuleCall_1_0; }
+	}
+
+	public class InjectedServicesElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InjectedServices");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLInjectedServicesAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cServicesAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cServicesInjectedServiceParserRuleCall_1_0 = (RuleCall)cServicesAssignment_1.eContents().get(0);
+		
+		//InjectedServices returns service::LInjectedServices:
+		//	{service::LInjectedServices} services+=InjectedService*;
+		public ParserRule getRule() { return rule; }
+
+		//{service::LInjectedServices} services+=InjectedService*
+		public Group getGroup() { return cGroup; }
+
+		//{service::LInjectedServices}
+		public Action getLInjectedServicesAction_0() { return cLInjectedServicesAction_0; }
+
+		//services+=InjectedService*
+		public Assignment getServicesAssignment_1() { return cServicesAssignment_1; }
+
+		//InjectedService
+		public RuleCall getServicesInjectedServiceParserRuleCall_1_0() { return cServicesInjectedServiceParserRuleCall_1_0; }
+	}
+
+	public class InjectedServiceElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "InjectedService");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLInjectedServiceAction_0 = (Action)cGroup.eContents().get(0);
+		private final Keyword cInjectServiceKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cCardinalityAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cCardinalityCardinalityEnumRuleCall_2_0 = (RuleCall)cCardinalityAssignment_2.eContents().get(0);
+		private final Assignment cServiceAssignment_3 = (Assignment)cGroup.eContents().get(3);
+		private final RuleCall cServiceJvmTypeReferenceParserRuleCall_3_0 = (RuleCall)cServiceAssignment_3.eContents().get(0);
+		private final Assignment cAttributeNameAssignment_4 = (Assignment)cGroup.eContents().get(4);
+		private final RuleCall cAttributeNameIDTerminalRuleCall_4_0 = (RuleCall)cAttributeNameAssignment_4.eContents().get(0);
+		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//InjectedService returns service::LInjectedService:
+		//	{service::LInjectedService} "injectService" cardinality=Cardinality? service=JvmTypeReference attributeName=ID ";"?;
+		public ParserRule getRule() { return rule; }
+
+		//{service::LInjectedService} "injectService" cardinality=Cardinality? service=JvmTypeReference attributeName=ID ";"?
+		public Group getGroup() { return cGroup; }
+
+		//{service::LInjectedService}
+		public Action getLInjectedServiceAction_0() { return cLInjectedServiceAction_0; }
+
+		//"injectService"
+		public Keyword getInjectServiceKeyword_1() { return cInjectServiceKeyword_1; }
+
+		//cardinality=Cardinality?
+		public Assignment getCardinalityAssignment_2() { return cCardinalityAssignment_2; }
+
+		//Cardinality
+		public RuleCall getCardinalityCardinalityEnumRuleCall_2_0() { return cCardinalityCardinalityEnumRuleCall_2_0; }
+
+		//service=JvmTypeReference
+		public Assignment getServiceAssignment_3() { return cServiceAssignment_3; }
+
+		//JvmTypeReference
+		public RuleCall getServiceJvmTypeReferenceParserRuleCall_3_0() { return cServiceJvmTypeReferenceParserRuleCall_3_0; }
+
+		//attributeName=ID
+		public Assignment getAttributeNameAssignment_4() { return cAttributeNameAssignment_4; }
+
+		//ID
+		public RuleCall getAttributeNameIDTerminalRuleCall_4_0() { return cAttributeNameIDTerminalRuleCall_4_0; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
+	}
+
+	public class FilterableAttributesElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "FilterableAttributes");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cFilterableKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cFilterableFeaturesAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cFilterableFeaturesLDtoFeatureCrossReference_2_0 = (CrossReference)cFilterableFeaturesAssignment_2.eContents().get(0);
+		private final RuleCall cFilterableFeaturesLDtoFeatureLFQNParserRuleCall_2_0_1 = (RuleCall)cFilterableFeaturesLDtoFeatureCrossReference_2_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cCommaKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cFilterableFeaturesAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cFilterableFeaturesLDtoFeatureCrossReference_3_1_0 = (CrossReference)cFilterableFeaturesAssignment_3_1.eContents().get(0);
+		private final RuleCall cFilterableFeaturesLDtoFeatureLFQNParserRuleCall_3_1_0_1 = (RuleCall)cFilterableFeaturesLDtoFeatureCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//FilterableAttributes returns service::LFilterableAttributes:
+		//	"filterable" "{" filterableFeatures+=[dto::LDtoFeature|LFQN] ("," filterableFeatures+=[dto::LDtoFeature|LFQN])* ";"?
+		//	"}";
+		public ParserRule getRule() { return rule; }
+
+		//"filterable" "{" filterableFeatures+=[dto::LDtoFeature|LFQN] ("," filterableFeatures+=[dto::LDtoFeature|LFQN])* ";"? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"filterable"
+		public Keyword getFilterableKeyword_0() { return cFilterableKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//filterableFeatures+=[dto::LDtoFeature|LFQN]
+		public Assignment getFilterableFeaturesAssignment_2() { return cFilterableFeaturesAssignment_2; }
+
+		//[dto::LDtoFeature|LFQN]
+		public CrossReference getFilterableFeaturesLDtoFeatureCrossReference_2_0() { return cFilterableFeaturesLDtoFeatureCrossReference_2_0; }
+
+		//LFQN
+		public RuleCall getFilterableFeaturesLDtoFeatureLFQNParserRuleCall_2_0_1() { return cFilterableFeaturesLDtoFeatureLFQNParserRuleCall_2_0_1; }
+
+		//("," filterableFeatures+=[dto::LDtoFeature|LFQN])*
+		public Group getGroup_3() { return cGroup_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_0() { return cCommaKeyword_3_0; }
+
+		//filterableFeatures+=[dto::LDtoFeature|LFQN]
+		public Assignment getFilterableFeaturesAssignment_3_1() { return cFilterableFeaturesAssignment_3_1; }
+
+		//[dto::LDtoFeature|LFQN]
+		public CrossReference getFilterableFeaturesLDtoFeatureCrossReference_3_1_0() { return cFilterableFeaturesLDtoFeatureCrossReference_3_1_0; }
+
+		//LFQN
+		public RuleCall getFilterableFeaturesLDtoFeatureLFQNParserRuleCall_3_1_0_1() { return cFilterableFeaturesLDtoFeatureLFQNParserRuleCall_3_1_0_1; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class SortableAttributesElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SortableAttributes");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Keyword cSortableKeyword_0 = (Keyword)cGroup.eContents().get(0);
+		private final Keyword cLeftCurlyBracketKeyword_1 = (Keyword)cGroup.eContents().get(1);
+		private final Assignment cSortableFeaturesAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final CrossReference cSortableFeaturesLDtoFeatureCrossReference_2_0 = (CrossReference)cSortableFeaturesAssignment_2.eContents().get(0);
+		private final RuleCall cSortableFeaturesLDtoFeatureLFQNParserRuleCall_2_0_1 = (RuleCall)cSortableFeaturesLDtoFeatureCrossReference_2_0.eContents().get(1);
+		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
+		private final Keyword cCommaKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
+		private final Assignment cSortableFeaturesAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final CrossReference cSortableFeaturesLDtoFeatureCrossReference_3_1_0 = (CrossReference)cSortableFeaturesAssignment_3_1.eContents().get(0);
+		private final RuleCall cSortableFeaturesLDtoFeatureLFQNParserRuleCall_3_1_0_1 = (RuleCall)cSortableFeaturesLDtoFeatureCrossReference_3_1_0.eContents().get(1);
+		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
+		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
+		
+		//SortableAttributes returns service::LSortableAttributes:
+		//	"sortable" "{" sortableFeatures+=[dto::LDtoFeature|LFQN] ("," sortableFeatures+=[dto::LDtoFeature|LFQN])* ";"? "}";
+		public ParserRule getRule() { return rule; }
+
+		//"sortable" "{" sortableFeatures+=[dto::LDtoFeature|LFQN] ("," sortableFeatures+=[dto::LDtoFeature|LFQN])* ";"? "}"
+		public Group getGroup() { return cGroup; }
+
+		//"sortable"
+		public Keyword getSortableKeyword_0() { return cSortableKeyword_0; }
+
+		//"{"
+		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
+
+		//sortableFeatures+=[dto::LDtoFeature|LFQN]
+		public Assignment getSortableFeaturesAssignment_2() { return cSortableFeaturesAssignment_2; }
+
+		//[dto::LDtoFeature|LFQN]
+		public CrossReference getSortableFeaturesLDtoFeatureCrossReference_2_0() { return cSortableFeaturesLDtoFeatureCrossReference_2_0; }
+
+		//LFQN
+		public RuleCall getSortableFeaturesLDtoFeatureLFQNParserRuleCall_2_0_1() { return cSortableFeaturesLDtoFeatureLFQNParserRuleCall_2_0_1; }
+
+		//("," sortableFeatures+=[dto::LDtoFeature|LFQN])*
+		public Group getGroup_3() { return cGroup_3; }
+
+		//","
+		public Keyword getCommaKeyword_3_0() { return cCommaKeyword_3_0; }
+
+		//sortableFeatures+=[dto::LDtoFeature|LFQN]
+		public Assignment getSortableFeaturesAssignment_3_1() { return cSortableFeaturesAssignment_3_1; }
+
+		//[dto::LDtoFeature|LFQN]
+		public CrossReference getSortableFeaturesLDtoFeatureCrossReference_3_1_0() { return cSortableFeaturesLDtoFeatureCrossReference_3_1_0; }
+
+		//LFQN
+		public RuleCall getSortableFeaturesLDtoFeatureLFQNParserRuleCall_3_1_0_1() { return cSortableFeaturesLDtoFeatureLFQNParserRuleCall_3_1_0_1; }
+
+		//";"?
+		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
+
+		//"}"
+		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
+	}
+
+	public class OperationElements extends AbstractParserRuleElementFinder {
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Operation");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Action cLServiceOperationAction_0 = (Action)cGroup.eContents().get(0);
+		private final Assignment cAnnotationsAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cAnnotationsAnnotationDefParserRuleCall_1_0 = (RuleCall)cAnnotationsAssignment_1.eContents().get(0);
+		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
+		private final Keyword cDefKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
+		private final Assignment cTypeAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cTypeJvmTypeReferenceParserRuleCall_2_1_0 = (RuleCall)cTypeAssignment_2_1.eContents().get(0);
+		private final Assignment cNameAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cNameIDTerminalRuleCall_2_2_0 = (RuleCall)cNameAssignment_2_2.eContents().get(0);
+		private final Keyword cLeftParenthesisKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
+		private final Group cGroup_2_4 = (Group)cGroup_2.eContents().get(4);
+		private final Assignment cParamsAssignment_2_4_0 = (Assignment)cGroup_2_4.eContents().get(0);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_4_0_0 = (RuleCall)cParamsAssignment_2_4_0.eContents().get(0);
+		private final Group cGroup_2_4_1 = (Group)cGroup_2_4.eContents().get(1);
+		private final Keyword cCommaSpaceKeyword_2_4_1_0 = (Keyword)cGroup_2_4_1.eContents().get(0);
+		private final Assignment cParamsAssignment_2_4_1_1 = (Assignment)cGroup_2_4_1.eContents().get(1);
+		private final RuleCall cParamsFullJvmFormalParameterParserRuleCall_2_4_1_1_0 = (RuleCall)cParamsAssignment_2_4_1_1.eContents().get(0);
+		private final Keyword cRightParenthesisKeyword_2_5 = (Keyword)cGroup_2.eContents().get(5);
+		private final Assignment cBodyAssignment_2_6 = (Assignment)cGroup_2.eContents().get(6);
+		private final RuleCall cBodyXExpressionParserRuleCall_2_6_0 = (RuleCall)cBodyAssignment_2_6.eContents().get(0);
+		
+		//Operation returns service::LServiceOperation:
+		//	{service::LServiceOperation} annotations+=AnnotationDef* ("def" type=JvmTypeReference name=ID "("
+		//	(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression);
+		public ParserRule getRule() { return rule; }
+
+		//{service::LServiceOperation} annotations+=AnnotationDef* ("def" type=JvmTypeReference name=ID "("
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression)
+		public Group getGroup() { return cGroup; }
+
+		//{service::LServiceOperation}
+		public Action getLServiceOperationAction_0() { return cLServiceOperationAction_0; }
+
+		//annotations+=AnnotationDef*
+		public Assignment getAnnotationsAssignment_1() { return cAnnotationsAssignment_1; }
+
+		//AnnotationDef
+		public RuleCall getAnnotationsAnnotationDefParserRuleCall_1_0() { return cAnnotationsAnnotationDefParserRuleCall_1_0; }
+
+		//"def" type=JvmTypeReference name=ID "(" (params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")"
+		//body=XExpression
+		public Group getGroup_2() { return cGroup_2; }
+
+		//"def"
+		public Keyword getDefKeyword_2_0() { return cDefKeyword_2_0; }
+
+		//type=JvmTypeReference
+		public Assignment getTypeAssignment_2_1() { return cTypeAssignment_2_1; }
+
+		//JvmTypeReference
+		public RuleCall getTypeJvmTypeReferenceParserRuleCall_2_1_0() { return cTypeJvmTypeReferenceParserRuleCall_2_1_0; }
+
+		//name=ID
+		public Assignment getNameAssignment_2_2() { return cNameAssignment_2_2; }
+
+		//ID
+		public RuleCall getNameIDTerminalRuleCall_2_2_0() { return cNameIDTerminalRuleCall_2_2_0; }
+
+		//"("
+		public Keyword getLeftParenthesisKeyword_2_3() { return cLeftParenthesisKeyword_2_3; }
+
+		//(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)?
+		public Group getGroup_2_4() { return cGroup_2_4; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_4_0() { return cParamsAssignment_2_4_0; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_4_0_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_4_0_0; }
+
+		//(", " params+=FullJvmFormalParameter)*
+		public Group getGroup_2_4_1() { return cGroup_2_4_1; }
+
+		//", "
+		public Keyword getCommaSpaceKeyword_2_4_1_0() { return cCommaSpaceKeyword_2_4_1_0; }
+
+		//params+=FullJvmFormalParameter
+		public Assignment getParamsAssignment_2_4_1_1() { return cParamsAssignment_2_4_1_1; }
+
+		//FullJvmFormalParameter
+		public RuleCall getParamsFullJvmFormalParameterParserRuleCall_2_4_1_1_0() { return cParamsFullJvmFormalParameterParserRuleCall_2_4_1_1_0; }
+
+		//")"
+		public Keyword getRightParenthesisKeyword_2_5() { return cRightParenthesisKeyword_2_5; }
+
+		//body=XExpression
+		public Assignment getBodyAssignment_2_6() { return cBodyAssignment_2_6; }
+
+		//XExpression
+		public RuleCall getBodyXExpressionParserRuleCall_2_6_0() { return cBodyXExpressionParserRuleCall_2_6_0; }
+	}
+	
+	
+	public class CardinalityElements extends AbstractEnumRuleElementFinder {
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "Cardinality");
+		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
+		private final EnumLiteralDeclaration cZERO_TO_ONEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
+		private final Keyword cZERO_TO_ONEOptionalKeyword_0_0 = (Keyword)cZERO_TO_ONEEnumLiteralDeclaration_0.eContents().get(0);
+		private final EnumLiteralDeclaration cONE_TO_ONEEnumLiteralDeclaration_1 = (EnumLiteralDeclaration)cAlternatives.eContents().get(1);
+		private final Keyword cONE_TO_ONEMandatoryKeyword_1_0 = (Keyword)cONE_TO_ONEEnumLiteralDeclaration_1.eContents().get(0);
+		private final EnumLiteralDeclaration cZERO_TO_MANYEnumLiteralDeclaration_2 = (EnumLiteralDeclaration)cAlternatives.eContents().get(2);
+		private final Keyword cZERO_TO_MANYZeroToManyKeyword_2_0 = (Keyword)cZERO_TO_MANYEnumLiteralDeclaration_2.eContents().get(0);
+		private final EnumLiteralDeclaration cONE_TO_MANYEnumLiteralDeclaration_3 = (EnumLiteralDeclaration)cAlternatives.eContents().get(3);
+		private final Keyword cONE_TO_MANYOneToManyKeyword_3_0 = (Keyword)cONE_TO_MANYEnumLiteralDeclaration_3.eContents().get(0);
+		
+		//enum Cardinality returns service::LCardinality:
+		//	ZERO_TO_ONE="optional" | ONE_TO_ONE="mandatory" | ZERO_TO_MANY="zeroToMany" | ONE_TO_MANY="oneToMany";
+		public EnumRule getRule() { return rule; }
+
+		//ZERO_TO_ONE="optional" | ONE_TO_ONE="mandatory" | ZERO_TO_MANY="zeroToMany" | ONE_TO_MANY="oneToMany"
+		public Alternatives getAlternatives() { return cAlternatives; }
+
+		//ZERO_TO_ONE="optional"
+		public EnumLiteralDeclaration getZERO_TO_ONEEnumLiteralDeclaration_0() { return cZERO_TO_ONEEnumLiteralDeclaration_0; }
+
+		//"optional"
+		public Keyword getZERO_TO_ONEOptionalKeyword_0_0() { return cZERO_TO_ONEOptionalKeyword_0_0; }
+
+		//ONE_TO_ONE="mandatory"
+		public EnumLiteralDeclaration getONE_TO_ONEEnumLiteralDeclaration_1() { return cONE_TO_ONEEnumLiteralDeclaration_1; }
+
+		//"mandatory"
+		public Keyword getONE_TO_ONEMandatoryKeyword_1_0() { return cONE_TO_ONEMandatoryKeyword_1_0; }
+
+		//ZERO_TO_MANY="zeroToMany"
+		public EnumLiteralDeclaration getZERO_TO_MANYEnumLiteralDeclaration_2() { return cZERO_TO_MANYEnumLiteralDeclaration_2; }
+
+		//"zeroToMany"
+		public Keyword getZERO_TO_MANYZeroToManyKeyword_2_0() { return cZERO_TO_MANYZeroToManyKeyword_2_0; }
+
+		//ONE_TO_MANY="oneToMany"
+		public EnumLiteralDeclaration getONE_TO_MANYEnumLiteralDeclaration_3() { return cONE_TO_MANYEnumLiteralDeclaration_3; }
+
+		//"oneToMany"
+		public Keyword getONE_TO_MANYOneToManyKeyword_3_0() { return cONE_TO_MANYOneToManyKeyword_3_0; }
+	}
+	
+	private final LServiceModelElements pLServiceModel;
+	private final ClassElements pClass;
+	private final ValidatorDefElements pValidatorDef;
+	private final InjectedServicesElements pInjectedServices;
+	private final InjectedServiceElements pInjectedService;
+	private final FilterableAttributesElements pFilterableAttributes;
+	private final SortableAttributesElements pSortableAttributes;
+	private final OperationElements pOperation;
+	private final CardinalityElements unknownRuleCardinality;
+	
+	private final Grammar grammar;
+
+	private final CommonGrammarGrammarAccess gaCommonGrammar;
+
+	@Inject
+	public ServicesGrammarGrammarAccess(GrammarProvider grammarProvider,
+		CommonGrammarGrammarAccess gaCommonGrammar) {
+		this.grammar = internalFindGrammar(grammarProvider);
+		this.gaCommonGrammar = gaCommonGrammar;
+		this.pLServiceModel = new LServiceModelElements();
+		this.pClass = new ClassElements();
+		this.pValidatorDef = new ValidatorDefElements();
+		this.pInjectedServices = new InjectedServicesElements();
+		this.pInjectedService = new InjectedServiceElements();
+		this.pFilterableAttributes = new FilterableAttributesElements();
+		this.pSortableAttributes = new SortableAttributesElements();
+		this.pOperation = new OperationElements();
+		this.unknownRuleCardinality = new CardinalityElements();
+	}
+	
+	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
+		Grammar grammar = grammarProvider.getGrammar(this);
+		while (grammar != null) {
+			if ("org.eclipse.osbp.dsl.services.xtext.ServicesGrammar".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 CommonGrammarGrammarAccess getCommonGrammarGrammarAccess() {
+		return gaCommonGrammar;
+	}
+
+	
+	//LServiceModel returns service::LServiceModel:
+	//	packages+=TypedPackage*;
+	public LServiceModelElements getLServiceModelAccess() {
+		return pLServiceModel;
+	}
+	
+	public ParserRule getLServiceModelRule() {
+		return getLServiceModelAccess().getRule();
+	}
+
+	//Class returns service::LDTOService:
+	//	{service::LDTOService} annotations+=AnnotationDef* {service::LDTOService.annotationInfo=current} "dtoservice"
+	//	name=ValidIDWithKeywords "provides" dto=[dto::LDto|TYPE_CROSS_REFERENCE] "{" (mutablePersistenceId?="mutable"?
+	//	"persistenceUnit" persistenceId=QualifiedName ";"?)? ("validators" "{" validators+=ValidatorDef (", "
+	//	validators+=ValidatorDef)* ";"? "}")? injectedServices=InjectedServices operations+=Operation* "}";
+	public ClassElements getClassAccess() {
+		return pClass;
+	}
+	
+	public ParserRule getClassRule() {
+		return getClassAccess().getRule();
+	}
+
+	//ValidatorDef returns service::LValidator:
+	//	=> (validatorType=JvmTypeReference) | validatorId=STRING;
+	public ValidatorDefElements getValidatorDefAccess() {
+		return pValidatorDef;
+	}
+	
+	public ParserRule getValidatorDefRule() {
+		return getValidatorDefAccess().getRule();
+	}
+
+	//InjectedServices returns service::LInjectedServices:
+	//	{service::LInjectedServices} services+=InjectedService*;
+	public InjectedServicesElements getInjectedServicesAccess() {
+		return pInjectedServices;
+	}
+	
+	public ParserRule getInjectedServicesRule() {
+		return getInjectedServicesAccess().getRule();
+	}
+
+	//InjectedService returns service::LInjectedService:
+	//	{service::LInjectedService} "injectService" cardinality=Cardinality? service=JvmTypeReference attributeName=ID ";"?;
+	public InjectedServiceElements getInjectedServiceAccess() {
+		return pInjectedService;
+	}
+	
+	public ParserRule getInjectedServiceRule() {
+		return getInjectedServiceAccess().getRule();
+	}
+
+	//FilterableAttributes returns service::LFilterableAttributes:
+	//	"filterable" "{" filterableFeatures+=[dto::LDtoFeature|LFQN] ("," filterableFeatures+=[dto::LDtoFeature|LFQN])* ";"?
+	//	"}";
+	public FilterableAttributesElements getFilterableAttributesAccess() {
+		return pFilterableAttributes;
+	}
+	
+	public ParserRule getFilterableAttributesRule() {
+		return getFilterableAttributesAccess().getRule();
+	}
+
+	//SortableAttributes returns service::LSortableAttributes:
+	//	"sortable" "{" sortableFeatures+=[dto::LDtoFeature|LFQN] ("," sortableFeatures+=[dto::LDtoFeature|LFQN])* ";"? "}";
+	public SortableAttributesElements getSortableAttributesAccess() {
+		return pSortableAttributes;
+	}
+	
+	public ParserRule getSortableAttributesRule() {
+		return getSortableAttributesAccess().getRule();
+	}
+
+	//Operation returns service::LServiceOperation:
+	//	{service::LServiceOperation} annotations+=AnnotationDef* ("def" type=JvmTypeReference name=ID "("
+	//	(params+=FullJvmFormalParameter (", " params+=FullJvmFormalParameter)*)? ")" body=XExpression);
+	public OperationElements getOperationAccess() {
+		return pOperation;
+	}
+	
+	public ParserRule getOperationRule() {
+		return getOperationAccess().getRule();
+	}
+
+	//enum Cardinality returns service::LCardinality:
+	//	ZERO_TO_ONE="optional" | ONE_TO_ONE="mandatory" | ZERO_TO_MANY="zeroToMany" | ONE_TO_MANY="oneToMany";
+	public CardinalityElements getCardinalityAccess() {
+		return unknownRuleCardinality;
+	}
+	
+	public EnumRule getCardinalityRule() {
+		return getCardinalityAccess().getRule();
+	}
+
+	//TypedPackage returns types::LTypedPackage:
+	//	{types::LTypedPackage} "package" name=QualifiedName ("{" imports+=Import* types+=Type* "}")?;
+	public CommonGrammarGrammarAccess.TypedPackageElements getTypedPackageAccess() {
+		return gaCommonGrammar.getTypedPackageAccess();
+	}
+	
+	public ParserRule getTypedPackageRule() {
+		return getTypedPackageAccess().getRule();
+	}
+
+	//Type returns types::LType:
+	//	ScalarType | Class;
+	public CommonGrammarGrammarAccess.TypeElements getTypeAccess() {
+		return gaCommonGrammar.getTypeAccess();
+	}
+	
+	public ParserRule getTypeRule() {
+		return getTypeAccess().getRule();
+	}
+
+	//Import returns types::LImport:
+	//	"import" importedNamespace=LQualifiedNameWithWildCard ";"?;
+	public CommonGrammarGrammarAccess.ImportElements getImportAccess() {
+		return gaCommonGrammar.getImportAccess();
+	}
+	
+	public ParserRule getImportRule() {
+		return getImportAccess().getRule();
+	}
+
+	//DataType returns types::LDataType:
+	//	"datatype" name=ValidIDWithKeywords ("jvmType" jvmTypeReference=JvmTypeReference asPrimitive?="as primitive"?
+	//	constraints+=DataTypeConstraint* ("properties" "(" properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")? |
+	//	date?="dateType" dateType=DateType constraints+=DateConstraint* ("properties" "(" properties+=KeyAndValue (", "
+	//	properties+=KeyAndValue)* ")")? | asBlob?="as blob" constraints+=BlobTypeConstraint* ("properties" "("
+	//	properties+=KeyAndValue (", " properties+=KeyAndValue)* ")")?) ";"?;
+	public CommonGrammarGrammarAccess.DataTypeElements getDataTypeAccess() {
+		return gaCommonGrammar.getDataTypeAccess();
+	}
+	
+	public ParserRule getDataTypeRule() {
+		return getDataTypeAccess().getRule();
+	}
+
+	//AllConstraints returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize | DtCFuture | DtCPast;
+	public CommonGrammarGrammarAccess.AllConstraintsElements getAllConstraintsAccess() {
+		return gaCommonGrammar.getAllConstraintsAccess();
+	}
+	
+	public ParserRule getAllConstraintsRule() {
+		return getAllConstraintsAccess().getRule();
+	}
+
+	//DataTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCAssertFalse | DtCAssertTrue | DtCDecimalMax | DtCDecimalMin | DtCDigits | DtCNumericMax | DtCNumericMin |
+	//	DtCNotNull | DtCNull | DtCRegEx | DtCSize;
+	public CommonGrammarGrammarAccess.DataTypeConstraintElements getDataTypeConstraintAccess() {
+		return gaCommonGrammar.getDataTypeConstraintAccess();
+	}
+	
+	public ParserRule getDataTypeConstraintRule() {
+		return getDataTypeConstraintAccess().getRule();
+	}
+
+	//DateConstraint returns types::LDatatypeConstraint:
+	//	DtCFuture | DtCPast | DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.DateConstraintElements getDateConstraintAccess() {
+		return gaCommonGrammar.getDateConstraintAccess();
+	}
+	
+	public ParserRule getDateConstraintRule() {
+		return getDateConstraintAccess().getRule();
+	}
+
+	//BlobTypeConstraint returns types::LDatatypeConstraint:
+	//	DtCNotNull | DtCNull;
+	public CommonGrammarGrammarAccess.BlobTypeConstraintElements getBlobTypeConstraintAccess() {
+		return gaCommonGrammar.getBlobTypeConstraintAccess();
+	}
+	
+	public ParserRule getBlobTypeConstraintRule() {
+		return getBlobTypeConstraintAccess().getRule();
+	}
+
+	//enum ConstraintSeverity returns types::LConstraintSeverity:
+	//	INFO="info" | WARNING="warn" | ERROR="error";
+	public CommonGrammarGrammarAccess.ConstraintSeverityElements getConstraintSeverityAccess() {
+		return gaCommonGrammar.getConstraintSeverityAccess();
+	}
+	
+	public EnumRule getConstraintSeverityRule() {
+		return getConstraintSeverityAccess().getRule();
+	}
+
+	//DtCAssertFalse returns types::LDtCAssertFalse:
+	//	{types::LDtCAssertFalse} "isFalse" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertFalseElements getDtCAssertFalseAccess() {
+		return gaCommonGrammar.getDtCAssertFalseAccess();
+	}
+	
+	public ParserRule getDtCAssertFalseRule() {
+		return getDtCAssertFalseAccess().getRule();
+	}
+
+	//DtCAssertTrue returns types::LDtCAssertTrue:
+	//	{types::LDtCAssertTrue} "isTrue" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCAssertTrueElements getDtCAssertTrueAccess() {
+		return gaCommonGrammar.getDtCAssertTrueAccess();
+	}
+	
+	public ParserRule getDtCAssertTrueRule() {
+		return getDtCAssertTrueAccess().getRule();
+	}
+
+	//DtCDecimalMax returns types::LDtCDecimalMax:
+	//	{types::LDtCDecimalMax} "maxDecimal" "(" max=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMaxElements getDtCDecimalMaxAccess() {
+		return gaCommonGrammar.getDtCDecimalMaxAccess();
+	}
+	
+	public ParserRule getDtCDecimalMaxRule() {
+		return getDtCDecimalMaxAccess().getRule();
+	}
+
+	//DtCDecimalMin returns types::LDtCDecimalMin:
+	//	{types::LDtCDecimalMin} "minDecimal" "(" min=LDecimal ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDecimalMinElements getDtCDecimalMinAccess() {
+		return gaCommonGrammar.getDtCDecimalMinAccess();
+	}
+	
+	public ParserRule getDtCDecimalMinRule() {
+		return getDtCDecimalMinAccess().getRule();
+	}
+
+	//DtCDigits returns types::LDtCDigits:
+	//	{types::LDtCDigits} "digits" "(" intDigits=INT ", " fractionDigits=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? &
+	//	("msgI18nKey" "=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCDigitsElements getDtCDigitsAccess() {
+		return gaCommonGrammar.getDtCDigitsAccess();
+	}
+	
+	public ParserRule getDtCDigitsRule() {
+		return getDtCDigitsAccess().getRule();
+	}
+
+	//DtCFuture returns types::LDtCFuture:
+	//	{types::LDtCFuture} "isFuture" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCFutureElements getDtCFutureAccess() {
+		return gaCommonGrammar.getDtCFutureAccess();
+	}
+	
+	public ParserRule getDtCFutureRule() {
+		return getDtCFutureAccess().getRule();
+	}
+
+	//DtCPast returns types::LDtCPast:
+	//	{types::LDtCPast} "isPast" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCPastElements getDtCPastAccess() {
+		return gaCommonGrammar.getDtCPastAccess();
+	}
+	
+	public ParserRule getDtCPastRule() {
+		return getDtCPastAccess().getRule();
+	}
+
+	//DtCNumericMax returns types::LDtCNumericMax:
+	//	{types::LDtCNumericMax} "maxNumber" "(" max=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMaxElements getDtCNumericMaxAccess() {
+		return gaCommonGrammar.getDtCNumericMaxAccess();
+	}
+	
+	public ParserRule getDtCNumericMaxRule() {
+		return getDtCNumericMaxAccess().getRule();
+	}
+
+	//DtCNumericMin returns types::LDtCNumericMin:
+	//	{types::LDtCNumericMin} "minNumber" "(" min=LInt ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCNumericMinElements getDtCNumericMinAccess() {
+		return gaCommonGrammar.getDtCNumericMinAccess();
+	}
+	
+	public ParserRule getDtCNumericMinRule() {
+		return getDtCNumericMinAccess().getRule();
+	}
+
+	//DtCNotNull returns types::LDtCNotNull:
+	//	{types::LDtCNotNull} "isNotNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNotNullElements getDtCNotNullAccess() {
+		return gaCommonGrammar.getDtCNotNullAccess();
+	}
+	
+	public ParserRule getDtCNotNullRule() {
+		return getDtCNotNullAccess().getRule();
+	}
+
+	//DtCNull returns types::LDtCNull:
+	//	{types::LDtCNull} "isNull" ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "=" msgI18nKey=QualifiedName)?
+	//	& ("severity" "=" severity=ConstraintSeverity)? "]")?;
+	public CommonGrammarGrammarAccess.DtCNullElements getDtCNullAccess() {
+		return gaCommonGrammar.getDtCNullAccess();
+	}
+	
+	public ParserRule getDtCNullRule() {
+		return getDtCNullAccess().getRule();
+	}
+
+	//DtCRegEx returns types::LDtCRegEx:
+	//	{types::LDtCRegEx} "regex" "(" pattern=STRING ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey" "="
+	//	msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCRegExElements getDtCRegExAccess() {
+		return gaCommonGrammar.getDtCRegExAccess();
+	}
+	
+	public ParserRule getDtCRegExRule() {
+		return getDtCRegExAccess().getRule();
+	}
+
+	//DtCSize returns types::LDtCSize:
+	//	{types::LDtCSize} "minMaxSize" "(" min=INT ", " max=INT ("[" ("msgCode" "=" msgCode=QualifiedName)? & ("msgI18nKey"
+	//	"=" msgI18nKey=QualifiedName)? & ("severity" "=" severity=ConstraintSeverity)? "]")? ")";
+	public CommonGrammarGrammarAccess.DtCSizeElements getDtCSizeAccess() {
+		return gaCommonGrammar.getDtCSizeAccess();
+	}
+	
+	public ParserRule getDtCSizeRule() {
+		return getDtCSizeAccess().getRule();
+	}
+
+	//enum DateType returns types::LDateType:
+	//	DATE="date" | TIME="time" | TIMESTAMP="timestamp";
+	public CommonGrammarGrammarAccess.DateTypeElements getDateTypeAccess() {
+		return gaCommonGrammar.getDateTypeAccess();
+	}
+	
+	public EnumRule getDateTypeRule() {
+		return getDateTypeAccess().getRule();
+	}
+
+	//ScalarType returns types::LScalarType:
+	//	DataType | Enum;
+	public CommonGrammarGrammarAccess.ScalarTypeElements getScalarTypeAccess() {
+		return gaCommonGrammar.getScalarTypeAccess();
+	}
+	
+	public ParserRule getScalarTypeRule() {
+		return getScalarTypeAccess().getRule();
+	}
+
+	//Modifier returns types::LModifier:
+	//	final?="final"? & static?="static"? & visibility=LVisibility;
+	public CommonGrammarGrammarAccess.ModifierElements getModifierAccess() {
+		return gaCommonGrammar.getModifierAccess();
+	}
+	
+	public ParserRule getModifierRule() {
+		return getModifierAccess().getRule();
+	}
+
+	//Enum returns types::LEnum:
+	//	"enum" name=ID "{" literals+=EnumLiteral (", " literals+=EnumLiteral)* "}";
+	public CommonGrammarGrammarAccess.EnumElements getEnumAccess() {
+		return gaCommonGrammar.getEnumAccess();
+	}
+	
+	public ParserRule getEnumRule() {
+		return getEnumAccess().getRule();
+	}
+
+	//EnumLiteral returns types::LEnumLiteral:
+	//	name=ID ("(" default?="asDefault"? & null?="forNull"? ")" ("=" value=INT)?)?;
+	public CommonGrammarGrammarAccess.EnumLiteralElements getEnumLiteralAccess() {
+		return gaCommonGrammar.getEnumLiteralAccess();
+	}
+	
+	public ParserRule getEnumLiteralRule() {
+		return getEnumLiteralAccess().getRule();
+	}
+
+	//AnnotationDef returns types::LAnnotationDef:
+	//	=> (annotation=XAnnotation);
+	public CommonGrammarGrammarAccess.AnnotationDefElements getAnnotationDefAccess() {
+		return gaCommonGrammar.getAnnotationDefAccess();
+	}
+	
+	public ParserRule getAnnotationDefRule() {
+		return getAnnotationDefAccess().getRule();
+	}
+
+	//enum LVisibility returns types::LVisibility:
+	//	PACKAGE="package" | PRIVATE="private" | PROTECTED="protected" | PUBLIC="public";
+	public CommonGrammarGrammarAccess.LVisibilityElements getLVisibilityAccess() {
+		return gaCommonGrammar.getLVisibilityAccess();
+	}
+	
+	public EnumRule getLVisibilityRule() {
+		return getLVisibilityAccess().getRule();
+	}
+
+	//ResultFilters returns types::LResultFilters:
+	//	{types::LResultFilters} "constraints" "{" resultFilters+=ResultFilter* "}";
+	public CommonGrammarGrammarAccess.ResultFiltersElements getResultFiltersAccess() {
+		return gaCommonGrammar.getResultFiltersAccess();
+	}
+	
+	public ParserRule getResultFiltersRule() {
+		return getResultFiltersAccess().getRule();
+	}
+
+	//ResultFilter returns types::LResultFilter:
+	//	AttributeMatchingConstraint;
+	public CommonGrammarGrammarAccess.ResultFilterElements getResultFilterAccess() {
+		return gaCommonGrammar.getResultFilterAccess();
+	}
+	
+	public ParserRule getResultFilterRule() {
+		return getResultFilterAccess().getRule();
+	}
+
+	//AttributeMatchingConstraint returns types::LAttributeMatchingConstraint:
+	//	attribute=[types::LAttribute] comparatorType=LComparatorType (matchingValue=STRING | =>
+	//	matchingLiteral=[types::LEnumLiteral]) ";"?;
+	public CommonGrammarGrammarAccess.AttributeMatchingConstraintElements getAttributeMatchingConstraintAccess() {
+		return gaCommonGrammar.getAttributeMatchingConstraintAccess();
+	}
+	
+	public ParserRule getAttributeMatchingConstraintRule() {
+		return getAttributeMatchingConstraintAccess().getRule();
+	}
+
+	//KeyAndValue returns types::LKeyAndValue:
+	//	"key" "=" key=STRING "value" "=" value=STRING;
+	public CommonGrammarGrammarAccess.KeyAndValueElements getKeyAndValueAccess() {
+		return gaCommonGrammar.getKeyAndValueAccess();
+	}
+	
+	public ParserRule getKeyAndValueRule() {
+		return getKeyAndValueAccess().getRule();
+	}
+
+	//enum LComparatorType returns types::LComparatorType:
+	//	EQUALS="==" | GREATER=">" | LOWER="<" | GREATER_EQ=">=" | LOWER_EQ="<=" | NOT_EQ="<>";
+	public CommonGrammarGrammarAccess.LComparatorTypeElements getLComparatorTypeAccess() {
+		return gaCommonGrammar.getLComparatorTypeAccess();
+	}
+	
+	public EnumRule getLComparatorTypeRule() {
+		return getLComparatorTypeAccess().getRule();
+	}
+
+	//LQualifiedNameWithWildCard:
+	//	QualifiedName ("." "*")?;
+	public CommonGrammarGrammarAccess.LQualifiedNameWithWildCardElements getLQualifiedNameWithWildCardAccess() {
+		return gaCommonGrammar.getLQualifiedNameWithWildCardAccess();
+	}
+	
+	public ParserRule getLQualifiedNameWithWildCardRule() {
+		return getLQualifiedNameWithWildCardAccess().getRule();
+	}
+
+	//LFQN:
+	//	ID ("." ID)*;
+	public CommonGrammarGrammarAccess.LFQNElements getLFQNAccess() {
+		return gaCommonGrammar.getLFQNAccess();
+	}
+	
+	public ParserRule getLFQNRule() {
+		return getLFQNAccess().getRule();
+	}
+
+	//TYPE_CROSS_REFERENCE:
+	//	ID;
+	public CommonGrammarGrammarAccess.TYPE_CROSS_REFERENCEElements getTYPE_CROSS_REFERENCEAccess() {
+		return gaCommonGrammar.getTYPE_CROSS_REFERENCEAccess();
+	}
+	
+	public ParserRule getTYPE_CROSS_REFERENCERule() {
+		return getTYPE_CROSS_REFERENCEAccess().getRule();
+	}
+
+	//ValidIDWithKeywords:
+	//	"cachable" | "id" | "uuid" | "transient" | "version" | "derived" "collection" | "refers" | "settings" | "lazy" |
+	//	"notnull" | "dto" | "date" | "mapto" | "ref" | "cascade" | "var" | ID;
+	public CommonGrammarGrammarAccess.ValidIDWithKeywordsElements getValidIDWithKeywordsAccess() {
+		return gaCommonGrammar.getValidIDWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidIDWithKeywordsRule() {
+		return getValidIDWithKeywordsAccess().getRule();
+	}
+
+	//ValidLFQNWithKeywords:
+	//	ValidIDWithKeywords ("." ValidIDWithKeywords)*;
+	public CommonGrammarGrammarAccess.ValidLFQNWithKeywordsElements getValidLFQNWithKeywordsAccess() {
+		return gaCommonGrammar.getValidLFQNWithKeywordsAccess();
+	}
+	
+	public ParserRule getValidLFQNWithKeywordsRule() {
+		return getValidLFQNWithKeywordsAccess().getRule();
+	}
+
+	//Multiplicity returns types::LMultiplicity:
+	//	"[" lower=LowerBound (".." upper=UpperBound)? "]";
+	public CommonGrammarGrammarAccess.MultiplicityElements getMultiplicityAccess() {
+		return gaCommonGrammar.getMultiplicityAccess();
+	}
+	
+	public ParserRule getMultiplicityRule() {
+		return getMultiplicityAccess().getRule();
+	}
+
+	//enum LowerBound returns types::LLowerBound:
+	//	MANY="*" | ZERO="0" | OPTIONAL="?" | ATLEASTONE="+" | ONE="1";
+	public CommonGrammarGrammarAccess.LowerBoundElements getLowerBoundAccess() {
+		return gaCommonGrammar.getLowerBoundAccess();
+	}
+	
+	public EnumRule getLowerBoundRule() {
+		return getLowerBoundAccess().getRule();
+	}
+
+	//enum UpperBound returns types::LUpperBound:
+	//	MANY="*" | ONE="1";
+	public CommonGrammarGrammarAccess.UpperBoundElements getUpperBoundAccess() {
+		return gaCommonGrammar.getUpperBoundAccess();
+	}
+	
+	public EnumRule getUpperBoundRule() {
+		return getUpperBoundAccess().getRule();
+	}
+
+	//LInt returns ecore::EInt:
+	//	("+" | "-")? INT;
+	public CommonGrammarGrammarAccess.LIntElements getLIntAccess() {
+		return gaCommonGrammar.getLIntAccess();
+	}
+	
+	public ParserRule getLIntRule() {
+		return getLIntAccess().getRule();
+	}
+
+	//LDecimal returns ecore::EFloat:
+	//	LInt ("." INT)?;
+	public CommonGrammarGrammarAccess.LDecimalElements getLDecimalAccess() {
+		return gaCommonGrammar.getLDecimalAccess();
+	}
+	
+	public ParserRule getLDecimalRule() {
+		return getLDecimalAccess().getRule();
+	}
+
+	//XAnnotation:
+	//	{XAnnotation} "@" annotationType=[types::JvmAnnotationType|QualifiedName] ("("
+	//	(elementValuePairs+=XAnnotationElementValuePair ("," elementValuePairs+=XAnnotationElementValuePair)* |
+	//	value=XAnnotationElementValueOrCommaList)? ")")?;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElements getXAnnotationAccess() {
+		return gaCommonGrammar.getXAnnotationAccess();
+	}
+	
+	public ParserRule getXAnnotationRule() {
+		return getXAnnotationAccess().getRule();
+	}
+
+	//XAnnotationElementValuePair:
+	//	=> (element=[types::JvmOperation|ValidID] "=") value=XAnnotationElementValue;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValuePairElements getXAnnotationElementValuePairAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAnnotationElementValueOrCommaListAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueOrCommaListRule() {
+		return getXAnnotationElementValueOrCommaListAccess().getRule();
+	}
+
+	//XAnnotationElementValue returns xbase::XExpression:
+	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
+	//	XAnnotationOrExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
+		return gaCommonGrammar.getXAnnotationElementValueAccess();
+	}
+	
+	public ParserRule getXAnnotationElementValueRule() {
+		return getXAnnotationElementValueAccess().getRule();
+	}
+
+	//XAnnotationOrExpression returns xbase::XExpression:
+	//	XAnnotation | XExpression;
+	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
+		return gaCommonGrammar.getXAnnotationOrExpressionAccess();
+	}
+	
+	public ParserRule getXAnnotationOrExpressionRule() {
+		return getXAnnotationOrExpressionAccess().getRule();
+	}
+
+	//XExpression:
+	//	XAssignment;
+	public XbaseGrammarAccess.XExpressionElements getXExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAssignmentAccess();
+	}
+	
+	public ParserRule getXAssignmentRule() {
+		return getXAssignmentAccess().getRule();
+	}
+
+	//OpSingleAssign:
+	//	"=";
+	public XbaseGrammarAccess.OpSingleAssignElements getOpSingleAssignAccess() {
+		return gaCommonGrammar.getOpSingleAssignAccess();
+	}
+	
+	public ParserRule getOpSingleAssignRule() {
+		return getOpSingleAssignAccess().getRule();
+	}
+
+	//OpMultiAssign:
+	//	"+=" | "-=" | "*=" | "/=" | "%=" | "<" "<" "=" | ">" ">"? ">=";
+	public XbaseGrammarAccess.OpMultiAssignElements getOpMultiAssignAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOrExpressionAccess();
+	}
+	
+	public ParserRule getXOrExpressionRule() {
+		return getXOrExpressionAccess().getRule();
+	}
+
+	//OpOr:
+	//	"||";
+	public XbaseGrammarAccess.OpOrElements getOpOrAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAndExpressionAccess();
+	}
+	
+	public ParserRule getXAndExpressionRule() {
+		return getXAndExpressionAccess().getRule();
+	}
+
+	//OpAnd:
+	//	"&&";
+	public XbaseGrammarAccess.OpAndElements getOpAndAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXEqualityExpressionAccess();
+	}
+	
+	public ParserRule getXEqualityExpressionRule() {
+		return getXEqualityExpressionAccess().getRule();
+	}
+
+	//OpEquality:
+	//	"==" | "!=" | "===" | "!==";
+	public XbaseGrammarAccess.OpEqualityElements getOpEqualityAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXRelationalExpressionAccess();
+	}
+	
+	public ParserRule getXRelationalExpressionRule() {
+		return getXRelationalExpressionAccess().getRule();
+	}
+
+	//OpCompare:
+	//	">=" | "<" "=" | ">" | "<";
+	public XbaseGrammarAccess.OpCompareElements getOpCompareAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXOtherOperatorExpressionAccess();
+	}
+	
+	public ParserRule getXOtherOperatorExpressionRule() {
+		return getXOtherOperatorExpressionAccess().getRule();
+	}
+
+	//OpOther:
+	//	"->" | "..<" | ">" ".." | ".." | "=>" | ">" (=> (">" ">") | ">") | "<" (=> ("<" "<") | "<" | "=>") | "<>" | "?:";
+	public XbaseGrammarAccess.OpOtherElements getOpOtherAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXAdditiveExpressionAccess();
+	}
+	
+	public ParserRule getXAdditiveExpressionRule() {
+		return getXAdditiveExpressionAccess().getRule();
+	}
+
+	//OpAdd:
+	//	"+" | "-";
+	public XbaseGrammarAccess.OpAddElements getOpAddAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXMultiplicativeExpressionAccess();
+	}
+	
+	public ParserRule getXMultiplicativeExpressionRule() {
+		return getXMultiplicativeExpressionAccess().getRule();
+	}
+
+	//OpMulti:
+	//	"*" | "**" | "/" | "%";
+	public XbaseGrammarAccess.OpMultiElements getOpMultiAccess() {
+		return gaCommonGrammar.getOpMultiAccess();
+	}
+	
+	public ParserRule getOpMultiRule() {
+		return getOpMultiAccess().getRule();
+	}
+
+	//XUnaryOperation returns XExpression:
+	//	{XUnaryOperation} feature=[types::JvmIdentifiableElement|OpUnary] operand=XUnaryOperation | XCastedExpression;
+	public XbaseGrammarAccess.XUnaryOperationElements getXUnaryOperationAccess() {
+		return gaCommonGrammar.getXUnaryOperationAccess();
+	}
+	
+	public ParserRule getXUnaryOperationRule() {
+		return getXUnaryOperationAccess().getRule();
+	}
+
+	//OpUnary:
+	//	"!" | "-" | "+";
+	public XbaseGrammarAccess.OpUnaryElements getOpUnaryAccess() {
+		return gaCommonGrammar.getOpUnaryAccess();
+	}
+	
+	public ParserRule getOpUnaryRule() {
+		return getOpUnaryAccess().getRule();
+	}
+
+	//XCastedExpression returns XExpression:
+	//	XPostfixOperation (=> ({XCastedExpression.target=current} "as") type=JvmTypeReference)*;
+	public XbaseGrammarAccess.XCastedExpressionElements getXCastedExpressionAccess() {
+		return gaCommonGrammar.getXCastedExpressionAccess();
+	}
+	
+	public ParserRule getXCastedExpressionRule() {
+		return getXCastedExpressionAccess().getRule();
+	}
+
+	//XPostfixOperation returns XExpression:
+	//	XMemberFeatureCall => ({XPostfixOperation.operand=current} feature=[types::JvmIdentifiableElement|OpPostfix])?;
+	public XbaseGrammarAccess.XPostfixOperationElements getXPostfixOperationAccess() {
+		return gaCommonGrammar.getXPostfixOperationAccess();
+	}
+	
+	public ParserRule getXPostfixOperationRule() {
+		return getXPostfixOperationAccess().getRule();
+	}
+
+	//OpPostfix:
+	//	"++" | "--";
+	public XbaseGrammarAccess.OpPostfixElements getOpPostfixAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getXPrimaryExpressionAccess();
+	}
+	
+	public ParserRule getXPrimaryExpressionRule() {
+		return getXPrimaryExpressionAccess().getRule();
+	}
+
+	//XLiteral returns XExpression:
+	//	XCollectionLiteral | XClosure | XBooleanLiteral | XNumberLiteral | XNullLiteral | XStringLiteral | XTypeLiteral;
+	public XbaseGrammarAccess.XLiteralElements getXLiteralAccess() {
+		return gaCommonGrammar.getXLiteralAccess();
+	}
+	
+	public ParserRule getXLiteralRule() {
+		return getXLiteralAccess().getRule();
+	}
+
+	//XCollectionLiteral:
+	//	XSetLiteral | XListLiteral;
+	public XbaseGrammarAccess.XCollectionLiteralElements getXCollectionLiteralAccess() {
+		return gaCommonGrammar.getXCollectionLiteralAccess();
+	}
+	
+	public ParserRule getXCollectionLiteralRule() {
+		return getXCollectionLiteralAccess().getRule();
+	}
+
+	//XSetLiteral:
+	//	{XSetLiteral} "#" "{" (elements+=XExpression ("," elements+=XExpression)*)? "}";
+	public XbaseGrammarAccess.XSetLiteralElements getXSetLiteralAccess() {
+		return gaCommonGrammar.getXSetLiteralAccess();
+	}
+	
+	public ParserRule getXSetLiteralRule() {
+		return getXSetLiteralAccess().getRule();
+	}
+
+	//XListLiteral:
+	//	{XListLiteral} "#" "[" (elements+=XExpression ("," elements+=XExpression)*)? "]";
+	public XbaseGrammarAccess.XListLiteralElements getXListLiteralAccess() {
+		return gaCommonGrammar.getXListLiteralAccess();
+	}
+	
+	public ParserRule getXListLiteralRule() {
+		return getXListLiteralAccess().getRule();
+	}
+
+	//XClosure returns XExpression:
+	//	=> ({XClosure} "[") => ((declaredFormalParameters+=JvmFormalParameter (","
+	//	declaredFormalParameters+=JvmFormalParameter)*)? explicitSyntax?="|")? expression=XExpressionInClosure "]";
+	public XbaseGrammarAccess.XClosureElements getXClosureAccess() {
+		return gaCommonGrammar.getXClosureAccess();
+	}
+	
+	public ParserRule getXClosureRule() {
+		return getXClosureAccess().getRule();
+	}
+
+	//XExpressionInClosure returns XExpression:
+	//	{XBlockExpression} (expressions+=XExpressionOrVarDeclaration ";"?)*;
+	public XbaseGrammarAccess.XExpressionInClosureElements getXExpressionInClosureAccess() {
+		return gaCommonGrammar.getXExpressionInClosureAccess();
+	}
+	
+	public ParserRule getXExpressionInClosureRule() {
+		return getXExpressionInClosureAccess().getRule();
+	}
+
+	//XShortClosure returns XExpression:
+	//	=> ({XClosure} (declaredFormalParameters+=JvmFormalParameter ("," declaredFormalParameters+=JvmFormalParameter)*)?
+	//	explicitSyntax?="|") expression=XExpression;
+	public XbaseGrammarAccess.XShortClosureElements getXShortClosureAccess() {
+		return gaCommonGrammar.getXShortClosureAccess();
+	}
+	
+	public ParserRule getXShortClosureRule() {
+		return getXShortClosureAccess().getRule();
+	}
+
+	//XParenthesizedExpression returns XExpression:
+	//	"(" XExpression ")";
+	public XbaseGrammarAccess.XParenthesizedExpressionElements getXParenthesizedExpressionAccess() {
+		return gaCommonGrammar.getXParenthesizedExpressionAccess();
+	}
+	
+	public ParserRule getXParenthesizedExpressionRule() {
+		return getXParenthesizedExpressionAccess().getRule();
+	}
+
+	//XIfExpression returns XExpression:
+	//	{XIfExpression} "if" "(" if=XExpression ")" then=XExpression ("else" else=XExpression)?;
+	public XbaseGrammarAccess.XIfExpressionElements getXIfExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXSwitchExpressionAccess();
+	}
+	
+	public ParserRule getXSwitchExpressionRule() {
+		return getXSwitchExpressionAccess().getRule();
+	}
+
+	//XCasePart:
+	//	{XCasePart} typeGuard=JvmTypeReference? ("case" case=XExpression)? (":" then=XExpression | fallThrough?=",");
+	public XbaseGrammarAccess.XCasePartElements getXCasePartAccess() {
+		return gaCommonGrammar.getXCasePartAccess();
+	}
+	
+	public ParserRule getXCasePartRule() {
+		return getXCasePartAccess().getRule();
+	}
+
+	//XForLoopExpression returns XExpression:
+	//	=> ({XForLoopExpression} "for" "(" declaredParam=JvmFormalParameter ":") forExpression=XExpression ")"
+	//	eachExpression=XExpression;
+	public XbaseGrammarAccess.XForLoopExpressionElements getXForLoopExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXBasicForLoopExpressionAccess();
+	}
+	
+	public ParserRule getXBasicForLoopExpressionRule() {
+		return getXBasicForLoopExpressionAccess().getRule();
+	}
+
+	//XWhileExpression returns XExpression:
+	//	{XWhileExpression} "while" "(" predicate=XExpression ")" body=XExpression;
+	public XbaseGrammarAccess.XWhileExpressionElements getXWhileExpressionAccess() {
+		return gaCommonGrammar.getXWhileExpressionAccess();
+	}
+	
+	public ParserRule getXWhileExpressionRule() {
+		return getXWhileExpressionAccess().getRule();
+	}
+
+	//XDoWhileExpression returns XExpression:
+	//	{XDoWhileExpression} "do" body=XExpression "while" "(" predicate=XExpression ")";
+	public XbaseGrammarAccess.XDoWhileExpressionElements getXDoWhileExpressionAccess() {
+		return gaCommonGrammar.getXDoWhileExpressionAccess();
+	}
+	
+	public ParserRule getXDoWhileExpressionRule() {
+		return getXDoWhileExpressionAccess().getRule();
+	}
+
+	//XBlockExpression returns XExpression:
+	//	{XBlockExpression} "{" (expressions+=XExpressionOrVarDeclaration ";"?)* "}";
+	public XbaseGrammarAccess.XBlockExpressionElements getXBlockExpressionAccess() {
+		return gaCommonGrammar.getXBlockExpressionAccess();
+	}
+	
+	public ParserRule getXBlockExpressionRule() {
+		return getXBlockExpressionAccess().getRule();
+	}
+
+	//XExpressionOrVarDeclaration returns XExpression:
+	//	XVariableDeclaration | XExpression;
+	public XbaseGrammarAccess.XExpressionOrVarDeclarationElements getXExpressionOrVarDeclarationAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXVariableDeclarationAccess();
+	}
+	
+	public ParserRule getXVariableDeclarationRule() {
+		return getXVariableDeclarationAccess().getRule();
+	}
+
+	//JvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference? name=ValidID;
+	public XbaseGrammarAccess.JvmFormalParameterElements getJvmFormalParameterAccess() {
+		return gaCommonGrammar.getJvmFormalParameterAccess();
+	}
+	
+	public ParserRule getJvmFormalParameterRule() {
+		return getJvmFormalParameterAccess().getRule();
+	}
+
+	//FullJvmFormalParameter returns types::JvmFormalParameter:
+	//	parameterType=JvmTypeReference name=ValidID;
+	public XbaseGrammarAccess.FullJvmFormalParameterElements getFullJvmFormalParameterAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXFeatureCallAccess();
+	}
+	
+	public ParserRule getXFeatureCallRule() {
+		return getXFeatureCallAccess().getRule();
+	}
+
+	//FeatureCallID:
+	//	ValidID | "extends" | "static" | "import" | "extension";
+	public XbaseGrammarAccess.FeatureCallIDElements getFeatureCallIDAccess() {
+		return gaCommonGrammar.getFeatureCallIDAccess();
+	}
+	
+	public ParserRule getFeatureCallIDRule() {
+		return getFeatureCallIDAccess().getRule();
+	}
+
+	//IdOrSuper:
+	//	FeatureCallID | "super";
+	public XbaseGrammarAccess.IdOrSuperElements getIdOrSuperAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXConstructorCallAccess();
+	}
+	
+	public ParserRule getXConstructorCallRule() {
+		return getXConstructorCallAccess().getRule();
+	}
+
+	//XBooleanLiteral returns XExpression:
+	//	{XBooleanLiteral} ("false" | isTrue?="true");
+	public XbaseGrammarAccess.XBooleanLiteralElements getXBooleanLiteralAccess() {
+		return gaCommonGrammar.getXBooleanLiteralAccess();
+	}
+	
+	public ParserRule getXBooleanLiteralRule() {
+		return getXBooleanLiteralAccess().getRule();
+	}
+
+	//XNullLiteral returns XExpression:
+	//	{XNullLiteral} "null";
+	public XbaseGrammarAccess.XNullLiteralElements getXNullLiteralAccess() {
+		return gaCommonGrammar.getXNullLiteralAccess();
+	}
+	
+	public ParserRule getXNullLiteralRule() {
+		return getXNullLiteralAccess().getRule();
+	}
+
+	//XNumberLiteral returns XExpression:
+	//	{XNumberLiteral} value=Number;
+	public XbaseGrammarAccess.XNumberLiteralElements getXNumberLiteralAccess() {
+		return gaCommonGrammar.getXNumberLiteralAccess();
+	}
+	
+	public ParserRule getXNumberLiteralRule() {
+		return getXNumberLiteralAccess().getRule();
+	}
+
+	//XStringLiteral returns XExpression:
+	//	{XStringLiteral} value=STRING;
+	public XbaseGrammarAccess.XStringLiteralElements getXStringLiteralAccess() {
+		return gaCommonGrammar.getXStringLiteralAccess();
+	}
+	
+	public ParserRule getXStringLiteralRule() {
+		return getXStringLiteralAccess().getRule();
+	}
+
+	//XTypeLiteral returns XExpression:
+	//	{XTypeLiteral} "typeof" "(" type=[types::JvmType|QualifiedName] arrayDimensions+=ArrayBrackets* ")";
+	public XbaseGrammarAccess.XTypeLiteralElements getXTypeLiteralAccess() {
+		return gaCommonGrammar.getXTypeLiteralAccess();
+	}
+	
+	public ParserRule getXTypeLiteralRule() {
+		return getXTypeLiteralAccess().getRule();
+	}
+
+	//XThrowExpression returns XExpression:
+	//	{XThrowExpression} "throw" expression=XExpression;
+	public XbaseGrammarAccess.XThrowExpressionElements getXThrowExpressionAccess() {
+		return gaCommonGrammar.getXThrowExpressionAccess();
+	}
+	
+	public ParserRule getXThrowExpressionRule() {
+		return getXThrowExpressionAccess().getRule();
+	}
+
+	//XReturnExpression returns XExpression:
+	//	{XReturnExpression} "return" -> expression=XExpression?;
+	public XbaseGrammarAccess.XReturnExpressionElements getXReturnExpressionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXTryCatchFinallyExpressionAccess();
+	}
+	
+	public ParserRule getXTryCatchFinallyExpressionRule() {
+		return getXTryCatchFinallyExpressionAccess().getRule();
+	}
+
+	//XSynchronizedExpression returns XExpression:
+	//	=> ({XSynchronizedExpression} "synchronized" "(") param=XExpression ")" expression=XExpression;
+	public XbaseGrammarAccess.XSynchronizedExpressionElements getXSynchronizedExpressionAccess() {
+		return gaCommonGrammar.getXSynchronizedExpressionAccess();
+	}
+	
+	public ParserRule getXSynchronizedExpressionRule() {
+		return getXSynchronizedExpressionAccess().getRule();
+	}
+
+	//XCatchClause:
+	//	"catch" "(" declaredParam=FullJvmFormalParameter ")" expression=XExpression;
+	public XbaseGrammarAccess.XCatchClauseElements getXCatchClauseAccess() {
+		return gaCommonGrammar.getXCatchClauseAccess();
+	}
+	
+	public ParserRule getXCatchClauseRule() {
+		return getXCatchClauseAccess().getRule();
+	}
+
+	//QualifiedName:
+	//	ValidID ("." ValidID)*;
+	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
+		return gaCommonGrammar.getQualifiedNameAccess();
+	}
+	
+	public ParserRule getQualifiedNameRule() {
+		return getQualifiedNameAccess().getRule();
+	}
+
+	//Number hidden():
+	//	HEX | (INT | DECIMAL) ("." (INT | DECIMAL))?;
+	public XbaseGrammarAccess.NumberElements getNumberAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.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 gaCommonGrammar.getHEXRule();
+	} 
+
+	//terminal INT returns ecore::EInt:
+	//	"0".."9" ("0".."9" | "_")*;
+	public TerminalRule getINTRule() {
+		return gaCommonGrammar.getINTRule();
+	} 
+
+	//terminal DECIMAL:
+	//	INT (("e" | "E") ("+" | "-")? INT)? (("b" | "B") ("i" | "I" | "d" | "D") | ("l" | "L" | "d" | "D" | "f" | "F"))?;
+	public TerminalRule getDECIMALRule() {
+		return gaCommonGrammar.getDECIMALRule();
+	} 
+
+	//JvmTypeReference:
+	//	JvmParameterizedTypeReference => ({JvmGenericArrayTypeReference.componentType=current} ArrayBrackets)* |
+	//	XFunctionTypeRef;
+	public XtypeGrammarAccess.JvmTypeReferenceElements getJvmTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmTypeReferenceRule() {
+		return getJvmTypeReferenceAccess().getRule();
+	}
+
+	//ArrayBrackets:
+	//	"[" "]";
+	public XtypeGrammarAccess.ArrayBracketsElements getArrayBracketsAccess() {
+		return gaCommonGrammar.getArrayBracketsAccess();
+	}
+	
+	public ParserRule getArrayBracketsRule() {
+		return getArrayBracketsAccess().getRule();
+	}
+
+	//XFunctionTypeRef:
+	//	("(" (paramTypes+=JvmTypeReference ("," paramTypes+=JvmTypeReference)*)? ")")? "=>" returnType=JvmTypeReference;
+	public XtypeGrammarAccess.XFunctionTypeRefElements getXFunctionTypeRefAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getJvmParameterizedTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmParameterizedTypeReferenceRule() {
+		return getJvmParameterizedTypeReferenceAccess().getRule();
+	}
+
+	//JvmArgumentTypeReference returns JvmTypeReference:
+	//	JvmTypeReference | JvmWildcardTypeReference;
+	public XtypeGrammarAccess.JvmArgumentTypeReferenceElements getJvmArgumentTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmArgumentTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmArgumentTypeReferenceRule() {
+		return getJvmArgumentTypeReferenceAccess().getRule();
+	}
+
+	//JvmWildcardTypeReference:
+	//	{JvmWildcardTypeReference} "?" (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded* |
+	//	constraints+=JvmLowerBound constraints+=JvmLowerBoundAnded*)?;
+	public XtypeGrammarAccess.JvmWildcardTypeReferenceElements getJvmWildcardTypeReferenceAccess() {
+		return gaCommonGrammar.getJvmWildcardTypeReferenceAccess();
+	}
+	
+	public ParserRule getJvmWildcardTypeReferenceRule() {
+		return getJvmWildcardTypeReferenceAccess().getRule();
+	}
+
+	//JvmUpperBound:
+	//	"extends" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundElements getJvmUpperBoundAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundRule() {
+		return getJvmUpperBoundAccess().getRule();
+	}
+
+	//JvmUpperBoundAnded returns JvmUpperBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmUpperBoundAndedElements getJvmUpperBoundAndedAccess() {
+		return gaCommonGrammar.getJvmUpperBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmUpperBoundAndedRule() {
+		return getJvmUpperBoundAndedAccess().getRule();
+	}
+
+	//JvmLowerBound:
+	//	"super" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundElements getJvmLowerBoundAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundRule() {
+		return getJvmLowerBoundAccess().getRule();
+	}
+
+	//JvmLowerBoundAnded returns JvmLowerBound:
+	//	"&" typeReference=JvmTypeReference;
+	public XtypeGrammarAccess.JvmLowerBoundAndedElements getJvmLowerBoundAndedAccess() {
+		return gaCommonGrammar.getJvmLowerBoundAndedAccess();
+	}
+	
+	public ParserRule getJvmLowerBoundAndedRule() {
+		return getJvmLowerBoundAndedAccess().getRule();
+	}
+
+	//JvmTypeParameter:
+	//	name=ValidID (constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*)?;
+	public XtypeGrammarAccess.JvmTypeParameterElements getJvmTypeParameterAccess() {
+		return gaCommonGrammar.getJvmTypeParameterAccess();
+	}
+	
+	public ParserRule getJvmTypeParameterRule() {
+		return getJvmTypeParameterAccess().getRule();
+	}
+
+	//QualifiedNameWithWildcard:
+	//	QualifiedName "." "*";
+	public XtypeGrammarAccess.QualifiedNameWithWildcardElements getQualifiedNameWithWildcardAccess() {
+		return gaCommonGrammar.getQualifiedNameWithWildcardAccess();
+	}
+	
+	public ParserRule getQualifiedNameWithWildcardRule() {
+		return getQualifiedNameWithWildcardAccess().getRule();
+	}
+
+	//ValidID:
+	//	ID;
+	public XtypeGrammarAccess.ValidIDElements getValidIDAccess() {
+		return gaCommonGrammar.getValidIDAccess();
+	}
+	
+	public ParserRule getValidIDRule() {
+		return getValidIDAccess().getRule();
+	}
+
+	//XImportSection:
+	//	importDeclarations+=XImportDeclaration+;
+	public XtypeGrammarAccess.XImportSectionElements getXImportSectionAccess() {
+		return gaCommonGrammar.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 gaCommonGrammar.getXImportDeclarationAccess();
+	}
+	
+	public ParserRule getXImportDeclarationRule() {
+		return getXImportDeclarationAccess().getRule();
+	}
+
+	//QualifiedNameInStaticImport:
+	//	(ValidID ".")+;
+	public XtypeGrammarAccess.QualifiedNameInStaticImportElements getQualifiedNameInStaticImportAccess() {
+		return gaCommonGrammar.getQualifiedNameInStaticImportAccess();
+	}
+	
+	public ParserRule getQualifiedNameInStaticImportRule() {
+		return getQualifiedNameInStaticImportAccess().getRule();
+	}
+
+	//terminal ID:
+	//	"^"? ("a".."z" | "A".."Z" | "$" | "_") ("a".."z" | "A".."Z" | "$" | "_" | "0".."9")*;
+	public TerminalRule getIDRule() {
+		return gaCommonGrammar.getIDRule();
+	} 
+
+	//terminal STRING:
+	//	"\"" ("\\" . / * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\""))* "\""? | "\'" ("\\" .
+	//	/ * ('b'|'t'|'n'|'f'|'r'|'u'|'"'|"'"|'\\') * / | !("\\" | "\'"))* "\'"?;
+	public TerminalRule getSTRINGRule() {
+		return gaCommonGrammar.getSTRINGRule();
+	} 
+
+	//terminal ML_COMMENT:
+	//	"/ *"->"* /";
+	public TerminalRule getML_COMMENTRule() {
+		return gaCommonGrammar.getML_COMMENTRule();
+	} 
+
+	//terminal SL_COMMENT:
+	//	"//" !("\n" | "\r")* ("\r"? "\n")?;
+	public TerminalRule getSL_COMMENTRule() {
+		return gaCommonGrammar.getSL_COMMENTRule();
+	} 
+
+	//terminal WS:
+	//	(" " | "\t" | "\r" | "\n")+;
+	public TerminalRule getWSRule() {
+		return gaCommonGrammar.getWSRule();
+	} 
+
+	//terminal ANY_OTHER:
+	//	.;
+	public TerminalRule getANY_OTHERRule() {
+		return gaCommonGrammar.getANY_OTHERRule();
+	} 
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/validation/AbstractServicesGrammarJavaValidator.java b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/validation/AbstractServicesGrammarJavaValidator.java
new file mode 100644
index 0000000..d5c4e76
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src-gen/org/eclipse/osbp/dsl/services/xtext/validation/AbstractServicesGrammarJavaValidator.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.validation;
+ 
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EPackage;
+
+public class AbstractServicesGrammarJavaValidator extends org.eclipse.osbp.dsl.common.xtext.validation.CommonGrammarJavaValidator {
+
+	@Override
+	protected List<EPackage> getEPackages() {
+	    List<EPackage> result = new ArrayList<EPackage>();
+	    result.add(EPackage.Registry.INSTANCE.getEPackage("http://osbp.eclipse.org/dsl/services/v1"));
+	    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.dsl.services.xtext/src/org/eclipse/osbp/dsl/semantic/service/Activator.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/semantic/service/Activator.java
new file mode 100644
index 0000000..461744a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/semantic/service/Activator.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.semantic.service;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (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.dsl.services.xtext/src/org/eclipse/osbp/dsl/semantic/service/util/NamingConventionsUtil.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/semantic/service/util/NamingConventionsUtil.java
new file mode 100644
index 0000000..e3dd99f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/semantic/service/util/NamingConventionsUtil.java
@@ -0,0 +1,126 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.semantic.service.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+// TODO: Auto-generated Javadoc
+/**
+ * This util is used to convert between entity packages and service packages.
+ */
+public class NamingConventionsUtil {
+
+	/** The Constant pathReplacements. */
+	private static final List<Pair> pathReplacements;
+
+	static {
+		pathReplacements = new ArrayList<Pair>();
+		pathReplacements.add(new Pair(".dtos", ".services"));
+		pathReplacements.add(new Pair("/dto/", "/service/"));
+		pathReplacements.add(new Pair("/dtos/", "/services/"));
+		pathReplacements.add(new Pair(".dto", ".service"));
+	}
+
+	/**
+	 * Replaces package fragments and returns the package name used for
+	 * Auto-Services.
+	 *
+	 * @param packageName
+	 *            the package name
+	 * @return the string
+	 */
+	public static String toServicePackage(String packageName) {
+		if (packageName == null) {
+			return "";
+		}
+		String result = packageName;
+		for (Pair pair : pathReplacements) {
+			result = pair.replace(result);
+		}
+		return result;
+	}
+
+	/**
+	 * Replaces package fragments and returns the package name used for
+	 * Auto-Services.
+	 *
+	 * @param lPackage
+	 *            the l package
+	 * @return the string
+	 */
+	public static String toServicePackage(LTypedPackage lPackage) {
+		return toServicePackage(lPackage.getName());
+	}
+
+	/**
+	 * Returns the name of the service for the given type.
+	 *
+	 * @param lType
+	 *            the l type
+	 * @return the string
+	 */
+	public static String toServiceName(LDto lType) {
+		return toServiceName(lType.getName());
+	}
+
+	/**
+	 * Returns the name of the service for the given type.
+	 *
+	 * @param prefix
+	 *            the prefix
+	 * @return the string
+	 */
+	public static String toServiceName(String prefix) {
+		return prefix + "Service";
+	}
+
+	/**
+	 * The Class Pair.
+	 */
+	private static class Pair {
+		
+		/** The source. */
+		private final String source;
+		
+		/** The target. */
+		private final String target;
+
+		/**
+		 * Instantiates a new pair.
+		 *
+		 * @param source
+		 *            the source
+		 * @param target
+		 *            the target
+		 */
+		public Pair(String source, String target) {
+			super();
+			this.source = source;
+			this.target = target;
+		}
+
+		/**
+		 * Replace.
+		 *
+		 * @param value
+		 *            the value
+		 * @return the string
+		 */
+		public String replace(String value) {
+			return value.replace(source, target);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/GenerateServicesGrammar.mwe2 b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/GenerateServicesGrammar.mwe2
new file mode 100644
index 0000000..708af32
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/GenerateServicesGrammar.mwe2
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+module org.eclipse.osbp.dsl.services.xtext.GenerateServicesGrammar
+
+import org.eclipse.emf.mwe.utils.*
+import org.eclipse.xtext.generator.*
+import org.eclipse.xtext.ui.generator.*
+import org.eclipse.xtext.generator.parser.antlr.*
+import org.eclipse.xtext.resource.XtextResourceSet
+
+var fileExtensions = "service"
+var projectName = "org.eclipse.osbp.dsl.services.xtext"
+var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammar.xtext"
+var runtimeProject = "../${projectName}"
+var backtrack = false
+var memoize = false
+
+Workflow {
+	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
+	bean = org.eclipse.xtext.mwe.Reader {
+		register = xcore
+	}
+	bean = org.eclipse.osbp.dsl.mwe.SemanticModelSetupComponent {
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/common/types/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.common.types.impl.OSBPTypesFactoryImpl"
+		}
+
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/entity/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.entity.impl.EntityFactoryImplCustom"
+		}
+
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/dto/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.dto.impl.OSBPDtoFactoryImpl"
+		}
+
+		ePackage = org.eclipse.osbp.dsl.mwe.PackageMapping {
+			nsURI = "http://osbp.eclipse.org/dsl/services/v1"
+			packageClass = "org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage"
+			factoryClass = "org.eclipse.osbp.dsl.semantic.service.impl.OSBPServiceFactoryImpl"
+		}
+	}
+
+	bean = StandaloneSetup {
+		scanClassPath = true
+		platformUri = "${runtimeProject}/.."
+		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.osbp.dsl.dto.xtext/model/dto.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage"
+		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.services.xtext/model/services.xcore"
+		registerGeneratedEPackage = "org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage"
+		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"
+	}
+
+	component = DirectoryCleaner {
+		directory = "${runtimeProject}.ui/src-gen"
+	}
+
+	component = Generator {
+		encoding = "UTF-8"
+		pathRtProject = runtimeProject
+		pathUiProject = "${runtimeProject}.ui"
+		pathTestProject = "${runtimeProject}.tests"
+		projectNameRt = projectName
+		projectNameUi = "${projectName}.ui"
+		language = {
+			uri = grammarURI
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+			loadedResource = "platform:/resource/org.eclipse.osbp.dsl.dto.xtext/model/dto.xcore"
+			fileExtensions = fileExtensions
+			fragment = grammarAccess.GrammarAccessFragment {}
+			fragment = serializer.SerializerFragment {
+			// generateDebugData = true
+			}
+			fragment = resourceFactory.ResourceFactoryFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = XtextAntlrGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "150"
+					methodsPerClass = "300"
+				}
+			}
+			fragment = DebugAntlrGeneratorFragment {
+				options = auto-inject {}
+			}
+			fragment = validation.JavaValidatorFragment {}
+			fragment = generator.GeneratorFragment {}
+			fragment = scoping.ImportNamespacesScopingFragment {}
+			fragment = builder.BuilderIntegrationFragment {}
+			fragment = quickfix.QuickfixProviderFragment {}
+			fragment = labeling.LabelProviderFragment {
+				generateStub = false
+			}
+			fragment = outline.OutlineTreeProviderFragment {}
+			fragment = outline.QuickOutlineFragment {}
+			fragment = compare.CompareFragment {
+				fileExtensions = fileExtensions
+			}
+			fragment = contentAssist.JavaBasedContentAssistFragment {}
+			fragment = parser.antlr.XtextAntlrUiGeneratorFragment {
+				options = {
+					classSplitting = true
+					fieldsPerClass = "100"
+					methodsPerClass = "200"
+				}
+			}
+			fragment = refactoring.RefactorElementNameFragment {
+				useJdtRefactoring = true
+			}
+			fragment = types.TypesGeneratorFragment {}
+			fragment = xbase.XbaseGeneratorFragment {
+				generateXtendInferrer = true
+			}
+			fragment = templates.CodetemplatesGeneratorFragment {}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammar.xtext b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammar.xtext
new file mode 100644
index 0000000..bc1af6d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammar.xtext
@@ -0,0 +1,73 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+grammar org.eclipse.osbp.dsl.services.xtext.ServicesGrammar with org.eclipse.osbp.dsl.common.xtext.CommonGrammar
+
+import "http://osbp.eclipse.org/dsl/dto/v1" as dto 
+import "http://osbp.eclipse.org/dsl/services/v1" as service
+import "http://osbp.eclipse.org/dsl/common/types/v1" as common
+import "http://osbp.eclipse.org/dsl/entity/v1" as entity
+import "http://www.eclipse.org/xtext/xbase/Xbase" as xbase
+import "http://www.eclipse.org/xtext/xbase/Xtype" as xtype
+import "http://www.eclipse.org/Xtext/Xbase/XAnnotations" as xannotation
+import "http://www.eclipse.org/xtext/common/JavaVMTypes" as types
+
+LServiceModel returns service::LServiceModel:
+	packages+=TypedPackage*;
+
+Class returns service::LDTOService:
+	{service::LDTOService} annotations+=AnnotationDef*
+	{service::LDTOService.annotationInfo=current}
+	'dtoservice' name=ValidIDWithKeywords 'provides' dto=[dto::LDto|TYPE_CROSS_REFERENCE]
+	'{'
+	((mutablePersistenceId?='mutable')? 'persistenceUnit' persistenceId=QualifiedName ';'?)?
+	
+	('validators' '{'
+		validators+=ValidatorDef (', ' validators+=ValidatorDef)* ';'?
+	'}'
+	)?
+	
+	injectedServices=InjectedServices
+	
+	operations+=Operation*
+	
+	'}';
+
+ValidatorDef returns service::LValidator:
+	(=>(validatorType=JvmTypeReference) | validatorId=STRING)
+;
+
+InjectedServices returns service::LInjectedServices:
+	{service::LInjectedServices}
+	(services+=InjectedService)*;
+
+InjectedService returns service::LInjectedService:
+	{service::LInjectedService}
+	'injectService' (cardinality=Cardinality)? service=JvmTypeReference attributeName=ID ';'?;
+
+FilterableAttributes returns service::LFilterableAttributes:
+	'filterable' '{'
+	filterableFeatures+=[dto::LDtoFeature|LFQN] (',' filterableFeatures+=[dto::LDtoFeature|LFQN])* ';'?
+	'}';
+
+SortableAttributes returns service::LSortableAttributes:
+	'sortable' '{'
+	sortableFeatures+=[dto::LDtoFeature|LFQN] (',' sortableFeatures+=[dto::LDtoFeature|LFQN])* ';'?
+	'}';
+	 
+Operation returns service::LServiceOperation:
+	{service::LServiceOperation} annotations+=AnnotationDef*
+	('def' type=JvmTypeReference name=ID
+	'(' (params+=FullJvmFormalParameter (', ' params+=FullJvmFormalParameter)*)? ')'
+	body=XExpression)
+;
+
+enum Cardinality returns service::LCardinality:
+	ZERO_TO_ONE="optional" | ONE_TO_ONE="mandatory" | ZERO_TO_MANY="zeroToMany" | ONE_TO_MANY="oneToMany";
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarRuntimeModule.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarRuntimeModule.java
new file mode 100644
index 0000000..7e4e57a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarRuntimeModule.java
@@ -0,0 +1,143 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext;
+
+import org.eclipse.xtext.formatting.IFormatter;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
+import org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider;
+import org.eclipse.osbp.dsl.services.xtext.extensions.ServicesTypesBuilder;
+import org.eclipse.osbp.dsl.services.xtext.formatting.ServicesGrammarFormatter;
+import org.eclipse.osbp.dsl.services.xtext.generator.Generator;
+import org.eclipse.osbp.dsl.services.xtext.jvmmodel.ServicesGrammarJvmModelInferrer;
+import org.eclipse.osbp.dsl.services.xtext.linker.ServicesJvmLinkingHelper;
+import org.eclipse.osbp.dsl.services.xtext.scope.ServicesBatchScopeProvider;
+import org.eclipse.osbp.dsl.services.xtext.scope.ServicesImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.osbp.dsl.services.xtext.scope.ServicesScopeProvider;
+import org.eclipse.osbp.dsl.services.xtext.serializer.ServiceGrammarTransientValueService;
+import org.eclipse.osbp.dsl.services.xtext.valueconverter.ServicesQualifiedNameProvider;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexDerivedStateComputer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinker;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexModelAssociator;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.FastLinkingService;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+
+/**
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
+ */
+public class ServicesGrammarRuntimeModule extends
+		org.eclipse.osbp.dsl.services.xtext.AbstractServicesGrammarRuntimeModule {
+
+	public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
+		return ServicesQualifiedNameProvider.class;
+	}
+
+	@Override
+	public Class<? extends IScopeProvider> bindIScopeProvider() {
+		return ServicesScopeProvider.class;
+	}
+
+	@Override
+	public Class<? extends XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return ServicesBatchScopeProvider.class;
+	}
+
+	@Override
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class)
+				.annotatedWith(
+						Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+				.to(ServicesImportedNamespaceAwareLocalScopeProvider.class);
+	}
+
+	public Class<? extends IJvmModelInferrer> bindIJvmModelInferrer() {
+		return ServicesGrammarJvmModelInferrer.class;
+	}
+
+	public Class<? extends IFormatter> bindIFormatter() {
+		return ServicesGrammarFormatter.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension> bindAnnotationExtension() {
+		return org.eclipse.osbp.dsl.services.xtext.extensions.AnnotationExtension.class;
+	}
+
+	public Class<? extends JvmTypesBuilder> bindJvmTypesBuilder() {
+		return ServicesTypesBuilder.class;
+	}
+
+	public Class<? extends org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions> bindModelExtensions() {
+		return org.eclipse.osbp.dsl.services.xtext.extensions.ModelExtensions.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.generator.IGenerator> bindIGenerator() {
+		return Generator.class;
+	}
+
+	public Class<? extends IOutputConfigurationProvider> bindIOutputConfigurationProvider() {
+		return org.eclipse.osbp.dsl.services.xtext.generator.OutputConfigurationProvider.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
+		return SemanticLoadingResource.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
+		return LazyJvmTypeLinker.class;
+	}
+
+	public Class<? extends LazyJvmTypeLinkingHelper> bindJvmLinkingHelper() {
+		return ServicesJvmLinkingHelper.class;
+	}
+
+	public Class<? extends org.eclipse.xtext.serializer.sequencer.ITransientValueService> bindSerializerITransientValueService() {
+		return ServiceGrammarTransientValueService.class;
+	}
+
+	@Override
+	public void configureSerializerIScopeProvider(Binder binder) {
+		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+				.annotatedWith(
+						org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class)
+				.to(ServicesBatchScopeProvider.class);
+	}
+
+	public Class<? extends org.eclipse.xtext.resource.IDerivedStateComputer> bindIDerivedStateComputer() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends ILinkingService> bindILinkingService() {
+		return FastLinkingService.class;
+	}
+
+	public Class<? extends IJvmModelAssociator> bindIJvmModelAssociator() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IIndexModelAssociator> bindIIndexModelAssociator() {
+		return IndexDerivedStateComputer.class;
+	}
+
+	public Class<? extends IJvmModelAssociations> bindIJvmModelAssociations() {
+		return IndexDerivedStateComputer.class;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarStandaloneSetup.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarStandaloneSetup.java
new file mode 100644
index 0000000..50b8799
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/ServicesGrammarStandaloneSetup.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext;
+
+/**
+ * Initialization support for running Xtext languages 
+ * without equinox extension registry
+ */
+public class ServicesGrammarStandaloneSetup extends ServicesGrammarStandaloneSetupGenerated{
+
+	public static void doSetup() {
+		new ServicesGrammarStandaloneSetup().createInjectorAndDoEMFRegistration();
+	}
+}
+
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/AnnotationExtension.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/AnnotationExtension.xtend
new file mode 100644
index 0000000..062f4cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/AnnotationExtension.xtend
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.extensions
+
+class AnnotationExtension extends org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension {
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/MethodNamingExtensions.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/MethodNamingExtensions.xtend
new file mode 100644
index 0000000..b671da6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/MethodNamingExtensions.xtend
@@ -0,0 +1,26 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.services.xtext.extensions
+
+import com.google.inject.Inject
+import org.eclipse.osbp.dsl.common.xtext.extensions.NamingExtensions
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+
+class MethodNamingExtensions extends NamingExtensions {
+
+	@Inject extension ModelExtensions;
+	@Inject extension IQualifiedNameProvider;
+
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/ModelExtensions.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/ModelExtensions.xtend
new file mode 100644
index 0000000..cdf7200
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/ModelExtensions.xtend
@@ -0,0 +1,436 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.List
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmTypeReference
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
+import org.eclipse.osbp.dsl.semantic.common.helper.Bounds
+import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature
+import org.eclipse.osbp.dsl.semantic.common.types.LReference
+import org.eclipse.osbp.dsl.semantic.common.types.LType
+import org.eclipse.osbp.dsl.semantic.dto.LDto
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAbstractReference
+import org.eclipse.osbp.dsl.semantic.dto.LDtoAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoFeature
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedAttribute
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference
+import org.eclipse.osbp.dsl.semantic.dto.LDtoOperation
+import org.eclipse.osbp.dsl.semantic.dto.LDtoReference
+import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
+import org.eclipse.osbp.dsl.semantic.service.LCardinality
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService
+
+class ModelExtensions extends org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions {
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension JvmTypesBuilder
+	@Inject extension MethodNamingExtensions
+
+	@Inject TypeReferences references;
+
+	def dispatch JvmTypeReference toTypeReference(LDtoAbstractReference prop) {
+		var JvmTypeReference jvmTypeRef = prop.toDtoTypeParameterReference
+		return jvmTypeRef
+	}
+
+	def dispatch JvmTypeReference toTypeReference(LDtoAbstractAttribute prop) {
+		var JvmTypeReference jvmTypeRef = prop.toDtoTypeParameterReference
+		return jvmTypeRef
+	}
+
+	/**
+	 * Creates a type references with respect to inherited features
+	 */
+	def dispatch JvmTypeReference toDtoTypeParameterReference(LDtoAbstractReference prop) {
+
+		// prop.type is instanceof DTO
+		return prop.type?.toTypeReference.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type references with respect to inherited features
+	 */
+	def dispatch JvmTypeReference toDtoTypeParameterReference(LDtoAbstractAttribute prop) {
+
+		// prop.type is instanceof LDataType
+		return prop.type?.toTypeReference.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type references with respect to inherited features
+	 */
+	def dispatch JvmTypeReference toDtoTypeParameterReference(LDtoInheritedAttribute prop) {
+
+		if (prop.type != null) {
+
+			// if the type is a different one, then use the type of the property
+			// needs to be mapped by a custom mapper in dsl
+			return prop.type?.toTypeReference.cloneWithProxies
+		}
+
+		// creates a type reference for the inherited LDataType
+		return prop.inheritedFeature?.toTypeReference.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type references with respect to inherited features
+	 */
+	def dispatch JvmTypeReference toDtoTypeParameterReference(LDtoInheritedReference prop) {
+
+		// for inherited references, the dto type is specified -> So use it
+		return prop.type?.toTypeReference.cloneWithProxies
+	}
+
+	/**
+	 * Creates a type reference with respect to multiplicity
+	 */
+	def JvmTypeReference toDtoTypeParameterReferenceWithMultiplicity(LDtoFeature prop) {
+		var ref = prop.toDtoTypeParameterReference
+		if (ref != null && prop.bounds.toMany) {
+			ref = references.getTypeForName(typeof(List), prop, ref)
+		}
+		return ref
+	}
+
+	/**
+	 * Creates a type reference with respect to multiplicity
+	 */
+	def JvmTypeReference toRawTypeReferenceWithMultiplicity(LDtoFeature prop) {
+		var ref = prop.toRawTypeRefernce;
+		if (prop.bounds.toMany) {
+			ref = references.getTypeForName(typeof(List), prop, ref)
+		}
+		return ref
+	}
+
+	def dispatch isCascading(LDtoOperation prop) {
+		false
+	}
+
+	def LDtoAbstractReference getResolvedOpposite(LDtoReference prop) {
+
+		// For a toMany that has already an opposite, return it.
+		// Otherwise search in the referenced type for the property with the owner type.
+		if (prop.opposite != null) {
+			return prop.opposite
+		} else if (prop.type instanceof LDto) {
+			val LDto ref = prop.type as LDto
+			ref.references.findFirst[it.opposite == prop]
+		}
+	}
+
+	/**
+   	 * Returns true, if toCheck can be cast to superType
+   	 */
+	def boolean isCastable(LDto toCheck, LDto superType) {
+		val String toCheckFqn = toCheck.fullyQualifiedName.toString
+		val String superTypeFqn = superType.fullyQualifiedName.toString
+
+		if (toCheckFqn.equals(superTypeFqn)) {
+			return true
+		} else {
+			val LDto toCheckSuperType = toCheck.getSuperType
+			if (toCheckSuperType != null) {
+				return toCheckSuperType.isCastable(superType)
+			} else {
+				return false;
+			}
+		}
+	}
+
+	def dispatch inherited(LFeature prop) {
+		return false
+	}
+
+	def dispatch inherited(LDtoInheritedReference prop) {
+		return true
+	}
+
+	def dispatch inherited(LDtoInheritedAttribute prop) {
+		return true
+	}
+
+	/**
+	 * The binary <code>+</code> operator that concatenates two strings.
+	 * 
+	 * @param a
+	 *            a string.
+	 * @param b
+	 *            another string.
+	 * @return <code>a + b</code>
+	 */
+	def static String operator_plus(String a, String b) {
+		if (a == null || b == null)
+			return ""
+
+		return a + b;
+	}
+
+	def dispatch String toTypeName(LDtoAttribute prop) {
+		prop.type.name
+	}
+
+	def dispatch String toTypeName(LDtoInheritedAttribute prop) {
+		if (prop.type != null) {
+			prop.type.name
+		} else {
+			prop.inheritedFeature.^type.name
+		}
+	}
+
+	def dispatch String toTypeName(LDtoReference prop) {
+		prop.type?.name
+	}
+
+	def dispatch String toTypeName(LDtoInheritedReference prop) {
+		prop.type?.name
+	}
+
+	def dispatch LType toRawType(LFeature prop) {
+		throw new IllegalStateException("not a valid call")
+	}
+
+	def dispatch LType toRawType(LDtoAttribute prop) {
+		prop.type
+	}
+
+	def dispatch LType toRawType(LDtoInheritedAttribute prop) {
+		prop.inheritedFeature?.type
+	}
+
+	def dispatch LType toRawType(LDtoReference prop) {
+		prop.type
+	}
+
+	def dispatch LType toRawType(LDtoInheritedReference prop) {
+		prop.inheritedFeature?.toRawType
+	}
+
+	def dispatch LType toRawType(LEntityReference prop) {
+		prop.type as LType
+	}
+
+	def dispatch LType toRawType(LEntityAttribute prop) {
+		prop.type as LType
+	}
+
+	def dispatch LType toRawType(LBeanReference prop) {
+		prop.type as LType
+	}
+
+	def dispatch LType toRawType(LBeanAttribute prop) {
+		prop.type as LType
+	}
+
+	def toRawTypeRefernce(LDtoFeature prop) {
+		prop.toRawType?.toTypeReference
+	}
+
+	def String toRawTypeName(LDtoFeature prop) {
+		prop.toRawType?.name
+	}
+
+	def dispatch LReference opposite(LDtoFeature prop) {
+		null
+	}
+
+	def dispatch LReference opposite(LDtoReference prop) {
+		return prop.opposite
+	}
+
+	def dispatch LReference opposite(LDtoInheritedReference prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.opposite
+		} else {
+			return null
+		}
+	}
+
+	def dispatch LReference opposite(LEntityReference prop) {
+		prop.opposite as LReference
+	}
+
+	def dispatch LReference opposite(LBeanReference prop) {
+		prop.opposite as LReference
+	}
+
+	def dispatch Bounds getBounds(LDtoFeature prop) {
+		if (prop.inherited) {
+			return Bounds.createFor(prop.inheritedFeature);
+		} else {
+			return Bounds.createFor(prop);
+		}
+	}
+
+	def dispatch String toName(LDtoFeature feature) {
+		if(feature == null || !feature.inherited && feature.name == null) return ""
+		if (feature.inherited) {
+			return feature.inheritedFeature?.toName
+		}
+		return feature.name.replace("^", "")
+	}
+
+	def dispatch String toName(LDto dto) {
+		if (dto == null || dto.name == null) {
+			return ""
+		}
+		return dto.name.replace("^", "")
+	}
+
+	//	def dispatch String internalToName(LFeature prop) {
+	//		return prop.name;
+	//	}
+	//
+	//	def dispatch String internalToName(LDtoFeature prop) {
+	//		if (prop.inherited) {
+	//			return prop.inheritedFeature?.name;
+	//		} else {
+	//			return prop.name;
+	//		}
+	//	}
+	def dispatch LReference inheritedFeature(LDtoFeature prop) {
+		return null
+	}
+
+	def dispatch LReference inheritedFeature(LDtoInheritedReference prop) {
+		return prop.inheritedFeature
+	}
+
+	def dispatch LAttribute inheritedFeature(LDtoInheritedAttribute prop) {
+		return prop.inheritedFeature
+	}
+
+	override isToMany(LFeature prop) {
+		if (prop == null) {
+			return false
+		}
+		return internalIsToMany(prop);
+	}
+
+	def dispatch boolean isTransient(EObject context) {
+		false
+	}
+
+	def dispatch boolean isTransient(LDtoAttribute context) {
+		context.transient
+	}
+
+	def dispatch boolean internalIsToMany(LFeature prop) {
+		return prop.bounds.toMany;
+	}
+
+	def dispatch boolean internalIsToMany(LDtoFeature prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.internalIsToMany
+		} else {
+			return prop.bounds.toMany;
+		}
+	}
+
+	def dispatch boolean isCascading(LDtoAbstractReference prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.cascading
+		} else {
+			return prop.cascading;
+		}
+	}
+
+	def dispatch boolean isCascading(LDtoAbstractAttribute prop) {
+		if (prop.inherited && prop.inheritedFeature != null) {
+			return prop.inheritedFeature.cascading
+		} else {
+			return prop.cascading;
+		}
+	}
+
+	def isCrossReference(LDtoFeature prop) {
+		return prop instanceof LReference && !prop.cascading
+	}
+
+	//	def dispatch boolean shouldUseCrossReference(LDtoFeature prop) {
+	//
+	//		//		if (prop.crossReference) {
+	//		//			if (prop.inherited && prop.inheritedFeature != null) {
+	//		//				return prop.inheritedFeature.shouldUseCrossReference
+	//		//			} else {
+	//		//				return true
+	//		//			}
+	//		//		}
+	//		return false
+	//	}
+	//
+	//	def dispatch boolean shouldUseCrossReference(LEntityReference prop) {
+	//		if (prop.cascading) {
+	//			return false
+	//		}
+	//
+	//		if (prop.opposite == null) {
+	//			return true
+	//		}
+	//
+	//		if (prop.opposite.cascading) {
+	//			return false
+	//		}
+	//		return true
+	//	}
+	def isMany(LInjectedService service) {
+		return service.cardinality == LCardinality::ZERO_TO_MANY || service.cardinality == LCardinality::ONE_TO_MANY
+	}
+
+	def boolean basedOnEntity(LDto dto) {
+		dto.wrappedType != null && dto.wrappedType instanceof LEntity
+	}
+
+	def Iterable<LDtoAbstractAttribute> collectAllAttributes(LDto dto) {
+		return dto.allFeatures.filter[it instanceof LDtoAbstractAttribute].map[it as LDtoAbstractAttribute]
+	}
+
+	def LAttribute idAttribute(LDto dto) {
+		for (LDtoAbstractAttribute prop : dto.collectAllAttributes) {
+			if (prop.inherited && prop.inheritedFeature != null) {
+				val LAttribute attribute = prop.inheritedFeature as LAttribute
+				if (attribute.id || attribute.uuid) {
+					return attribute
+				}
+			} else {
+				if (prop.id || prop.uuid) {
+					return prop
+				}
+			}
+		}
+	}
+
+	def LEntity wrappedEntity(LDto dto) {
+		if (dto.basedOnEntity) {
+			return dto.wrappedType as LEntity
+		}
+		return null
+	}
+
+	def String wrappedEntityName(LDto dto) {
+		val entity = dto.wrappedEntity
+		if (entity != null) {
+			return entity.name
+		}
+		return null
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/ServicesTypesBuilder.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/ServicesTypesBuilder.xtend
new file mode 100644
index 0000000..22efa04
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/extensions/ServicesTypesBuilder.xtend
@@ -0,0 +1,367 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.dsl.services.xtext.extensions
+
+import com.google.inject.Inject
+import java.util.Collection
+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.TypesFactory
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.util.Strings
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociator
+import org.eclipse.osbp.dsl.common.xtext.extensions.TreeAppendableExtensions
+import org.eclipse.osbp.dsl.common.xtext.jvmmodel.AnnotationCompiler
+import org.eclipse.osbp.dsl.common.xtext.jvmmodel.CommonTypesBuilder
+import org.eclipse.osbp.dsl.semantic.service.LDTOService
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService
+import org.eclipse.osbp.dsl.dto.lib.services.IQuery
+
+class ServicesTypesBuilder extends CommonTypesBuilder {
+
+	@Inject extension ModelExtensions
+	@Inject extension MethodNamingExtensions
+	@Inject extension TreeAppendableExtensions
+	@Inject extension IQualifiedNameProvider
+	@Inject extension AnnotationExtension
+
+	@Inject
+	private IJvmModelAssociator associator;
+	@Inject AnnotationCompiler annotationCompiler
+	@Inject TypesFactory typesFactory;
+	@Inject TypeReferences references;
+
+	def dispatch JvmOperation toGetMethod(LDTOService service) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = service.getDto().toTypeReference
+		op.simpleName = 'get'
+		op.parameters += service.toParameter('id', references.getTypeForName(typeof(Object), service))
+		op.documentation = '''
+			{@inherit doc}
+		'''
+
+		if (service.dto.basedOnEntity) {
+			op.body = '''
+			javax.persistence.EntityManager em = emf.createEntityManager();
+			javax.persistence.EntityTransaction txn = em.getTransaction();
+			
+			// find the entity
+			«service.dto.wrappedEntity.toQualifiedName» entity = null;
+			try {
+				entity = em.find(«service.dto.wrappedEntity.toQualifiedName».class, id);
+				txn.commit();
+			   	txn = null;
+			}finally{
+			   	if(txn != null){
+			   		txn.rollback();
+			   	}
+			   	em.close();
+			}
+
+			// map the entity to the dto
+			«service.getDto().toTypeReference.simpleName» dto = new «service.getDto().toTypeReference.simpleName»();
+			mapper.mapToDTO(dto, entity);
+			return dto;
+			'''
+//		} else if(service.getExpression != null){
+//			op.body = service.getExpression
+		} else{
+			op.body = '''throw new UnsupportedOperationException();'''
+		}
+
+		return associate(service, op);
+	}
+
+	def JvmOperation toFindMethod(LDTOService service) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(typeof(Collection), service, service.getDto().toTypeReference)
+		op.simpleName = 'find'
+		op.parameters += service.toParameter('query', references.getTypeForName(typeof(IQuery), service))
+		op.documentation = '''
+			{@inherit doc}
+		'''
+
+		setBody(op, '''return null;''')
+
+		return associate(service, op);
+	}
+
+	def JvmOperation toFindMethodWithStartindex(LDTOService service) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(typeof(Collection), service, service.getDto().toTypeReference)
+		op.simpleName = 'find'
+		op.parameters += service.toParameter('query', references.getTypeForName(typeof(IQuery), service))
+		op.parameters += service.toParameter('startindex', references.getTypeForName(Integer::TYPE, service))
+		op.documentation = '''
+			{@inherit doc}
+		'''
+
+		setBody(op, '''return null;''')
+
+		return associate(service, op);
+	}
+
+	def JvmOperation toUpdateMethod(LDTOService service) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, service)
+		op.simpleName = 'update'
+		op.parameters += service.toParameter('dto', service.getDto().toTypeReference)
+		op.documentation = '''
+			{@inherit doc}
+		'''
+
+		if (service.dto.basedOnEntity) {
+			op.body = '''
+				javax.persistence.EntityManager em = emf.createEntityManager();
+				javax.persistence.EntityTransaction txn = em.getTransaction();
+				
+				try {
+					«service.dto.wrappedEntity.toQualifiedName» entity = em.find(«service.dto.wrappedEntity.toQualifiedName».class, dto.«service.dto.idAttribute?.toGetterName»());
+					mapper.mapToEntity(dto, entity);
+					em.persist(entity);
+				
+					txn.commit();
+					txn = null;
+				}finally{
+					if(txn != null){
+						txn.rollback();
+					}
+					em.close();
+				}
+			'''
+//		} else if(service.updateExpression != null) {
+//			op.body = service.updateExpression
+		} else{
+			op.body = '''throw new UnsupportedOperationException();'''
+		}
+
+		return associate(service, op);
+	}
+
+	def JvmOperation toDeleteMethod(LDTOService service) {
+		val op = typesFactory.createJvmOperation();
+		op.visibility = JvmVisibility::PUBLIC
+		op.returnType = references.getTypeForName(Void::TYPE, service)
+		op.simpleName = 'delete'
+		op.parameters += service.toParameter('dto', service.getDto().toTypeReference)
+		op.documentation = '''
+			{@inherit doc}
+		'''
+
+		if (service.dto.basedOnEntity) {
+			op.body = '''
+				javax.persistence.EntityManager em = emf.createEntityManager();
+				javax.persistence.EntityTransaction txn = em.getTransaction();
+				
+				try {
+					«service.dto.wrappedEntity.toQualifiedName» entity = em.find(«service.dto.wrappedEntity.toQualifiedName».class, dto.«service.dto.idAttribute?.toGetterName»());
+					em.remove(entity);
+				
+					txn.commit();
+					txn = null;
+				}finally{
+					if(txn != null){
+						txn.rollback();
+					}
+					em.close();
+				}
+			'''
+//		} else if(service.deleteExpression != null) {
+//			op.body = service.deleteExpression
+		} else{
+			op.body = '''throw new UnsupportedOperationException();'''
+		}
+
+		return associate(service, op);
+	}
+
+	/**
+	 * shorthand for <code>toSetter(sourceElement, name, name, typeRef)</code>
+	 */
+	def JvmOperation toBindService(LInjectedService sourceElement, String name, JvmTypeReference typeRef) {
+		return toBindService(sourceElement, name, name, typeRef);
+	}
+
+	/**
+	 * Creates a setter method for the given properties name with the standard implementation assigning the passed
+	 * parameter to a similarly named field.
+	 * 
+	 * Example: <code>
+	 * public void setFoo(String foo) {
+	 *   this.foo = foo;
+	 * }
+	 * </code>
+	 *
+	 * @return a setter method for a JavaBeans property with the given name, <code>null</code> if sourceElement or name are <code>null</code>.
+	 */
+	def JvmOperation toBindService(LInjectedService sourceElement, String propertyName, String fieldName,
+		JvmTypeReference typeRef) {
+		if (sourceElement == null || propertyName == null || fieldName == null)
+			return null;
+		val JvmOperation result = typesFactory.createJvmOperation();
+		result.visibility = JvmVisibility.PROTECTED;
+		result.returnType = references.getTypeForName(Void.TYPE, sourceElement)
+		result.simpleName = "bind" + Strings.toFirstUpper(propertyName)
+		result.parameters += sourceElement.toParameter(propertyName, cloneWithProxies(typeRef));
+
+		result.body = '''this.«fieldName» = «propertyName»;'''
+		result.documentation = '''
+		Binds the service {@link «typeRef.qualifiedName.toString»} to this component. 
+		<br>The cardinality is «sourceElement.cardinality.getName()»
+		
+		@param «propertyName» the service'''
+		return associate(sourceElement, result);
+	}
+
+	/**
+	 * shorthand for <code>toSetter(sourceElement, name, name, typeRef)</code>
+	 */
+	def JvmOperation toUnbindService(LInjectedService sourceElement, String name, JvmTypeReference typeRef) {
+		return toUnbindService(sourceElement, name, name, typeRef);
+	}
+
+	/**
+	 * Creates a setter method for the given properties name with the standard implementation assigning the passed
+	 * parameter to a similarly named field.
+	 * 
+	 * Example: <code>
+	 * public void setFoo(String foo) {
+	 *   this.foo = foo;
+	 * }
+	 * </code>
+	 *
+	 * @return a setter method for a JavaBeans property with the given name, <code>null</code> if sourceElement or name are <code>null</code>.
+	 */
+	def JvmOperation toUnbindService(LInjectedService sourceElement, String propertyName, String fieldName,
+		JvmTypeReference typeRef) {
+		if (sourceElement == null || propertyName == null || fieldName == null)
+			return null;
+		val JvmOperation result = typesFactory.createJvmOperation();
+		result.visibility = JvmVisibility.PROTECTED;
+		result.returnType = references.getTypeForName(Void.TYPE, sourceElement)
+		result.simpleName = "unbind" + Strings.toFirstUpper(propertyName)
+		result.parameters += sourceElement.toParameter(propertyName, cloneWithProxies(typeRef));
+
+		result.body = '''this.«fieldName» = null;'''
+
+		result.documentation = '''
+		Unbinds the service from this component. 
+		<br>The cardinality is «sourceElement.cardinality.getName()»
+		
+		@param «propertyName» the service'''
+
+		return associate(sourceElement, result);
+	}
+
+	/**
+	 * shorthand for <code>toSetter(sourceElement, name, name, typeRef)</code>
+	 */
+	def JvmOperation toAddService(LInjectedService sourceElement, String name, JvmTypeReference typeRef) {
+		return toAddService(sourceElement, name, name, typeRef);
+	}
+
+	/**
+	 * Creates a setter method for the given properties name with the standard implementation assigning the passed
+	 * parameter to a similarly named field.
+	 * 
+	 * Example: <code>
+	 * public void setFoo(String foo) {
+	 *   this.foo = foo;
+	 * }
+	 * </code>
+	 *
+	 * @return a setter method for a JavaBeans property with the given name, <code>null</code> if sourceElement or name are <code>null</code>.
+	 */
+	def JvmOperation toAddService(LInjectedService sourceElement, String propertyName, String fieldName,
+		JvmTypeReference typeRef) {
+		if (sourceElement == null || propertyName == null || fieldName == null)
+			return null;
+		val JvmOperation result = typesFactory.createJvmOperation();
+		result.visibility = JvmVisibility.PROTECTED;
+		result.returnType = references.getTypeForName(Void.TYPE, sourceElement)
+		result.simpleName = "add" + Strings.toFirstUpper(propertyName)
+		result.parameters += sourceElement.toParameter(propertyName, cloneWithProxies(typeRef));
+
+		result.body = '''
+			if(this.«fieldName» == null) {
+				this.«fieldName» = new java.util.HashSet<>();
+			}
+			
+			if(!this.«fieldName».contains(«propertyName»)) {
+				this.«fieldName».add(«propertyName»);
+			}
+		'''
+
+		result.documentation = '''
+		Adds the service {@link «typeRef.qualifiedName.toString»} to this component. 
+		<br>The cardinality is «sourceElement.cardinality.getName()»
+		
+		@param «propertyName» the service'''
+
+		return associate(sourceElement, result);
+	}
+
+	/**
+	 * shorthand for <code>toSetter(sourceElement, name, name, typeRef)</code>
+	 */
+	def JvmOperation toRemoveService(LInjectedService sourceElement, String name, JvmTypeReference typeRef) {
+		return toRemoveService(sourceElement, name, name, typeRef);
+	}
+
+	/**
+	 * Creates a setter method for the given properties name with the standard implementation assigning the passed
+	 * parameter to a similarly named field.
+	 * 
+	 * Example: <code>
+	 * public void setFoo(String foo) {
+	 *   this.foo = foo;
+	 * }
+	 * </code>
+	 *
+	 * @return a setter method for a JavaBeans property with the given name, <code>null</code> if sourceElement or name are <code>null</code>.
+	 */
+	def JvmOperation toRemoveService(LInjectedService sourceElement, String propertyName, String fieldName,
+		JvmTypeReference typeRef) {
+		if (sourceElement == null || propertyName == null || fieldName == null)
+			return null;
+		val JvmOperation result = typesFactory.createJvmOperation();
+		result.visibility = JvmVisibility.PROTECTED;
+		result.returnType = references.getTypeForName(Void.TYPE, sourceElement)
+		result.simpleName = "remove" + Strings.toFirstUpper(propertyName)
+		result.parameters += sourceElement.toParameter(propertyName, cloneWithProxies(typeRef));
+
+		result.body = '''
+		if(this.«fieldName»==null){
+			return;
+		}
+		this.«fieldName».remove(«propertyName»);'''
+
+		result.documentation = '''
+		Removes the service {@link «cloneWithProxies(typeRef).qualifiedName»} from this component. 
+		<br>The cardinality is «sourceElement.cardinality.getName()»
+		
+		@param «propertyName» the service'''
+
+		return associate(sourceElement, result);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/formatting/ServicesGrammarFormatter.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/formatting/ServicesGrammarFormatter.java
new file mode 100644
index 0000000..9bbf300
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/formatting/ServicesGrammarFormatter.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.formatting;
+
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
+import org.eclipse.osbp.dsl.common.xtext.formatting.CommonGrammarFormatter;
+import org.eclipse.osbp.dsl.services.xtext.services.ServicesGrammarGrammarAccess;
+
+/**
+ * This class contains custom formatting description.
+ * 
+ * see : http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting
+ * on how and when to use it
+ * 
+ * Also see org.eclipse.xtext.xtext.XtextFormattingTokenSerializer as an
+ * example
+ */
+public class ServicesGrammarFormatter extends CommonGrammarFormatter {
+
+	@Override
+	protected void configureFormatting(FormattingConfig c) {
+		configure(c, (ServicesGrammarGrammarAccess) getGrammarAccess());
+	}
+
+	public void configure(FormattingConfig c, ServicesGrammarGrammarAccess ga) {
+		ServicesGrammarGrammarAccess f = (ServicesGrammarGrammarAccess) getGrammarAccess();
+
+		configureClassDef(c, f.getClassAccess());
+
+		c.setLinewrap(0, 1, 2).before(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).after(f.getSL_COMMENTRule());
+		c.setLinewrap(0, 1, 2).before(f.getML_COMMENTRule());
+		c.setLinewrap(1, 1, 1).after(f.getML_COMMENTRule());
+
+		for (Keyword kw : ga.findKeywords("@")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().after(kw);
+		}
+		for (Keyword kw : ga.findKeywords("(")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(")")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(";")) {
+			c.setNoSpace().before(kw);
+		}
+		for (Keyword kw : ga.findKeywords(",")) {
+			c.setNoSpace().before(kw);
+		}
+
+		super.configure(c, ga.getCommonGrammarGrammarAccess());
+
+	}
+
+	protected void configureClassDef(FormattingConfig c,
+			ServicesGrammarGrammarAccess.ClassElements ele) {
+
+		c.setNoSpace().before(ele.getCommaSpaceKeyword_9_3_0());
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_7());
+		c.setIndentationIncrement().after(ele.getLeftCurlyBracketKeyword_9_1());
+		c.setIndentationDecrement().before(
+				ele.getRightCurlyBracketKeyword_9_5());
+		c.setIndentationDecrement()
+				.before(ele.getRightCurlyBracketKeyword_12());
+
+		c.setLinewrap(1).after(ele.getCommaSpaceKeyword_9_3_0());
+		c.setLinewrap(1).after(ele.getLeftCurlyBracketKeyword_9_1());
+		c.setLinewrap(1).after(ele.getRightCurlyBracketKeyword_9_5());
+		c.setLinewrap(1).before(ele.getRightCurlyBracketKeyword_9_5());
+		c.setLinewrap(1).before(ele.getRightCurlyBracketKeyword_12());
+
+		c.setLinewrap().before(
+				ele.getMutablePersistenceIdMutableKeyword_8_0_0());
+		c.setLinewrap().before(ele.getValidatorsKeyword_9_0());
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/ComponentGenerator.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/ComponentGenerator.xtend
new file mode 100644
index 0000000..32d1214
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/ComponentGenerator.xtend
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.generator
+
+import com.google.inject.Inject
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.osbp.dsl.dto.xtext.extensions.MethodNamingExtensions
+import org.eclipse.osbp.dsl.semantic.service.LCardinality
+import org.eclipse.osbp.dsl.semantic.service.LDTOService
+import org.eclipse.osbp.dsl.semantic.service.LService
+
+class ComponentGenerator {
+
+	@Inject extension MethodNamingExtensions
+	@Inject extension IQualifiedNameProvider
+
+	def dispatch getServiceContent(LDTOService service) '''
+		<?xml version="1.0" encoding="UTF-8"?>
+		<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="«service.fullyQualifiedName.toLowerCase»">
+		       <implementation class="«service.fullyQualifiedName»"/>
+		       <service>
+		       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+		       </service>
+		       <property name="dto" type="String" value="«service.dto.fullyQualifiedName.toString»"/>
+		       <property name="service.pid" type="String" value="«service.fullyQualifiedName.toLowerCase»"/>
+		       «IF service.injectedServices != null && !service.injectedServices.services.empty»
+		       	«FOR ref : service.injectedServices.services»
+		       		<reference name="«ref.attributeName.toFirstLower»" interface="«ref.service.type?.qualifiedName.toString»" 
+		       			cardinality="«ref.cardinality.cardinalityString»" policy="dynamic" bind="bind«ref.attributeName.
+			toFirstUpper»" unbind="unbind«ref.attributeName.toFirstUpper»/>
+		       	«ENDFOR»
+		       «ELSE»
+		       	«IF !service.mutablePersistenceId»
+				<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+					policy="dynamic" bind="bindEmf" unbind="unbindEmf" «IF (service.persistenceId != null &&
+			!service.persistenceId.equals(""))»target="(osgi.unit.name=«service.persistenceId»)"«ENDIF»/>
+			«ENDIF»
+			<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+				policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+			<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+					policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+			«IF !service.validators.empty»
+				<reference name="validators" interface="org.eclipse.osbp.runtime.common.validation.IValidationParticipant" cardinality="0..n"
+					policy="dynamic" target="«service.toValidatorTarget»" bind="addValidationParticipant" unbind="removeValidationParticipant"/>
+			«ENDIF»
+			«ENDIF»
+		</scr:component>
+	'''
+
+	def String toValidatorTarget(LDTOService service) {
+
+		// create following target: target="(|(val=a)(val=b)(val=c)(val=d))"
+		val StringBuilder b = new StringBuilder
+		for (validator : service.validators) {
+			var String id = null
+			if (validator.validatorType != null) {
+				id = validator.validatorType.qualifiedName
+			} else {
+				id = validator.validatorId
+			}
+
+			b.append("(component.name=")
+			b.append(id)
+			b.append(")")
+		}
+
+		return if(service.validators.length == 1) b.toString else String.format("(|%s)", b.toString)
+	}
+
+	def String cardinalityString(LCardinality cardinality) {
+		switch (cardinality) {
+			case ZERO_TO_ONE:
+				return "0..1"
+			case ZERO_TO_MANY:
+				return "0..n"
+			case ONE_TO_ONE:
+				return "1..1"
+			case ONE_TO_MANY:
+				return "1..n"
+			default:
+				return "0..1"
+		}
+	}
+
+	def dispatch getServiceContent(LService service) '''
+«««		<?xml version="1.0" encoding="UTF-8"?>
+«««		<components xmlns:scr="http://www.osgi.org/xmlns/scr/v1.0.0">
+«««		   <scr:component name="«service.fullyQualifiedName.toLowerCase»">
+«««		       <implementation class="«service.fullyQualifiedName»"/>
+«««		       <service>
+«««		       	<provide interface="org.eclipse.osbp.dsl.service.lib.IDTOService"/>
+«««		       </service>
+«««		       <property name="dto" value="«service.dto.fullyQualifiedName.toString»"/>
+«««		       <property name="service.pid" value="«service.fullyQualifiedName.toLowerCase»"/>
+«««		       «FOR ref : service.injectedServices.services»
+«««		       	<reference name="«ref.attributeName.toFirstLower»" interface="«ref.service.qualifiedName.toString»" 
+«««		       			cardinality="«ref.cardinality.cardinalityString»" policy="dynamic" bind="bind«ref.attributeName.
+«««			toFirstUpper»" unbind="unbind«ref.attributeName.toFirstUpper»"/>
+«««		       «ENDFOR»
+«««		   </scr:component>
+«««		</components>
+	'''
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/Generator.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/Generator.xtend
new file mode 100644
index 0000000..c6a3985
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/Generator.xtend
@@ -0,0 +1,60 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.dsl.services.xtext.generator
+
+import com.google.inject.Inject
+import org.eclipse.emf.ecore.resource.Resource
+import org.eclipse.xtext.common.types.JvmDeclaredType
+import org.eclipse.xtext.generator.IFileSystemAccess
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.osbp.dsl.semantic.service.LService
+import org.eclipse.osbp.dsl.services.xtext.extensions.MethodNamingExtensions
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingGenerator
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+
+class Generator extends DelegatingGenerator {
+	
+	static final Logger LOGGER = LoggerFactory.getLogger(typeof(Generator))
+
+	@Inject extension MethodNamingExtensions
+	@Inject extension ComponentGenerator
+   	@Inject extension IQualifiedNameProvider
+   	
+   	override dispatch void internalDoGenerate(JvmDeclaredType type, IFileSystemAccess fsa) {
+		val log = TimeLogger.start(typeof(Generator));
+		super._internalDoGenerate(type, fsa)
+		log.stop(LOGGER, "generated " + type.qualifiedName)
+	}
+   
+	override doGenerate(Resource input, IFileSystemAccess fsa) {
+		super.doGenerate(input, fsa)
+		
+		for (tmp : input.allContents.filter[it instanceof LService].toList) {
+			val LService service = tmp as LService
+			if(service.name != null) {
+				val log = TimeLogger.start(typeof(Generator));
+				fsa.deleteFile(service.toServiceComponentName);
+				fsa.generateFile(service.toServiceComponentName, "OSGI-INF", service.getServiceContent);
+				log.stop(LOGGER, "generated " + service.toServiceComponentName)
+			}
+		}
+	}
+
+	def toServiceComponentName(LService service) {
+		service.fullyQualifiedName.toString + ".xml"
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/OutputConfigurationProvider.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/OutputConfigurationProvider.java
new file mode 100644
index 0000000..adc5da6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/generator/OutputConfigurationProvider.java
@@ -0,0 +1,44 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.services.xtext.generator;
+
+import java.util.Set;
+
+import org.eclipse.xtext.generator.OutputConfiguration;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.generator.DelegatingOutputConfigurationProvider;
+
+public class OutputConfigurationProvider extends
+		DelegatingOutputConfigurationProvider {
+
+	/**
+	 * @return a set of {@link OutputConfiguration} available for the generator
+	 */
+	public Set<OutputConfiguration> getOutputConfigurations() {
+		Set<OutputConfiguration> configs = super.getOutputConfigurations();
+
+		OutputConfiguration servicesOutput = new OutputConfiguration("OSGI-INF");
+		servicesOutput.setDescription("Output Folder");
+		servicesOutput.setOutputDirectory("./OSGI-INF");
+		servicesOutput.setOverrideExistingResources(true);
+		servicesOutput.setCreateOutputDirectory(true);
+		servicesOutput.setCleanUpDerivedResources(true);
+		servicesOutput.setSetDerivedProperty(true);
+		servicesOutput.setKeepLocalHistory(true);
+		configs.add(servicesOutput);
+
+		return configs;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/jvmmodel/ServicesGrammarJvmModelInferrer.xtend b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/jvmmodel/ServicesGrammarJvmModelInferrer.xtend
new file mode 100644
index 0000000..d5efa5a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/jvmmodel/ServicesGrammarJvmModelInferrer.xtend
@@ -0,0 +1,209 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.jvmmodel
+
+import com.google.inject.Inject
+import java.util.Set
+import javax.persistence.EntityManagerFactory
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.common.types.JvmGenericType
+import org.eclipse.xtext.common.types.JvmType
+import org.eclipse.xtext.common.types.util.TypeReferences
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
+import org.eclipse.osbp.dsl.common.xtext.extensions.NamingExtensions
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService
+import org.eclipse.osbp.dsl.dto.xtext.extensions.MethodNamingExtensions
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage
+import org.eclipse.osbp.dsl.semantic.service.LCardinality
+import org.eclipse.osbp.dsl.semantic.service.LDTOService
+import org.eclipse.osbp.dsl.semantic.service.LInjectedService
+import org.eclipse.osbp.dsl.semantic.service.OSBPServiceFactory
+import org.eclipse.osbp.dsl.services.xtext.extensions.ModelExtensions
+import org.eclipse.osbp.dsl.services.xtext.extensions.ServicesTypesBuilder
+import org.eclipse.osbp.dsl.xtext.lazyresolver.IndexModelInferrer
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence
+
+/**
+ * <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 ServicesGrammarJvmModelInferrer extends IndexModelInferrer {
+
+	/**
+     * convenience API to build and initialize JVM types and their members.
+     */
+	protected val Logger log = LoggerFactory.getLogger(getClass())
+
+	@Inject extension IQualifiedNameProvider
+	@Inject extension ServicesTypesBuilder
+	@Inject extension ModelExtensions
+	@Inject extension NamingExtensions
+	@Inject TypeReferences references
+	@Inject
+	private MethodNamingExtensions dtoNamings;
+
+	def dispatch void inferFullState(JvmType type, EObject element, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+	}
+
+	// used for test cases with old derived state computer
+	def dispatch void infer(LDTOService service, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = service.toJvmType;
+		type.inferFullState(service, acceptor, isPrelinkingPhase, "")
+	}
+
+	def dispatch void inferTypesOnly(LDTOService service, IJvmDeclaredTypeAcceptor acceptor, boolean isPrelinkingPhase) {
+
+		val type = service.toJvmType
+		type.markAsToBeDerivedLater(service, isPrelinkingPhase)
+		acceptor.accept(type);
+
+		// pass inferring to delegates
+		inferTypesOnlyByDelegates(service, acceptor, isPrelinkingPhase);
+	}
+
+	def dispatch void inferFullState(JvmGenericType type, LDTOService service, IJvmDeclaredTypeAcceptor acceptor,
+		boolean isPrelinkingPhase, String selector) {
+
+		acceptor.accept(type).initializeLater [
+			val TimeLogger doInferLog = TimeLogger.start(getClass());
+			type.markAsDerived
+			fileHeader = (service.eContainer as LTypedPackage).documentation
+			documentation = service.getDocumentation
+			if (service.dto.basedOnEntity) {
+				if (service.mutablePersistenceId) {
+					superTypes += references.getTypeForName(typeof(AbstractDTOServiceWithMutablePersistence), service,
+						service.dto.toTypeReference, service.dto.wrappedEntity.toTypeReference)
+				} else {
+					superTypes += references.getTypeForName(typeof(AbstractDTOService), service,
+						service.dto.toTypeReference, service.dto.wrappedEntity.toTypeReference)
+				}
+
+				// Constructor
+				if (service.mutablePersistenceId) {
+					members += service.toConstructor() [
+						body = '''
+						// set the default persistence ID
+						setPersistenceId("«service.persistenceId»");'''
+					]
+				} else {
+					members += service.toConstructor()[]
+				}
+
+				if (service.dtoJvm != null) {
+					members += service.toMethod("getDtoClass",
+						references.getTypeForName(typeof(Class), service, service.dtoJvm.cloneWithProxies)) [
+						body = '''return «service.dto.name».class;'''
+					]
+				}
+
+				//				members += service.toMethod("createDto", service.dtoJvm.cloneWithProxies) [
+				//					body = '''return new «service.dto.name»();'''
+				//				]
+				//				members += service.toMethod("createEntity", service.dto.wrappedTypeJvm.cloneWithProxies) [
+				//					body = '''return new «service.dto.wrappedEntity.name»();'''
+				//				]
+				members += service.toMethod("getEntityClass",
+					references.getTypeForName(typeof(Class), service, service.dto.wrappedTypeJvm.cloneWithProxies)) [
+					body = '''return «service.dto.wrappedEntity.name».class;'''
+				]
+
+				if (service.dto.idAttribute != null) {
+					members += service.toMethod("getId", references.getTypeForName(typeof(Object), service, null)) [
+						parameters += service.toParameter('dto', service.dto.toTypeReference)
+						body = '''return dto.«service.dto.idAttribute?.toGetterName»();'''
+					]
+				} else {
+					if (service.dtoJvm != null) {
+						members += service.toMethod("getId", references.getTypeForName(typeof(Object), service, null)) [
+							parameters += service.toParameter('dto', service.dtoJvm.cloneWithProxies)
+							body = '''throw new UnsupportedOperationException("No id available for DTO.");'''
+						]
+					}
+				}
+			} else {
+
+				// Constructor
+				members += service.toConstructor()[]
+
+				// create the emf service
+				val LInjectedService emfService = OSBPServiceFactory.eINSTANCE.createLInjectedService
+				emfService.attributeName = "emf"
+				emfService.cardinality = LCardinality.ONE_TO_ONE
+				emfService.service = references.getTypeForName(typeof(EntityManagerFactory), service, null)
+				service.injectedServices.services += emfService
+
+				if (service.injectedServices != null) {
+					for (f : service.injectedServices.services) {
+						switch (f.cardinality) {
+							case ZERO_TO_ONE:
+								members += f.toField(f.attributeName, f.service.cloneWithProxies)
+							case ZERO_TO_MANY:
+								members += f.toField(f.attributeName,
+									references.getTypeForName(typeof(Set), service, f.service.cloneWithProxies))
+							case ONE_TO_ONE:
+								members += f.toField(f.attributeName, f.service.cloneWithProxies)
+							case ONE_TO_MANY:
+								members += f.toField(f.attributeName,
+									references.getTypeForName(typeof(Set), service, f.service.cloneWithProxies))
+							default:
+								members += f.toField(f.attributeName, f.service.cloneWithProxies)
+						}
+					}
+				}
+
+				//
+				for (f : service.operations) {
+					members += f.toMethod(f.toName, f.getType) [
+						documentation = f.getDocumentation
+						for (p : f.getParams) {
+							parameters += p.toParameter(p.name, p.parameterType)
+						}
+						body = f.getBody
+					]
+				}
+
+				// other services
+				if (service.injectedServices != null) {
+					for (f : service.injectedServices.services) {
+						switch (f.cardinality) {
+							case ZERO_TO_ONE: {
+								members += f.toBindService(f.attributeName, f.service.cloneWithProxies)
+								members += f.toUnbindService(f.attributeName, f.service.cloneWithProxies)
+							}
+							case ONE_TO_ONE: {
+								members += f.toBindService(f.attributeName, f.service.cloneWithProxies)
+								members += f.toUnbindService(f.attributeName, f.service.cloneWithProxies)
+							}
+							case ZERO_TO_MANY: {
+								members += f.toAddService(f.attributeName, f.service.cloneWithProxies)
+								members += f.toRemoveService(f.attributeName, f.service.cloneWithProxies)
+							}
+							case ONE_TO_MANY: {
+								members += f.toAddService(f.attributeName, f.service.cloneWithProxies)
+								members += f.toRemoveService(f.attributeName, f.service.cloneWithProxies)
+							}
+						}
+					}
+				}
+			}
+			doInferLog.stop(log, "Inferring service " + service.name)
+		]
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/linker/ServicesJvmLinkingHelper.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/linker/ServicesJvmLinkingHelper.java
new file mode 100644
index 0000000..c9dca27
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/linker/ServicesJvmLinkingHelper.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.linker;
+
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+
+public class ServicesJvmLinkingHelper extends LazyJvmTypeLinkingHelper {
+
+	public ServicesJvmLinkingHelper() {
+		register(OSBPServicePackage.Literals.LDTO_SERVICE__DTO,
+				OSBPServicePackage.Literals.LDTO_SERVICE__DTO_JVM);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesBatchScopeProvider.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesBatchScopeProvider.java
new file mode 100644
index 0000000..adea442
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesBatchScopeProvider.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.scope;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonBatchScopeProvider;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * 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 ServicesBatchScopeProvider extends CommonBatchScopeProvider {
+
+	@Override
+	public IScope getScope(final EObject context, EReference reference) {
+		if (reference == OSBPServicePackage.Literals.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES) {
+			return new ServicesFilterableScope((LFilterableAttributes) context);
+		} else if (reference == OSBPServicePackage.Literals.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES) {
+			return new ServicesSortableScope((LSortableAttributes) context);
+		}
+
+		// if (reference == OSBPServicePackage.Literals.LSER) {
+		// return new ServicesInheritedReferenceScope(
+		// (LDtoInheritedReference) context);
+		// } else if (reference ==
+		// OSBPServicePackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE)
+		// {
+		// return new ServicesInheritedAttributeScope(
+		// (LDtoInheritedAttribute) context);
+		// } else if (reference == OSBPServicePackage.Literals.LDTO__SUPER_TYPE)
+		// {
+		// return new InheritTypesFilterScope((LType) context, super.getScope(
+		// context, reference));
+		// }
+		return super.getScope(context, reference);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesFilterableScope.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesFilterableScope.java
new file mode 100644
index 0000000..2433f49
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesFilterableScope.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+
+public class ServicesFilterableScope extends AbstractScope {
+	private final LFilterableAttributes container;
+
+	public ServicesFilterableScope(LFilterableAttributes container) {
+		super(IScope.NULLSCOPE, true);
+		this.container = container;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		LDto dto = container.getParent().getDto();
+
+		DtoModelExtensions dtoExtensions = new DtoModelExtensions();
+		for (LFeature feature : dto.getAllFeatures()) {
+			result.add(new EObjectDescription(QualifiedName
+					.create(dtoExtensions.toName(feature)), feature, null));
+		}
+
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesImportedNamespaceAwareLocalScopeProvider.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesImportedNamespaceAwareLocalScopeProvider.java
new file mode 100644
index 0000000..00b939c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesImportedNamespaceAwareLocalScopeProvider.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.scope;
+
+import java.util.List;
+
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.scoping.impl.ImportNormalizer;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonImportedNamespaceAwareLocalScopeProvider;
+
+import com.google.inject.Inject;
+
+public class ServicesImportedNamespaceAwareLocalScopeProvider extends
+		CommonImportedNamespaceAwareLocalScopeProvider {
+
+	@Inject
+	IQualifiedNameConverter qualifiedNameConverter;
+
+	@Override
+	protected List<ImportNormalizer> getImplicitImports(boolean ignoreCase) {
+		List<ImportNormalizer> temp = super.getImplicitImports(ignoreCase);
+
+		temp.add(new ImportNormalizer(qualifiedNameConverter
+				.toQualifiedName("org.eclipse.osbp.dsl.common.datatypes"), true,
+				ignoreCase));
+
+		return temp;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesInheritedReferenceScope.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesInheritedReferenceScope.java
new file mode 100644
index 0000000..521be31
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesInheritedReferenceScope.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.semantic.common.types.LType;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.LDtoInheritedReference;
+import org.eclipse.osbp.dsl.semantic.entity.LBean;
+import org.eclipse.osbp.dsl.semantic.entity.LBeanReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
+
+public class ServicesInheritedReferenceScope extends AbstractScope {
+	private final LDtoInheritedReference prop;
+
+	public ServicesInheritedReferenceScope(LDtoInheritedReference prop) {
+		super(IScope.NULLSCOPE, true);
+		this.prop = prop;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		LDto container = prop.getDTO();
+		LType type = container.getWrappedType();
+
+		if (type instanceof LEntity) {
+			LEntity entity = (LEntity) type;
+			for (LEntityReference entityRef : entity.getAllReferences()) {
+				result.add(new EObjectDescription(QualifiedName
+						.create(entityRef.getName()), entityRef, null));
+			}
+		} else if (type instanceof LBean) {
+			LBean bean = (LBean) type;
+			for (LBeanReference beanRef : bean.getAllReferences()) {
+				result.add(new EObjectDescription(QualifiedName.create(beanRef
+						.getName()), beanRef, null));
+			}
+		}
+
+		return result;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesScopeProvider.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesScopeProvider.java
new file mode 100644
index 0000000..8ba70dc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesScopeProvider.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.scope;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.osbp.dsl.common.xtext.scope.CommonScopeProvider;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.OSBPServicePackage;
+
+/**
+ * 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 ServicesScopeProvider extends CommonScopeProvider {
+
+	@Override
+	public IScope getScope(final EObject context, EReference reference) {
+		if (reference == OSBPServicePackage.Literals.LFILTERABLE_ATTRIBUTES__FILTERABLE_FEATURES) {
+			return new ServicesFilterableScope((LFilterableAttributes) context);
+		} else if (reference == OSBPServicePackage.Literals.LSORTABLE_ATTRIBUTES__SORTABLE_FEATURES) {
+			return new ServicesSortableScope((LSortableAttributes) context);
+		}
+
+		// } else if (reference ==
+		// OSBPDtoPackage.Literals.LDTO_INHERITED_ATTRIBUTE__INHERITED_FEATURE) {
+		// return new ServicesInheritedAttributeScope(
+		// (LDtoInheritedAttribute) context);
+		// } else if (reference ==
+		// OSBPDtoPackage.Literals.LDTO_REFERENCE__OPPOSITE) {
+		// return new DtoRefOppositeScope((LDtoReference) context);
+		// } else if (reference == OSBPDtoPackage.Literals.LDTO__WRAPPED_TYPE) {
+		// return new WrappedTypeFilterScope(
+		// super.getScope(context, reference));
+		// } else if (reference == OSBPDtoPackage.Literals.LDTO__SUPER_TYPE) {
+		// return new InheritTypesFilterScope((LType) context, super.getScope(
+		// context, reference));
+		// } else if (reference == OSBPTypesPackage.Literals.LATTRIBUTE__TYPE) {
+		// LAttribute att = (LAttribute) context;
+		// if (att.isId() || att.isVersion() || att.isUuid()) {
+		// return new DatatypesFilterScope(super.getScope(context,
+		// reference));
+		// } else if (att.isUuid()) {
+		// return new UUIdFilterScope(super.getScope(context, reference));
+		// }
+		// }
+		return super.getScope(context, reference);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesSortableScope.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesSortableScope.java
new file mode 100644
index 0000000..da13688
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/scope/ServicesSortableScope.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.scope;
+
+import java.util.ArrayList;
+
+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.impl.AbstractScope;
+import org.eclipse.osbp.dsl.dto.xtext.extensions.DtoModelExtensions;
+import org.eclipse.osbp.dsl.semantic.common.types.LFeature;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+
+public class ServicesSortableScope extends AbstractScope {
+	private final LSortableAttributes container;
+
+	public ServicesSortableScope(LSortableAttributes container) {
+		super(IScope.NULLSCOPE, true);
+		this.container = container;
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		ArrayList<IEObjectDescription> result = new ArrayList<IEObjectDescription>();
+		LDto dto = container.getParent().getDto();
+
+		DtoModelExtensions dtoExtensions = new DtoModelExtensions();
+		for (LFeature feature : dto.getAllFeatures()) {
+			result.add(new EObjectDescription(QualifiedName
+					.create(dtoExtensions.toName(feature)), feature, null));
+		}
+
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServiceGrammarTransientValueService.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServiceGrammarTransientValueService.java
new file mode 100644
index 0000000..cfa2efb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServiceGrammarTransientValueService.java
@@ -0,0 +1,21 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.services.xtext.serializer;
+
+import org.eclipse.osbp.dsl.xtext.lazyresolver.linker.LazyJvmTypeTransientValueService;
+
+public class ServiceGrammarTransientValueService extends
+		LazyJvmTypeTransientValueService {
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServicesGrammarSemanticSequencer.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServicesGrammarSemanticSequencer.java
new file mode 100644
index 0000000..d37fc8f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServicesGrammarSemanticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.serializer;
+
+public class ServicesGrammarSemanticSequencer extends AbstractServicesGrammarSemanticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServicesGrammarSyntacticSequencer.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServicesGrammarSyntacticSequencer.java
new file mode 100644
index 0000000..567be11
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/serializer/ServicesGrammarSyntacticSequencer.java
@@ -0,0 +1,14 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.serializer;
+
+public class ServicesGrammarSyntacticSequencer extends AbstractServicesGrammarSyntacticSequencer {
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/validation/ServicesGrammarJavaValidator.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/validation/ServicesGrammarJavaValidator.java
new file mode 100644
index 0000000..988542a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/validation/ServicesGrammarJavaValidator.java
@@ -0,0 +1,80 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.validation;
+
+import java.util.List;
+
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.common.types.util.TypeReferences;
+import org.eclipse.xtext.validation.Check;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.osbp.dsl.semantic.common.types.LTypedPackage;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+
+@SuppressWarnings("restriction")
+public class ServicesGrammarJavaValidator
+		extends
+		org.eclipse.osbp.dsl.services.xtext.validation.AbstractServicesGrammarJavaValidator {
+
+	@Check
+	public void checkClassPath(LTypedPackage model) {
+		TypeReferences typeReferences = getServices().getTypeReferences();
+		final JvmGenericType listType = (JvmGenericType) typeReferences
+				.findDeclaredType(List.class, model);
+		if (listType == null || listType.getTypeParameters().isEmpty()) {
+			error("Couldn't find a JDK 1.5 or higher on the project's classpath.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__JDK_1_5);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.dsl.dto.lib.services.IDTOService", model) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.osbp.dsl.dto.lib' on the project's classpath.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DTO_LIB);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.runtime.common.annotations.Dispose", model) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.osbp.runtime.common' on the project's classpath.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__L_RUNTIME_COMMON);
+		}
+		if (typeReferences.findDeclaredType(Extension.class, model) == null) {
+			error("Couldn't find the mandatory library 'org.eclipse.xtext.xbase.lib' 2.7.3 or higher on the project's classpath.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__XBASE_LIB);
+		}
+		if (typeReferences.findDeclaredType("javax.persistence.Persistence",
+				model) == null) {
+			warning("Couldn't find the optional library 'javax.persistence' 2.1.0 or higher on the project's classpath. If you are using JPA-Dto-Services, the library is mandatory.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__JAVAX_PERSISTENCE);
+		}
+		if (typeReferences.findDeclaredType(
+				"org.eclipse.osbp.dsl.common.datatypes.IDatatypeConstants", model) == null) {
+			warning("Couldn't find the optional library 'org.eclipse.osbp.dsl.datatype.lib' on the project's classpath. This may cause resolving problems.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+		if (typeReferences.findDeclaredType("javax.validation.Valid", model) == null) {
+			error("Couldn't find the library 'javax.validation' on the project's classpath. This may cause resolving problems.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+		if (typeReferences
+				.findDeclaredType(
+						"org.eclipse.osbp.runtime.jsr303.validation.common.JSR303ValidationParticipant",
+						model) == null) {
+			warning("Couldn't find the library 'org.eclipse.osbp.runtime.jsr303.validation' on the project's classpath. This may cause resolving problems.",
+					model, OSBPTypesPackage.Literals.LPACKAGE__NAME,
+					CODE__MISSING__DATATYPE_LIB);
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/valueconverter/ServicesQualifiedNameProvider.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/valueconverter/ServicesQualifiedNameProvider.java
new file mode 100644
index 0000000..4a2088c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/valueconverter/ServicesQualifiedNameProvider.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.valueconverter;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.osbp.dsl.common.xtext.extensions.ModelExtensions;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonQualifiedNameProvider;
+import org.eclipse.osbp.dsl.semantic.service.LFilterableAttributes;
+import org.eclipse.osbp.dsl.semantic.service.LService;
+import org.eclipse.osbp.dsl.semantic.service.LSortableAttributes;
+
+import com.google.inject.Inject;
+
+public class ServicesQualifiedNameProvider extends CommonQualifiedNameProvider {
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Inject
+	ModelExtensions extensions;
+
+	@Override
+	public QualifiedName getFullyQualifiedName(EObject obj) {
+		if (obj == null) {
+			return QualifiedName.create("");
+		}
+
+		if (obj instanceof LFilterableAttributes) {
+			LFilterableAttributes filters = (LFilterableAttributes) obj;
+			LService service = filters.getParent();
+			QualifiedName name = getFullyQualifiedName(service);
+			return name.append("supportedFilter");
+		} else if (obj instanceof LSortableAttributes) {
+			LSortableAttributes sortable = (LSortableAttributes) obj;
+			LService service = sortable.getParent();
+			QualifiedName name = getFullyQualifiedName(service);
+			return name.append("supportedFilter");
+		}
+
+		return super.getFullyQualifiedName(obj);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/valueconverter/ServicesValueConverterService.java b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/valueconverter/ServicesValueConverterService.java
new file mode 100644
index 0000000..32062fc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.services.xtext/src/org/eclipse/osbp/dsl/services/xtext/valueconverter/ServicesValueConverterService.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2011, 2015 - Florian Pirchner,  Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.services.xtext.valueconverter;
+
+import org.eclipse.xtext.conversion.IValueConverter;
+import org.eclipse.xtext.conversion.ValueConverter;
+import org.eclipse.osbp.dsl.common.xtext.valueconverter.CommonValueConverterService;
+
+import com.google.inject.Singleton;
+
+/**
+ * Adds a value conversion for the QualifiedNameWithWildCard rule.
+ */
+@SuppressWarnings("restriction")
+@Singleton
+public class ServicesValueConverterService extends CommonValueConverterService {
+
+	@ValueConverter(rule = "QualifiedNameWithWildCard")
+	public IValueConverter<String> getQualifiedNameWithWildCard() {
+		return getQualifiedNameValueConverter();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/.project b/org.eclipse.osbp.dsl.tests.model/.project
new file mode 100644
index 0000000..08fa64a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/.project
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.tests.model</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.osbp.ide.core.ui.shared.OSBPModelEnhancingBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.osbp.ide.core.ui.shared.OSBPI18nBuilder</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.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+		<nature>org.eclipse.osbp.ide.core.ui.shared.OSBPNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.tests.model/LICENSE.txt b/org.eclipse.osbp.dsl.tests.model/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/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.dsl.tests.model/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.tests.model/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..325ca32
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.tests.model
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.tests.model
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.core.runtime,
+ javax.persistence;bundle-version="2.0.4",
+ org.eclipse.persistence.core;bundle-version="2.5.0",
+ org.eclipse.persistence.jpa;bundle-version="2.5.0",
+ org.eclipse.persistence.asm;bundle-version="3.3.1",
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)",
+ org.apache.derby.core;bundle-version="10.5.1",
+ org.eclipse.core.databinding;bundle-version="1.4.2",
+ org.eclipse.core.databinding.beans;bundle-version="1.2.200",
+ org.eclipse.core.databinding.observable;bundle-version="1.4.1",
+ org.eclipse.core.databinding.property;bundle-version="1.4.200"
+Import-Package: javax.validation;version="1.0.0",
+ javax.validation.constraints;version="1.0.0",
+ org.apache.commons.logging,
+ org.apache.log4j,
+ org.osgi.service.component;version="1.2.0",
+ org.slf4j;version="1.6.4"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Meta-Persistence: META-INF/persistence.xml
+Bundle-ClassPath: lib/mysql-connector-java-5.1.6.jar,.
+Service-Component: OSGI-INF/*.xml
+Bundle-Activator: org.eclipse.osbp.dsl.tests.model.Activator
diff --git a/org.eclipse.osbp.dsl.tests.model/META-INF/persistence.xml b/org.eclipse.osbp.dsl.tests.model/META-INF/persistence.xml
new file mode 100644
index 0000000..f6f35ac
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/META-INF/persistence.xml
@@ -0,0 +1,33 @@
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_1_0.xsd"
+	version="1.0">
+	<persistence-unit name="DEFAULT" 
+		transaction-type="RESOURCE_LOCAL">
+		<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
+		<class>org.osbp.mysmartshop.entities.BaseID</class>
+		<class>org.osbp.mysmartshop.entities.BaseUUID</class>
+		<class>org.osbp.mysmartshop.entities.DtoTestParent</class>
+		<class>org.osbp.mysmartshop.entities.DtoTestChildContainment</class>
+		<class>org.osbp.mysmartshop.entities.DtoTestChildCrossRef</class>
+		<class>org.osbp.mysmartshop.entities.Mcustomer</class>
+		<class>org.osbp.mysmartshop.entities.CashRegister</class>
+		<class>org.osbp.mysmartshop.entities.CashSlip</class>
+		<class>org.osbp.mysmartshop.entities.CashPosition</class>
+		<class>org.osbp.mysmartshop.entities.CashPayment</class>
+		<class>org.osbp.mysmartshop.entities.CashPaymentMethod</class>
+		<class>org.osbp.mysmartshop.entities.CompanyRelationType</class>
+		<class>org.osbp.mysmartshop.entities.CompanyGroup</class>
+		<class>org.osbp.mysmartshop.entities.Company</class>
+		<class>org.osbp.mysmartshop.entities.Address</class>
+		<class>org.osbp.mysmartshop.entities.Department</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Base</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Car</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Addon</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Person</class>
+	
+		<exclude-unlisted-classes>true</exclude-unlisted-classes>
+	</persistence-unit>
+</persistence>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle1DtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle1DtoMapper.xml
new file mode 100644
index 0000000..a028c8e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle1DtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.tocycle1dtomapper">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle1DtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1"/>
+		<property name="fordto.to.dto" type="String">org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto
+		org.eclipse.osbp.dsl.tests.carstore.dtos.BaseDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto"/>
+		<property name="forentity.to.entity" type="String">org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1
+		org.eclipse.osbp.dsl.tests.carstore.entities.Base
+		</property>
+		
+		<property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.tocycle1dtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle2DtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle2DtoMapper.xml
new file mode 100644
index 0000000..84198d3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle2DtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.tocycle2dtomapper">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.ToCycle2DtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2"/>
+		<property name="fordto.to.dto" type="String">org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto
+		org.eclipse.osbp.dsl.tests.carstore.dtos.BaseDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto"/>
+		<property name="forentity.to.entity" type="String">org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2
+		org.eclipse.osbp.dsl.tests.carstore.entities.Base
+		</property>
+		
+		<property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.tocycle2dtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.AddonDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.AddonDtoService.xml
new file mode 100644
index 0000000..54a610e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.AddonDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.services.addondtoservice">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.services.AddonDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.AddonDto"/>
+       <property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.services.addondtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.CarDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.CarDtoService.xml
new file mode 100644
index 0000000..b0b3bf4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.CarDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.services.cardtoservice">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.services.CarDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto"/>
+       <property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.services.cardtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.PersonDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.PersonDtoService.xml
new file mode 100644
index 0000000..336d2d7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.PersonDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.services.persondtoservice">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.services.PersonDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.PersonDto"/>
+       <property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.services.persondtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle1DtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle1DtoService.xml
new file mode 100644
index 0000000..82c1033
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle1DtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.services.tocycle1dtoservice">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle1DtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto"/>
+       <property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.services.tocycle1dtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle2DtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle2DtoService.xml
new file mode 100644
index 0000000..f185fa1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle2DtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.dsl.tests.carstore.dtos.services.tocycle2dtoservice">
+       <implementation class="org.eclipse.osbp.dsl.tests.carstore.dtos.services.ToCycle2DtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto"/>
+       <property name="service.pid" type="String" value="org.eclipse.osbp.dsl.tests.carstore.dtos.services.tocycle2dtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.AddressDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.AddressDtoMapper.xml
new file mode 100644
index 0000000..009f0a0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.AddressDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.addressdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.AddressDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.Address"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.AddressDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.AddressDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.Address
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.addressdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper.xml
new file mode 100644
index 0000000..46e955b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.baseiddtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.BaseID"/>
+		<property name="fordto.to.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseIDDto"/>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseIDDto"/>
+		<property name="forentity.to.entity" type="String" value="org.osbp.mysmartshop.entities.BaseID"/>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.baseiddtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper.xml
new file mode 100644
index 0000000..c181a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.baseuuiddtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.BaseUUID"/>
+		<property name="fordto.to.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseUUIDDto"/>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseUUIDDto"/>
+		<property name="forentity.to.entity" type="String" value="org.osbp.mysmartshop.entities.BaseUUID"/>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.baseuuiddtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPaymentDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPaymentDtoMapper.xml
new file mode 100644
index 0000000..c3d8acd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPaymentDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.cashpaymentdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CashPaymentDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CashPayment"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CashPaymentDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CashPaymentDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CashPayment
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.cashpaymentdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPaymentMethodDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPaymentMethodDtoMapper.xml
new file mode 100644
index 0000000..30d596d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPaymentMethodDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.cashpaymentmethoddtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CashPaymentMethodDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CashPaymentMethod"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CashPaymentMethodDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CashPaymentMethodDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CashPaymentMethod
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.cashpaymentmethoddtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPositionDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPositionDtoMapper.xml
new file mode 100644
index 0000000..2acdad7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashPositionDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.cashpositiondtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CashPositionDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CashPosition"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CashPositionDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CashPositionDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CashPosition
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.cashpositiondtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashRegisterDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashRegisterDtoMapper.xml
new file mode 100644
index 0000000..73ba4c6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashRegisterDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.cashregisterdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CashRegisterDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CashRegister"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CashRegisterDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CashRegisterDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CashRegister
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.cashregisterdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashSlipDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashSlipDtoMapper.xml
new file mode 100644
index 0000000..8496dc8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CashSlipDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.cashslipdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CashSlipDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CashSlip"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CashSlipDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CashSlipDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CashSlip
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.cashslipdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyDtoMapper.xml
new file mode 100644
index 0000000..3a8a04a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.companydtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CompanyDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.Company"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CompanyDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CompanyDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.Company
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.companydtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyGroupDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyGroupDtoMapper.xml
new file mode 100644
index 0000000..c463ee2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyGroupDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.companygroupdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CompanyGroupDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CompanyGroup"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CompanyGroupDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CompanyGroupDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CompanyGroup
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.companygroupdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyRelationTypeDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyRelationTypeDtoMapper.xml
new file mode 100644
index 0000000..d62080b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.CompanyRelationTypeDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.companyrelationtypedtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.CompanyRelationTypeDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.CompanyRelationType"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.CompanyRelationTypeDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.CompanyRelationTypeDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.CompanyRelationType
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.companyrelationtypedtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DepartmentDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DepartmentDtoMapper.xml
new file mode 100644
index 0000000..b6caa24
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DepartmentDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.departmentdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DepartmentDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.Department"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DepartmentDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DepartmentDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.Department
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.departmentdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper.xml
new file mode 100644
index 0000000..8fbcc80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestbeandtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestBean"/>
+		<property name="fordto.to.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestBeanDto"/>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestBeanDto"/>
+		<property name="forentity.to.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestBean"/>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestbeandtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper.xml
new file mode 100644
index 0000000..946fffd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestchildcontainmentdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestChildContainment"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.DtoTestChildContainment
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestchildcontainmentdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper.xml
new file mode 100644
index 0000000..0075ac3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestchildcrossrefdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestChildCrossRef"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.DtoTestChildCrossRef
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestchildcrossrefdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper.xml
new file mode 100644
index 0000000..ecb254f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestparentdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestParent"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DtoTestParentDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestParentDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.DtoTestParent
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestparentdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.McustomerDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.McustomerDtoMapper.xml
new file mode 100644
index 0000000..e2aa3cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.mapper.McustomerDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.mcustomerdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.McustomerDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.Mcustomer"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.McustomerDto
+		org.osbp.mysmartshop.dtos.BaseIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.McustomerDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.Mcustomer
+		org.osbp.mysmartshop.entities.BaseID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.mcustomerdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.AddressDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.AddressDtoService.xml
new file mode 100644
index 0000000..a86ae83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.AddressDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.addressdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.AddressDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.AddressDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.addressdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPaymentDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPaymentDtoService.xml
new file mode 100644
index 0000000..629f985
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPaymentDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.cashpaymentdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CashPaymentDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CashPaymentDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.cashpaymentdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPaymentMethodDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPaymentMethodDtoService.xml
new file mode 100644
index 0000000..a7a80cc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPaymentMethodDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.cashpaymentmethoddtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CashPaymentMethodDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CashPaymentMethodDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.cashpaymentmethoddtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPositionDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPositionDtoService.xml
new file mode 100644
index 0000000..92a789e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashPositionDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.cashpositiondtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CashPositionDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CashPositionDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.cashpositiondtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashRegisterDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashRegisterDtoService.xml
new file mode 100644
index 0000000..c1d22b7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashRegisterDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.cashregisterdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CashRegisterDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CashRegisterDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.cashregisterdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashSlipDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashSlipDtoService.xml
new file mode 100644
index 0000000..7b579d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CashSlipDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.cashslipdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CashSlipDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CashSlipDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.cashslipdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyDtoService.xml
new file mode 100644
index 0000000..ab7eebc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.companydtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CompanyDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CompanyDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.companydtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyGroupDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyGroupDtoService.xml
new file mode 100644
index 0000000..6439c44
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyGroupDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.companygroupdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CompanyGroupDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CompanyGroupDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.companygroupdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyRelationTypeDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyRelationTypeDtoService.xml
new file mode 100644
index 0000000..89eb1ee
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.CompanyRelationTypeDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.companyrelationtypedtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.CompanyRelationTypeDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.CompanyRelationTypeDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.companyrelationtypedtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DepartmentDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DepartmentDtoService.xml
new file mode 100644
index 0000000..adc459a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DepartmentDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.departmentdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DepartmentDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DepartmentDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.departmentdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService.xml
new file mode 100644
index 0000000..4f21c53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.dtotestchildcontainmentdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.dtotestchildcontainmentdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService.xml
new file mode 100644
index 0000000..a39038d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.dtotestchildcrossrefdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.dtotestchildcrossrefdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService.xml
new file mode 100644
index 0000000..bded2b4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.dtotestparentdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestParentDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.dtotestparentdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.McustomerDtoService.xml b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.McustomerDtoService.xml
new file mode 100644
index 0000000..bcb9f86
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/OSGI-INF/org.osbp.mysmartshop.dtos.service.McustomerDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.mcustomerdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.McustomerDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.McustomerDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.mcustomerdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/build.properties b/org.eclipse.osbp.dsl.tests.model/build.properties
new file mode 100644
index 0000000..773da83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+          src-gen/,\
+          xtend-gen/
+bin.includes = META-INF/,\
+               .,\
+               models/,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
diff --git a/org.eclipse.osbp.dsl.tests.model/createDDL_ddlGeneration.jdbc b/org.eclipse.osbp.dsl.tests.model/createDDL_ddlGeneration.jdbc
new file mode 100644
index 0000000..36bbcda
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/createDDL_ddlGeneration.jdbc
@@ -0,0 +1,46 @@
+CREATE TABLE DTO_TEST_PARENT (ID VARCHAR(255) NOT NULL, STRING VARCHAR(255), BEANX_FOO VARCHAR(255), BEANX_CROSSREFCHILD VARCHAR(255), CROSS_REF_CHILD_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE DTO_TEST_CHILD_CONTAINMENT (ID VARCHAR(255) NOT NULL, CONTAINER_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE DTO_TEST_CHILD_CROSS_REF (ID VARCHAR(255) NOT NULL, CONTAINER_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE MCUSTOMER (ID INTEGER NOT NULL, ACCOUNT_NUM BIGINT, ADDRESS1 VARCHAR(255), ADDRESS2 VARCHAR(255), ADDRESS3 VARCHAR(255), ADDRESS4 VARCHAR(255), BIRTHDATE DATE, CITY VARCHAR(255), COUNTRY VARCHAR(255), DATE_ACCNT_OPENED VARCHAR(255), EDUCATION VARCHAR(255), FNAME VARCHAR(255), FULLNAME VARCHAR(255), GENDER VARCHAR(255), HOUSEOWNER VARCHAR(255), LNAME VARCHAR(255), MARITAL_STATUS VARCHAR(255), MEMBER_CARD VARCHAR(255), MI VARCHAR(255), NUM_CARS_OWNED INTEGER, NUM_CHILDREN_AT_HOME INTEGER, OCCUPATION VARCHAR(255), PHONE1 VARCHAR(255), PHONE2 VARCHAR(255), POSTAL_CODE VARCHAR(255), STATE_PROVINCE VARCHAR(255), TEST VARCHAR(255), TOTAL_CHILDREN INTEGER, YEARLY_INCOME VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE CASH_REGISTER (ID VARCHAR(255) NOT NULL, CURRENT_DAY VARCHAR(255), IP VARCHAR(255), LOCATION VARCHAR(255), NUM VARCHAR(255), PRIMARY KEY (ID))
+CREATE UNIQUE INDEX cashIpIndex ON CASH_REGISTER (ip)
+CREATE UNIQUE INDEX cashNumIndex ON CASH_REGISTER (num)
+CREATE TABLE CASH_SLIP (ID VARCHAR(255) NOT NULL, CASHIER VARCHAR(255), CURRENT_DAY VARCHAR(255), NOW TIMESTAMP, PAYED SMALLINT DEFAULT 0, SERIAL BIGINT, TOTAL FLOAT, CUSTOMER_ID INTEGER, REGISTER_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE INDEX currentDay_index ON CASH_SLIP (currentDay)
+CREATE INDEX serial_index ON CASH_SLIP (currentDay, serial)
+CREATE TABLE CASH_POSITION (ID VARCHAR(255) NOT NULL, AMOUNT FLOAT, NOW TIMESTAMP, PRICE FLOAT, QUANTITY FLOAT, SLIP_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE CASH_PAYMENT (ID VARCHAR(255) NOT NULL, NOW TIMESTAMP, PAYED FLOAT, METHOD_OF_PAYMENT_ID VARCHAR(255), SLIP_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE CASH_PAYMENT_METHOD (ID VARCHAR(255) NOT NULL, CREDIT SMALLINT DEFAULT 0, IMAGE_NAME VARCHAR(255), LOWER_LIMIT FLOAT, NAME VARCHAR(255), NUM VARCHAR(255), PRIMARY KEY (ID))
+CREATE UNIQUE INDEX paymentNumIndex ON CASH_PAYMENT_METHOD (num)
+CREATE TABLE COMPANY_RELATION_TYPE (ID VARCHAR(255) NOT NULL, DESCRIPTION VARCHAR(255), NAME VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE COMPANY_GROUP (ID VARCHAR(255) NOT NULL, DESCRIPTION VARCHAR(255), NAME VARCHAR(255), MAIN_COMPANY_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE COMPANY (ID VARCHAR(255) NOT NULL, DESCRIPTION VARCHAR(255), NAME VARCHAR(255), COMPANY_GROUP_ID VARCHAR(255), RELATION_TYPE_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE ADDRESS (ID VARCHAR(255) NOT NULL, ADDRESS1 VARCHAR(255), ADDRESS2 VARCHAR(255), CITY VARCHAR(255), COUNTRY VARCHAR(255), EMAIL VARCHAR(255), LANDLINE VARCHAR(255), MOBILE VARCHAR(255), POSTAL_CODE VARCHAR(255), STATE_PROVINCE VARCHAR(255), COMPANY_ID VARCHAR(255), DEPARTMENT_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE DEPARTMENT (ID VARCHAR(255) NOT NULL, DEFAULT_YEARLY_INCOME FLOAT, DESCRIPTION VARCHAR(255), NAME VARCHAR(255), COMPANY_ID VARCHAR(255), PRIMARY KEY (ID))
+CREATE TABLE CAR (UUID VARCHAR(255) NOT NULL, FINISHING_DATE DATE, NUMBER VARCHAR(255), OWNER_ID VARCHAR(255), PRIMARY KEY (UUID))
+CREATE TABLE ADDON (UUID VARCHAR(255) NOT NULL, DESCRIPTION VARCHAR(255), CAR_ID VARCHAR(255), PRIMARY KEY (UUID))
+CREATE TABLE TO_CYCLE1 (UUID VARCHAR(255) NOT NULL, CAR_ID VARCHAR(255), PRIMARY KEY (UUID))
+CREATE TABLE TO_CYCLE2 (UUID VARCHAR(255) NOT NULL, CAR_ID VARCHAR(255), PARENT_ID VARCHAR(255), PRIMARY KEY (UUID))
+CREATE TABLE PERSON (UUID VARCHAR(255) NOT NULL, FIRSTNAME VARCHAR(255), LASTNAME VARCHAR(255), HOMEADDRESS_POSTALCODE VARCHAR(255), HOMEADDRESS_STREETNAME VARCHAR(255), WORKADDRESS_POSTALCODE VARCHAR(255), WORKADDRESS_STREETNAME VARCHAR(255), PRIMARY KEY (UUID))
+ALTER TABLE DTO_TEST_PARENT ADD CONSTRAINT DTTSTBNXCRSSRFCHLD FOREIGN KEY (BEANX_CROSSREFCHILD) REFERENCES DTO_TEST_CHILD_CROSS_REF (ID)
+ALTER TABLE DTO_TEST_PARENT ADD CONSTRAINT DTTSTPRCRSSRFCHLDD FOREIGN KEY (CROSS_REF_CHILD_ID) REFERENCES DTO_TEST_CHILD_CROSS_REF (ID)
+ALTER TABLE DTO_TEST_CHILD_CONTAINMENT ADD CONSTRAINT DTTSTCHLDCNTCNTNRD FOREIGN KEY (CONTAINER_ID) REFERENCES DTO_TEST_PARENT (ID)
+ALTER TABLE DTO_TEST_CHILD_CROSS_REF ADD CONSTRAINT DTTSTCHLDCRSCNTNRD FOREIGN KEY (CONTAINER_ID) REFERENCES DTO_TEST_PARENT (ID)
+ALTER TABLE CASH_SLIP ADD CONSTRAINT CASHSLIPREGISTERID FOREIGN KEY (REGISTER_ID) REFERENCES CASH_REGISTER (ID)
+ALTER TABLE CASH_SLIP ADD CONSTRAINT CASHSLIPCUSTOMERID FOREIGN KEY (CUSTOMER_ID) REFERENCES MCUSTOMER (ID)
+ALTER TABLE CASH_POSITION ADD CONSTRAINT CASHPOSITIONSLIPID FOREIGN KEY (SLIP_ID) REFERENCES CASH_SLIP (ID)
+ALTER TABLE CASH_PAYMENT ADD CONSTRAINT CSHPYMNMTHDFPYMNTD FOREIGN KEY (METHOD_OF_PAYMENT_ID) REFERENCES CASH_PAYMENT_METHOD (ID)
+ALTER TABLE CASH_PAYMENT ADD CONSTRAINT CASHPAYMENTSLIP_ID FOREIGN KEY (SLIP_ID) REFERENCES CASH_SLIP (ID)
+ALTER TABLE COMPANY_GROUP ADD CONSTRAINT CMPNYGRUPMNCMPNYID FOREIGN KEY (MAIN_COMPANY_ID) REFERENCES COMPANY (ID)
+ALTER TABLE COMPANY ADD CONSTRAINT CMPNYCMPANYGROUPID FOREIGN KEY (COMPANY_GROUP_ID) REFERENCES COMPANY_GROUP (ID)
+ALTER TABLE COMPANY ADD CONSTRAINT CMPANYRLTIONTYPEID FOREIGN KEY (RELATION_TYPE_ID) REFERENCES COMPANY_RELATION_TYPE (ID)
+ALTER TABLE ADDRESS ADD CONSTRAINT ADDRESS_COMPANY_ID FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY (ID)
+ALTER TABLE ADDRESS ADD CONSTRAINT DDRESSDEPARTMENTID FOREIGN KEY (DEPARTMENT_ID) REFERENCES DEPARTMENT (ID)
+ALTER TABLE DEPARTMENT ADD CONSTRAINT DPARTMENTCOMPANYID FOREIGN KEY (COMPANY_ID) REFERENCES COMPANY (ID)
+ALTER TABLE CAR ADD CONSTRAINT FK_CAR_OWNER_ID FOREIGN KEY (OWNER_ID) REFERENCES PERSON (UUID)
+ALTER TABLE ADDON ADD CONSTRAINT FK_ADDON_CAR_ID FOREIGN KEY (CAR_ID) REFERENCES CAR (UUID)
+ALTER TABLE TO_CYCLE1 ADD CONSTRAINT TO_CYCLE1_CAR_ID FOREIGN KEY (CAR_ID) REFERENCES CAR (UUID)
+ALTER TABLE TO_CYCLE2 ADD CONSTRAINT TO_CYCLE2PARENT_ID FOREIGN KEY (PARENT_ID) REFERENCES TO_CYCLE1 (UUID)
+ALTER TABLE TO_CYCLE2 ADD CONSTRAINT TO_CYCLE2_CAR_ID FOREIGN KEY (CAR_ID) REFERENCES CAR (UUID)
+CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(15), PRIMARY KEY (SEQ_NAME))
+INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 0)
diff --git a/org.eclipse.osbp.dsl.tests.model/dropDDL_ddlGeneration.jdbc b/org.eclipse.osbp.dsl.tests.model/dropDDL_ddlGeneration.jdbc
new file mode 100644
index 0000000..3c6a8f3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/dropDDL_ddlGeneration.jdbc
@@ -0,0 +1,45 @@
+ALTER TABLE DTO_TEST_PARENT DROP CONSTRAINT DTTSTBNXCRSSRFCHLD
+ALTER TABLE DTO_TEST_PARENT DROP CONSTRAINT DTTSTPRCRSSRFCHLDD
+ALTER TABLE DTO_TEST_CHILD_CONTAINMENT DROP CONSTRAINT DTTSTCHLDCNTCNTNRD
+ALTER TABLE DTO_TEST_CHILD_CROSS_REF DROP CONSTRAINT DTTSTCHLDCRSCNTNRD
+ALTER TABLE CASH_SLIP DROP CONSTRAINT CASHSLIPREGISTERID
+ALTER TABLE CASH_SLIP DROP CONSTRAINT CASHSLIPCUSTOMERID
+ALTER TABLE CASH_POSITION DROP CONSTRAINT CASHPOSITIONSLIPID
+ALTER TABLE CASH_PAYMENT DROP CONSTRAINT CSHPYMNMTHDFPYMNTD
+ALTER TABLE CASH_PAYMENT DROP CONSTRAINT CASHPAYMENTSLIP_ID
+ALTER TABLE COMPANY_GROUP DROP CONSTRAINT CMPNYGRUPMNCMPNYID
+ALTER TABLE COMPANY DROP CONSTRAINT CMPNYCMPANYGROUPID
+ALTER TABLE COMPANY DROP CONSTRAINT CMPANYRLTIONTYPEID
+ALTER TABLE ADDRESS DROP CONSTRAINT ADDRESS_COMPANY_ID
+ALTER TABLE ADDRESS DROP CONSTRAINT DDRESSDEPARTMENTID
+ALTER TABLE DEPARTMENT DROP CONSTRAINT DPARTMENTCOMPANYID
+ALTER TABLE CAR DROP CONSTRAINT FK_CAR_OWNER_ID
+ALTER TABLE ADDON DROP CONSTRAINT FK_ADDON_CAR_ID
+ALTER TABLE TO_CYCLE1 DROP CONSTRAINT TO_CYCLE1_CAR_ID
+ALTER TABLE TO_CYCLE2 DROP CONSTRAINT TO_CYCLE2PARENT_ID
+ALTER TABLE TO_CYCLE2 DROP CONSTRAINT TO_CYCLE2_CAR_ID
+DROP TABLE DTO_TEST_PARENT
+DROP TABLE DTO_TEST_CHILD_CONTAINMENT
+DROP TABLE DTO_TEST_CHILD_CROSS_REF
+DROP TABLE MCUSTOMER
+DROP INDEX cashIpIndex
+DROP INDEX cashNumIndex
+DROP TABLE CASH_REGISTER
+DROP INDEX currentDay_index
+DROP INDEX serial_index
+DROP TABLE CASH_SLIP
+DROP TABLE CASH_POSITION
+DROP TABLE CASH_PAYMENT
+DROP INDEX paymentNumIndex
+DROP TABLE CASH_PAYMENT_METHOD
+DROP TABLE COMPANY_RELATION_TYPE
+DROP TABLE COMPANY_GROUP
+DROP TABLE COMPANY
+DROP TABLE ADDRESS
+DROP TABLE DEPARTMENT
+DROP TABLE CAR
+DROP TABLE ADDON
+DROP TABLE TO_CYCLE1
+DROP TABLE TO_CYCLE2
+DROP TABLE PERSON
+DELETE FROM SEQUENCE WHERE SEQ_NAME = 'SEQ_GEN'
diff --git a/org.eclipse.osbp.dsl.tests.model/epl-v10.html b/org.eclipse.osbp.dsl.tests.model/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/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.dsl.tests.model/hs_err_pid32859.log b/org.eclipse.osbp.dsl.tests.model/hs_err_pid32859.log
new file mode 100644
index 0000000..a8b67d2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/hs_err_pid32859.log
@@ -0,0 +1,524 @@
+#
+# A fatal error has been detected by the Java Runtime Environment:
+#
+#  SIGSEGV (0xb) at pc=0x000000010557d8fc, pid=32859, tid=17923
+#
+# JRE version: 7.0_10-b18
+# Java VM: Java HotSpot(TM) 64-Bit Server VM (23.6-b04 mixed mode bsd-amd64 compressed oops)
+# Problematic frame:
+# V  [libjvm.dylib+0x25e8fc]
+#
+# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
+#
+# If you would like to submit a bug report, please visit:
+#   http://bugreport.sun.com/bugreport/crash.jsp
+#
+
+---------------  T H R E A D  ---------------
+
+Current thread (0x00007f92c4000800):  JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_in_vm, id=17923, stack(0x000000015c055000,0x000000015c155000)]
+
+siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x000000000000000c
+
+Registers:
+RAX=0x0000000000000000, RBX=0x0000000141ed0398, RCX=0x000000000000000c, RDX=0x0000000000000000
+RSP=0x000000015c154a70, RBP=0x000000015c154a70, RSI=0x00007f92c1c723d0, RDI=0x0000000141ed0398
+R8 =0x0000000000000018, R9 =0x0000000000000002, R10=0x0000000000000000, R11=0x00007f92c287fce0
+R12=0x00007f92c4000800, R13=0x00007f92c8109eb0, R14=0x0000000000000000, R15=0x0000000000000000
+RIP=0x000000010557d8fc, EFLAGS=0x0000000000010202, ERR=0x0000000000000004
+  TRAPNO=0x000000000000000e
+
+Top of Stack: (sp=0x000000015c154a70)
+0x000000015c154a70:   000000015c154aa0 00000001055ae036
+0x000000015c154a80:   0000000000000000 0000000000000000
+0x000000015c154a90:   0000000141ed0398 00007f92c40009d8
+0x000000015c154aa0:   000000015c154b10 00000001055bd82d
+0x000000015c154ab0:   00007f92c4000800 00007f92c4000800
+0x000000015c154ac0:   0000000000000000 0000000000000000
+0x000000015c154ad0:   00007f92c40009d8 00007f92c4000800
+0x000000015c154ae0:   00007f92c4000800 000000015c154b68
+0x000000015c154af0:   00007f92c1c723d0 00007f92c8109eb0
+0x000000015c154b00:   000000015c154cf0 00007f92c40009d8
+0x000000015c154b10:   000000015c154b40 0000000105e0b65e
+0x000000015c154b20:   000000015c154cf0 0000000105e2bda4
+0x000000015c154b30:   000000015c154b68 0000000105e37568
+0x000000015c154b40:   000000015c154d60 0000000105e1275e
+0x000000015c154b50:   00013e9a00000013 0000000000010a00
+0x000000015c154b60:   00007f92c8113a50 000000015c154bb8
+0x000000015c154b70:   00007f920000012c 000000015c154b80
+0x000000015c154b80:   00007f9200000000 000000015c154bb8
+0x000000015c154b90:   0000000000000000 00007f0000000000
+0x000000015c154ba0:   00013e9a00000018 00007fff00000180
+0x000000015c154bb0:   000000015c154bb8 0000005b01000000
+0x000000015c154bc0:   420000ab00000000 000000000a000000
+0x000000015c154bd0:   c000000000000000 0400000000000000
+0x000000015c154be0:   00000000090c0000 c100000009000000
+0x000000015c154bf0:   0d00000000000000 00000000c2000000
+0x000000015c154c00:   c400000016000000 1a00000000000000
+0x000000015c154c10:   00000000c5000000 c800000023000000
+0x000000015c154c20:   2b00000000000000 00000000c9000000
+0x000000015c154c30:   cb00000036000000 4200000000000000
+0x000000015c154c40:   04006400cc000000 0000000000000001
+0x000000015c154c50:   adb1c2927f000022 ffffffffffffffa0
+0x000000015c154c60:   00640000000000ff 0000000000000105 
+
+Instructions: (pc=0x000000010557d8fc)
+0x000000010557d8dc:   eb 16 48 8d 35 4b 3c 45 00 8a 4e 08 48 d3 e2 48
+0x000000010557d8ec:   03 16 eb 04 48 8b 14 0f 84 c0 0f 94 c0 0f b6 c0
+0x000000010557d8fc:   8b 44 82 0c 5d c3 8b 04 07 5d c3 90 55 48 89 e5
+0x000000010557d90c:   48 83 ec 10 48 83 ce 01 48 89 75 f0 8b 47 68 8b 
+
+Register to memory mapping:
+
+RAX=0x0000000000000000 is an unknown value
+RBX=0x0000000141ed0398 is an oop
+java.lang.String 
+ - klass: 'java/lang/String'
+RCX=0x000000000000000c is an unknown value
+RDX=0x0000000000000000 is an unknown value
+RSP=0x000000015c154a70 is pointing into the stack for thread: 0x00007f92c4000800
+RBP=0x000000015c154a70 is pointing into the stack for thread: 0x00007f92c4000800
+RSI=0x00007f92c1c723d0 is a global jni handle
+RDI=0x0000000141ed0398 is an oop
+java.lang.String 
+ - klass: 'java/lang/String'
+R8 =0x0000000000000018 is an unknown value
+R9 =0x0000000000000002 is an unknown value
+R10=0x0000000000000000 is an unknown value
+R11=0x00007f92c287fce0 is an unknown value
+R12=0x00007f92c4000800 is a thread
+R13=0x00007f92c8109eb0 is an unknown value
+R14=0x0000000000000000 is an unknown value
+R15=0x0000000000000000 is an unknown value
+
+
+Stack: [0x000000015c055000,0x000000015c155000],  sp=0x000000015c154a70,  free space=1022k
+Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
+V  [libjvm.dylib+0x25e8fc]
+V  [libjvm.dylib+0x28f036]
+V  [libjvm.dylib+0x29e82d]
+C  [libjdwp.dylib+0x765e]  value+0x96
+C  [libjdwp.dylib+0xe75e]  debugLoop_run+0x1ce
+C  [libjdwp.dylib+0x1f1ba]  attachThread+0x4d
+V  [libjvm.dylib+0x30b6a6]
+V  [libjvm.dylib+0x4782b4]
+V  [libjvm.dylib+0x47979a]
+V  [libjvm.dylib+0x3b51b5]
+C  [libsystem_c.dylib+0x14772]  _pthread_start+0x147
+C  [libsystem_c.dylib+0x11a1]  thread_start+0xd
+
+
+---------------  P R O C E S S  ---------------
+
+Java Threads: ( => current thread )
+  0x00007f92c690f800 JavaThread "[ThreadPool Manager] - Idle Thread" daemon [_thread_blocked, id=13831, stack(0x000000015bdc6000,0x000000015bec6000)]
+  0x00007f92c4073800 JavaThread "ReaderThread" [_thread_in_native, id=33795, stack(0x000000015ff2f000,0x000000016002f000)]
+  0x00007f92c68d7000 JavaThread "Worker-JM" [_thread_blocked, id=33283, stack(0x000000015faff000,0x000000015fbff000)]
+  0x00007f92c30f3800 JavaThread "[Timer] - Main Queue Handler" daemon [_thread_blocked, id=33027, stack(0x0000000160d92000,0x0000000160e92000)]
+  0x00007f92c6b50800 JavaThread "Bundle File Closer" daemon [_thread_blocked, id=32519, stack(0x000000015f8aa000,0x000000015f9aa000)]
+  0x00007f92c883b000 JavaThread "Start Level Event Dispatcher" daemon [_thread_blocked, id=32011, stack(0x000000015dfd1000,0x000000015e0d1000)]
+  0x00007f92c8834000 JavaThread "Framework Event Dispatcher" daemon [_thread_blocked, id=21507, stack(0x000000015cb34000,0x000000015cc34000)]
+  0x00007f92c312c800 JavaThread "Framework Active Thread" [_thread_blocked, id=19719, stack(0x000000015c92d000,0x000000015ca2d000)]
+  0x00007f92c302c000 JavaThread "Service Thread" daemon [_thread_blocked, id=19203, stack(0x000000015c564000,0x000000015c664000)]
+  0x00007f92c302b800 JavaThread "C2 CompilerThread1" daemon [_thread_blocked, id=18947, stack(0x000000015c461000,0x000000015c561000)]
+  0x00007f92c4003800 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=18691, stack(0x000000015c35e000,0x000000015c45e000)]
+  0x00007f92c3801000 JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=18435, stack(0x000000015c25b000,0x000000015c35b000)]
+  0x00007f92c4002800 JavaThread "JDWP Event Helper Thread" daemon [_thread_blocked, id=18179, stack(0x000000015c158000,0x000000015c258000)]
+=>0x00007f92c4000800 JavaThread "JDWP Transport Listener: dt_socket" daemon [_thread_in_vm, id=17923, stack(0x000000015c055000,0x000000015c155000)]
+  0x00007f92c3022800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=17667, stack(0x000000015bf4c000,0x000000015c04c000)]
+  0x00007f92c2057000 JavaThread "Finalizer" daemon [_thread_blocked, id=13059, stack(0x000000015bc7a000,0x000000015bd7a000)]
+  0x00007f92c2056800 JavaThread "Reference Handler" daemon [_thread_blocked, id=12803, stack(0x000000015bb77000,0x000000015bc77000)]
+  0x00007f92c3001800 JavaThread "main" [_thread_blocked, id=1799, stack(0x00007fff5a20b000,0x00007fff5aa0b000)]
+
+Other Threads:
+  0x00007f92c2053800 VMThread [stack: 0x000000015ba74000,0x000000015bb74000] [id=12547]
+  0x00007f92c400c000 WatcherThread [stack: 0x000000015c667000,0x000000015c767000] [id=19459]
+
+VM state:not at safepoint (normal execution)
+
+VM Mutex/Monitor currently owned by a thread: None
+
+Heap
+ PSYoungGen      total 158400K, used 101193K [0x000000013d310000, 0x0000000147d30000, 0x0000000154bb0000)
+  eden space 143936K, 62% used [0x000000013d310000,0x0000000142b45a38,0x0000000145fa0000)
+  from space 14464K, 75% used [0x0000000146e30000,0x00000001478ccc70,0x0000000147c50000)
+  to   space 14912K, 0% used [0x0000000145fa0000,0x0000000145fa0000,0x0000000146e30000)
+ ParOldGen       total 48192K, used 26826K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 55% used [0x000000010e1b0000,0x000000010fbe2850,0x00000001110c0000)
+ PSPermGen       total 21248K, used 14888K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 70% used [0x0000000108fb0000,0x0000000109e3a288,0x000000010a470000)
+
+Card table byte_map: [0x0000000154bb0000,0x0000000154e0f000] byte_map_base: 0x0000000154368280
+
+Polling page: 0x0000000105e03000
+
+Code Cache  [0x0000000105eda000, 0x00000001061ea000, 0x0000000108eda000)
+ total_blobs=836 nmethods=545 adapters=251 free_code_cache=46256Kb largest_free_block=47170112
+
+Compilation events (10 events):
+Event: 32.327 Thread 0x00007f92c4003800 nmethod 537 0x000000010615ba90 code [0x000000010615c180, 0x000000010615ebd0]
+Event: 32.327 Thread 0x00007f92c4003800  542             org.eclipse.osgi.internal.resolver.StateWriter::writeBundleDescriptionLazyData (816 bytes)
+Event: 32.762 Thread 0x00007f92c302b800 nmethod 541 0x0000000106170850 code [0x0000000106171e60, 0x000000010617f120]
+Event: 32.763 Thread 0x00007f92c302b800  543             org.eclipse.osgi.internal.resolver.StateWriter::writeBundleDescription (262 bytes)
+Event: 32.930 Thread 0x00007f92c4003800 nmethod 542 0x000000010619f6d0 code [0x00000001061a0b00, 0x00000001061b0f68]
+Event: 32.931 Thread 0x00007f92c4003800  544             java.io.DataOutputStream::writeBoolean (22 bytes)
+Event: 32.932 Thread 0x00007f92c4003800 nmethod 544 0x0000000106147b90 code [0x0000000106147ce0, 0x0000000106147de8]
+Event: 32.932 Thread 0x00007f92c4003800  545             org.osgi.framework.Version::equals (72 bytes)
+Event: 32.933 Thread 0x00007f92c4003800 nmethod 545 0x0000000106117e90 code [0x0000000106117fe0, 0x0000000106118218]
+Event: 33.007 Thread 0x00007f92c302b800 nmethod 543 0x00000001061c92d0 code [0x00000001061c9f80, 0x00000001061d39a8]
+
+GC Heap History (10 events):
+Event: 0.956 GC heap before
+{Heap before GC invocations=2 (full 0):
+ PSYoungGen      total 21056K, used 21041K [0x000000013d310000, 0x000000013fc30000, 0x0000000154bb0000)
+  eden space 18048K, 100% used [0x000000013d310000,0x000000013e4b0000,0x000000013e4b0000)
+  from space 3008K, 99% used [0x000000013e4b0000,0x000000013e79c470,0x000000013e7a0000)
+  to   space 3008K, 0% used [0x000000013f940000,0x000000013f940000,0x000000013fc30000)
+ ParOldGen       total 48192K, used 1526K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 3% used [0x000000010e1b0000,0x000000010e32da70,0x00000001110c0000)
+ PSPermGen       total 21248K, used 8530K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 40% used [0x0000000108fb0000,0x0000000109804b80,0x000000010a470000)
+Event: 0.964 GC heap after
+Heap after GC invocations=2 (full 0):
+ PSYoungGen      total 39104K, used 2976K [0x000000013d310000, 0x000000013fc30000, 0x0000000154bb0000)
+  eden space 36096K, 0% used [0x000000013d310000,0x000000013d310000,0x000000013f650000)
+  from space 3008K, 98% used [0x000000013f940000,0x000000013fc28020,0x000000013fc30000)
+  to   space 3008K, 0% used [0x000000013f650000,0x000000013f650000,0x000000013f940000)
+ ParOldGen       total 48192K, used 4382K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 9% used [0x000000010e1b0000,0x000000010e5f7a48,0x00000001110c0000)
+ PSPermGen       total 21248K, used 8530K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 40% used [0x0000000108fb0000,0x0000000109804b80,0x000000010a470000)
+}
+Event: 1.204 GC heap before
+{Heap before GC invocations=3 (full 0):
+ PSYoungGen      total 39104K, used 39072K [0x000000013d310000, 0x000000013fc30000, 0x0000000154bb0000)
+  eden space 36096K, 100% used [0x000000013d310000,0x000000013f650000,0x000000013f650000)
+  from space 3008K, 98% used [0x000000013f940000,0x000000013fc28020,0x000000013fc30000)
+  to   space 3008K, 0% used [0x000000013f650000,0x000000013f650000,0x000000013f940000)
+ ParOldGen       total 48192K, used 4382K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 9% used [0x000000010e1b0000,0x000000010e5f7a48,0x00000001110c0000)
+ PSPermGen       total 21248K, used 8571K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 40% used [0x0000000108fb0000,0x000000010980ee50,0x000000010a470000)
+Event: 1.215 GC heap after
+Heap after GC invocations=3 (full 0):
+ PSYoungGen      total 39104K, used 3008K [0x000000013d310000, 0x0000000141f70000, 0x0000000154bb0000)
+  eden space 36096K, 0% used [0x000000013d310000,0x000000013d310000,0x000000013f650000)
+  from space 3008K, 100% used [0x000000013f650000,0x000000013f940000,0x000000013f940000)
+  to   space 3008K, 0% used [0x0000000141c80000,0x0000000141c80000,0x0000000141f70000)
+ ParOldGen       total 48192K, used 10764K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 22% used [0x000000010e1b0000,0x000000010ec33068,0x00000001110c0000)
+ PSPermGen       total 21248K, used 8571K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 40% used [0x0000000108fb0000,0x000000010980ee50,0x000000010a470000)
+}
+Event: 1.373 GC heap before
+{Heap before GC invocations=4 (full 0):
+ PSYoungGen      total 39104K, used 39104K [0x000000013d310000, 0x0000000141f70000, 0x0000000154bb0000)
+  eden space 36096K, 100% used [0x000000013d310000,0x000000013f650000,0x000000013f650000)
+  from space 3008K, 100% used [0x000000013f650000,0x000000013f940000,0x000000013f940000)
+  to   space 3008K, 0% used [0x0000000141c80000,0x0000000141c80000,0x0000000141f70000)
+ ParOldGen       total 48192K, used 10764K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 22% used [0x000000010e1b0000,0x000000010ec33068,0x00000001110c0000)
+ PSPermGen       total 21248K, used 8587K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 40% used [0x0000000108fb0000,0x0000000109812d48,0x000000010a470000)
+Event: 1.383 GC heap after
+Heap after GC invocations=4 (full 0):
+ PSYoungGen      total 75200K, used 2996K [0x000000013d310000, 0x0000000141f70000, 0x0000000154bb0000)
+  eden space 72192K, 0% used [0x000000013d310000,0x000000013d310000,0x0000000141990000)
+  from space 3008K, 99% used [0x0000000141c80000,0x0000000141f6d0e8,0x0000000141f70000)
+  to   space 3008K, 0% used [0x0000000141990000,0x0000000141990000,0x0000000141c80000)
+ ParOldGen       total 48192K, used 15879K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 32% used [0x000000010e1b0000,0x000000010f131df0,0x00000001110c0000)
+ PSPermGen       total 21248K, used 8587K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 40% used [0x0000000108fb0000,0x0000000109812d48,0x000000010a470000)
+}
+Event: 2.929 GC heap before
+{Heap before GC invocations=5 (full 0):
+ PSYoungGen      total 75200K, used 75188K [0x000000013d310000, 0x0000000141f70000, 0x0000000154bb0000)
+  eden space 72192K, 100% used [0x000000013d310000,0x0000000141990000,0x0000000141990000)
+  from space 3008K, 99% used [0x0000000141c80000,0x0000000141f6d0e8,0x0000000141f70000)
+  to   space 3008K, 0% used [0x0000000141990000,0x0000000141990000,0x0000000141c80000)
+ ParOldGen       total 48192K, used 15879K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 32% used [0x000000010e1b0000,0x000000010f131df0,0x00000001110c0000)
+ PSPermGen       total 21248K, used 11362K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 53% used [0x0000000108fb0000,0x0000000109ac8810,0x000000010a470000)
+Event: 2.948 GC heap after
+Heap after GC invocations=5 (full 0):
+ PSYoungGen      total 75200K, used 2976K [0x000000013d310000, 0x0000000147c50000, 0x0000000154bb0000)
+  eden space 72192K, 0% used [0x000000013d310000,0x000000013d310000,0x0000000141990000)
+  from space 3008K, 98% used [0x0000000141990000,0x0000000141c78030,0x0000000141c80000)
+  to   space 14464K, 0% used [0x0000000146e30000,0x0000000146e30000,0x0000000147c50000)
+ ParOldGen       total 48192K, used 26826K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 55% used [0x000000010e1b0000,0x000000010fbe2850,0x00000001110c0000)
+ PSPermGen       total 21248K, used 11362K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 53% used [0x0000000108fb0000,0x0000000109ac8810,0x000000010a470000)
+}
+Event: 3.418 GC heap before
+{Heap before GC invocations=6 (full 0):
+ PSYoungGen      total 75200K, used 75168K [0x000000013d310000, 0x0000000147c50000, 0x0000000154bb0000)
+  eden space 72192K, 100% used [0x000000013d310000,0x0000000141990000,0x0000000141990000)
+  from space 3008K, 98% used [0x0000000141990000,0x0000000141c78030,0x0000000141c80000)
+  to   space 14464K, 0% used [0x0000000146e30000,0x0000000146e30000,0x0000000147c50000)
+ ParOldGen       total 48192K, used 26826K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 55% used [0x000000010e1b0000,0x000000010fbe2850,0x00000001110c0000)
+ PSPermGen       total 21248K, used 12000K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 56% used [0x0000000108fb0000,0x0000000109b680e0,0x000000010a470000)
+Event: 3.432 GC heap after
+Heap after GC invocations=6 (full 0):
+ PSYoungGen      total 158400K, used 10867K [0x000000013d310000, 0x0000000147d30000, 0x0000000154bb0000)
+  eden space 143936K, 0% used [0x000000013d310000,0x000000013d310000,0x0000000145fa0000)
+  from space 14464K, 75% used [0x0000000146e30000,0x00000001478ccc70,0x0000000147c50000)
+  to   space 14912K, 0% used [0x0000000145fa0000,0x0000000145fa0000,0x0000000146e30000)
+ ParOldGen       total 48192K, used 26826K [0x000000010e1b0000, 0x00000001110c0000, 0x000000013d310000)
+  object space 48192K, 55% used [0x000000010e1b0000,0x000000010fbe2850,0x00000001110c0000)
+ PSPermGen       total 21248K, used 12000K [0x0000000108fb0000, 0x000000010a470000, 0x000000010e1b0000)
+  object space 21248K, 56% used [0x0000000108fb0000,0x0000000109b680e0,0x000000010a470000)
+}
+
+Deoptimization events (10 events):
+Event: 3.994 Thread 0x00007f92c3001800 Uncommon trap -42 fr.pc 0x000000010612e984
+Event: 3.995 Thread 0x00007f92c3001800 Uncommon trap -42 fr.pc 0x000000010612e984
+Event: 3.996 Thread 0x00007f92c3001800 Uncommon trap -42 fr.pc 0x000000010612e984
+Event: 4.003 Thread 0x00007f92c3001800 Uncommon trap -83 fr.pc 0x00000001060605d8
+Event: 4.057 Thread 0x00007f92c3001800 Uncommon trap -58 fr.pc 0x00000001061106d8
+Event: 4.057 Thread 0x00007f92c3001800 Uncommon trap -58 fr.pc 0x00000001061106d8
+Event: 32.211 Thread 0x00007f92c8833000 Uncommon trap -34 fr.pc 0x00000001060f78ec
+Event: 32.211 Thread 0x00007f92c8833000 Uncommon trap -34 fr.pc 0x00000001060f78ec
+Event: 32.211 Thread 0x00007f92c8833000 Uncommon trap -34 fr.pc 0x00000001060f78ec
+Event: 32.262 Thread 0x00007f92c8833000 Uncommon trap -12 fr.pc 0x000000010614ddb0
+
+Internal exceptions (10 events):
+Event: 3.651 Thread 0x00007f92c883b000 Threw 0x0000000140d91f68 at /HUDSON/workspace/jdk7u10-2-build-macosx-amd64-product/jdk7u10/hotspot/src/share/vm/prims/jni.cpp:716
+Event: 3.813 Thread 0x00007f92c3001800 Implicit null exception at 0x000000010610ac57 to 0x000000010610b0b9
+Event: 3.861 Thread 0x00007f92c3001800 Implicit null exception at 0x00000001061242c0 to 0x00000001061275f9
+Event: 3.870 Thread 0x00007f92c3001800 Implicit null exception at 0x0000000106112833 to 0x0000000106112d01
+Event: 3.946 Thread 0x00007f92c3001800 Implicit null exception at 0x000000010612aa54 to 0x000000010612c531
+Event: 4.015 Thread 0x00007f92c3001800 Threw 0x0000000141c4d960 at /HUDSON/workspace/jdk7u10-2-build-macosx-amd64-product/jdk7u10/hotspot/src/share/vm/prims/jvm.cpp:1166
+Event: 4.015 Thread 0x00007f92c3001800 Threw 0x0000000141c4deb0 at /HUDSON/workspace/jdk7u10-2-build-macosx-amd64-product/jdk7u10/hotspot/src/share/vm/prims/jvm.cpp:1166
+Event: 4.023 Thread 0x00007f92c3001800 Threw 0x0000000141c76d48 at /HUDSON/workspace/jdk7u10-2-build-macosx-amd64-product/jdk7u10/hotspot/src/share/vm/prims/jvm.cpp:1166
+Event: 4.024 Thread 0x00007f92c3001800 Threw 0x0000000141c77388 at /HUDSON/workspace/jdk7u10-2-build-macosx-amd64-product/jdk7u10/hotspot/src/share/vm/prims/jvm.cpp:1166
+Event: 32.262 Thread 0x00007f92c8833000 Implicit null exception at 0x000000010614d378 to 0x000000010614dda5
+
+Events (10 events):
+Event: 228.788 Executing VM operation: ChangeSingleStep
+Event: 228.788 Executing VM operation: ChangeSingleStep done
+Event: 228.789 Executing VM operation: ChangeSingleStep
+Event: 228.789 Executing VM operation: ChangeSingleStep done
+Event: 228.901 Executing VM operation: GetOrSetLocal
+Event: 228.901 Executing VM operation: GetOrSetLocal done
+Event: 228.942 Executing VM operation: GetOrSetLocal
+Event: 228.942 Executing VM operation: GetOrSetLocal done
+Event: 229.931 Executing VM operation: GetOrSetLocal
+Event: 229.932 Executing VM operation: GetOrSetLocal done
+
+
+Dynamic libraries:
+0x0000000004f63000 	/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
+0x0000000004f63000 	/System/Library/Frameworks/Security.framework/Versions/A/Security
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices
+0x0000000004f63000 	/usr/lib/libz.1.dylib
+0x0000000004f63000 	/usr/lib/libSystem.B.dylib
+0x0000000004f63000 	/usr/lib/libobjc.A.dylib
+0x0000000004f63000 	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
+0x0000000004f63000 	/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit
+0x0000000004f63000 	/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData
+0x0000000004f63000 	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation
+0x0000000004f63000 	/System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices
+0x0000000004f63000 	/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox
+0x0000000004f63000 	/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit
+0x0000000004f63000 	/System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore
+0x0000000004f63000 	/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox
+0x0000000004f63000 	/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition
+0x0000000004f63000 	/usr/lib/libauto.dylib
+0x0000000004f63000 	/usr/lib/libicucore.A.dylib
+0x0000000004f63000 	/usr/lib/libxml2.2.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI
+0x0000000004f63000 	/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio
+0x0000000004f63000 	/System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration
+0x0000000004f63000 	/usr/lib/liblangid.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport
+0x0000000004f63000 	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
+0x0000000004f63000 	/usr/lib/libDiagnosticMessagesClient.dylib
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices
+0x0000000004f63000 	/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
+0x0000000004f63000 	/System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL
+0x0000000004f63000 	/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
+0x0000000004f63000 	/System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
+0x0000000004f63000 	/System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork
+0x0000000004f63000 	/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
+0x0000000004f63000 	/usr/lib/libCRFSuite.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC
+0x0000000004f63000 	/usr/lib/libc++.1.dylib
+0x0000000004f63000 	/usr/lib/libc++abi.dylib
+0x0000000004f63000 	/usr/lib/system/libcache.dylib
+0x0000000004f63000 	/usr/lib/system/libcommonCrypto.dylib
+0x0000000004f63000 	/usr/lib/system/libcompiler_rt.dylib
+0x0000000004f63000 	/usr/lib/system/libcopyfile.dylib
+0x0000000004f63000 	/usr/lib/system/libdispatch.dylib
+0x0000000004f63000 	/usr/lib/system/libdnsinfo.dylib
+0x0000000004f63000 	/usr/lib/system/libdyld.dylib
+0x0000000004f63000 	/usr/lib/system/libkeymgr.dylib
+0x0000000004f63000 	/usr/lib/system/liblaunch.dylib
+0x0000000004f63000 	/usr/lib/system/libmacho.dylib
+0x0000000004f63000 	/usr/lib/system/libquarantine.dylib
+0x0000000004f63000 	/usr/lib/system/libremovefile.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_blocks.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_c.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_dnssd.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_info.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_kernel.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_m.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_network.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_notify.dylib
+0x0000000004f63000 	/usr/lib/system/libsystem_sandbox.dylib
+0x0000000004f63000 	/usr/lib/system/libunc.dylib
+0x0000000004f63000 	/usr/lib/system/libunwind.dylib
+0x0000000004f63000 	/usr/lib/system/libxpc.dylib
+0x0000000004f63000 	/usr/lib/system/libcorecrypto.dylib
+0x0000000004f63000 	/usr/lib/libstdc++.6.dylib
+0x0000000004f63000 	/usr/lib/libbsm.0.dylib
+0x0000000004f63000 	/usr/lib/libsqlite3.dylib
+0x0000000004f63000 	/usr/lib/libxar.1.dylib
+0x0000000004f63000 	/usr/lib/libpam.2.dylib
+0x0000000004f63000 	/usr/lib/libOpenScriptingUtil.dylib
+0x0000000004f63000 	/usr/lib/libbz2.1.0.dylib
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices
+0x0000000004f63000 	/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices
+0x0000000004f63000 	/System/Library/Frameworks/NetFS.framework/Versions/A/NetFS
+0x0000000004f63000 	/usr/lib/system/libkxld.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth
+0x0000000004f63000 	/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory
+0x0000000004f63000 	/usr/lib/libxslt.1.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/FamilyControls.framework/Versions/A/FamilyControls
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis
+0x0000000004f63000 	/System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib
+0x0000000004f63000 	/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib
+0x0000000004f63000 	/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib
+0x0000000004f63000 	/usr/lib/libcups.2.dylib
+0x0000000004f63000 	/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
+0x0000000004f63000 	/System/Library/Frameworks/GSS.framework/Versions/A/GSS
+0x0000000004f63000 	/usr/lib/libresolv.9.dylib
+0x0000000004f63000 	/usr/lib/libiconv.2.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal
+0x0000000004f63000 	/System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent
+0x0000000004f63000 	/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
+0x0000000004f63000 	/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth
+0x0000000004f63000 	/System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom
+0x0000000004f63000 	/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo
+0x0000000004f63000 	/System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/CoreImage.framework/Versions/A/CoreImage
+0x0000000004f63000 	/System/Library/Frameworks/QuartzCore.framework/Versions/A/Frameworks/ScalableUserInterface.framework/Versions/A/ScalableUserInterface
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib
+0x0000000004f63000 	/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib
+0x0000000004f63000 	/System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport
+0x0000000004f63000 	/System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL
+0x0000000004f63000 	/System/Library/PrivateFrameworks/FaceCoreLight.framework/Versions/A/FaceCoreLight
+0x0000000004f63000 	/System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression
+0x0000000004f63000 	/System/Library/PrivateFrameworks/Ubiquity.framework/Versions/A/Ubiquity
+0x0000000004f63000 	/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement
+0x0000000004f63000 	/System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
+0x0000000004f63000 	/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib
+0x0000000004f63000 	/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation
+0x0000000004f63000 	/System/Library/PrivateFrameworks/CommerceKit.framework/Versions/A/Frameworks/CommerceCore.framework/Versions/A/CommerceCore
+0x0000000004f63000 	/System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication
+0x0000000004f63000 	/System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication
+0x0000000004f63000 	/System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
+0x000000010531f000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/server/libjvm.dylib
+0x0000000105dc6000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libverify.dylib
+0x0000000105dd3000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libjava.dylib
+0x0000000105e04000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libjdwp.dylib
+0x0000000105e41000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/./libnpt.dylib
+0x0000000105ed1000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libzip.dylib
+0x000000015bd7c000 	/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaRuntimeSupport.framework/JavaRuntimeSupport
+0x000000015bd94000 	/System/Library/Frameworks/JavaVM.framework/Versions/A/Frameworks/JavaNativeFoundation.framework/Versions/A/JavaNativeFoundation
+0x000000015bda9000 	/System/Library/Frameworks/JavaVM.framework/Versions/A/JavaVM
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon
+0x000000015bdb6000 	/System/Library/PrivateFrameworks/JavaLaunching.framework/Versions/A/JavaLaunching
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print
+0x0000000004f63000 	/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI
+0x000000015c04e000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libdt_socket.dylib
+0x000000015c908000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libnet.dylib
+0x000000015c91d000 	/Library/Java/JavaVirtualMachines/jdk1.7.0_10.jdk/Contents/Home/jre/lib/libnio.dylib
+0x000000015cd39000 	/daten/dev/lunifera/ws_dslnew/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.200.v20130521-0416/eclipse_1507.so
+0x0000000004f63000 	/System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal
+0x0000000004f63000 	/System/Library/PrivateFrameworks/Librarian.framework/Versions/A/Librarian
+
+VM Arguments:
+jvm_args: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:59588 -Declipse.p2.data.area=@config.dir/p2 -Dfile.encoding=UTF-8 -Xbootclasspath/p:/daten/dev/lunifera/ws_dslnew/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins/org.eclipse.jdt.debug_3.8.0.v20130514-0841/jdi.jar 
+java_command: org.eclipse.equinox.launcher.Main -os macosx -ws cocoa -arch x86_64 -nl de_AT -consoleLog -version 3 -port 59587 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -test org.eclipse.osbp.dsl.entity.xtext.tests.model.testcarstore3.ModelTestcarstore3Tests:test1 -application org.eclipse.pde.junit.runtime.nonuithreadtestapplication -testApplication org.eclipse.pde.junit.runtime.coretestapplication -data /daten/dev/lunifera/ws_dslnew/../junit-workspace -configuration file:/daten/dev/lunifera/ws_dslnew/.metadata/.plugins/org.eclipse.pde.core/pde-junit/ -dev file:/daten/dev/lunifera/ws_dslnew/.metadata/.plugins/org.eclipse.pde.core/pde-junit/dev.properties -os macosx -ws cocoa -arch x86_64 -nl de_AT -consoleLog -testpluginname org.eclipse.osbp.dsl.entity.xtext.tests
+Launcher Type: SUN_STANDARD
+
+Environment Variables:
+PATH=/usr/bin:/bin:/usr/sbin:/sbin
+SHELL=/bin/bash
+DISPLAY=/tmp/launch-6jMIX2/org.macosforge.xquartz:0
+
+Signal Handlers:
+SIGSEGV: [libjvm.dylib+0x4a363d], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGBUS: [libjvm.dylib+0x4a363d], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGFPE: [libjvm.dylib+0x3b3051], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGPIPE: [libjvm.dylib+0x3b3051], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGXFSZ: [libjvm.dylib+0x3b3051], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGILL: [libjvm.dylib+0x3b3051], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000002
+SIGUSR2: [libjvm.dylib+0x3b2bea], sa_mask[0]=0x00000004, sa_flags=0x00000042
+SIGHUP: [libjvm.dylib+0x3b0e4b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGINT: [libjvm.dylib+0x3b0e4b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGTERM: [libjvm.dylib+0x3b0e4b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+SIGQUIT: [libjvm.dylib+0x3b0e4b], sa_mask[0]=0xfffefeff, sa_flags=0x00000042
+
+
+---------------  S Y S T E M  ---------------
+
+OS:Bsduname:Darwin 12.5.0 Darwin Kernel Version 12.5.0: Mon Jul 29 16:33:49 PDT 2013; root:xnu-2050.48.11~1/RELEASE_X86_64 x86_64
+rlimit: STACK 8192k, CORE 0k, NPROC 709, NOFILE 10240, AS infinity
+load average:1.43 2.02 2.05
+
+CPU:total 16 (4 cores per cpu, 2 threads per core) family 6 model 26 stepping 5, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, ht, tsc, tscinvbit, tscinv
+
+Memory: 4k page, physical 4621240k(1155310k free)
+
+/proc/meminfo:
+
+
+vm_info: Java HotSpot(TM) 64-Bit Server VM (23.6-b04) for bsd-amd64 JRE (1.7.0_10-b18), built on Nov 28 2012 07:52:20 by "java_re" with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
+
+time: Wed Jan 15 12:16:38 2014
+elapsed time: 229 seconds
+
diff --git a/org.eclipse.osbp.dsl.tests.model/i18n/I18N.properties b/org.eclipse.osbp.dsl.tests.model/i18n/I18N.properties
new file mode 100644
index 0000000..c78ab43
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/i18n/I18N.properties
@@ -0,0 +1,139 @@
+#default
+account_num=account_num
+activation_time=activation_time
+actual_owner=actual_owner
+addon=addon
+addons=addons
+address=address
+address1=address1
+address2=address2
+address3=address3
+address4=address4
+amount=amount
+beanx=beanx
+birthdate=birthdate
+car=car
+cash_payment=cash_payment
+cash_payment_method=cash_payment_method
+cash_position=cash_position
+cash_register=cash_register
+cash_slip=cash_slip
+cashier=cashier
+city=city
+companies=companies
+company=company
+company_group=company_group
+company_relation_type=company_relation_type
+container=container
+containment_childs=containment_childs
+country=country
+created_by=created_by
+created_on=created_on
+credit=credit
+cross_ref_child=cross_ref_child
+cross_ref_childs=cross_ref_childs
+current_day=current_day
+customer=customer
+cycles1=cycles1
+cycles2=cycles2
+date_accnt_opened=date_accnt_opened
+default_yearly_income=default_yearly_income
+department=department
+departments=departments
+description=description
+dto_test_bean=dto_test_bean
+dto_test_child_containment=dto_test_child_containment
+dto_test_child_cross_ref=dto_test_child_cross_ref
+dto_test_parent=dto_test_parent
+education=education
+email=email
+expiration_time=expiration_time
+finishing_date=finishing_date
+firstname=firstname
+fname=fname
+foo=foo
+fullname=fullname
+gender=gender
+home_address=home_address
+houseowner=houseowner
+id=id
+image_name=image_name
+ip=ip
+landline=landline
+lastname=lastname
+lname=lname
+location=location
+lower_limit=lower_limit
+main_company=main_company
+marital_status=marital_status
+mcustomer=mcustomer
+member_card=member_card
+method_of_payment=method_of_payment
+mi=mi
+mobile=mobile
+name=name
+now=now
+num=num
+num_cars_owned=num_cars_owned
+num_children_at_home=num_children_at_home
+number=number
+occupation=occupation
+org.eclipse.osbp.dsl.tests.carstore.entities.addon=addon
+org.eclipse.osbp.dsl.tests.carstore.entities.addons=addons
+org.eclipse.osbp.dsl.tests.carstore.entities.address=address
+org.eclipse.osbp.dsl.tests.carstore.entities.car=car
+org.eclipse.osbp.dsl.tests.carstore.entities.cycles1=cycles1
+org.eclipse.osbp.dsl.tests.carstore.entities.cycles2=cycles2
+org.eclipse.osbp.dsl.tests.carstore.entities.description=description
+org.eclipse.osbp.dsl.tests.carstore.entities.finishing_date=finishing_date
+org.eclipse.osbp.dsl.tests.carstore.entities.firstname=firstname
+org.eclipse.osbp.dsl.tests.carstore.entities.home_address=home_address
+org.eclipse.osbp.dsl.tests.carstore.entities.lastname=lastname
+org.eclipse.osbp.dsl.tests.carstore.entities.number=number
+org.eclipse.osbp.dsl.tests.carstore.entities.owner=owner
+org.eclipse.osbp.dsl.tests.carstore.entities.owns_cars=owns_cars
+org.eclipse.osbp.dsl.tests.carstore.entities.parent=parent
+org.eclipse.osbp.dsl.tests.carstore.entities.person=person
+org.eclipse.osbp.dsl.tests.carstore.entities.postalcode=postalcode
+org.eclipse.osbp.dsl.tests.carstore.entities.streetname=streetname
+org.eclipse.osbp.dsl.tests.carstore.entities.to_cycle1=to_cycle1
+org.eclipse.osbp.dsl.tests.carstore.entities.to_cycle2=to_cycle2
+org.eclipse.osbp.dsl.tests.carstore.entities.uuid=uuid
+org.eclipse.osbp.dsl.tests.carstore.entities.work_address=work_address
+owner=owner
+owns_cars=owns_cars
+parent=parent
+payed=payed
+payments=payments
+person=person
+phone1=phone1
+phone2=phone2
+positions=positions
+postal_code=postal_code
+postalcode=postalcode
+price=price
+priority=priority
+process_id=process_id
+process_instance_id=process_instance_id
+process_session_id=process_session_id
+quantity=quantity
+register=register
+relation_type=relation_type
+serial=serial
+slip=slip
+slips=slips
+state_province=state_province
+status=status
+streetname=streetname
+string=string
+subject=subject
+task_id=task_id
+test=test
+to_cycle1=to_cycle1
+to_cycle2=to_cycle2
+total=total
+total_children=total_children
+uuid=uuid
+when=when
+work_address=work_address
+yearly_income=yearly_income
diff --git a/org.eclipse.osbp.dsl.tests.model/i18n/I18N_de.properties b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_de.properties
new file mode 100644
index 0000000..468b796
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_de.properties
@@ -0,0 +1,139 @@
+#de
+account_num=Account number
+activation_time=Activation time
+actual_owner=Actual owner
+addon=Addon
+addons=Addons
+address=Address
+address1=Address1
+address2=Address2
+address3=Address3
+address4=Address4
+amount=Amount
+beanx=Beanx
+birthdate=Birthdate
+car=Car
+cash_payment=Cash payment
+cash_payment_method=Cash payment method
+cash_position=Cash position
+cash_register=Cash register
+cash_slip=Cash slip
+cashier=Cashier
+city=City
+companies=Companies
+company=Company
+company_group=Company group
+company_relation_type=Company relation type
+container=Container
+containment_childs=Containment childs
+country=Country
+created_by=Created by
+created_on=Created on
+credit=Credit
+cross_ref_child=Cross reference child
+cross_ref_childs=Cross reference childs
+current_day=Current day
+customer=Customer
+cycles1=Cycles1
+cycles2=Cycles2
+date_accnt_opened=Date account opened
+default_yearly_income=Default yearly income
+department=Department
+departments=Departments
+description=Description
+dto_test_bean=Dto test bean
+dto_test_child_containment=Dto test child containment
+dto_test_child_cross_ref=Dto test child cross reference
+dto_test_parent=Dto test parent
+education=Education
+email=Email
+expiration_time=Expiration time
+finishing_date=Finishing date
+firstname=Firstname
+fname=Fname
+foo=Foo
+fullname=Fullname
+gender=Gender
+home_address=Home address
+houseowner=Houseowner
+id=Identifier
+image_name=Image name
+ip=Ip
+landline=Landline
+lastname=Lastname
+lname=Lname
+location=Location
+lower_limit=Lower limit
+main_company=Main company
+marital_status=Marital status
+mcustomer=Mcustomer
+member_card=Member card
+method_of_payment=Method of payment
+mi=Mi
+mobile=Mobile
+name=Name
+now=Now
+num=Number
+num_cars_owned=Number cars owned
+num_children_at_home=Number children at home
+number=Number
+occupation=Occupation
+org.eclipse.osbp.dsl.tests.carstore.entities.addon=Addon
+org.eclipse.osbp.dsl.tests.carstore.entities.addons=Addons
+org.eclipse.osbp.dsl.tests.carstore.entities.address=Address
+org.eclipse.osbp.dsl.tests.carstore.entities.car=Car
+org.eclipse.osbp.dsl.tests.carstore.entities.cycles1=Cycles1
+org.eclipse.osbp.dsl.tests.carstore.entities.cycles2=Cycles2
+org.eclipse.osbp.dsl.tests.carstore.entities.description=Description
+org.eclipse.osbp.dsl.tests.carstore.entities.finishing_date=Finishing date
+org.eclipse.osbp.dsl.tests.carstore.entities.firstname=Firstname
+org.eclipse.osbp.dsl.tests.carstore.entities.home_address=Home address
+org.eclipse.osbp.dsl.tests.carstore.entities.lastname=Lastname
+org.eclipse.osbp.dsl.tests.carstore.entities.number=Number
+org.eclipse.osbp.dsl.tests.carstore.entities.owner=Owner
+org.eclipse.osbp.dsl.tests.carstore.entities.owns_cars=Owns cars
+org.eclipse.osbp.dsl.tests.carstore.entities.parent=Parent
+org.eclipse.osbp.dsl.tests.carstore.entities.person=Person
+org.eclipse.osbp.dsl.tests.carstore.entities.postalcode=Postalcode
+org.eclipse.osbp.dsl.tests.carstore.entities.streetname=Streetname
+org.eclipse.osbp.dsl.tests.carstore.entities.to_cycle1=To cycle1
+org.eclipse.osbp.dsl.tests.carstore.entities.to_cycle2=To cycle2
+org.eclipse.osbp.dsl.tests.carstore.entities.uuid=Uuid
+org.eclipse.osbp.dsl.tests.carstore.entities.work_address=Work address
+owner=Owner
+owns_cars=Owns cars
+parent=Parent
+payed=Payed
+payments=Payments
+person=Person
+phone1=Phone1
+phone2=Phone2
+positions=Positions
+postal_code=Postal code
+postalcode=Postalcode
+price=Price
+priority=Priority
+process_id=Process identifier
+process_instance_id=Process instance identifier
+process_session_id=Process session identifier
+quantity=Quantity
+register=Register
+relation_type=Relation type
+serial=Serial
+slip=Slip
+slips=Slips
+state_province=State province
+status=Status
+streetname=Streetname
+string=String
+subject=Subject
+task_id=Task identifier
+test=Test
+to_cycle1=To cycle1
+to_cycle2=To cycle2
+total=Total
+total_children=Total children
+uuid=Uuid
+when=When
+work_address=Work address
+yearly_income=Yearly income
diff --git a/org.eclipse.osbp.dsl.tests.model/i18n/I18N_de_AT.properties b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_de_AT.properties
new file mode 100644
index 0000000..6c73e1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_de_AT.properties
@@ -0,0 +1 @@
+#de_AT
diff --git a/org.eclipse.osbp.dsl.tests.model/i18n/I18N_en.properties b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_en.properties
new file mode 100644
index 0000000..15bd9a8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_en.properties
@@ -0,0 +1,140 @@
+#en
+account_num=Account number
+activation_time=Activation time
+actual_owner=Actual owner
+addon=Addon
+addons=Addons
+address=Address
+address1=Address1
+address2=Address2
+address3=Address3
+address4=Address4
+amount=Amount
+beanx=Beanx
+birthdate=Birthdate
+car=Car
+cash_payment=Cash payment
+cash_payment_method=Cash payment method
+cash_position=Cash position
+cash_register=Cash register
+cash_slip=Cash slip
+cashier=Cashier
+city=City
+companies=Companies
+company=Company
+company_group=Company group
+company_relation_type=Company relation type
+container=Container
+containment_childs=Containment childs
+country=Country
+created_by=Created by
+created_on=Created on
+credit=Credit
+cross_ref_child=Cross reference child
+cross_ref_childs=Cross reference childs
+current_day=Current day
+customer=Customer
+cycles1=Cycles1
+cycles2=Cycles2
+date_accnt_opened=Date account opened
+default_yearly_income=Default yearly income
+department=Department
+departments=Departments
+description=Description
+dto_test_bean=Dto test bean
+dto_test_child_containment=Dto test child containment
+dto_test_child_cross_ref=Dto test child cross reference
+dto_test_parent=Dto test parent
+education=Education
+email=Email
+expiration_time=Expiration time
+finishing_date=Finishing date
+firstname=Firstname
+fname=Fname
+foo=Foo
+fullname=Fullname
+gender=Gender
+home_address=Home address
+houseowner=Houseowner
+id=Identifier
+image_name=Image name
+ip=Ip
+landline=Landline
+lastname=Lastname
+lname=Lname
+location=Location
+lower_limit=Lower limit
+main_company=Main company
+marital_status=Marital status
+mcustomer=Mcustomer
+member_card=Member card
+method_of_payment=Method of payment
+mi=Mi
+mobile=Mobile
+name=Name
+now=Now
+num=Number
+num_cars_owned=Number cars owned
+num_children_at_home=Number children at home
+number=Number
+occupation=Occupation
+org.eclipse.osbp.dsl.tests.carstore.entities.addon=addon
+org.eclipse.osbp.dsl.tests.carstore.entities.addons=addons
+org.eclipse.osbp.dsl.tests.carstore.entities.address=address
+org.eclipse.osbp.dsl.tests.carstore.entities.car=car
+org.eclipse.osbp.dsl.tests.carstore.entities.car112=car112
+org.eclipse.osbp.dsl.tests.carstore.entities.cycles1=cycles1
+org.eclipse.osbp.dsl.tests.carstore.entities.cycles2=cycles2
+org.eclipse.osbp.dsl.tests.carstore.entities.description=description
+org.eclipse.osbp.dsl.tests.carstore.entities.finishing_date=finishing date
+org.eclipse.osbp.dsl.tests.carstore.entities.firstname=firstname
+org.eclipse.osbp.dsl.tests.carstore.entities.home_address=home address
+org.eclipse.osbp.dsl.tests.carstore.entities.lastname=lastname
+org.eclipse.osbp.dsl.tests.carstore.entities.number=number
+org.eclipse.osbp.dsl.tests.carstore.entities.owner=owner
+org.eclipse.osbp.dsl.tests.carstore.entities.owns_cars=owns cars
+org.eclipse.osbp.dsl.tests.carstore.entities.parent=parent
+org.eclipse.osbp.dsl.tests.carstore.entities.person=person
+org.eclipse.osbp.dsl.tests.carstore.entities.postalcode=postalcode
+org.eclipse.osbp.dsl.tests.carstore.entities.streetname=streetname
+org.eclipse.osbp.dsl.tests.carstore.entities.to_cycle1=to cycle1
+org.eclipse.osbp.dsl.tests.carstore.entities.to_cycle2=to cycle2
+org.eclipse.osbp.dsl.tests.carstore.entities.uuid=uuid
+org.eclipse.osbp.dsl.tests.carstore.entities.work_address=work address
+owner=Owner
+owns_cars=Owns cars
+parent=Parent
+payed=Payed
+payments=Payments
+person=Person
+phone1=Phone1
+phone2=Phone2
+positions=Positions
+postal_code=Postal code
+postalcode=Postalcode
+price=Price
+priority=Priority
+process_id=Process identifier
+process_instance_id=Process instance identifier
+process_session_id=Process session identifier
+quantity=Quantity
+register=Register
+relation_type=Relation type
+serial=Serial
+slip=Slip
+slips=Slips
+state_province=State province
+status=Status
+streetname=Streetname
+string=String
+subject=Subject
+task_id=Task identifier
+test=Test
+to_cycle1=To cycle1
+to_cycle2=To cycle2
+total=Total
+total_children=Total children
+uuid=Uuid
+when=When
+work_address=Work address
+yearly_income=Yearly income
diff --git a/org.eclipse.osbp.dsl.tests.model/i18n/I18N_en_US.properties b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_en_US.properties
new file mode 100644
index 0000000..d89e21c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_en_US.properties
@@ -0,0 +1 @@
+#en_US
diff --git a/org.eclipse.osbp.dsl.tests.model/i18n/I18N_fr.properties b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_fr.properties
new file mode 100644
index 0000000..a84da83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/i18n/I18N_fr.properties
@@ -0,0 +1 @@
+#fr
diff --git a/org.eclipse.osbp.dsl.tests.model/license.html b/org.eclipse.osbp.dsl.tests.model/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/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.dsl.tests.model/models/carstore.dto b/org.eclipse.osbp.dsl.tests.model/models/carstore.dto
new file mode 100644
index 0000000..27d9b2e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/carstore.dto
@@ -0,0 +1,51 @@
+
+package org.eclipse.osbp.dsl.tests.carstore.dtos {
+	import org.eclipse.osbp.dsl.tests.carstore.entities.*;
+	autoDto BaseDto wraps Base {
+
+		inherit var uuid
+	}
+
+	autoDto CarDto extends BaseDto wraps Car {
+
+		inherit var number
+		inherit var finishingDate
+		inherit ref addons mapto AddonDto
+		inherit ref owner mapto PersonDto
+		inherit ref cycles1 mapto ToCycle1Dto
+	}
+
+	autoDto AddonDto extends BaseDto wraps Addon {
+
+		inherit var description
+		inherit ref car mapto CarDto
+	}
+
+	autoDto ToCycle1Dto extends BaseDto wraps ToCycle1 {
+
+		inherit ref car mapto CarDto
+		inherit ref cycles2 mapto ToCycle2Dto
+	}
+
+	autoDto ToCycle2Dto extends BaseDto wraps ToCycle2 {
+
+		inherit ref parent mapto ToCycle1Dto
+		inherit ref car mapto CarDto
+	}
+
+	autoDto PersonDto extends BaseDto wraps Person {
+
+		inherit var firstname
+		inherit var lastname
+		inherit ref ownsCars mapto CarDto
+		inherit var homeAddress
+		inherit var workAddress
+	}
+
+	autoDto AddressDto wraps Address {
+
+		inherit var streetname
+		inherit var postalcode
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/models/carstore.entity b/org.eclipse.osbp.dsl.tests.model/models/carstore.entity
new file mode 100644
index 0000000..03aca0f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/carstore.entity
@@ -0,0 +1,49 @@
+package org.eclipse.osbp.dsl.tests.carstore.entities {
+	
+	import org.osbp.mysmartshop.datatypes.*;  
+	 
+	mapped superclass Base {
+		uuid String uuid;
+	}
+	   
+	entity Car extends Base {
+		var String number;
+		var Date finishingDate;
+		ref cascade Addon[*] addons opposite car; 
+		ref Person owner opposite ownsCars;
+		
+		// test cycle
+		ref cascade ToCycle1[*] cycles1 opposite car; 
+	}
+	
+	entity Addon extends Base {
+		var String description;
+		ref Car car opposite addons;
+	}
+	
+	entity ToCycle1 extends Base {
+		ref Car car opposite cycles1;
+		ref cascade ToCycle2[*] cycles2 opposite parent; 
+	}
+	
+	entity ToCycle2 extends Base {
+		ref ToCycle1 parent opposite cycles2;
+		
+		// back ref to car MUST NOT resolve the cycles again!
+		ref Car car;
+	}
+ 
+	entity Person extends Base {
+		var String firstname;
+		var String lastname;
+		ref Car[*] ownsCars opposite owner;
+		
+		var Address homeAddress;
+		var Address workAddress;
+	}
+	
+	bean Address {
+		var String streetname;
+		var String postalcode;
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/models/carstore.service b/org.eclipse.osbp.dsl.tests.model/models/carstore.service
new file mode 100644
index 0000000..8b6a6cd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/carstore.service
@@ -0,0 +1,14 @@
+
+package org.eclipse.osbp.dsl.tests.carstore.dtos.service {
+	import org.eclipse.osbp.dsl.tests.carstore.dtos.*
+	dtoservice CarDtoService provides CarDto {
+	}
+	dtoservice AddonDtoService provides AddonDto {
+	}
+	dtoservice ToCycle1DtoService provides ToCycle1Dto {
+	}
+	dtoservice ToCycle2DtoService provides ToCycle2Dto {
+	}
+	dtoservice PersonDtoService provides PersonDto {
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype
new file mode 100644
index 0000000..1ef90d2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype
@@ -0,0 +1,162 @@
+/******************************************************************
+ *                                                                *
+ *  Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ *                                                                *
+ *  This source was created by OSBP Softwarefactory Wizard!       *
+ *                                                                *
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany *
+ *                                                                *
+ *================================================================*
+ *                                                                *
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ *                                                                *
+ ******************************************************************/
+
+/**
+ * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), 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: 
+ * 		Florian Pirchner - Initial implementation
+ */
+
+package org.osbp.mysmartshop.datatypes {
+
+	datatype Timestamp dateType timestamp
+	datatype PaymentMethod jvmType String
+    datatype boolean jvmType java.lang.Boolean as primitive;
+    datatype short jvmType java.lang.Short as primitive;
+    datatype int jvmType java.lang.Integer as primitive;
+    datatype long jvmType java.lang.Long as primitive;
+    datatype double jvmType java.lang.Double as primitive;
+    datatype float jvmType java.lang.Float as primitive;
+    datatype character jvmType java.lang.Character as primitive;
+    datatype byte jvmType java.lang.Byte as primitive;
+
+    datatype Boolean jvmType java.lang.Boolean;
+    datatype Short jvmType java.lang.Short;
+    datatype Int jvmType java.lang.Integer;
+    datatype Long jvmType java.lang.Long;
+    datatype Double jvmType java.lang.Double;
+    datatype Float jvmType java.lang.Float;
+    datatype Character jvmType java.lang.Character;
+    datatype Byte jvmType java.lang.Byte;
+    datatype BigDecimal jvmType java.math.BigDecimal;
+
+    datatype String jvmType java.lang.String;
+	datatype BlobMapping jvmType java.lang.String 
+		properties (
+			key="Blob" value="2"
+			/**
+			 * value="0" name="unnormalized" resolution="unknown"
+			 * value="1" name="small" resolution="16x16"
+			 * value="2" name="mid" resolution="64x64"
+			 * value="3" name="portrait" resolution="64x128"
+			 * value="4" name="landscape" resolution="128x64"
+			 * value="5" name="big" resolution="200x-1"
+			 * 			 
+			 */
+		);
+
+	datatype notnullString jvmType String isNotNull [severity=error]	
+	datatype Date dateType date;
+	datatype Price jvmType Double properties(key="decimalformat" value="###,##0.00 &curren;");
+	datatype DateOnly dateType date properties(key = "Date" value = "Day");
+	datatype BirthDate dateType date isNotNull isPast  [severity=error] properties(key = "Date" value = "Day");
+	datatype Time dateType time;
+	datatype blobtype as blob;
+	datatype clobtype as blob;
+	datatype NumberToUomo jvmType java.lang.Double;
+	datatype TextArea jvmType java.lang.String properties(key = "TextArea" value = "5"); // used for TextArea
+
+	/**
+     * The RichText_Short datatype represents the attribute as a RichTextArea. 
+     * The max length of the input depends on the underlying database. 
+     * If you need to hold bigger data, then use the #RichText_Long.   
+     */
+ 	datatype RichText_Short jvmType String
+  		properties(key = "type" value = "richTextArea");
+	/**
+     * The RichText datatype represents the attribute as a RichTextArea. 
+     * The type in the data model will be a Blob. 
+     */
+ 	datatype RichText_Long as blob
+  		properties(key = "type" value = "richTextArea");
+	/**
+     * The Password datatype represents the attribute as a PasswordField. 
+     * The type in the data model will be a String. 
+   	 */
+ 	datatype Password jvmType String
+  		properties(key = "type" value = "password");
+  		
+  	/**
+     * The MaskedText datatype represents the attribute as a MaskedTextField. 
+     * The type in the data model will be a String.<br>
+     * If you are using this datatype, then you need to add a map property to the entity / dto attiribute.<br>
+     * Eg: <br>
+     * <code>var MaskedText text properties (key="mask" value="UUU-###")</code>
+     */
+ 	datatype MaskedText jvmType String
+  		properties(key = "type" value = "maskedText");
+  		
+	/**
+     * The MaskedDecimal datatype represents the attribute as a MaskedDecimalField. 
+     * The type in the data model will be a Number.<br>
+     * If you are using this datatype, then you need to add a map property to the entity / dto attiribute.<br>
+     * Eg: <br>
+     * <code>var MaskedDecimal dec properties (key="mask" value="#,#00.000")</code>
+     */
+ 	datatype MaskedText jvmType String
+  		properties(key = "type" value = "maskedDecimal");
+  		
+  	/**
+     * The MaskedText datatype represents the attribute as a MaskedTextField. 
+     * The type in the data model will be a String. 
+     */
+ 	datatype MaskedDecimal jvmType String
+  		properties(key = "type" value = "maskedDecimal");
+
+	datatype PriceCustomDecimal jvmType java.lang.Double as primitive
+		properties (
+			key="functionCss" value="org.osbp.mysmartshop.functionlibrary.CssStyler.priceEndCss99", 
+			key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.Formatter.currencyFormatter"
+		);
+	
+	datatype LengthCustomDecimal jvmType java.lang.Double as primitive
+		properties (
+			key="functionCss" value="org.osbp.mysmartshop.functionlibrary.CssStyler.priceEndCss95", 
+			key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoConverter" 
+		);
+		
+	datatype LengthMetricCustomDecimal jvmType java.lang.Double as primitive
+		properties (
+			key="functionCss" value="org.osbp.mysmartshop.functionlibrary.CssStyler.priceEndCss95", 
+			key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoCMConverter" 
+		);
+	
+	datatype LengthCMMetricCustomDecimal jvmType java.lang.Double as primitive
+		properties (
+			key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoCMMetricConverter" 
+		);
+	
+	datatype MassGRAMMetricCustomDecimal jvmType java.lang.Double as primitive
+		properties (
+			key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoGRAMMetricConverter" 
+		);
+	
+//	// UOMo data types, which are available through de.compex.utils.uomo
+//	datatype Length jvmType org.eclipse.uomo.units.impl.BaseAmount<org.unitsofmeasurement.quantity.Length>;
+//	datatype Area jvmType org.eclipse.uomo.units.impl.BaseAmount<org.unitsofmeasurement.quantity.Area>;
+//	datatype Volume jvmType org.eclipse.uomo.units.impl.BaseAmount<org.unitsofmeasurement.quantity.Volume>;
+//	datatype Mass jvmType org.eclipse.uomo.units.impl.BaseAmount<org.unitsofmeasurement.quantity.Mass>;
+//	// joda money types
+//	datatype Money jvmType org.joda.money.Money;
+//	datatype BigMoney jvmType org.joda.money.BigMoney;
+		
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.dto b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.dto
new file mode 100644
index 0000000..1bb9fa9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.dto
@@ -0,0 +1,173 @@
+
+package org.osbp.mysmartshop.dtos {
+
+	import org.osbp.mysmartshop.entities.*
+
+	autoDto BaseIDDto wraps BaseID {
+
+		inherit var id
+	}
+
+	autoDto BaseUUIDDto wraps BaseUUID {
+
+		inherit var id
+	}
+
+	autoDto DtoTestParentDto extends BaseUUIDDto wraps DtoTestParent {
+
+		inherit var string
+		inherit ref containmentChilds mapto DtoTestChildContainmentDto
+		inherit ref crossRefChilds mapto DtoTestChildCrossRefDto
+		inherit ref crossRefChild mapto DtoTestChildCrossRefDto
+		inherit var beanx
+	}
+
+	autoDto DtoTestChildContainmentDto extends BaseUUIDDto wraps DtoTestChildContainment {
+
+		inherit ref container mapto DtoTestParentDto
+	}
+
+	autoDto DtoTestChildCrossRefDto extends BaseUUIDDto wraps DtoTestChildCrossRef {
+
+		inherit ref container mapto DtoTestParentDto
+	}
+
+	autoDto DtoTestBeanDto wraps DtoTestBean {
+
+		inherit var foo
+		inherit ref crossRefChild mapto DtoTestChildCrossRefDto
+	}
+
+	autoDto McustomerDto extends BaseIDDto wraps Mcustomer {
+
+		inherit var account_num
+		inherit var lname
+		inherit var fname
+		inherit var mi
+		inherit var address1
+		inherit var address2
+		inherit var address3
+		inherit var address4
+		inherit var city
+		inherit var state_province
+		inherit var postal_code
+		inherit var country
+		inherit var phone1
+		inherit var phone2
+		inherit var birthdate
+		inherit var marital_status
+		inherit var yearly_income
+		inherit var gender
+		inherit var total_children
+		inherit var num_children_at_home
+		inherit var education
+		inherit var date_accnt_opened
+		inherit var member_card
+		inherit var occupation
+		inherit var houseowner
+		inherit var num_cars_owned
+		inherit var fullname
+		inherit var test
+		inherit ref slips mapto CashSlipDto
+		inherit var foo
+	}
+
+	autoDto CashRegisterDto extends BaseUUIDDto wraps CashRegister {
+
+		inherit var num
+		inherit var ip
+		inherit var location
+		inherit var currentDay
+		inherit ref slips mapto CashSlipDto
+	}
+
+	autoDto CashSlipDto extends BaseUUIDDto wraps CashSlip {
+
+		inherit var currentDay
+		inherit var now
+		inherit var cashier
+		inherit var total
+		inherit var serial
+		inherit var payed
+		inherit ref positions mapto CashPositionDto
+		inherit ref customer mapto McustomerDto
+		inherit ref register mapto CashRegisterDto
+		inherit ref payments mapto CashPaymentDto
+	}
+
+	autoDto CashPositionDto extends BaseUUIDDto wraps CashPosition {
+
+		inherit var now
+		inherit var quantity
+		inherit var price
+		inherit var amount
+		inherit ref slip mapto CashSlipDto
+	}
+
+	autoDto CashPaymentDto extends BaseUUIDDto wraps CashPayment {
+
+		inherit var now
+		inherit var payed
+		inherit ref slip mapto CashSlipDto
+		inherit ref methodOfPayment mapto CashPaymentMethodDto
+	}
+
+	autoDto CashPaymentMethodDto extends BaseUUIDDto wraps CashPaymentMethod {
+
+		inherit var num
+		inherit var name
+		inherit var credit
+		inherit var imageName
+		inherit var lowerLimit
+		inherit ref payments mapto CashPaymentDto
+	}
+
+	autoDto CompanyRelationTypeDto extends BaseUUIDDto wraps CompanyRelationType {
+
+		inherit var name
+		inherit var description
+	}
+
+	autoDto CompanyGroupDto extends BaseUUIDDto wraps CompanyGroup {
+
+		inherit var name
+		inherit var description
+		inherit ref main_company mapto CompanyDto
+		inherit ref companies mapto CompanyDto
+	}
+
+	autoDto CompanyDto extends BaseUUIDDto wraps Company {
+
+		inherit ref company_group mapto CompanyGroupDto
+		inherit var name
+		inherit var description
+		inherit ref relation_type mapto CompanyRelationTypeDto
+		inherit ref address mapto AddressDto
+		inherit ref departments mapto DepartmentDto
+	}
+
+	autoDto AddressDto extends BaseUUIDDto wraps Address {
+
+		inherit ref company mapto CompanyDto
+		inherit ref department mapto DepartmentDto
+		inherit var address1
+		inherit var address2
+		inherit var city
+		inherit var state_province
+		inherit var postal_code
+		inherit var country
+		inherit var email
+		inherit var landline
+		inherit var mobile
+	}
+
+	autoDto DepartmentDto extends BaseUUIDDto wraps Department {
+
+		inherit ref company mapto CompanyDto
+		inherit var name
+		inherit var description
+		inherit ref address mapto AddressDto
+		inherit var default_yearly_income
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity
new file mode 100644
index 0000000..3c3ea53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity
@@ -0,0 +1,245 @@
+/******************************************************************
+ *                                                                *
+ *  Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ *                                                                *
+ *  This source was created by OSBP Softwarefactory Wizard!       *
+ *                                                                *
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany *
+ *                                                                * 
+ *================================================================*
+ *                                                                *
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ *                                                                *
+ ******************************************************************/
+package org.osbp.mysmartshop.entities {
+
+	import org.osbp.mysmartshop.datatypes.*
+
+	mapped superclass BaseID {
+		id int id;
+	}
+  
+	mapped superclass BaseUUID {
+		uuid String id;
+	}
+
+	entity DtoTestParent extends BaseUUID {
+
+		var String string;
+
+		ref cascade DtoTestChildContainment [*] containmentChilds opposite container
+
+		ref DtoTestChildCrossRef [*] crossRefChilds opposite container
+		ref DtoTestChildCrossRef crossRefChild
+
+		var DtoTestBean beanx;
+	}
+
+	entity DtoTestChildContainment extends BaseUUID {
+		ref DtoTestParent container opposite containmentChilds
+	}
+
+	entity DtoTestChildCrossRef extends BaseUUID {
+		ref DtoTestParent container opposite crossRefChilds
+	}
+
+	bean DtoTestBean {
+		var String foo;
+		ref DtoTestChildCrossRef crossRefChild;
+	}
+ 
+	entity Mcustomer extends BaseID {
+		var long account_num
+		var String lname
+		var String fname
+		var String mi
+		var String address1
+		var String address2
+		var String address3
+		var String address4
+		var String city
+		var String state_province
+		var String postal_code
+		var String country
+		var String phone1
+		var String phone2
+		var Date birthdate
+		var String marital_status
+		var String yearly_income
+		var String gender
+		var int total_children
+		var int num_children_at_home
+		var String education
+		var String date_accnt_opened
+		var String member_card
+		var String occupation
+		var String houseowner
+		var int num_cars_owned
+		domainKey String fullname
+		var String test
+		ref CashSlip [*] slips opposite customer
+		
+		derived String foo {
+			return country + "_" + city 
+		}
+	}
+
+	cacheable entity CashRegister extends BaseUUID {
+		domainKey String num
+		var String ip
+		var String location
+		var String currentDay
+		ref CashSlip [*] slips opposite register
+
+		unique index cashIpIndex {
+			ip
+		}
+
+		unique index cashNumIndex {
+			num
+		}
+
+	}
+
+	entity CashSlip extends BaseUUID {
+		var String currentDay
+		var Timestamp now
+		var String cashier
+		var Price total
+		@javax.persistence.GeneratedValue
+		var long serial
+		var boolean payed
+		ref cascade CashPosition [*] positions opposite slip
+		ref Mcustomer customer opposite slips
+		ref CashRegister register opposite slips
+		ref cascade CashPayment [*] payments opposite slip
+		def String when() {
+			if(now != null)
+				{
+					return java.text.SimpleDateFormat.getDateInstance(java.text.DateFormat.SHORT).format(now)
+				} return ""
+			}
+
+			index currentDay_index {
+				currentDay
+			}
+
+			index serial_index {
+				currentDay ,  serial
+			}
+
+		}
+
+		entity CashPosition extends BaseUUID {
+			var Timestamp now
+			var double quantity
+			var Price price
+			var Price amount
+			ref CashSlip slip opposite positions
+		}
+
+		entity CashPayment extends BaseUUID {
+			var Timestamp now
+			var Price payed
+			ref CashSlip slip opposite payments
+			ref CashPaymentMethod methodOfPayment opposite payments
+		}
+
+		entity CashPaymentMethod extends BaseUUID {
+			domainKey String num
+			domainDescription String name
+			var Boolean credit
+			var PaymentMethod imageName
+			var double lowerLimit
+			ref CashPayment [*] payments opposite methodOfPayment
+
+			unique index paymentNumIndex {
+				num
+			}
+
+		}
+
+		/** relation of the company to the owner - not the user - of this personal information manager */
+		entity CompanyRelationType extends BaseUUID {
+			/** short name for this relation type */
+			domainKey String name;
+			/** more detailed description */
+			var String description;
+		}
+
+		/** a company group consisting of a group of companies, from one is defined as the main company */
+		entity CompanyGroup extends BaseUUID {
+			/** name of the company group */
+			domainKey String name;
+			/** more detailed description with usable information for the PIM owner */
+			var String description;
+			/** the main company */
+			ref Company main_company;
+			/** group of companies */
+			ref Company [*] companies opposite company_group;
+		}
+
+		/** a company */
+		entity Company extends BaseUUID {
+			/** the company group if any */
+			ref CompanyGroup company_group opposite companies;
+			/** name of the company */
+			domainKey String name;
+			/** more detailed description with usable information for the PIM owner */
+			var String description;
+			/** relation of the company to the PIM owner */
+			ref CompanyRelationType relation_type;
+			/** any number of addresses */
+			ref cascade Address [*] address opposite company;
+			/** departments of this company */
+			ref cascade Department [*] departments opposite company;
+		}
+
+		/** an address */
+		entity Address extends BaseUUID {
+			/** if address for a company, the company is given */
+			ref Company company opposite address;
+			/** if address for a department, the address is given */
+			ref Department department opposite address;
+			/** if address for a person, the person is given */
+			//        ref cascade PostalAddress[*] postal_adresses opposite address;
+			/** address field 1 */
+			var String address1;
+			/** address field 2 */
+			var String address2;
+			/** city */
+			var String city;
+			/** state province */
+			var String state_province;
+			/** postal code */
+			var String postal_code;
+			/** country */
+			var String country;
+			//        ref cascade Email[*] emails opposite address;
+			/** email */
+			var String email;
+			//        ref cascade Phone[*] phones opposite address;
+			/** landline (Festnetznummer) */
+			var String landline;
+			/** mobile */
+			var String mobile;
+		}
+ 
+		/** a companies department */
+		entity Department extends BaseUUID {
+			/** the company */
+			ref Company company opposite departments;
+			/** name of the department */
+			domainKey String name;
+			/** more detailed description with usable information for the PIM owner */
+			var String description;
+			/** any number of addresses */
+			ref cascade Address [*] address opposite department;
+			/** any number of employees */
+			var double default_yearly_income;
+		}
+
+	}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.service b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.service
new file mode 100644
index 0000000..12853a9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.service
@@ -0,0 +1,32 @@
+
+package org.osbp.mysmartshop.dtos.service {
+	import org.osbp.mysmartshop.dtos.*
+	dtoservice DtoTestParentDtoService provides DtoTestParentDto {
+	}
+	dtoservice DtoTestChildContainmentDtoService provides DtoTestChildContainmentDto {
+	}
+	dtoservice DtoTestChildCrossRefDtoService provides DtoTestChildCrossRefDto {
+	}
+	dtoservice McustomerDtoService provides McustomerDto {
+	}
+	dtoservice CashRegisterDtoService provides CashRegisterDto {
+	}
+	dtoservice CashSlipDtoService provides CashSlipDto {
+	}
+	dtoservice CashPositionDtoService provides CashPositionDto {
+	}
+	dtoservice CashPaymentDtoService provides CashPaymentDto {
+	}
+	dtoservice CashPaymentMethodDtoService provides CashPaymentMethodDto {
+	}
+	dtoservice CompanyRelationTypeDtoService provides CompanyRelationTypeDto {
+	}
+	dtoservice CompanyGroupDtoService provides CompanyGroupDto {
+	}
+	dtoservice CompanyDtoService provides CompanyDto {
+	}
+	dtoservice AddressDtoService provides AddressDto {
+	}
+	dtoservice DepartmentDtoService provides DepartmentDto {
+	}
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/modelsbin/carstore.entity.entities_bin b/org.eclipse.osbp.dsl.tests.model/modelsbin/carstore.entity.entities_bin
new file mode 100644
index 0000000..eda771a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/modelsbin/carstore.entity.entities_bin
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1">
+  <packages name="org.eclipse.osbp.dsl.tests.carstore.entities">
+    <imports importedNamespace="org.osbp.mysmartshop.datatypes.*"/>
+    <types xsi:type="entity:LEntity" name="Base" mappedSuperclass="true" subTypes="//@packages.0/@types.1 //@packages.0/@types.2 //@packages.0/@types.3 //@packages.0/@types.4 //@packages.0/@types.5">
+      <annotationInfo xsi:type="types:LClass"/>
+      <features xsi:type="entity:LEntityAttribute" name="uuid" uuid="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Car" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="number">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="finishingDate">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.22"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="addons" cascading="true" type="//@packages.0/@types.2" opposite="//@packages.0/@types.2/@features.1">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="owner" type="//@packages.0/@types.5" opposite="//@packages.0/@types.5/@features.2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="cycles1" cascading="true" type="//@packages.0/@types.3" opposite="//@packages.0/@types.3/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Addon" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="description">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="car" type="//@packages.0/@types.1" opposite="//@packages.0/@types.1/@features.2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="ToCycle1" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="car" type="//@packages.0/@types.1" opposite="//@packages.0/@types.1/@features.4">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="cycles2" cascading="true" type="//@packages.0/@types.4" opposite="//@packages.0/@types.4/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="ToCycle2" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="parent" type="//@packages.0/@types.3" opposite="//@packages.0/@types.3/@features.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="car" type="//@packages.0/@types.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Person" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="firstname">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="lastname">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="ownsCars" type="//@packages.0/@types.1" opposite="//@packages.0/@types.1/@features.3">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="homeAddress" type="//@packages.0/@types.6">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="workAddress" type="//@packages.0/@types.6">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LBean" name="Address">
+      <annotationInfo xsi:type="types:LClass"/>
+      <features xsi:type="entity:LBeanAttribute" name="streetname">
+        <annotationInfo xsi:type="entity:LBeanFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LBeanAttribute" name="postalcode">
+        <annotationInfo xsi:type="entity:LBeanFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.tests.model/modelsbin/mysmartshop.datatype.datatypes_bin b/org.eclipse.osbp.dsl.tests.model/modelsbin/mysmartshop.datatype.datatypes_bin
new file mode 100644
index 0000000..fa1668d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/modelsbin/mysmartshop.datatype.datatypes_bin
@@ -0,0 +1,208 @@
+<?xml version="1.0" encoding="ASCII"?>
+<types:LCommonModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes">
+  <packages name="org.osbp.mysmartshop.datatypes">
+    <types xsi:type="types:LDataType" name="Timestamp" date="true" dateType="TIMESTAMP"/>
+    <types xsi:type="types:LDataType" name="PaymentMethod">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="boolean" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="short" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="int" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="long" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="double" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="float" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="character" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Character#java.lang.Character"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="byte" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Byte#java.lang.Byte"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Boolean">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Boolean#java.lang.Boolean"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Short">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Short#java.lang.Short"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Int">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Integer#java.lang.Integer"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Long">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Long#java.lang.Long"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Double">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Float">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Float#java.lang.Float"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Character">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Character#java.lang.Character"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="Byte">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Byte#java.lang.Byte"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="BigDecimal">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.math.BigDecimal#java.math.BigDecimal"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="String">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="BlobMapping">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="Blob" value="2"/>
+    </types>
+    <types xsi:type="types:LDataType" name="notnullString">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <constraints xsi:type="types:LDtCNotNull" severity="ERROR"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Date" date="true"/>
+    <types xsi:type="types:LDataType" name="Price">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <properties key="decimalformat" value="###,##0.00 &amp;curren;"/>
+    </types>
+    <types xsi:type="types:LDataType" name="DateOnly" date="true">
+      <properties key="Date" value="Day"/>
+    </types>
+    <types xsi:type="types:LDataType" name="BirthDate" date="true">
+      <properties key="Date" value="Day"/>
+      <constraints xsi:type="types:LDtCNotNull"/>
+      <constraints xsi:type="types:LDtCPast" severity="ERROR"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Time" date="true" dateType="TIME"/>
+    <types xsi:type="types:LDataType" name="blobtype" asBlob="true"/>
+    <types xsi:type="types:LDataType" name="clobtype" asBlob="true"/>
+    <types xsi:type="types:LDataType" name="NumberToUomo">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+    </types>
+    <types xsi:type="types:LDataType" name="TextArea">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="TextArea" value="5"/>
+    </types>
+    <types xsi:type="types:LDataType" name="RichText_Short">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="type" value="richTextArea"/>
+    </types>
+    <types xsi:type="types:LDataType" name="RichText_Long" asBlob="true">
+      <properties key="type" value="richTextArea"/>
+    </types>
+    <types xsi:type="types:LDataType" name="Password">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="type" value="password"/>
+    </types>
+    <types xsi:type="types:LDataType" name="MaskedText">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="type" value="maskedText"/>
+    </types>
+    <types xsi:type="types:LDataType" name="MaskedText">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="type" value="maskedDecimal"/>
+    </types>
+    <types xsi:type="types:LDataType" name="MaskedDecimal">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+      </jvmTypeReference>
+      <properties key="type" value="maskedDecimal"/>
+    </types>
+    <types xsi:type="types:LDataType" name="PriceCustomDecimal" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <properties key="functionCss" value="org.osbp.mysmartshop.functionlibrary.CssStyler.priceEndCss99"/>
+      <properties key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.Formatter.currencyFormatter"/>
+    </types>
+    <types xsi:type="types:LDataType" name="LengthCustomDecimal" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <properties key="functionCss" value="org.osbp.mysmartshop.functionlibrary.CssStyler.priceEndCss95"/>
+      <properties key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoConverter"/>
+    </types>
+    <types xsi:type="types:LDataType" name="LengthMetricCustomDecimal" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <properties key="functionCss" value="org.osbp.mysmartshop.functionlibrary.CssStyler.priceEndCss95"/>
+      <properties key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoCMConverter"/>
+    </types>
+    <types xsi:type="types:LDataType" name="LengthCMMetricCustomDecimal" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <properties key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoCMMetricConverter"/>
+    </types>
+    <types xsi:type="types:LDataType" name="MassGRAMMetricCustomDecimal" asPrimitive="true">
+      <jvmTypeReference xsi:type="types_1:JvmParameterizedTypeReference">
+        <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.Double#java.lang.Double"/>
+      </jvmTypeReference>
+      <properties key="functionConverter" value="org.osbp.mysmartshop.functionlibrary.UomoGRAMMetricConverter"/>
+    </types>
+  </packages>
+</types:LCommonModel>
diff --git a/org.eclipse.osbp.dsl.tests.model/modelsbin/mysmartshop.entity.entities_bin b/org.eclipse.osbp.dsl.tests.model/modelsbin/mysmartshop.entity.entities_bin
new file mode 100644
index 0000000..574c442
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/modelsbin/mysmartshop.entity.entities_bin
@@ -0,0 +1,533 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://osbp.eclipse.org/dsl/entity/v1" xmlns:types="http://osbp.eclipse.org/dsl/common/types/v1" xmlns:types_1="http://www.eclipse.org/xtext/common/JavaVMTypes" xmlns:xbase="http://www.eclipse.org/xtext/xbase/Xbase">
+  <packages name="org.osbp.mysmartshop.entities">
+    <imports importedNamespace="org.osbp.mysmartshop.datatypes.*"/>
+    <types xsi:type="entity:LEntity" name="BaseID" mappedSuperclass="true" subTypes="//@packages.0/@types.6">
+      <annotationInfo xsi:type="types:LClass"/>
+      <features xsi:type="entity:LEntityAttribute" name="id" id="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.4"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="BaseUUID" mappedSuperclass="true" subTypes="//@packages.0/@types.2 //@packages.0/@types.3 //@packages.0/@types.4 //@packages.0/@types.7 //@packages.0/@types.8 //@packages.0/@types.9 //@packages.0/@types.10 //@packages.0/@types.11 //@packages.0/@types.12 //@packages.0/@types.13 //@packages.0/@types.14 //@packages.0/@types.15 //@packages.0/@types.16">
+      <annotationInfo xsi:type="types:LClass"/>
+      <features xsi:type="entity:LEntityAttribute" name="id" uuid="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="DtoTestParent" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="string">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="containmentChilds" cascading="true" type="//@packages.0/@types.3" opposite="//@packages.0/@types.3/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="crossRefChilds" type="//@packages.0/@types.4" opposite="//@packages.0/@types.4/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="crossRefChild" type="//@packages.0/@types.4">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="beanx" type="//@packages.0/@types.5">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="DtoTestChildContainment" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="container" type="//@packages.0/@types.2" opposite="//@packages.0/@types.2/@features.1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="DtoTestChildCrossRef" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="container" type="//@packages.0/@types.2" opposite="//@packages.0/@types.2/@features.2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LBean" name="DtoTestBean">
+      <annotationInfo xsi:type="types:LClass"/>
+      <features xsi:type="entity:LBeanAttribute" name="foo">
+        <annotationInfo xsi:type="entity:LBeanFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LBeanReference" name="crossRefChild" type="//@packages.0/@types.4">
+        <annotationInfo xsi:type="entity:LBeanFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Mcustomer" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="account_num">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.5"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="lname">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="fname">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="mi">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="address1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="address2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="address3">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="address4">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="city">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="state_province">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="postal_code">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="country">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="phone1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="phone2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="birthdate">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.22"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="marital_status">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="yearly_income">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="gender">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="total_children">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.4"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="num_children_at_home">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.4"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="education">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="date_accnt_opened">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="member_card">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="occupation">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="houseowner">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="num_cars_owned">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.4"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="fullname" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="test">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="slips" type="//@packages.0/@types.8" opposite="//@packages.0/@types.8/@features.7">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="foo" derived="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <derivedGetterExpression xsi:type="xbase:XBlockExpression">
+          <expressions xsi:type="xbase:XReturnExpression">
+            <expression xsi:type="xbase:XBinaryOperation">
+              <feature xsi:type="types_1:JvmOperation" href="java:/Objects/org.eclipse.xtext.xbase.lib.StringExtensions#org.eclipse.xtext.xbase.lib.StringExtensions.operator_plus(java.lang.String,java.lang.String)"/>
+              <leftOperand xsi:type="xbase:XBinaryOperation">
+                <feature xsi:type="types_1:JvmOperation" href="java:/Objects/org.eclipse.xtext.xbase.lib.StringExtensions#org.eclipse.xtext.xbase.lib.StringExtensions.operator_plus(java.lang.String,java.lang.String)"/>
+                <leftOperand xsi:type="xbase:XFeatureCall">
+                  <feature xsi:type="types_1:JvmField" href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity#/7/@members.12"/>
+                </leftOperand>
+                <rightOperand xsi:type="xbase:XStringLiteral" value="_"/>
+              </leftOperand>
+              <rightOperand xsi:type="xbase:XFeatureCall">
+                <feature xsi:type="types_1:JvmField" href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity#/7/@members.9"/>
+              </rightOperand>
+            </expression>
+          </expressions>
+        </derivedGetterExpression>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="CashRegister" cacheable="true" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="num" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="ip">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="location">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="currentDay">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="slips" type="//@packages.0/@types.8" opposite="//@packages.0/@types.8/@features.8">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <indexes unique="true" name="cashIpIndex" features="//@packages.0/@types.7/@features.1"/>
+      <indexes unique="true" name="cashNumIndex" features="//@packages.0/@types.7/@features.0"/>
+    </types>
+    <types xsi:type="entity:LEntity" name="CashSlip" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="currentDay">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="now">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.0"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="cashier">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="total">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.23"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="serial">
+        <annotationInfo xsi:type="entity:LEntityFeature">
+          <annotations>
+            <annotation>
+              <annotationType xsi:type="types_1:JvmAnnotationType" href="java:/Objects/javax.persistence.GeneratedValue#javax.persistence.GeneratedValue"/>
+            </annotation>
+          </annotations>
+        </annotationInfo>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.5"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="payed">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.2"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="positions" cascading="true" type="//@packages.0/@types.9" opposite="//@packages.0/@types.9/@features.4">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="customer" type="//@packages.0/@types.6" opposite="//@packages.0/@types.6/@features.28">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="register" type="//@packages.0/@types.7" opposite="//@packages.0/@types.7/@features.4">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="payments" cascading="true" type="//@packages.0/@types.10" opposite="//@packages.0/@types.10/@features.2">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LOperation" name="when">
+        <type xsi:type="types_1:JvmParameterizedTypeReference">
+          <type xsi:type="types_1:JvmGenericType" href="java:/Objects/java.lang.String#java.lang.String"/>
+        </type>
+        <body xsi:type="xbase:XBlockExpression">
+          <expressions xsi:type="xbase:XIfExpression">
+            <if xsi:type="xbase:XBinaryOperation">
+              <feature xsi:type="types_1:JvmOperation" href="java:/Objects/org.eclipse.xtext.xbase.lib.ObjectExtensions#org.eclipse.xtext.xbase.lib.ObjectExtensions.operator_notEquals(java.lang.Object,java.lang.Object)"/>
+              <leftOperand xsi:type="xbase:XFeatureCall">
+                <feature xsi:type="types_1:JvmField" href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity#/9/@members.2"/>
+              </leftOperand>
+              <rightOperand xsi:type="xbase:XNullLiteral"/>
+            </if>
+            <then xsi:type="xbase:XBlockExpression">
+              <expressions xsi:type="xbase:XReturnExpression">
+                <expression xsi:type="xbase:XMemberFeatureCall" explicitOperationCall="true">
+                  <feature xsi:type="types_1:JvmOperation" href="java:/Objects/java.text.DateFormat#java.text.DateFormat.format(java.util.Date)"/>
+                  <memberCallTarget xsi:type="xbase:XMemberFeatureCall" explicitOperationCall="true">
+                    <feature xsi:type="types_1:JvmOperation" href="java:/Objects/java.text.DateFormat#java.text.DateFormat.getDateInstance(int)"/>
+                    <memberCallTarget xsi:type="xbase:XMemberFeatureCall">
+                      <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.text.SimpleDateFormat#java.text.SimpleDateFormat"/>
+                      <memberCallTarget xsi:type="xbase:XMemberFeatureCall">
+                        <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.text.SimpleDateFormat#java.text.SimpleDateFormat"/>
+                        <memberCallTarget xsi:type="xbase:XFeatureCall">
+                          <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.text.SimpleDateFormat#java.text.SimpleDateFormat"/>
+                        </memberCallTarget>
+                      </memberCallTarget>
+                    </memberCallTarget>
+                    <memberCallArguments xsi:type="xbase:XMemberFeatureCall">
+                      <feature xsi:type="types_1:JvmField" href="java:/Objects/java.text.DateFormat#java.text.DateFormat.SHORT"/>
+                      <memberCallTarget xsi:type="xbase:XMemberFeatureCall">
+                        <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.text.DateFormat#java.text.DateFormat"/>
+                        <memberCallTarget xsi:type="xbase:XMemberFeatureCall">
+                          <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.text.DateFormat#java.text.DateFormat"/>
+                          <memberCallTarget xsi:type="xbase:XFeatureCall">
+                            <feature xsi:type="types_1:JvmGenericType" href="java:/Objects/java.text.DateFormat#java.text.DateFormat"/>
+                          </memberCallTarget>
+                        </memberCallTarget>
+                      </memberCallTarget>
+                    </memberCallArguments>
+                  </memberCallTarget>
+                  <memberCallArguments xsi:type="xbase:XFeatureCall">
+                    <feature xsi:type="types_1:JvmField" href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.entity#/9/@members.2"/>
+                  </memberCallArguments>
+                </expression>
+              </expressions>
+            </then>
+          </expressions>
+          <expressions xsi:type="xbase:XReturnExpression">
+            <expression xsi:type="xbase:XStringLiteral" value=""/>
+          </expressions>
+        </body>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <indexes name="currentDay_index" features="//@packages.0/@types.8/@features.0"/>
+      <indexes name="serial_index" features="//@packages.0/@types.8/@features.0 //@packages.0/@types.8/@features.4"/>
+    </types>
+    <types xsi:type="entity:LEntity" name="CashPosition" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="now">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.0"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="quantity">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.6"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="price">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.23"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="amount">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.23"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="slip" type="//@packages.0/@types.8" opposite="//@packages.0/@types.8/@features.6">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="CashPayment" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="now">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.0"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="payed">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.23"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="slip" type="//@packages.0/@types.8" opposite="//@packages.0/@types.8/@features.9">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="methodOfPayment" type="//@packages.0/@types.11" opposite="//@packages.0/@types.11/@features.5">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="CashPaymentMethod" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="num" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="name" domainDescription="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="credit">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.10"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="imageName">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.1"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="lowerLimit">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.6"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="payments" type="//@packages.0/@types.10" opposite="//@packages.0/@types.10/@features.3">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <indexes unique="true" name="paymentNumIndex" features="//@packages.0/@types.11/@features.0"/>
+    </types>
+    <types xsi:type="entity:LEntity" name="CompanyRelationType" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="name" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="description">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="CompanyGroup" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="name" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="description">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="main_company" type="//@packages.0/@types.14">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="companies" type="//@packages.0/@types.14" opposite="//@packages.0/@types.14/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Company" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="company_group" type="//@packages.0/@types.13" opposite="//@packages.0/@types.13/@features.3">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="name" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="description">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="relation_type" type="//@packages.0/@types.12">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="address" cascading="true" type="//@packages.0/@types.15" opposite="//@packages.0/@types.15/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="departments" cascading="true" type="//@packages.0/@types.16" opposite="//@packages.0/@types.16/@features.0">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Address" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="company" type="//@packages.0/@types.14" opposite="//@packages.0/@types.14/@features.4">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="department" type="//@packages.0/@types.16" opposite="//@packages.0/@types.16/@features.3">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="address1">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="address2">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="city">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="state_province">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="postal_code">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="country">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="email">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="landline">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="mobile">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="Department" superType="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityReference" name="company" type="//@packages.0/@types.14" opposite="//@packages.0/@types.14/@features.5">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="name" domainKey="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="description">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.19"/>
+      </features>
+      <features xsi:type="entity:LEntityReference" name="address" cascading="true" type="//@packages.0/@types.15" opposite="//@packages.0/@types.15/@features.1">
+        <multiplicity lower="MANY"/>
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+      </features>
+      <features xsi:type="entity:LEntityAttribute" name="default_yearly_income">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.tests.model/models/mysmartshop.datatype#/0/@packages.0/@types.6"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/BaseIDDto.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/BaseIDDto.java
new file mode 100644
index 0000000..a0a2a1a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/BaseIDDto.java
@@ -0,0 +1,235 @@
+package org.osbp.mysmartshop.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.Id;
+import org.osbp.mysmartshop.entities.BaseID;
+
+@SuppressWarnings("all")
+public class BaseIDDto implements IDto, Serializable, PropertyChangeListener {
+	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
+			this);
+
+	@Dispose
+	private boolean disposed;
+
+	@Id
+	private int id;
+
+	/**
+	 * @return true, if the object is disposed. Disposed means, that it is
+	 *         prepared for garbage collection and may not be used anymore.
+	 *         Accessing objects that are already disposed will cause runtime
+	 *         exceptions.
+	 * 
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(propertyName,
+				listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+	 */
+	public void firePropertyChange(final String propertyName,
+			final Object oldValue, final Object newValue) {
+		propertyChangeSupport.firePropertyChange(propertyName, oldValue,
+				newValue);
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.<br/>
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	@Dispose
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		firePropertyChange("disposed", this.disposed, this.disposed = true);
+	}
+
+	/**
+	 * Installs lazy collection resolving for entity {@link BaseID} to the dto
+	 * {@link BaseIDDto}.
+	 * 
+	 */
+	protected void installLazyCollections() {
+
+	}
+
+	/**
+	 * Returns the id property or <code>null</code> if not present.
+	 */
+	public int getId() {
+		return this.id;
+	}
+
+	/**
+	 * Sets the <code>id</code> property to this instance.
+	 * 
+	 * @param id
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void setId(final int id) {
+		firePropertyChange("id", this.id, this.id = id);
+	}
+
+	@Override
+	public boolean equals(final Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		BaseIDDto other = (BaseIDDto) obj;
+		if (other.id != this.id)
+			return false;
+		return true;
+	}
+
+	@Override
+	public int hashCode() {
+		int prime = 31;
+		int result = 1;
+		result = prime * result + this.id;
+		return result;
+	}
+
+	public BaseIDDto createDto() {
+		return new BaseIDDto();
+	}
+
+	public BaseIDDto copy(final MappingContext context) {
+		checkDisposed();
+
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		if (context.isMaxLevel()) {
+			return null;
+		}
+
+		// if context contains a copied instance of this object
+		// then return it
+		BaseIDDto newDto = context.get(this);
+		if (newDto != null) {
+			return newDto;
+		}
+
+		try {
+			context.increaseLevel();
+
+			newDto = createDto();
+			context.register(this, newDto);
+
+			// first copy the containments and attributes
+			copyContainments(this, newDto, context);
+
+			// then copy cross references to ensure proper
+			// opposite references are copied too.
+			copyCrossReferences(this, newDto, context);
+		} finally {
+			context.decreaseLevel();
+		}
+
+		return newDto;
+	}
+
+	public void copyContainments(final BaseIDDto dto, final BaseIDDto newDto,
+			final MappingContext context) {
+		checkDisposed();
+
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		// copy attributes and beans (beans if derived from entity model)
+		// copy id
+		newDto.setId(getId());
+
+		// copy containment references (cascading is true)
+	}
+
+	public void copyCrossReferences(final BaseIDDto dto,
+			final BaseIDDto newDto,
+			final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+		checkDisposed();
+
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		// copy cross references (cascading is false)
+	}
+
+	public void propertyChange(final java.beans.PropertyChangeEvent event) {
+		Object source = event.getSource();
+
+		// forward the event from embeddable beans to all listeners. So the
+		// parent of the embeddable
+		// bean will become notified and its dirty state can be handled properly
+		{
+			// no super class available to forward event
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/BaseUUIDDto.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/BaseUUIDDto.java
new file mode 100644
index 0000000..ba5309f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/BaseUUIDDto.java
@@ -0,0 +1,238 @@
+package org.osbp.mysmartshop.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.Id;
+import org.osbp.mysmartshop.entities.BaseUUID;
+
+@SuppressWarnings("all")
+public class BaseUUIDDto implements IDto, Serializable, PropertyChangeListener {
+	private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(
+			this);
+
+	@Dispose
+	private boolean disposed;
+
+	@Id
+	private String id = java.util.UUID.randomUUID().toString();
+
+	/**
+	 * @return true, if the object is disposed. Disposed means, that it is
+	 *         prepared for garbage collection and may not be used anymore.
+	 *         Accessing objects that are already disposed will cause runtime
+	 *         exceptions.
+	 * 
+	 */
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#addPropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void addPropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#removePropertyChangeListener(String,
+	 *      PropertyChangeListener)
+	 */
+	public void removePropertyChangeListener(final String propertyName,
+			final PropertyChangeListener listener) {
+		propertyChangeSupport.removePropertyChangeListener(propertyName,
+				listener);
+	}
+
+	/**
+	 * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+	 */
+	public void firePropertyChange(final String propertyName,
+			final Object oldValue, final Object newValue) {
+		propertyChangeSupport.firePropertyChange(propertyName, oldValue,
+				newValue);
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.<br/>
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	@Dispose
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		firePropertyChange("disposed", this.disposed, this.disposed = true);
+	}
+
+	/**
+	 * Installs lazy collection resolving for entity {@link BaseUUID} to the dto
+	 * {@link BaseUUIDDto}.
+	 * 
+	 */
+	protected void installLazyCollections() {
+
+	}
+
+	/**
+	 * Returns the id property or <code>null</code> if not present.
+	 */
+	public String getId() {
+		return this.id;
+	}
+
+	/**
+	 * Sets the <code>id</code> property to this instance.
+	 * 
+	 * @param id
+	 *            - the property
+	 * @throws RuntimeException
+	 *             if instance is <code>disposed</code>
+	 * 
+	 */
+	public void setId(final String id) {
+		firePropertyChange("id", this.id, this.id = id);
+	}
+
+	@Override
+	public boolean equals(final Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		BaseUUIDDto other = (BaseUUIDDto) obj;
+		if (this.id == null) {
+			if (other.id != null)
+				return false;
+		} else if (!this.id.equals(other.id))
+			return false;
+		return true;
+	}
+
+	@Override
+	public int hashCode() {
+		int prime = 31;
+		int result = 1;
+		result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
+		return result;
+	}
+
+	public BaseUUIDDto createDto() {
+		return new BaseUUIDDto();
+	}
+
+	public BaseUUIDDto copy(final MappingContext context) {
+		checkDisposed();
+
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		if (context.isMaxLevel()) {
+			return null;
+		}
+
+		// if context contains a copied instance of this object
+		// then return it
+		BaseUUIDDto newDto = context.get(this);
+		if (newDto != null) {
+			return newDto;
+		}
+
+		try {
+			context.increaseLevel();
+
+			newDto = createDto();
+			context.register(this, newDto);
+
+			// first copy the containments and attributes
+			copyContainments(this, newDto, context);
+
+			// then copy cross references to ensure proper
+			// opposite references are copied too.
+			copyCrossReferences(this, newDto, context);
+		} finally {
+			context.decreaseLevel();
+		}
+
+		return newDto;
+	}
+
+	public void copyContainments(final BaseUUIDDto dto,
+			final BaseUUIDDto newDto, final MappingContext context) {
+		checkDisposed();
+
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		// copy attributes and beans (beans if derived from entity model)
+		// copy id
+		newDto.setId(getId());
+
+		// copy containment references (cascading is true)
+	}
+
+	public void copyCrossReferences(final BaseUUIDDto dto,
+			final BaseUUIDDto newDto,
+			final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+		checkDisposed();
+
+		if (context == null) {
+			throw new IllegalArgumentException("Context must not be null!");
+		}
+
+		// copy cross references (cascading is false)
+	}
+
+	public void propertyChange(final java.beans.PropertyChangeEvent event) {
+		Object source = event.getSource();
+
+		// forward the event from embeddable beans to all listeners. So the
+		// parent of the embeddable
+		// bean will become notified and its dirty state can be handled properly
+		{
+			// no super class available to forward event
+		}
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestBeanDto.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestBeanDto.java
new file mode 100644
index 0000000..7c4c61a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestBeanDto.java
@@ -0,0 +1,223 @@
+package org.osbp.mysmartshop.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+
+@SuppressWarnings("all")
+public class DtoTestBeanDto implements IDto, Serializable, PropertyChangeListener {
+  private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
+  
+  @Dispose
+  private boolean disposed;
+  
+  private String foo;
+  
+  @DomainReference
+  private DtoTestChildCrossRefDto crossRefChild;
+  
+  public DtoTestBeanDto() {
+    installLazyCollections();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link DtoTestBean} to the dto {@link DtoTestBeanDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    
+  }
+  
+  /**
+   * @return true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   * 
+   */
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#addPropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void addPropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.addPropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#removePropertyChangeListener(String, PropertyChangeListener)
+   */
+  public void removePropertyChangeListener(final String propertyName, final PropertyChangeListener listener) {
+    propertyChangeSupport.removePropertyChangeListener(propertyName, listener);
+  }
+  
+  /**
+   * @see PropertyChangeSupport#firePropertyChange(String, Object, Object)
+   */
+  public void firePropertyChange(final String propertyName, final Object oldValue, final Object newValue) {
+    propertyChangeSupport.firePropertyChange(propertyName, oldValue, newValue);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    firePropertyChange("disposed", this.disposed, this.disposed = true);
+  }
+  
+  /**
+   * Returns the foo property or <code>null</code> if not present.
+   */
+  public String getFoo() {
+    return this.foo;
+  }
+  
+  /**
+   * Sets the <code>foo</code> property to this instance.
+   * 
+   * @param foo - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setFoo(final String foo) {
+    firePropertyChange("foo", this.foo, this.foo = foo );
+  }
+  
+  /**
+   * Returns the crossRefChild property or <code>null</code> if not present.
+   */
+  public DtoTestChildCrossRefDto getCrossRefChild() {
+    return this.crossRefChild;
+  }
+  
+  /**
+   * Sets the <code>crossRefChild</code> property to this instance.
+   * 
+   * @param crossRefChild - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCrossRefChild(final DtoTestChildCrossRefDto crossRefChild) {
+    checkDisposed();
+    firePropertyChange("crossRefChild", this.crossRefChild, this.crossRefChild = crossRefChild);
+  }
+  
+  public DtoTestBeanDto createDto() {
+    return new DtoTestBeanDto();
+  }
+  
+  public DtoTestBeanDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    DtoTestBeanDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final DtoTestBeanDto dto, final DtoTestBeanDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy foo
+    newDto.setFoo(getFoo());
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final DtoTestBeanDto dto, final DtoTestBeanDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    
+    // copy cross references (cascading is false)
+    // copy dto crossRefChild
+    if(getCrossRefChild() != null) {
+    	newDto.setCrossRefChild(getCrossRefChild().copy(context));
+    }
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	// no super class available to forward event
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestChildContainmentDto.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestChildContainmentDto.java
new file mode 100644
index 0000000..bff0f02
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestChildContainmentDto.java
@@ -0,0 +1,168 @@
+package org.osbp.mysmartshop.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.osbp.mysmartshop.dtos.BaseUUIDDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+
+@SuppressWarnings("all")
+public class DtoTestChildContainmentDto extends BaseUUIDDto implements IDto, Serializable, PropertyChangeListener {
+  @DomainReference
+  private DtoTestParentDto container;
+  
+  public DtoTestChildContainmentDto() {
+    installLazyCollections();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link DtoTestChildContainment} to the dto {@link DtoTestChildContainmentDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the container property or <code>null</code> if not present.
+   */
+  public DtoTestParentDto getContainer() {
+    return this.container;
+  }
+  
+  /**
+   * Sets the <code>container</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>DtoTestParentDto#
+   * containmentChilds</code> of the <code>container</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link DtoTestParentDto#setContainmentChilds(DtoTestParentDto)
+   * 
+   * @param container - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setContainer(final DtoTestParentDto container) {
+    checkDisposed();
+    if (this.container != null) {
+    	this.container.internalRemoveFromContainmentChilds(this);
+    }
+    
+    internalSetContainer(container);
+    
+    if (this.container != null) {
+    	this.container.internalAddToContainmentChilds(this);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetContainer(final DtoTestParentDto container) {
+    firePropertyChange("container", this.container, this.container = container);
+  }
+  
+  public DtoTestChildContainmentDto createDto() {
+    return new DtoTestChildContainmentDto();
+  }
+  
+  public DtoTestChildContainmentDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    DtoTestChildContainmentDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final DtoTestChildContainmentDto dto, final DtoTestChildContainmentDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final DtoTestChildContainmentDto dto, final DtoTestChildContainmentDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestChildCrossRefDto.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestChildCrossRefDto.java
new file mode 100644
index 0000000..912a125
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestChildCrossRefDto.java
@@ -0,0 +1,172 @@
+package org.osbp.mysmartshop.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.osbp.mysmartshop.dtos.BaseUUIDDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+
+@SuppressWarnings("all")
+public class DtoTestChildCrossRefDto extends BaseUUIDDto implements IDto, Serializable, PropertyChangeListener {
+  @DomainReference
+  private DtoTestParentDto container;
+  
+  public DtoTestChildCrossRefDto() {
+    installLazyCollections();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link DtoTestChildCrossRef} to the dto {@link DtoTestChildCrossRefDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the container property or <code>null</code> if not present.
+   */
+  public DtoTestParentDto getContainer() {
+    return this.container;
+  }
+  
+  /**
+   * Sets the <code>container</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>DtoTestParentDto#
+   * crossRefChilds</code> of the <code>container</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link DtoTestParentDto#setCrossRefChilds(DtoTestParentDto)
+   * 
+   * @param container - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setContainer(final DtoTestParentDto container) {
+    checkDisposed();
+    if (this.container != null) {
+    	this.container.internalRemoveFromCrossRefChilds(this);
+    }
+    
+    internalSetContainer(container);
+    
+    if (this.container != null) {
+    	this.container.internalAddToCrossRefChilds(this);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetContainer(final DtoTestParentDto container) {
+    firePropertyChange("container", this.container, this.container = container);
+  }
+  
+  public DtoTestChildCrossRefDto createDto() {
+    return new DtoTestChildCrossRefDto();
+  }
+  
+  public DtoTestChildCrossRefDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    DtoTestChildCrossRefDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final DtoTestChildCrossRefDto dto, final DtoTestChildCrossRefDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final DtoTestChildCrossRefDto dto, final DtoTestChildCrossRefDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+    // copy dto container
+    if(getContainer() != null) {
+    	newDto.setContainer(getContainer().copy(context));
+    }
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestParentDto.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestParentDto.java
new file mode 100644
index 0000000..ecca949
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/DtoTestParentDto.java
@@ -0,0 +1,443 @@
+package org.osbp.mysmartshop.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+import org.osbp.mysmartshop.dtos.BaseUUIDDto;
+import org.osbp.mysmartshop.dtos.DtoTestBeanDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+
+@SuppressWarnings("all")
+public class DtoTestParentDto extends BaseUUIDDto implements IDto, Serializable, PropertyChangeListener {
+  private String string;
+  
+  @DomainReference
+  @Valid
+  private List<DtoTestChildContainmentDto> containmentChilds;
+  
+  @DomainReference
+  private List<DtoTestChildCrossRefDto> crossRefChilds;
+  
+  @DomainReference
+  private DtoTestChildCrossRefDto crossRefChild;
+  
+  @Valid
+  private DtoTestBeanDto beanx;
+  
+  public DtoTestParentDto() {
+    installLazyCollections();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link DtoTestParent} to the dto {@link DtoTestParentDto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+    containmentChilds = new org.eclipse.osbp.dsl.dto.lib.OppositeContainmentDtoList<>(
+    				org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(),
+    				DtoTestChildContainmentDto.class, "container.id",
+    				(java.util.function.Supplier<Object> & Serializable) this::getId);
+    crossRefChilds = new org.eclipse.osbp.dsl.dto.lib.OppositeDtoList<>(
+    				org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(),
+    				DtoTestChildCrossRefDto.class, "container.id",
+    				(java.util.function.Supplier<Object> & Serializable) this::getId);
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.containmentChilds != null) {
+        for (DtoTestChildContainmentDto dtoTestChildContainmentDto : this.containmentChilds) {
+          dtoTestChildContainmentDto.dispose();
+        }
+        this.containmentChilds = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * Returns the string property or <code>null</code> if not present.
+   */
+  public String getString() {
+    return this.string;
+  }
+  
+  /**
+   * Sets the <code>string</code> property to this instance.
+   * 
+   * @param string - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setString(final String string) {
+    firePropertyChange("string", this.string, this.string = string );
+  }
+  
+  /**
+   * Returns an unmodifiable list of containmentChilds.
+   */
+  public List<DtoTestChildContainmentDto> getContainmentChilds() {
+    return Collections.unmodifiableList(internalGetContainmentChilds());
+  }
+  
+  /**
+   * Returns the list of <code>DtoTestChildContainmentDto</code>s thereby lazy initializing it. For internal use only!
+   * 
+   * @return list - the resulting list
+   * 
+   */
+  public List<DtoTestChildContainmentDto> internalGetContainmentChilds() {
+    if (this.containmentChilds == null) {
+      this.containmentChilds = new java.util.ArrayList<DtoTestChildContainmentDto>();
+    }
+    return this.containmentChilds;
+  }
+  
+  /**
+   * Adds the given dtoTestChildContainmentDto to this object. <p>
+   * Since the reference is a composition reference, the opposite reference <code>DtoTestChildContainmentDto#container</code> of the <code>dtoTestChildContainmentDto</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+   * See {@link DtoTestChildContainmentDto#setContainer(DtoTestChildContainmentDto)}.
+   * 
+   * @param dtoTestChildContainmentDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void addToContainmentChilds(final DtoTestChildContainmentDto dtoTestChildContainmentDto) {
+    checkDisposed();
+    
+    dtoTestChildContainmentDto.setContainer(this);
+  }
+  
+  /**
+   * Removes the given dtoTestChildContainmentDto from this object. <p>
+   * 
+   * @param dtoTestChildContainmentDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void removeFromContainmentChilds(final DtoTestChildContainmentDto dtoTestChildContainmentDto) {
+    checkDisposed();
+    
+    dtoTestChildContainmentDto.setContainer(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToContainmentChilds(final DtoTestChildContainmentDto dtoTestChildContainmentDto) {
+    
+    List<DtoTestChildContainmentDto> oldList = new java.util.ArrayList<>(internalGetContainmentChilds());
+    internalGetContainmentChilds().add(dtoTestChildContainmentDto);
+    firePropertyChange("containmentChilds", oldList, internalGetContainmentChilds());
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromContainmentChilds(final DtoTestChildContainmentDto dtoTestChildContainmentDto) {
+    List<DtoTestChildContainmentDto> oldList = new java.util.ArrayList<>(internalGetContainmentChilds());
+    internalGetContainmentChilds().remove(dtoTestChildContainmentDto);
+    firePropertyChange("containmentChilds", oldList, internalGetContainmentChilds());
+  }
+  
+  /**
+   * Sets the <code>containmentChilds</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>DtoTestChildContainmentDto#
+   * container</code> of the <code>containmentChilds</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link DtoTestChildContainmentDto#setContainer(DtoTestChildContainmentDto)
+   * 
+   * @param containmentChilds - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setContainmentChilds(final List<DtoTestChildContainmentDto> containmentChilds) {
+    checkDisposed();
+    for (DtoTestChildContainmentDto dto : internalGetContainmentChilds().toArray(new DtoTestChildContainmentDto[this.containmentChilds.size()])) {
+    	removeFromContainmentChilds(dto);
+    }
+    
+    if(containmentChilds == null) {
+    	return;
+    }
+    
+    for (DtoTestChildContainmentDto dto : containmentChilds) {
+    	addToContainmentChilds(dto);
+    }
+  }
+  
+  /**
+   * Returns an unmodifiable list of crossRefChilds.
+   */
+  public List<DtoTestChildCrossRefDto> getCrossRefChilds() {
+    return Collections.unmodifiableList(internalGetCrossRefChilds());
+  }
+  
+  /**
+   * Returns the list of <code>DtoTestChildCrossRefDto</code>s thereby lazy initializing it. For internal use only!
+   * 
+   * @return list - the resulting list
+   * 
+   */
+  public List<DtoTestChildCrossRefDto> internalGetCrossRefChilds() {
+    if (this.crossRefChilds == null) {
+      this.crossRefChilds = new java.util.ArrayList<DtoTestChildCrossRefDto>();
+    }
+    return this.crossRefChilds;
+  }
+  
+  /**
+   * Adds the given dtoTestChildCrossRefDto to this object. <p>
+   * Since the reference is a composition reference, the opposite reference <code>DtoTestChildCrossRefDto#container</code> of the <code>dtoTestChildCrossRefDto</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+   * See {@link DtoTestChildCrossRefDto#setContainer(DtoTestChildCrossRefDto)}.
+   * 
+   * @param dtoTestChildCrossRefDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void addToCrossRefChilds(final DtoTestChildCrossRefDto dtoTestChildCrossRefDto) {
+    checkDisposed();
+    
+    dtoTestChildCrossRefDto.setContainer(this);
+  }
+  
+  /**
+   * Removes the given dtoTestChildCrossRefDto from this object. <p>
+   * 
+   * @param dtoTestChildCrossRefDto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void removeFromCrossRefChilds(final DtoTestChildCrossRefDto dtoTestChildCrossRefDto) {
+    checkDisposed();
+    
+    dtoTestChildCrossRefDto.setContainer(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToCrossRefChilds(final DtoTestChildCrossRefDto dtoTestChildCrossRefDto) {
+    
+    List<DtoTestChildCrossRefDto> oldList = new java.util.ArrayList<>(internalGetCrossRefChilds());
+    internalGetCrossRefChilds().add(dtoTestChildCrossRefDto);
+    firePropertyChange("crossRefChilds", oldList, internalGetCrossRefChilds());
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromCrossRefChilds(final DtoTestChildCrossRefDto dtoTestChildCrossRefDto) {
+    List<DtoTestChildCrossRefDto> oldList = new java.util.ArrayList<>(internalGetCrossRefChilds());
+    internalGetCrossRefChilds().remove(dtoTestChildCrossRefDto);
+    firePropertyChange("crossRefChilds", oldList, internalGetCrossRefChilds());
+  }
+  
+  /**
+   * Sets the <code>crossRefChilds</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>DtoTestChildCrossRefDto#
+   * container</code> of the <code>crossRefChilds</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link DtoTestChildCrossRefDto#setContainer(DtoTestChildCrossRefDto)
+   * 
+   * @param crossRefChilds - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCrossRefChilds(final List<DtoTestChildCrossRefDto> crossRefChilds) {
+    checkDisposed();
+    for (DtoTestChildCrossRefDto dto : internalGetCrossRefChilds().toArray(new DtoTestChildCrossRefDto[this.crossRefChilds.size()])) {
+    	removeFromCrossRefChilds(dto);
+    }
+    
+    if(crossRefChilds == null) {
+    	return;
+    }
+    
+    for (DtoTestChildCrossRefDto dto : crossRefChilds) {
+    	addToCrossRefChilds(dto);
+    }
+  }
+  
+  /**
+   * Returns the crossRefChild property or <code>null</code> if not present.
+   */
+  public DtoTestChildCrossRefDto getCrossRefChild() {
+    return this.crossRefChild;
+  }
+  
+  /**
+   * Sets the <code>crossRefChild</code> property to this instance.
+   * 
+   * @param crossRefChild - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCrossRefChild(final DtoTestChildCrossRefDto crossRefChild) {
+    checkDisposed();
+    firePropertyChange("crossRefChild", this.crossRefChild, this.crossRefChild = crossRefChild);
+  }
+  
+  /**
+   * Returns the beanx property.
+   */
+  public DtoTestBeanDto getBeanx() {
+    if(this.beanx== null){
+      this.beanx = new DtoTestBeanDto();
+    }
+    return this.beanx;
+  }
+  
+  /**
+   * Sets the <code>beanx</code> property to this instance.
+   * 
+   * @param beanx - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setBeanx(final DtoTestBeanDto beanx) {
+    // ensure that embedded beans will notify their parent about changes
+    // so their dirty state can be handled properly
+    if (this.beanx != null) {
+    	this.beanx.removePropertyChangeListener(this);
+    }
+    
+    firePropertyChange("beanx", this.beanx, this.beanx = beanx );
+    
+    if (this.beanx != null) {
+    	this.beanx.addPropertyChangeListener(this);
+    }
+  }
+  
+  public DtoTestParentDto createDto() {
+    return new DtoTestParentDto();
+  }
+  
+  public DtoTestParentDto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    DtoTestParentDto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final DtoTestParentDto dto, final DtoTestParentDto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    // copy string
+    newDto.setString(getString());
+    // copy dto beanx
+    if(getBeanx() != null) {
+    	newDto.setBeanx(getBeanx().copy(context));
+    }
+    
+    // copy containment references (cascading is true)
+    // copy list of containmentChilds dtos
+    for(org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto _dto : getContainmentChilds()) {
+    	newDto.addToContainmentChilds(_dto.copy(context));
+    }
+  }
+  
+  public void copyCrossReferences(final DtoTestParentDto dto, final DtoTestParentDto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+    // copy list of crossRefChilds dtos
+    for(org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto _dto : getCrossRefChilds()) {
+    	newDto.addToCrossRefChilds(_dto.copy(context));
+    }
+    // copy dto crossRefChild
+    if(getCrossRefChild() != null) {
+    	newDto.setCrossRefChild(getCrossRefChild().copy(context));
+    }
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    if(source == beanx){
+    	firePropertyChange("beanx" + "_" + event.getPropertyName(), event.getOldValue(), event.getNewValue());
+    } else 
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/BaseIDDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/BaseIDDtoMapper.java
new file mode 100644
index 0000000..502574f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/BaseIDDtoMapper.java
@@ -0,0 +1,141 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.BaseIDDto;
+import org.osbp.mysmartshop.entities.BaseID;
+
+/**
+ * This class maps the dto {@link BaseIDDto} to and from the entity {@link BaseID}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BaseIDDtoMapper<DTO extends BaseIDDto, ENTITY extends BaseID> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public BaseID createEntity() {
+    return new BaseID();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BaseIDDto createDto() {
+    return new BaseIDDto();
+  }
+  
+  /**
+   * Maps the entity {@link BaseID} to the dto {@link BaseIDDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BaseIDDto dto, final BaseID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BaseIDDto} to the entity {@link BaseID}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BaseIDDto dto, final BaseID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_id(final BaseID in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_id(final BaseIDDto in, final BaseID parentEntity, final MappingContext context) {
+    return in.getId();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseIDDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseID.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/BaseUUIDDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/BaseUUIDDtoMapper.java
new file mode 100644
index 0000000..f745cf2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/BaseUUIDDtoMapper.java
@@ -0,0 +1,141 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.BaseUUIDDto;
+import org.osbp.mysmartshop.entities.BaseUUID;
+
+/**
+ * This class maps the dto {@link BaseUUIDDto} to and from the entity {@link BaseUUID}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BaseUUIDDtoMapper<DTO extends BaseUUIDDto, ENTITY extends BaseUUID> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public BaseUUID createEntity() {
+    return new BaseUUID();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BaseUUIDDto createDto() {
+    return new BaseUUIDDto();
+  }
+  
+  /**
+   * Maps the entity {@link BaseUUID} to the dto {@link BaseUUIDDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BaseUUIDDto dto, final BaseUUID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BaseUUIDDto} to the entity {@link BaseUUID}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BaseUUIDDto dto, final BaseUUID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_id(final BaseUUID in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_id(final BaseUUIDDto in, final BaseUUID parentEntity, final MappingContext context) {
+    return in.getId();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseUUIDDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseUUID.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestBeanDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestBeanDtoMapper.java
new file mode 100644
index 0000000..5a0a856
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestBeanDtoMapper.java
@@ -0,0 +1,206 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestBeanDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.entities.DtoTestBean;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+
+/**
+ * This class maps the dto {@link DtoTestBeanDto} to and from the entity {@link DtoTestBean}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestBeanDtoMapper<DTO extends DtoTestBeanDto, ENTITY extends DtoTestBean> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestBean createEntity() {
+    return new DtoTestBean();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestBeanDto createDto() {
+    return new DtoTestBeanDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestBean} to the dto {@link DtoTestBeanDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestBeanDto dto, final DtoTestBean entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    dto.setFoo(toDto_foo(entity, context));
+    dto.setCrossRefChild(toDto_crossRefChild(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestBeanDto} to the entity {@link DtoTestBean}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestBeanDto dto, final DtoTestBean entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    
+    entity.setFoo(toEntity_foo(dto, entity, context));
+    entity.setCrossRefChild(toEntity_crossRefChild(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property foo from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_foo(final DtoTestBean in, final MappingContext context) {
+    return in.getFoo();
+  }
+  
+  /**
+   * Maps the property foo from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_foo(final DtoTestBeanDto in, final DtoTestBean parentEntity, final MappingContext context) {
+    return in.getFoo();
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestChildCrossRefDto toDto_crossRefChild(final DtoTestBean in, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToDtoMapper(DtoTestChildCrossRefDto.class, in.getCrossRefChild().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestChildCrossRefDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getCrossRefChild()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestChildCrossRef toEntity_crossRefChild(final DtoTestBeanDto in, final DtoTestBean parentEntity, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToEntityMapper(in.getCrossRefChild().getClass(), DtoTestChildCrossRef.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestChildCrossRef entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getCrossRefChild()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getCrossRefChild(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    throw new UnsupportedOperationException("No id attribute available");
+  }
+  
+  public String createEntityHash(final Object in) {
+    throw new UnsupportedOperationException("No id attribute available");
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestChildContainmentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestChildContainmentDtoMapper.java
new file mode 100644
index 0000000..2d67942
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestChildContainmentDtoMapper.java
@@ -0,0 +1,147 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper;
+import org.osbp.mysmartshop.entities.DtoTestChildContainment;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+/**
+ * This class maps the dto {@link DtoTestChildContainmentDto} to and from the entity {@link DtoTestChildContainment}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestChildContainmentDtoMapper<DTO extends DtoTestChildContainmentDto, ENTITY extends DtoTestChildContainment> extends BaseUUIDDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestChildContainment createEntity() {
+    return new DtoTestChildContainment();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestChildContainmentDto createDto() {
+    return new DtoTestChildContainmentDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestChildContainment} to the dto {@link DtoTestChildContainmentDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestChildContainmentDto dto, final DtoTestChildContainment entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    if(dto.getContainer() == null) {
+    	// container is container property. So check for null to avoid looping
+    	dto.setContainer(toDto_container(entity, context));
+    }
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestChildContainmentDto} to the entity {@link DtoTestChildContainment}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestChildContainmentDto dto, final DtoTestChildContainment entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    if(entity.getContainer() == null) {
+    	// container is container property. So check for null to avoid looping
+    	entity.setContainer(toEntity_container(dto, entity, context));
+    }
+  }
+  
+  /**
+   * Maps the property container from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestParentDto toDto_container(final DtoTestChildContainment in, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToDtoMapper(DtoTestParentDto.class, in.getContainer().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestParentDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getContainer()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getContainer(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getContainer(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property container from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestParent toEntity_container(final DtoTestChildContainmentDto in, final DtoTestChildContainment parentEntity, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToEntityMapper(in.getContainer().getClass(), DtoTestParent.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestParent entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getContainer()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getContainer(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildContainmentDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildContainment.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestChildCrossRefDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestChildCrossRefDtoMapper.java
new file mode 100644
index 0000000..1689c54
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestChildCrossRefDtoMapper.java
@@ -0,0 +1,141 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+/**
+ * This class maps the dto {@link DtoTestChildCrossRefDto} to and from the entity {@link DtoTestChildCrossRef}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestChildCrossRefDtoMapper<DTO extends DtoTestChildCrossRefDto, ENTITY extends DtoTestChildCrossRef> extends BaseUUIDDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestChildCrossRef createEntity() {
+    return new DtoTestChildCrossRef();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestChildCrossRefDto createDto() {
+    return new DtoTestChildCrossRefDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestChildCrossRef} to the dto {@link DtoTestChildCrossRefDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestChildCrossRefDto dto, final DtoTestChildCrossRef entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setContainer(toDto_container(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestChildCrossRefDto} to the entity {@link DtoTestChildCrossRef}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestChildCrossRefDto dto, final DtoTestChildCrossRef entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setContainer(toEntity_container(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property container from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestParentDto toDto_container(final DtoTestChildCrossRef in, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToDtoMapper(DtoTestParentDto.class, in.getContainer().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestParentDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getContainer()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getContainer(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getContainer(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property container from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestParent toEntity_container(final DtoTestChildCrossRefDto in, final DtoTestChildCrossRef parentEntity, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToEntityMapper(in.getContainer().getClass(), DtoTestParent.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestParent entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getContainer()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getContainer(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildCrossRefDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildCrossRef.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestParentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestParentDtoMapper.java
new file mode 100644
index 0000000..1526be7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/mapper/DtoTestParentDtoMapper.java
@@ -0,0 +1,315 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import java.util.List;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestBeanDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper;
+import org.osbp.mysmartshop.entities.DtoTestBean;
+import org.osbp.mysmartshop.entities.DtoTestChildContainment;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+/**
+ * This class maps the dto {@link DtoTestParentDto} to and from the entity {@link DtoTestParent}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestParentDtoMapper<DTO extends DtoTestParentDto, ENTITY extends DtoTestParent> extends BaseUUIDDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestParent createEntity() {
+    return new DtoTestParent();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestParentDto createDto() {
+    return new DtoTestParentDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestParent} to the dto {@link DtoTestParentDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestParentDto dto, final DtoTestParent entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setString(toDto_string(entity, context));
+    dto.setCrossRefChild(toDto_crossRefChild(entity, context));
+    dto.setBeanx(toDto_beanx(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestParentDto} to the entity {@link DtoTestParent}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestParentDto dto, final DtoTestParent entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setString(toEntity_string(dto, entity, context));
+    toEntity_containmentChilds(dto, entity, context);
+    toEntity_crossRefChilds(dto, entity, context);
+    entity.setCrossRefChild(toEntity_crossRefChild(dto, entity, context));
+    entity.setBeanx(toEntity_beanx(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property string from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_string(final DtoTestParent in, final MappingContext context) {
+    return in.getString();
+  }
+  
+  /**
+   * Maps the property string from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_string(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    return in.getString();
+  }
+  
+  /**
+   * Maps the property containmentChilds from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<DtoTestChildContainmentDto> toDto_containmentChilds(final DtoTestParent in, final MappingContext context) {
+    // nothing to do here. Mapping is done by OppositeLists
+    return null;
+  }
+  
+  /**
+   * Maps the property containmentChilds from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected List<DtoTestChildContainment> toEntity_containmentChilds(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildContainmentDto, DtoTestChildContainment> mapper = getToEntityMapper(DtoTestChildContainmentDto.class, DtoTestChildContainment.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildContainmentDto> childsList = 
+    	(org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildContainmentDto>) in.internalGetContainmentChilds();
+    
+    // if entities are being added, then they are passed to
+    // #addToContainerChilds of the parent entity. So the container ref is setup
+    // properly!
+    // if entities are being removed, then they are passed to the
+    // #internalRemoveFromChilds method of the parent entity. So they are
+    // removed directly from the list of entities.
+    childsList.mapToEntity(mapper,
+    		parentEntity::addToContainmentChilds,
+    		parentEntity::internalRemoveFromContainmentChilds);
+    return null;
+  }
+  
+  /**
+   * Maps the property crossRefChilds from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<DtoTestChildCrossRefDto> toDto_crossRefChilds(final DtoTestParent in, final MappingContext context) {
+    // nothing to do here. Mapping is done by OppositeLists
+    return null;
+  }
+  
+  /**
+   * Maps the property crossRefChilds from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected List<DtoTestChildCrossRef> toEntity_crossRefChilds(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = getToEntityMapper(DtoTestChildCrossRefDto.class, DtoTestChildCrossRef.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildCrossRefDto> childsList = 
+    	(org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildCrossRefDto>) in.internalGetCrossRefChilds();
+    
+    // if entities are being added, then they are passed to
+    // #addToContainerChilds of the parent entity. So the container ref is setup
+    // properly!
+    // if entities are being removed, then they are passed to the
+    // #internalRemoveFromChilds method of the parent entity. So they are
+    // removed directly from the list of entities.
+    childsList.mapToEntity(mapper,
+    		parentEntity::addToCrossRefChilds,
+    		parentEntity::internalRemoveFromCrossRefChilds);
+    return null;
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestChildCrossRefDto toDto_crossRefChild(final DtoTestParent in, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToDtoMapper(DtoTestChildCrossRefDto.class, in.getCrossRefChild().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestChildCrossRefDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getCrossRefChild()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestChildCrossRef toEntity_crossRefChild(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToEntityMapper(in.getCrossRefChild().getClass(), DtoTestChildCrossRef.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestChildCrossRef entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getCrossRefChild()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getCrossRefChild(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  /**
+   * Maps the property beanx from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected DtoTestBeanDto toDto_beanx(final DtoTestParent in, final MappingContext context) {
+    if(in.getBeanx() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean>) getToDtoMapper(DtoTestBeanDto.class, in.getBeanx().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestBeanDto dto = null;
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getBeanx(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property beanx from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected DtoTestBean toEntity_beanx(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    if(in.getBeanx() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean>) getToEntityMapper(in.getBeanx().getClass(), DtoTestBean.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestBean entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getBeanx(), entity, context);
+    	return entity;							
+    } else {
+    	return null;
+    }
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestParentDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestParent.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestChildContainmentDtoService.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestChildContainmentDtoService.java
new file mode 100644
index 0000000..6fa8d2e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestChildContainmentDtoService.java
@@ -0,0 +1,20 @@
+package org.osbp.mysmartshop.dtos.service;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.entities.DtoTestChildContainment;
+
+@SuppressWarnings("all")
+public class DtoTestChildContainmentDtoService extends AbstractDTOService<DtoTestChildContainmentDto, DtoTestChildContainment> {
+  public Class<DtoTestChildContainmentDto> getDtoClass() {
+    return DtoTestChildContainmentDto.class;
+  }
+  
+  public Class<DtoTestChildContainment> getEntityClass() {
+    return DtoTestChildContainment.class;
+  }
+  
+  public Object getId(final DtoTestChildContainmentDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestChildCrossRefDtoService.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestChildCrossRefDtoService.java
new file mode 100644
index 0000000..5115a24
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestChildCrossRefDtoService.java
@@ -0,0 +1,20 @@
+package org.osbp.mysmartshop.dtos.service;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+
+@SuppressWarnings("all")
+public class DtoTestChildCrossRefDtoService extends AbstractDTOService<DtoTestChildCrossRefDto, DtoTestChildCrossRef> {
+  public Class<DtoTestChildCrossRefDto> getDtoClass() {
+    return DtoTestChildCrossRefDto.class;
+  }
+  
+  public Class<DtoTestChildCrossRef> getEntityClass() {
+    return DtoTestChildCrossRef.class;
+  }
+  
+  public Object getId(final DtoTestChildCrossRefDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestParentDtoService.java b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestParentDtoService.java
new file mode 100644
index 0000000..d8a1997
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/dtos/service/DtoTestParentDtoService.java
@@ -0,0 +1,20 @@
+package org.osbp.mysmartshop.dtos.service;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+@SuppressWarnings("all")
+public class DtoTestParentDtoService extends AbstractDTOService<DtoTestParentDto, DtoTestParent> {
+  public Class<DtoTestParentDto> getDtoClass() {
+    return DtoTestParentDto.class;
+  }
+  
+  public Class<DtoTestParent> getEntityClass() {
+    return DtoTestParent.class;
+  }
+  
+  public Object getId(final DtoTestParentDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/entities/BaseID.java b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/BaseID.java
new file mode 100644
index 0000000..9b517d6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/BaseID.java
@@ -0,0 +1,108 @@
+/**
+ * Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  This source was created by OSBP Softwarefactory Wizard!
+ * 
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ * ================================================================
+ * 
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ */
+package org.osbp.mysmartshop.entities;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@MappedSuperclass
+@SuppressWarnings("all")
+public class BaseID implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  @GeneratedValue
+  private int id;
+  
+  /**
+   * @return true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   * 
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * @return Returns the id property or <code>null</code> if not present.
+   */
+  public int getId() {
+    checkDisposed();
+    return this.id;
+  }
+  
+  /**
+   * Sets the id property to this instance.
+   */
+  public void setId(final int id) {
+    checkDisposed();
+    this.id = id;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    BaseID other = (BaseID) obj;
+    if (other.id != this.id)
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + this.id;
+    return result;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/entities/BaseUUID.java b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/BaseUUID.java
new file mode 100644
index 0000000..e9b8df3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/BaseUUID.java
@@ -0,0 +1,145 @@
+/**
+ * Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  This source was created by OSBP Softwarefactory Wizard!
+ * 
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ * ================================================================
+ * 
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ */
+package org.osbp.mysmartshop.entities;
+
+import java.util.function.Consumer;
+import java.util.function.Supplier;
+
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.Transient;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@MappedSuperclass
+@SuppressWarnings("all")
+public class BaseUUID implements IEntity {
+	@Transient
+	@Dispose
+	private boolean disposed;
+
+	@Id
+	private String id = java.util.UUID.randomUUID().toString();
+
+	/**
+	 * INTERNAL:
+	 * 
+	 * @param selector
+	 * @return
+	 */
+	public Consumer<?> internalGetRawConsumer(String selector) {
+		switch (selector) {
+		case "setId":
+			return (Consumer<String>) this::setId;
+		}
+		throw new IllegalArgumentException("Not a valid consumer: " + selector);
+	}
+
+	/**
+	 * INTERNAL:
+	 * 
+	 * @param selector
+	 * @return
+	 */
+	public Supplier<?> internalGetRawSupplier(String selector) {
+		switch (selector) {
+		case "getId":
+			return (Supplier<String>) this::getId;
+		}
+		throw new IllegalArgumentException("Not a valid supplier: " + selector);
+	}
+
+	/**
+	 * @return true, if the object is disposed. Disposed means, that it is
+	 *         prepared for garbage collection and may not be used anymore.
+	 *         Accessing objects that are already disposed will cause runtime
+	 *         exceptions.
+	 * 
+	 */
+	@Dispose
+	public boolean isDisposed() {
+		return this.disposed;
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.<br>
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	@Dispose
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		disposed = true;
+	}
+
+	/**
+	 * @return Returns the id property or <code>null</code> if not present.
+	 */
+	public String getId() {
+		checkDisposed();
+		return this.id;
+	}
+
+	/**
+	 * Sets the id property to this instance.
+	 */
+	public void setId(final String id) {
+		checkDisposed();
+		this.id = id;
+	}
+
+	@Override
+	public boolean equals(final Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		BaseUUID other = (BaseUUID) obj;
+		if (this.id == null) {
+			if (other.id != null)
+				return false;
+		} else if (!this.id.equals(other.id))
+			return false;
+		return true;
+	}
+
+	@Override
+	public int hashCode() {
+		int prime = 31;
+		int result = 1;
+		result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestBean.java b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestBean.java
new file mode 100644
index 0000000..fd8ef49
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestBean.java
@@ -0,0 +1,109 @@
+/**
+ * Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  This source was created by OSBP Softwarefactory Wizard!
+ * 
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ * ================================================================
+ * 
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ */
+package org.osbp.mysmartshop.entities;
+
+import java.io.Serializable;
+import javax.persistence.Basic;
+import javax.persistence.Embeddable;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Transient;
+import org.eclipse.osbp.dsl.common.datatypes.IBean;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+
+@Embeddable
+@SuppressWarnings("all")
+public class DtoTestBean implements Serializable, IBean {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Basic
+  private String foo;
+  
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(name = "crossRefChild")
+  private DtoTestChildCrossRef crossRefChild;
+  
+  /**
+   * @return true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   * 
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * @return Returns the foo property or <code>null</code> if not present.
+   */
+  public String getFoo() {
+    checkDisposed();
+    return this.foo;
+  }
+  
+  /**
+   * Sets the foo property to this instance.
+   */
+  public void setFoo(final String foo) {
+    checkDisposed();
+    this.foo = foo;
+  }
+  
+  /**
+   * @return Returns the crossRefChild property or <code>null</code> if not present.
+   */
+  public DtoTestChildCrossRef getCrossRefChild() {
+    checkDisposed();
+    return this.crossRefChild;
+  }
+  
+  /**
+   * Sets the crossRefChild property to this instance.
+   */
+  public void setCrossRefChild(final DtoTestChildCrossRef crossRefChild) {
+    checkDisposed();
+    this.crossRefChild = crossRefChild;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestChildContainment.java b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestChildContainment.java
new file mode 100644
index 0000000..f3d4ba6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestChildContainment.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  This source was created by OSBP Softwarefactory Wizard!
+ * 
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ * ================================================================
+ * 
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ */
+package org.osbp.mysmartshop.entities;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.osbp.mysmartshop.entities.BaseUUID;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+@Entity
+@Table(name = "DTO_TEST_CHILD_CONTAINMENT")
+@SuppressWarnings("all")
+public class DtoTestChildContainment extends BaseUUID implements IEntity {
+  @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
+  @JoinColumn(name = "CONTAINER_ID")
+  private DtoTestParent container;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.container != null) {
+        this.container.dispose();
+        this.container = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * @return Returns the container property or <code>null</code> if not present.
+   */
+  public DtoTestParent getContainer() {
+    checkDisposed();
+    return this.container;
+  }
+  
+  /**
+   * Sets the container property to this instance.
+   * Since the reference is a container reference, the opposite reference (DtoTestParent.containmentChilds)
+   * of the container will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link DtoTestParent#setContainmentChilds(DtoTestParent)}.
+   */
+  public void setContainer(final DtoTestParent container) {
+    checkDisposed();
+    if (this.container != null) {
+      this.container.internalRemoveFromContainmentChilds(this);
+    }
+    this.container = container;
+    if (this.container != null) {
+      this.container.internalAddToContainmentChilds(this);
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestChildCrossRef.java b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestChildCrossRef.java
new file mode 100644
index 0000000..e9360d6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestChildCrossRef.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  This source was created by OSBP Softwarefactory Wizard!
+ * 
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ * ================================================================
+ * 
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ */
+package org.osbp.mysmartshop.entities;
+
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.osbp.mysmartshop.entities.BaseUUID;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+@Entity
+@Table(name = "DTO_TEST_CHILD_CROSS_REF")
+@SuppressWarnings("all")
+public class DtoTestChildCrossRef extends BaseUUID implements IEntity {
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(name = "CONTAINER_ID")
+  private DtoTestParent container;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * @return Returns the container property or <code>null</code> if not present.
+   */
+  public DtoTestParent getContainer() {
+    checkDisposed();
+    return this.container;
+  }
+  
+  /**
+   * Sets the container property to this instance.
+   * Since the reference is a container reference, the opposite reference (DtoTestParent.crossRefChilds)
+   * of the container will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link DtoTestParent#setCrossRefChilds(DtoTestParent)}.
+   */
+  public void setContainer(final DtoTestParent container) {
+    checkDisposed();
+    if (this.container != null) {
+      this.container.internalRemoveFromCrossRefChilds(this);
+    }
+    this.container = container;
+    if (this.container != null) {
+      this.container.internalAddToCrossRefChilds(this);
+    }
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestParent.java b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestParent.java
new file mode 100644
index 0000000..891820f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/entities/DtoTestParent.java
@@ -0,0 +1,365 @@
+/**
+ * Copyright (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ *  This source was created by OSBP Softwarefactory Wizard!
+ * 
+ *  OSBP is (C) - Loetz GmbH&Co.KG, 69115 Heidelberg, Germany
+ * 
+ * ================================================================
+ * 
+ *  @file           $HeadURL$
+ *  @version        $Revision$
+ *  @date           $Date$
+ *  @author         $Author$
+ */
+package org.osbp.mysmartshop.entities;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.function.Consumer;
+import java.util.function.Supplier;
+
+import javax.persistence.AssociationOverride;
+import javax.persistence.AssociationOverrides;
+import javax.persistence.AttributeOverride;
+import javax.persistence.AttributeOverrides;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.Table;
+import javax.validation.Valid;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "DTO_TEST_PARENT")
+@SuppressWarnings("all")
+public class DtoTestParent extends BaseUUID implements IEntity {
+	@Column(name = "STRING")
+	private String string;
+
+	@JoinColumn(name = "CONTAINMENT_CHILDS_ID")
+	@OneToMany(mappedBy = "container", cascade = CascadeType.ALL, orphanRemoval = true)
+	@Valid
+	private List<DtoTestChildContainment> containmentChilds;
+
+	@JoinColumn(name = "CROSS_REF_CHILDS_ID")
+	@OneToMany(mappedBy = "container", cascade = { CascadeType.DETACH,
+			CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
+	private List<DtoTestChildCrossRef> crossRefChilds;
+
+	@ManyToOne(fetch = FetchType.LAZY)
+	@JoinColumn(name = "CROSS_REF_CHILD_ID")
+	private DtoTestChildCrossRef crossRefChild;
+
+	@Embedded
+	@AttributeOverrides(value = @AttributeOverride(name = "foo", column = @Column(name = "BEANX_FOO")))
+	@AssociationOverrides(value = @AssociationOverride(name = "crossRefChild", joinColumns = @JoinColumn(name = "BEANX_CROSSREFCHILD")))
+	@Column(name = "BEANX")
+	@Valid
+	private DtoTestBean beanx;
+
+	/**
+	 * INTERNAL:
+	 * 
+	 * @param selector
+	 * @return
+	 */
+	public Consumer<?> internalGetRawConsumer(String selector) {
+		switch (selector) {
+		case "setId":
+			return (Consumer<String>) this::setId;
+		case "addToContainmentChilds":
+			return (Consumer<DtoTestChildContainment>) this::internalAddToContainmentChilds;
+		case "removeFromContainmentChilds":
+			return (Consumer<DtoTestChildContainment>) this::internalRemoveFromContainmentChilds;
+		case "addToCrossRefChilds":
+			return (Consumer<DtoTestChildCrossRef>) this::internalAddToCrossRefChilds;
+		case "removeFromCrossRefChilds":
+			return (Consumer<DtoTestChildCrossRef>) this::internalRemoveFromCrossRefChilds;
+		default:
+			return super.internalGetRawConsumer(selector);
+		}
+	}
+
+	/**
+	 * INTERNAL:
+	 * 
+	 * @param selector
+	 * @return
+	 */
+	public Supplier<?> internalGetRawSupplier(String selector) {
+		switch (selector) {
+		case "getId":
+			return (Supplier<String>) this::getId;
+		default:
+			return super.internalGetRawSupplier(selector);
+		}
+	}
+
+	/**
+	 * Checks whether the object is disposed.
+	 * 
+	 * @throws RuntimeException
+	 *             if the object is disposed.
+	 */
+	private void checkDisposed() {
+		if (isDisposed()) {
+			throw new RuntimeException("Object already disposed: " + this);
+		}
+	}
+
+	/**
+	 * Calling dispose will destroy that instance. The internal state will be
+	 * set to 'disposed' and methods of that object must not be used anymore.
+	 * Each call will result in runtime exceptions.<br>
+	 * If this object keeps composition containments, these will be disposed
+	 * too. So the whole composition containment tree will be disposed on
+	 * calling this method.
+	 */
+	@Dispose
+	public void dispose() {
+		if (isDisposed()) {
+			return;
+		}
+		try {
+			// Dispose all the composition references.
+			if (this.containmentChilds != null) {
+				for (DtoTestChildContainment dtoTestChildContainment : this.containmentChilds) {
+					dtoTestChildContainment.dispose();
+				}
+				this.containmentChilds = null;
+			}
+
+		} finally {
+			super.dispose();
+		}
+
+	}
+
+	/**
+	 * @return Returns the string property or <code>null</code> if not present.
+	 */
+	public String getString() {
+		checkDisposed();
+		return this.string;
+	}
+
+	/**
+	 * Sets the string property to this instance.
+	 */
+	public void setString(final String string) {
+		checkDisposed();
+		this.string = string;
+	}
+
+	/**
+	 * @return Returns an unmodifiable list of containmentChilds.
+	 */
+	public List<DtoTestChildContainment> getContainmentChilds() {
+		checkDisposed();
+		return Collections.unmodifiableList(internalGetContainmentChilds());
+	}
+
+	/**
+	 * Sets the given containmentChilds to the object. Currently contained
+	 * containmentChilds instances will be removed.
+	 * 
+	 * @param containmentChilds
+	 *            the list of new instances
+	 */
+	public void setContainmentChilds(
+			final List<DtoTestChildContainment> containmentChilds) {
+		// remove the old dtoTestChildContainment
+		for (DtoTestChildContainment oldElement : new ArrayList<DtoTestChildContainment>(
+				this.internalGetContainmentChilds())) {
+			removeFromContainmentChilds(oldElement);
+		}
+
+		// add the new dtoTestChildContainment
+		for (DtoTestChildContainment newElement : containmentChilds) {
+			addToContainmentChilds(newElement);
+		}
+	}
+
+	/**
+	 * Returns the list of <code>DtoTestChildContainment</code>s thereby lazy
+	 * initializing it.
+	 */
+	private List<DtoTestChildContainment> internalGetContainmentChilds() {
+		if (this.containmentChilds == null) {
+			this.containmentChilds = new ArrayList<DtoTestChildContainment>();
+		}
+		return this.containmentChilds;
+	}
+
+	/**
+	 * Adds the given dtoTestChildContainment to this object.
+	 * <p>
+	 * Since the reference is a composition reference, the opposite reference
+	 * (DtoTestChildContainment.container) of the dtoTestChildContainment will
+	 * be handled automatically and no further coding is required to keep them
+	 * in sync. See
+	 * {@link DtoTestChildContainment#setContainer(DtoTestChildContainment)}.
+	 * 
+	 */
+	public void addToContainmentChilds(
+			final DtoTestChildContainment dtoTestChildContainment) {
+		checkDisposed();
+		dtoTestChildContainment.setContainer(this);
+	}
+
+	/**
+	 * Removes the given dtoTestChildContainment from this object.
+	 * <p>
+	 * Since the reference is a cascading reference, the opposite reference
+	 * (DtoTestChildContainment.container) of the dtoTestChildContainment will
+	 * be handled automatically and no further coding is required to keep them
+	 * in sync. See
+	 * {@link DtoTestChildContainment#setContainer(DtoTestChildContainment)}.
+	 * 
+	 */
+	public void removeFromContainmentChilds(
+			final DtoTestChildContainment dtoTestChildContainment) {
+		checkDisposed();
+		dtoTestChildContainment.setContainer(null);
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalAddToContainmentChilds(
+			final DtoTestChildContainment dtoTestChildContainment) {
+		internalGetContainmentChilds().add(dtoTestChildContainment);
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalRemoveFromContainmentChilds(
+			final DtoTestChildContainment dtoTestChildContainment) {
+		internalGetContainmentChilds().remove(dtoTestChildContainment);
+	}
+
+	/**
+	 * @return Returns an unmodifiable list of crossRefChilds.
+	 */
+	public List<DtoTestChildCrossRef> getCrossRefChilds() {
+		checkDisposed();
+		return Collections.unmodifiableList(internalGetCrossRefChilds());
+	}
+
+	/**
+	 * Sets the given crossRefChilds to the object. Currently contained
+	 * crossRefChilds instances will be removed.
+	 * 
+	 * @param crossRefChilds
+	 *            the list of new instances
+	 */
+	public void setCrossRefChilds(
+			final List<DtoTestChildCrossRef> crossRefChilds) {
+		// remove the old dtoTestChildCrossRef
+		for (DtoTestChildCrossRef oldElement : new ArrayList<DtoTestChildCrossRef>(
+				this.internalGetCrossRefChilds())) {
+			removeFromCrossRefChilds(oldElement);
+		}
+
+		// add the new dtoTestChildCrossRef
+		for (DtoTestChildCrossRef newElement : crossRefChilds) {
+			addToCrossRefChilds(newElement);
+		}
+	}
+
+	/**
+	 * Returns the list of <code>DtoTestChildCrossRef</code>s thereby lazy
+	 * initializing it.
+	 */
+	private List<DtoTestChildCrossRef> internalGetCrossRefChilds() {
+		if (this.crossRefChilds == null) {
+			this.crossRefChilds = new ArrayList<DtoTestChildCrossRef>();
+		}
+		return this.crossRefChilds;
+	}
+
+	/**
+	 * Adds the given dtoTestChildCrossRef to this object.
+	 * <p>
+	 * Since the reference is a composition reference, the opposite reference
+	 * (DtoTestChildCrossRef.container) of the dtoTestChildCrossRef will be
+	 * handled automatically and no further coding is required to keep them in
+	 * sync. See {@link DtoTestChildCrossRef#setContainer(DtoTestChildCrossRef)}.
+	 * 
+	 */
+	public void addToCrossRefChilds(
+			final DtoTestChildCrossRef dtoTestChildCrossRef) {
+		checkDisposed();
+		dtoTestChildCrossRef.setContainer(this);
+	}
+
+	/**
+	 * Removes the given dtoTestChildCrossRef from this object.
+	 * <p>
+	 * 
+	 */
+	public void removeFromCrossRefChilds(
+			final DtoTestChildCrossRef dtoTestChildCrossRef) {
+		checkDisposed();
+		dtoTestChildCrossRef.setContainer(null);
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalAddToCrossRefChilds(
+			final DtoTestChildCrossRef dtoTestChildCrossRef) {
+		internalGetCrossRefChilds().add(dtoTestChildCrossRef);
+	}
+
+	/**
+	 * For internal use only!
+	 */
+	public void internalRemoveFromCrossRefChilds(
+			final DtoTestChildCrossRef dtoTestChildCrossRef) {
+		internalGetCrossRefChilds().remove(dtoTestChildCrossRef);
+	}
+
+	/**
+	 * @return Returns the crossRefChild property or <code>null</code> if not
+	 *         present.
+	 */
+	public DtoTestChildCrossRef getCrossRefChild() {
+		checkDisposed();
+		return this.crossRefChild;
+	}
+
+	/**
+	 * Sets the crossRefChild property to this instance.
+	 */
+	public void setCrossRefChild(final DtoTestChildCrossRef crossRefChild) {
+		checkDisposed();
+		this.crossRefChild = crossRefChild;
+	}
+
+	/**
+	 * @return Returns the beanx property or <code>null</code> if not present.
+	 */
+	public DtoTestBean getBeanx() {
+		checkDisposed();
+		return this.beanx;
+	}
+
+	/**
+	 * Sets the beanx property to this instance.
+	 */
+	public void setBeanx(final DtoTestBean beanx) {
+		checkDisposed();
+		this.beanx = beanx;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/BaseIDDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/BaseIDDtoMapper.java
new file mode 100644
index 0000000..502574f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/BaseIDDtoMapper.java
@@ -0,0 +1,141 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.BaseIDDto;
+import org.osbp.mysmartshop.entities.BaseID;
+
+/**
+ * This class maps the dto {@link BaseIDDto} to and from the entity {@link BaseID}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BaseIDDtoMapper<DTO extends BaseIDDto, ENTITY extends BaseID> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public BaseID createEntity() {
+    return new BaseID();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BaseIDDto createDto() {
+    return new BaseIDDto();
+  }
+  
+  /**
+   * Maps the entity {@link BaseID} to the dto {@link BaseIDDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BaseIDDto dto, final BaseID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BaseIDDto} to the entity {@link BaseID}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BaseIDDto dto, final BaseID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toDto_id(final BaseID in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected int toEntity_id(final BaseIDDto in, final BaseID parentEntity, final MappingContext context) {
+    return in.getId();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseIDDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseID.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/BaseUUIDDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/BaseUUIDDtoMapper.java
new file mode 100644
index 0000000..f745cf2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/BaseUUIDDtoMapper.java
@@ -0,0 +1,141 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.BaseUUIDDto;
+import org.osbp.mysmartshop.entities.BaseUUID;
+
+/**
+ * This class maps the dto {@link BaseUUIDDto} to and from the entity {@link BaseUUID}.
+ * 
+ */
+@SuppressWarnings("all")
+public class BaseUUIDDtoMapper<DTO extends BaseUUIDDto, ENTITY extends BaseUUID> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public BaseUUID createEntity() {
+    return new BaseUUID();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public BaseUUIDDto createDto() {
+    return new BaseUUIDDto();
+  }
+  
+  /**
+   * Maps the entity {@link BaseUUID} to the dto {@link BaseUUIDDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final BaseUUIDDto dto, final BaseUUID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    dto.setId(toDto_id(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link BaseUUIDDto} to the entity {@link BaseUUID}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final BaseUUIDDto dto, final BaseUUID entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    
+    entity.setId(toEntity_id(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_id(final BaseUUID in, final MappingContext context) {
+    return in.getId();
+  }
+  
+  /**
+   * Maps the property id from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_id(final BaseUUIDDto in, final BaseUUID parentEntity, final MappingContext context) {
+    return in.getId();
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseUUIDDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(BaseUUID.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestBeanDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestBeanDtoMapper.java
new file mode 100644
index 0000000..5a0a856
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestBeanDtoMapper.java
@@ -0,0 +1,206 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.IMapper;
+import org.eclipse.osbp.dsl.dto.lib.IMapperAccess;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestBeanDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.entities.DtoTestBean;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+
+/**
+ * This class maps the dto {@link DtoTestBeanDto} to and from the entity {@link DtoTestBean}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestBeanDtoMapper<DTO extends DtoTestBeanDto, ENTITY extends DtoTestBean> implements IMapper<DTO, ENTITY> {
+  private IMapperAccess mapperAccess;
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToDtoMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToDtoMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Returns the mapper instance that may map between the given dto and entity. Or <code>null</code> if no mapper is available.
+   * 
+   * @param dtoClass - the class of the dto that should be mapped
+   * @param entityClass - the class of the entity that should be mapped
+   * @return the mapper instance or <code>null</code>
+   */
+  protected <D, E> IMapper<D, E> getToEntityMapper(final Class<D> dtoClass, final Class<E> entityClass) {
+    return mapperAccess.getToEntityMapper(dtoClass, entityClass);
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void bindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = mapperAccess;
+  }
+  
+  /**
+   * Called by OSGi-DS. Binds the mapper access service.
+   * 
+   * @param service - The mapper access service
+   * 
+   */
+  protected void unbindMapperAccess(final IMapperAccess mapperAccess) {
+    this.mapperAccess = null;
+  }
+  
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestBean createEntity() {
+    return new DtoTestBean();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestBeanDto createDto() {
+    return new DtoTestBeanDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestBean} to the dto {@link DtoTestBeanDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestBeanDto dto, final DtoTestBean entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    dto.setFoo(toDto_foo(entity, context));
+    dto.setCrossRefChild(toDto_crossRefChild(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestBeanDto} to the entity {@link DtoTestBean}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestBeanDto dto, final DtoTestBean entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    
+    entity.setFoo(toEntity_foo(dto, entity, context));
+    entity.setCrossRefChild(toEntity_crossRefChild(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property foo from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_foo(final DtoTestBean in, final MappingContext context) {
+    return in.getFoo();
+  }
+  
+  /**
+   * Maps the property foo from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_foo(final DtoTestBeanDto in, final DtoTestBean parentEntity, final MappingContext context) {
+    return in.getFoo();
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestChildCrossRefDto toDto_crossRefChild(final DtoTestBean in, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToDtoMapper(DtoTestChildCrossRefDto.class, in.getCrossRefChild().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestChildCrossRefDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getCrossRefChild()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestChildCrossRef toEntity_crossRefChild(final DtoTestBeanDto in, final DtoTestBean parentEntity, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToEntityMapper(in.getCrossRefChild().getClass(), DtoTestChildCrossRef.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestChildCrossRef entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getCrossRefChild()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getCrossRefChild(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    throw new UnsupportedOperationException("No id attribute available");
+  }
+  
+  public String createEntityHash(final Object in) {
+    throw new UnsupportedOperationException("No id attribute available");
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestChildContainmentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestChildContainmentDtoMapper.java
new file mode 100644
index 0000000..2d67942
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestChildContainmentDtoMapper.java
@@ -0,0 +1,147 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper;
+import org.osbp.mysmartshop.entities.DtoTestChildContainment;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+/**
+ * This class maps the dto {@link DtoTestChildContainmentDto} to and from the entity {@link DtoTestChildContainment}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestChildContainmentDtoMapper<DTO extends DtoTestChildContainmentDto, ENTITY extends DtoTestChildContainment> extends BaseUUIDDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestChildContainment createEntity() {
+    return new DtoTestChildContainment();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestChildContainmentDto createDto() {
+    return new DtoTestChildContainmentDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestChildContainment} to the dto {@link DtoTestChildContainmentDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestChildContainmentDto dto, final DtoTestChildContainment entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    if(dto.getContainer() == null) {
+    	// container is container property. So check for null to avoid looping
+    	dto.setContainer(toDto_container(entity, context));
+    }
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestChildContainmentDto} to the entity {@link DtoTestChildContainment}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestChildContainmentDto dto, final DtoTestChildContainment entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    if(entity.getContainer() == null) {
+    	// container is container property. So check for null to avoid looping
+    	entity.setContainer(toEntity_container(dto, entity, context));
+    }
+  }
+  
+  /**
+   * Maps the property container from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestParentDto toDto_container(final DtoTestChildContainment in, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToDtoMapper(DtoTestParentDto.class, in.getContainer().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestParentDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getContainer()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getContainer(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getContainer(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property container from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestParent toEntity_container(final DtoTestChildContainmentDto in, final DtoTestChildContainment parentEntity, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToEntityMapper(in.getContainer().getClass(), DtoTestParent.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestParent entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getContainer()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getContainer(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildContainmentDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildContainment.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestChildCrossRefDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestChildCrossRefDtoMapper.java
new file mode 100644
index 0000000..1689c54
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestChildCrossRefDtoMapper.java
@@ -0,0 +1,141 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+/**
+ * This class maps the dto {@link DtoTestChildCrossRefDto} to and from the entity {@link DtoTestChildCrossRef}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestChildCrossRefDtoMapper<DTO extends DtoTestChildCrossRefDto, ENTITY extends DtoTestChildCrossRef> extends BaseUUIDDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestChildCrossRef createEntity() {
+    return new DtoTestChildCrossRef();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestChildCrossRefDto createDto() {
+    return new DtoTestChildCrossRefDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestChildCrossRef} to the dto {@link DtoTestChildCrossRefDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestChildCrossRefDto dto, final DtoTestChildCrossRef entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setContainer(toDto_container(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestChildCrossRefDto} to the entity {@link DtoTestChildCrossRef}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestChildCrossRefDto dto, final DtoTestChildCrossRef entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setContainer(toEntity_container(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property container from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestParentDto toDto_container(final DtoTestChildCrossRef in, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToDtoMapper(DtoTestParentDto.class, in.getContainer().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestParentDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getContainer()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getContainer(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getContainer(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property container from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestParent toEntity_container(final DtoTestChildCrossRefDto in, final DtoTestChildCrossRef parentEntity, final MappingContext context) {
+    if(in.getContainer() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestParentDto, DtoTestParent>) getToEntityMapper(in.getContainer().getClass(), DtoTestParent.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestParent entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getContainer()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getContainer(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildCrossRefDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestChildCrossRef.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestParentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestParentDtoMapper.java
new file mode 100644
index 0000000..1526be7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/mapper/DtoTestParentDtoMapper.java
@@ -0,0 +1,315 @@
+package org.osbp.mysmartshop.dtos.mapper;
+
+import java.util.List;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.osbp.mysmartshop.dtos.DtoTestBeanDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper;
+import org.osbp.mysmartshop.entities.DtoTestBean;
+import org.osbp.mysmartshop.entities.DtoTestChildContainment;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+/**
+ * This class maps the dto {@link DtoTestParentDto} to and from the entity {@link DtoTestParent}.
+ * 
+ */
+@SuppressWarnings("all")
+public class DtoTestParentDtoMapper<DTO extends DtoTestParentDto, ENTITY extends DtoTestParent> extends BaseUUIDDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public DtoTestParent createEntity() {
+    return new DtoTestParent();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public DtoTestParentDto createDto() {
+    return new DtoTestParentDto();
+  }
+  
+  /**
+   * Maps the entity {@link DtoTestParent} to the dto {@link DtoTestParentDto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final DtoTestParentDto dto, final DtoTestParent entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setString(toDto_string(entity, context));
+    dto.setCrossRefChild(toDto_crossRefChild(entity, context));
+    dto.setBeanx(toDto_beanx(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link DtoTestParentDto} to the entity {@link DtoTestParent}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final DtoTestParentDto dto, final DtoTestParent entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setString(toEntity_string(dto, entity, context));
+    toEntity_containmentChilds(dto, entity, context);
+    toEntity_crossRefChilds(dto, entity, context);
+    entity.setCrossRefChild(toEntity_crossRefChild(dto, entity, context));
+    entity.setBeanx(toEntity_beanx(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property string from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toDto_string(final DtoTestParent in, final MappingContext context) {
+    return in.getString();
+  }
+  
+  /**
+   * Maps the property string from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected String toEntity_string(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    return in.getString();
+  }
+  
+  /**
+   * Maps the property containmentChilds from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<DtoTestChildContainmentDto> toDto_containmentChilds(final DtoTestParent in, final MappingContext context) {
+    // nothing to do here. Mapping is done by OppositeLists
+    return null;
+  }
+  
+  /**
+   * Maps the property containmentChilds from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected List<DtoTestChildContainment> toEntity_containmentChilds(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildContainmentDto, DtoTestChildContainment> mapper = getToEntityMapper(DtoTestChildContainmentDto.class, DtoTestChildContainment.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildContainmentDto> childsList = 
+    	(org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildContainmentDto>) in.internalGetContainmentChilds();
+    
+    // if entities are being added, then they are passed to
+    // #addToContainerChilds of the parent entity. So the container ref is setup
+    // properly!
+    // if entities are being removed, then they are passed to the
+    // #internalRemoveFromChilds method of the parent entity. So they are
+    // removed directly from the list of entities.
+    childsList.mapToEntity(mapper,
+    		parentEntity::addToContainmentChilds,
+    		parentEntity::internalRemoveFromContainmentChilds);
+    return null;
+  }
+  
+  /**
+   * Maps the property crossRefChilds from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<DtoTestChildCrossRefDto> toDto_crossRefChilds(final DtoTestParent in, final MappingContext context) {
+    // nothing to do here. Mapping is done by OppositeLists
+    return null;
+  }
+  
+  /**
+   * Maps the property crossRefChilds from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected List<DtoTestChildCrossRef> toEntity_crossRefChilds(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = getToEntityMapper(DtoTestChildCrossRefDto.class, DtoTestChildCrossRef.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildCrossRefDto> childsList = 
+    	(org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<DtoTestChildCrossRefDto>) in.internalGetCrossRefChilds();
+    
+    // if entities are being added, then they are passed to
+    // #addToContainerChilds of the parent entity. So the container ref is setup
+    // properly!
+    // if entities are being removed, then they are passed to the
+    // #internalRemoveFromChilds method of the parent entity. So they are
+    // removed directly from the list of entities.
+    childsList.mapToEntity(mapper,
+    		parentEntity::addToCrossRefChilds,
+    		parentEntity::internalRemoveFromCrossRefChilds);
+    return null;
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected DtoTestChildCrossRefDto toDto_crossRefChild(final DtoTestParent in, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToDtoMapper(DtoTestChildCrossRefDto.class, in.getCrossRefChild().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	DtoTestChildCrossRefDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getCrossRefChild()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getCrossRefChild(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property crossRefChild from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected DtoTestChildCrossRef toEntity_crossRefChild(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    if(in.getCrossRefChild() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestChildCrossRefDto, DtoTestChildCrossRef>) getToEntityMapper(in.getCrossRefChild().getClass(), DtoTestChildCrossRef.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestChildCrossRef entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getCrossRefChild()));
+    	if(entity != null) {
+    		return entity;
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getCrossRefChild(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  /**
+   * Maps the property beanx from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected DtoTestBeanDto toDto_beanx(final DtoTestParent in, final MappingContext context) {
+    if(in.getBeanx() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean>) getToDtoMapper(DtoTestBeanDto.class, in.getBeanx().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestBeanDto dto = null;
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getBeanx(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property beanx from the given entity to dto property.
+   * 
+   * @param in - The source entity
+   * @param parentEntity - The parentEntity
+   * @param context - The context to get information about depth,...
+   * @return the mapped value
+   * 
+   */
+  protected DtoTestBean toEntity_beanx(final DtoTestParentDto in, final DtoTestParent parentEntity, final MappingContext context) {
+    if(in.getBeanx() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<DtoTestBeanDto, DtoTestBean>) getToEntityMapper(in.getBeanx().getClass(), DtoTestBean.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	DtoTestBean entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getBeanx(), entity, context);
+    	return entity;							
+    } else {
+    	return null;
+    }
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestParentDto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(DtoTestParent.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestChildContainmentDtoService.java b/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestChildContainmentDtoService.java
new file mode 100644
index 0000000..6fa8d2e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestChildContainmentDtoService.java
@@ -0,0 +1,20 @@
+package org.osbp.mysmartshop.dtos.service;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.entities.DtoTestChildContainment;
+
+@SuppressWarnings("all")
+public class DtoTestChildContainmentDtoService extends AbstractDTOService<DtoTestChildContainmentDto, DtoTestChildContainment> {
+  public Class<DtoTestChildContainmentDto> getDtoClass() {
+    return DtoTestChildContainmentDto.class;
+  }
+  
+  public Class<DtoTestChildContainment> getEntityClass() {
+    return DtoTestChildContainment.class;
+  }
+  
+  public Object getId(final DtoTestChildContainmentDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestChildCrossRefDtoService.java b/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestChildCrossRefDtoService.java
new file mode 100644
index 0000000..5115a24
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestChildCrossRefDtoService.java
@@ -0,0 +1,20 @@
+package org.osbp.mysmartshop.dtos.service;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.entities.DtoTestChildCrossRef;
+
+@SuppressWarnings("all")
+public class DtoTestChildCrossRefDtoService extends AbstractDTOService<DtoTestChildCrossRefDto, DtoTestChildCrossRef> {
+  public Class<DtoTestChildCrossRefDto> getDtoClass() {
+    return DtoTestChildCrossRefDto.class;
+  }
+  
+  public Class<DtoTestChildCrossRef> getEntityClass() {
+    return DtoTestChildCrossRef.class;
+  }
+  
+  public Object getId(final DtoTestChildCrossRefDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestParentDtoService.java b/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestParentDtoService.java
new file mode 100644
index 0000000..d8a1997
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/oldsave/service/DtoTestParentDtoService.java
@@ -0,0 +1,20 @@
+package org.osbp.mysmartshop.dtos.service;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+import org.osbp.mysmartshop.entities.DtoTestParent;
+
+@SuppressWarnings("all")
+public class DtoTestParentDtoService extends AbstractDTOService<DtoTestParentDto, DtoTestParent> {
+  public Class<DtoTestParentDto> getDtoClass() {
+    return DtoTestParentDto.class;
+  }
+  
+  public Class<DtoTestParent> getEntityClass() {
+    return DtoTestParent.class;
+  }
+  
+  public Object getId(final DtoTestParentDto dto) {
+    return dto.getId();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/pom.xml b/org.eclipse.osbp.dsl.tests.model/pom.xml
new file mode 100644
index 0000000..20a10f5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/pom.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.tests.model</artifactId>
+	<packaging>eclipse-test-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>xtend-gen</source>
+								<source>src-gen</source>
+								<source>models</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+						<fileset>
+							<directory>src-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.osbp.tools.maven</groupId>
+				<artifactId>org.eclipse.osbp.tools.maven.plugin.entity</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/src-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<phase>generate-sources</phase>
+						<goals>
+							<goal>compile</goal>
+							<!-- <goal>testCompile</goal> -->
+						</goals>
+						<configuration>
+							<outputDirectory>${basedir}/xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-surefire-plugin</artifactId>
+				<configuration>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+					<failIfNoTests>true</failIfNoTests>
+					<showEclipseLog>true</showEclipseLog>
+					<useUIHarness>false</useUIHarness>
+					<useUIThread>false</useUIThread>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/ToCycle1Dto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/ToCycle1Dto.java
new file mode 100644
index 0000000..b570afb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/ToCycle1Dto.java
@@ -0,0 +1,314 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+import javax.validation.Valid;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.BaseDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class ToCycle1Dto extends BaseDto implements IDto, Serializable, PropertyChangeListener {
+  @DomainReference
+  private CarDto car;
+  
+  @DomainReference
+  @Valid
+  private List<ToCycle2Dto> cycles2;
+  
+  public ToCycle1Dto() {
+    installLazyCollections();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link ToCycle1} to the dto {@link ToCycle1Dto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+    cycles2 = new org.eclipse.osbp.dsl.dto.lib.OppositeContainmentDtoList<>(
+    				org.eclipse.osbp.dsl.dto.lib.MappingContext.getCurrent(),
+    				ToCycle2Dto.class, "parent.uuid",
+    				(java.util.function.Supplier<Object> & Serializable) () -> this.getUuid());
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.cycles2 != null) {
+        for (ToCycle2Dto toCycle2Dto : this.cycles2) {
+          toCycle2Dto.dispose();
+        }
+        this.cycles2 = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * Returns the car property or <code>null</code> if not present.
+   */
+  public CarDto getCar() {
+    return this.car;
+  }
+  
+  /**
+   * Sets the <code>car</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>CarDto#
+   * cycles1</code> of the <code>car</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link CarDto#setCycles1(CarDto)
+   * 
+   * @param car - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCar(final CarDto car) {
+    checkDisposed();
+    if (this.car != null) {
+    	this.car.internalRemoveFromCycles1(this);
+    }
+    
+    internalSetCar(car);
+    
+    if (this.car != null) {
+    	this.car.internalAddToCycles1(this);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetCar(final CarDto car) {
+    firePropertyChange("car", this.car, this.car = car);
+  }
+  
+  /**
+   * Returns an unmodifiable list of cycles2.
+   */
+  public List<ToCycle2Dto> getCycles2() {
+    return Collections.unmodifiableList(internalGetCycles2());
+  }
+  
+  /**
+   * Returns the list of <code>ToCycle2Dto</code>s thereby lazy initializing it. For internal use only!
+   * 
+   * @return list - the resulting list
+   * 
+   */
+  public List<ToCycle2Dto> internalGetCycles2() {
+    if (this.cycles2 == null) {
+      this.cycles2 = new java.util.ArrayList<ToCycle2Dto>();
+    }
+    return this.cycles2;
+  }
+  
+  /**
+   * Adds the given toCycle2Dto to this object. <p>
+   * Since the reference is a composition reference, the opposite reference <code>ToCycle2Dto#parent</code> of the <code>toCycle2Dto</code> will be handled automatically and no further coding is required to keep them in sync.<p>
+   * See {@link ToCycle2Dto#setParent(ToCycle2Dto)}.
+   * 
+   * @param toCycle2Dto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void addToCycles2(final ToCycle2Dto toCycle2Dto) {
+    checkDisposed();
+    
+    toCycle2Dto.setParent(this);
+  }
+  
+  /**
+   * Removes the given toCycle2Dto from this object. <p>
+   * 
+   * @param toCycle2Dto - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void removeFromCycles2(final ToCycle2Dto toCycle2Dto) {
+    checkDisposed();
+    
+    toCycle2Dto.setParent(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToCycles2(final ToCycle2Dto toCycle2Dto) {
+    
+    if(!internalGetCycles2().contains(toCycle2Dto)) {
+    	if(!MappingContext.isMappingMode()) {
+    		// collections will become resolved! We need to send a delta notification.
+    		List<ToCycle2Dto> oldList = new java.util.ArrayList<>(internalGetCycles2());
+    		internalGetCycles2().add(toCycle2Dto);
+    		firePropertyChange("cycles2", oldList, internalGetCycles2());
+    	} else {
+    		// in mapping mode, we do NOT resolve any collection
+    		internalGetCycles2().add(toCycle2Dto);
+    	}
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromCycles2(final ToCycle2Dto toCycle2Dto) {
+    if(!MappingContext.isMappingMode()) {
+    	// collections will become resolved! We need to send a delta notification.
+    	List<ToCycle2Dto> oldList = new java.util.ArrayList<>(internalGetCycles2());
+    	internalGetCycles2().remove(toCycle2Dto);
+    	firePropertyChange("cycles2", oldList, internalGetCycles2());	
+    }else{
+    	// in mapping mode, we do NOT resolve any collection
+    	internalGetCycles2().remove(toCycle2Dto);
+    }
+  }
+  
+  /**
+   * Sets the <code>cycles2</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>ToCycle2Dto#
+   * parent</code> of the <code>cycles2</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link ToCycle2Dto#setParent(ToCycle2Dto)
+   * 
+   * @param cycles2 - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCycles2(final List<ToCycle2Dto> cycles2) {
+    checkDisposed();
+    for (ToCycle2Dto dto : internalGetCycles2().toArray(new ToCycle2Dto[this.cycles2.size()])) {
+    	removeFromCycles2(dto);
+    }
+    
+    if(cycles2 == null) {
+    	return;
+    }
+    
+    for (ToCycle2Dto dto : cycles2) {
+    	addToCycles2(dto);
+    }
+  }
+  
+  public ToCycle1Dto createDto() {
+    return new ToCycle1Dto();
+  }
+  
+  public ToCycle1Dto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    ToCycle1Dto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final ToCycle1Dto dto, final ToCycle1Dto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    
+    // copy containment references (cascading is true)
+    // copy list of cycles2 dtos
+    for(org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto _dto : getCycles2()) {
+    	newDto.addToCycles2(_dto.copy(context));
+    }
+  }
+  
+  public void copyCrossReferences(final ToCycle1Dto dto, final ToCycle1Dto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/ToCycle2Dto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/ToCycle2Dto.java
new file mode 100644
index 0000000..f543039
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/ToCycle2Dto.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos;
+
+import java.beans.PropertyChangeListener;
+import java.io.Serializable;
+import org.eclipse.osbp.dsl.common.datatypes.IDto;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.BaseDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.osbp.runtime.common.annotations.DomainReference;
+
+@SuppressWarnings("all")
+public class ToCycle2Dto extends BaseDto implements IDto, Serializable, PropertyChangeListener {
+  @DomainReference
+  private ToCycle1Dto parent;
+  
+  @DomainReference
+  private CarDto car;
+  
+  public ToCycle2Dto() {
+    installLazyCollections();
+  }
+  
+  /**
+   * Installs lazy collection resolving for entity {@link ToCycle2} to the dto {@link ToCycle2Dto}.
+   * 
+   */
+  protected void installLazyCollections() {
+    super.installLazyCollections();
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br/>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * Returns the parent property or <code>null</code> if not present.
+   */
+  public ToCycle1Dto getParent() {
+    return this.parent;
+  }
+  
+  /**
+   * Sets the <code>parent</code> property to this instance.
+   * Since the reference has an opposite reference, the opposite <code>ToCycle1Dto#
+   * cycles2</code> of the <code>parent</code> will be handled automatically and no 
+   * further coding is required to keep them in sync.<p>
+   * See {@link ToCycle1Dto#setCycles2(ToCycle1Dto)
+   * 
+   * @param parent - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setParent(final ToCycle1Dto parent) {
+    checkDisposed();
+    if (this.parent != null) {
+    	this.parent.internalRemoveFromCycles2(this);
+    }
+    
+    internalSetParent(parent);
+    
+    if (this.parent != null) {
+    	this.parent.internalAddToCycles2(this);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetParent(final ToCycle1Dto parent) {
+    firePropertyChange("parent", this.parent, this.parent = parent);
+  }
+  
+  /**
+   * Returns the car property or <code>null</code> if not present.
+   */
+  public CarDto getCar() {
+    return this.car;
+  }
+  
+  /**
+   * Sets the <code>car</code> property to this instance.
+   * 
+   * @param car - the property
+   * @throws RuntimeException if instance is <code>disposed</code>
+   * 
+   */
+  public void setCar(final CarDto car) {
+    checkDisposed();
+    firePropertyChange("car", this.car, this.car = car);
+  }
+  
+  public ToCycle2Dto createDto() {
+    return new ToCycle2Dto();
+  }
+  
+  public ToCycle2Dto copy(final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    if(context.isMaxLevel()){
+    	return null;
+    }
+    
+    // if context contains a copied instance of this object
+    // then return it
+    ToCycle2Dto newDto = context.get(this);
+    if(newDto != null){
+    	return newDto;
+    }
+    
+    try{
+    	context.increaseLevel();
+    	
+    	newDto = createDto();
+    	context.register(this, newDto);
+    	
+    	// first copy the containments and attributes
+    	copyContainments(this, newDto, context);
+    	
+    	// then copy cross references to ensure proper
+    	// opposite references are copied too.
+    	copyCrossReferences(this, newDto, context);
+    } finally {
+    	context.decreaseLevel();
+    }
+    
+    return newDto;
+  }
+  
+  public void copyContainments(final ToCycle2Dto dto, final ToCycle2Dto newDto, final MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyContainments(dto, newDto, context);
+    
+    // copy attributes and beans (beans if derived from entity model)
+    
+    // copy containment references (cascading is true)
+  }
+  
+  public void copyCrossReferences(final ToCycle2Dto dto, final ToCycle2Dto newDto, final org.eclipse.osbp.dsl.dto.lib.MappingContext context) {
+    checkDisposed();
+    
+    if (context == null) {
+    	throw new IllegalArgumentException("Context must not be null!");
+    }
+    
+    super.copyCrossReferences(dto, newDto, context);
+    
+    // copy cross references (cascading is false)
+    // copy dto car
+    if(getCar() != null) {
+    	newDto.setCar(getCar().copy(context));
+    }
+  }
+  
+  public void propertyChange(final java.beans.PropertyChangeEvent event) {
+    Object source = event.getSource();
+    
+    // forward the event from embeddable beans to all listeners. So the parent of the embeddable
+    // bean will become notified and its dirty state can be handled properly
+    { 
+    	super.propertyChange(event);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/mapper/ToCycle1DtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/mapper/ToCycle1DtoMapper.java
new file mode 100644
index 0000000..886b1cf
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/mapper/ToCycle1DtoMapper.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.mapper;
+
+import java.util.List;
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.BaseDtoMapper;
+import org.eclipse.osbp.dsl.tests.carstore.entities.Car;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2;
+
+/**
+ * This class maps the dto {@link ToCycle1Dto} to and from the entity {@link ToCycle1}.
+ * 
+ */
+@SuppressWarnings("all")
+public class ToCycle1DtoMapper<DTO extends ToCycle1Dto, ENTITY extends ToCycle1> extends BaseDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public ToCycle1 createEntity() {
+    return new ToCycle1();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public ToCycle1Dto createDto() {
+    return new ToCycle1Dto();
+  }
+  
+  /**
+   * Maps the entity {@link ToCycle1} to the dto {@link ToCycle1Dto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final ToCycle1Dto dto, final ToCycle1 entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setCar(toDto_car(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link ToCycle1Dto} to the entity {@link ToCycle1}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final ToCycle1Dto dto, final ToCycle1 entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setCar(toEntity_car(dto, entity, context));
+    toEntity_cycles2(dto, entity, context);
+  }
+  
+  /**
+   * Maps the property car from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected CarDto toDto_car(final ToCycle1 in, final MappingContext context) {
+    if(in.getCar() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car>) getToDtoMapper(CarDto.class, in.getCar().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	CarDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getCar()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getCar(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getCar(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property car from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected Car toEntity_car(final ToCycle1Dto in, final ToCycle1 parentEntity, final MappingContext context) {
+    if(in.getCar() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car>) getToEntityMapper(in.getCar().getClass(), Car.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	Car entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getCar()));
+    	if(entity != null) {
+    		return entity;
+    	} else {
+    		entity = (Car) context
+    			.findEntityByEntityManager(Car.class, in.getCar().getUuid());
+    		if (entity != null) {
+    			context.register(mapper.createEntityHash(in.getCar()), entity);
+    			return entity;
+    		}
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getCar(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  /**
+   * Maps the property cycles2 from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped dtos
+   * 
+   */
+  protected List<ToCycle2Dto> toDto_cycles2(final ToCycle1 in, final MappingContext context) {
+    // nothing to do here. Mapping is done by OppositeLists
+    return null;
+  }
+  
+  /**
+   * Maps the property cycles2 from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return A list of mapped entities
+   * 
+   */
+  protected List<ToCycle2> toEntity_cycles2(final ToCycle1Dto in, final ToCycle1 parentEntity, final MappingContext context) {
+    org.eclipse.osbp.dsl.dto.lib.IMapper<ToCycle2Dto, ToCycle2> mapper = getToEntityMapper(ToCycle2Dto.class, ToCycle2.class);
+    if(mapper == null) {
+    	throw new IllegalStateException("Mapper must not be null!");
+    }
+    
+    org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<ToCycle2Dto> childsList = 
+    	(org.eclipse.osbp.dsl.dto.lib.IEntityMappingList<ToCycle2Dto>) in.internalGetCycles2();
+    
+    // if entities are being added, then they are passed to
+    // #addToContainerChilds of the parent entity. So the container ref is setup
+    // properly!
+    // if entities are being removed, then they are passed to the
+    // #internalRemoveFromChilds method of the parent entity. So they are
+    // removed directly from the list of entities.
+    childsList.mapToEntity(mapper,
+    		parentEntity::addToCycles2,
+    		parentEntity::internalRemoveFromCycles2);
+    return null;
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ToCycle1Dto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ToCycle1.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/mapper/ToCycle2DtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/mapper/ToCycle2DtoMapper.java
new file mode 100644
index 0000000..c7c6f93
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/mapper/ToCycle2DtoMapper.java
@@ -0,0 +1,234 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.mapper;
+
+import org.eclipse.osbp.dsl.dto.lib.MappingContext;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.mapper.BaseDtoMapper;
+import org.eclipse.osbp.dsl.tests.carstore.entities.Car;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2;
+
+/**
+ * This class maps the dto {@link ToCycle2Dto} to and from the entity {@link ToCycle2}.
+ * 
+ */
+@SuppressWarnings("all")
+public class ToCycle2DtoMapper<DTO extends ToCycle2Dto, ENTITY extends ToCycle2> extends BaseDtoMapper<DTO, ENTITY> {
+  /**
+   * Creates a new instance of the entity
+   */
+  public ToCycle2 createEntity() {
+    return new ToCycle2();
+  }
+  
+  /**
+   * Creates a new instance of the dto
+   */
+  public ToCycle2Dto createDto() {
+    return new ToCycle2Dto();
+  }
+  
+  /**
+   * Maps the entity {@link ToCycle2} to the dto {@link ToCycle2Dto}.
+   * 
+   * @param dto - The target dto
+   * @param entity - The source entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToDTO(final ToCycle2Dto dto, final ToCycle2 entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    context.register(createDtoHash(entity), dto);
+    
+    super.mapToDTO(dto, entity, context);
+    
+    dto.setParent(toDto_parent(entity, context));
+    dto.setCar(toDto_car(entity, context));
+  }
+  
+  /**
+   * Maps the dto {@link ToCycle2Dto} to the entity {@link ToCycle2}.
+   * 
+   * @param dto - The source dto
+   * @param entity - The target entity
+   * @param context - The context to get information about depth,...
+   * 
+   */
+  public void mapToEntity(final ToCycle2Dto dto, final ToCycle2 entity, final MappingContext context) {
+    if(context == null){
+    	throw new IllegalArgumentException("Please pass a context!");
+    }
+    
+    context.register(createEntityHash(dto), entity);
+    context.registerMappingRoot(createEntityHash(dto), dto);
+    super.mapToEntity(dto, entity, context);
+    
+    entity.setParent(toEntity_parent(dto, entity, context));
+    entity.setCar(toEntity_car(dto, entity, context));
+  }
+  
+  /**
+   * Maps the property parent from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected ToCycle1Dto toDto_parent(final ToCycle2 in, final MappingContext context) {
+    if(in.getParent() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<ToCycle1Dto, ToCycle1> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<ToCycle1Dto, ToCycle1>) getToDtoMapper(ToCycle1Dto.class, in.getParent().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	ToCycle1Dto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getParent()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getParent(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getParent(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property parent from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected ToCycle1 toEntity_parent(final ToCycle2Dto in, final ToCycle2 parentEntity, final MappingContext context) {
+    if(in.getParent() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<ToCycle1Dto, ToCycle1> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<ToCycle1Dto, ToCycle1>) getToEntityMapper(in.getParent().getClass(), ToCycle1.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	ToCycle1 entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getParent()));
+    	if(entity != null) {
+    		return entity;
+    	} else {
+    		entity = (ToCycle1) context
+    			.findEntityByEntityManager(ToCycle1.class, in.getParent().getUuid());
+    		if (entity != null) {
+    			context.register(mapper.createEntityHash(in.getParent()), entity);
+    			return entity;
+    		}
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getParent(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  /**
+   * Maps the property car from the given entity to the dto.
+   * 
+   * @param in - The source entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped dto
+   * 
+   */
+  protected CarDto toDto_car(final ToCycle2 in, final MappingContext context) {
+    if(in.getCar() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car>) getToDtoMapper(CarDto.class, in.getCar().getClass());
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    	CarDto dto = null;
+    	dto = context.get(mapper.createDtoHash(in.getCar()));
+    	if(dto != null) {
+    		if(context.isRefresh()){
+    			mapper.mapToDTO(dto, in.getCar(), context);
+    		}
+    		return dto;
+    	}
+    	
+    	context.increaseLevel();
+    	dto = mapper.createDto();
+    	mapper.mapToDTO(dto, in.getCar(), context);
+    	context.decreaseLevel();
+    	return dto;
+    } else {
+    	return null;
+    }
+  }
+  
+  /**
+   * Maps the property car from the given dto to the entity.
+   * 
+   * @param in - The source dto
+   * @param parentEntity - The parent entity
+   * @param context - The context to get information about depth,...
+   * @return the mapped entity
+   * 
+   */
+  protected Car toEntity_car(final ToCycle2Dto in, final ToCycle2 parentEntity, final MappingContext context) {
+    if(in.getCar() != null) {
+    	// find a mapper that knows how to map the concrete input type.
+    	org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car> mapper = (org.eclipse.osbp.dsl.dto.lib.IMapper<CarDto, Car>) getToEntityMapper(in.getCar().getClass(), Car.class);
+    	if(mapper == null) {
+    		throw new IllegalStateException("Mapper must not be null!");
+    	}
+    
+    	Car entity = null;
+    	entity = context.get(mapper.createEntityHash(in.getCar()));
+    	if(entity != null) {
+    		return entity;
+    	} else {
+    		entity = (Car) context
+    			.findEntityByEntityManager(Car.class, in.getCar().getUuid());
+    		if (entity != null) {
+    			context.register(mapper.createEntityHash(in.getCar()), entity);
+    			return entity;
+    		}
+    	}
+    
+    	entity = mapper.createEntity();
+    	mapper.mapToEntity(in.getCar(), entity, context);	
+    	return entity;
+    } else {
+    	return null;
+    }	
+  }
+  
+  public String createDtoHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ToCycle2Dto.class, in);
+  }
+  
+  public String createEntityHash(final Object in) {
+    return org.eclipse.osbp.runtime.common.hash.HashUtil.createObjectWithIdHash(ToCycle2.class, in);
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/AddonDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/AddonDtoService.java
new file mode 100644
index 0000000..b776c5c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/AddonDtoService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.AddonDto;
+import org.eclipse.osbp.dsl.tests.carstore.entities.Addon;
+
+@SuppressWarnings("all")
+public class AddonDtoService extends AbstractDTOService<AddonDto, Addon> {
+  public Class<AddonDto> getDtoClass() {
+    return AddonDto.class;
+  }
+  
+  public Class<Addon> getEntityClass() {
+    return Addon.class;
+  }
+  
+  public Object getId(final AddonDto dto) {
+    return dto.getUuid();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/CarDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/CarDtoService.java
new file mode 100644
index 0000000..659e038
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/CarDtoService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.carstore.entities.Car;
+
+@SuppressWarnings("all")
+public class CarDtoService extends AbstractDTOService<CarDto, Car> {
+  public Class<CarDto> getDtoClass() {
+    return CarDto.class;
+  }
+  
+  public Class<Car> getEntityClass() {
+    return Car.class;
+  }
+  
+  public Object getId(final CarDto dto) {
+    return dto.getUuid();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/PersonDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/PersonDtoService.java
new file mode 100644
index 0000000..6348c09
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/PersonDtoService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.PersonDto;
+import org.eclipse.osbp.dsl.tests.carstore.entities.Person;
+
+@SuppressWarnings("all")
+public class PersonDtoService extends AbstractDTOService<PersonDto, Person> {
+  public Class<PersonDto> getDtoClass() {
+    return PersonDto.class;
+  }
+  
+  public Class<Person> getEntityClass() {
+    return Person.class;
+  }
+  
+  public Object getId(final PersonDto dto) {
+    return dto.getUuid();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/ToCycle1DtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/ToCycle1DtoService.java
new file mode 100644
index 0000000..1e1024c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/ToCycle1DtoService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1;
+
+@SuppressWarnings("all")
+public class ToCycle1DtoService extends AbstractDTOService<ToCycle1Dto, ToCycle1> {
+  public Class<ToCycle1Dto> getDtoClass() {
+    return ToCycle1Dto.class;
+  }
+  
+  public Class<ToCycle1> getEntityClass() {
+    return ToCycle1.class;
+  }
+  
+  public Object getId(final ToCycle1Dto dto) {
+    return dto.getUuid();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/ToCycle2DtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/ToCycle2DtoService.java
new file mode 100644
index 0000000..27c2603
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/dtos/services/ToCycle2DtoService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.dtos.services;
+
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2;
+
+@SuppressWarnings("all")
+public class ToCycle2DtoService extends AbstractDTOService<ToCycle2Dto, ToCycle2> {
+  public Class<ToCycle2Dto> getDtoClass() {
+    return ToCycle2Dto.class;
+  }
+  
+  public Class<ToCycle2> getEntityClass() {
+    return ToCycle2.class;
+  }
+  
+  public Object getId(final ToCycle2Dto dto) {
+    return dto.getUuid();
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Addon.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Addon.java
new file mode 100644
index 0000000..575c076
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Addon.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.PreRemove;
+import javax.persistence.Table;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "ADDON")
+@SuppressWarnings("all")
+public class Addon extends Base implements IEntity {
+  @Column(name = "DESCRIPTION")
+  private String description;
+  
+  @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
+  @JoinColumn(name = "CAR_ID")
+  private Car car;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.car != null) {
+        this.car.dispose();
+        this.car = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * @return Returns the description property or <code>null</code> if not present.
+   */
+  public String getDescription() {
+    checkDisposed();
+    return this.description;
+  }
+  
+  /**
+   * Sets the description property to this instance.
+   */
+  public void setDescription(final String description) {
+    checkDisposed();
+    this.description = description;
+  }
+  
+  /**
+   * @return Returns the car property or <code>null</code> if not present.
+   */
+  public Car getCar() {
+    checkDisposed();
+    return this.car;
+  }
+  
+  /**
+   * Sets the car property to this instance.
+   * Since the reference is a container reference, the opposite reference (Car.addons)
+   * of the car will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link Car#setAddons(Car)}.
+   */
+  public void setCar(final Car car) {
+    checkDisposed();
+    if (this.car != null) {
+      this.car.internalRemoveFromAddons(this);
+    }
+    internalSetCar(car);
+    if (this.car != null) {
+      this.car.internalAddToAddons(this);
+    }
+    
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetCar(final Car car) {
+    this.car = car;
+  }
+  
+  /**
+   * Iterates all cross references and removes them from the parent to avoid ConstraintViolationException
+   */
+  @PreRemove
+  protected void preRemove() {
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Address.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Address.java
new file mode 100644
index 0000000..1d043d0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Address.java
@@ -0,0 +1,102 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import java.io.Serializable;
+
+import javax.persistence.Basic;
+import javax.persistence.Embeddable;
+import javax.persistence.Transient;
+
+import org.eclipse.osbp.dsl.common.datatypes.IBean;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Embeddable
+@SuppressWarnings("all")
+public class Address implements Serializable, IBean {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Basic
+  private String streetname;
+  
+  @Basic
+  private String postalcode;
+  
+  /**
+   * @return true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   * 
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * @return Returns the streetname property or <code>null</code> if not present.
+   */
+  public String getStreetname() {
+    checkDisposed();
+    return this.streetname;
+  }
+  
+  /**
+   * Sets the streetname property to this instance.
+   */
+  public void setStreetname(final String streetname) {
+    checkDisposed();
+    this.streetname = streetname;
+  }
+  
+  /**
+   * @return Returns the postalcode property or <code>null</code> if not present.
+   */
+  public String getPostalcode() {
+    checkDisposed();
+    return this.postalcode;
+  }
+  
+  /**
+   * Sets the postalcode property to this instance.
+   */
+  public void setPostalcode(final String postalcode) {
+    checkDisposed();
+    this.postalcode = postalcode;
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Base.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Base.java
new file mode 100644
index 0000000..5fab9cb
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Base.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import javax.persistence.Id;
+import javax.persistence.MappedSuperclass;
+import javax.persistence.PreRemove;
+import javax.persistence.Transient;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@MappedSuperclass
+@SuppressWarnings("all")
+public class Base implements IEntity {
+  @Transient
+  @Dispose
+  private boolean disposed;
+  
+  @Id
+  private String uuid = java.util.UUID.randomUUID().toString();
+  
+  /**
+   * @return true, if the object is disposed. 
+   * Disposed means, that it is prepared for garbage collection and may not be used anymore. 
+   * Accessing objects that are already disposed will cause runtime exceptions.
+   * 
+   */
+  @Dispose
+  public boolean isDisposed() {
+    return this.disposed;
+  }
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    disposed = true;
+  }
+  
+  /**
+   * @return Returns the uuid property or <code>null</code> if not present.
+   */
+  public String getUuid() {
+    checkDisposed();
+    return this.uuid;
+  }
+  
+  /**
+   * Sets the uuid property to this instance.
+   */
+  public void setUuid(final String uuid) {
+    checkDisposed();
+    this.uuid = uuid;
+  }
+  
+  @Override
+  public boolean equals(final Object obj) {
+    if (this == obj)
+      return true;
+    if (obj == null)
+      return false;
+    if (getClass() != obj.getClass())
+      return false;
+    Base other = (Base) obj;
+    if (this.uuid == null) {
+      if (other.uuid != null)
+        return false;
+    } else if (!this.uuid.equals(other.uuid))
+      return false;
+    return true;
+  }
+  
+  @Override
+  public int hashCode() {
+     int prime = 31;
+    int result = 1;
+    result = prime * result + ((this.uuid== null) ? 0 : this.uuid.hashCode());
+    return result;
+  }
+  
+  /**
+   * Iterates all cross references and removes them from the parent to avoid ConstraintViolationException
+   */
+  @PreRemove
+  protected void preRemove() {
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Car.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Car.java
new file mode 100644
index 0000000..c4ea264
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Car.java
@@ -0,0 +1,337 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.PreRemove;
+import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
+import javax.validation.Valid;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.persistence.annotations.Noncacheable;
+
+@Entity
+@Table(name = "CAR")
+@SuppressWarnings("all")
+public class Car extends Base implements IEntity {
+  @Column(name = "NUMBER")
+  private String number;
+  
+  @Column(name = "FINISHING_DATE")
+  @Temporal(value = TemporalType.DATE)
+  @Valid
+  private Date finishingDate;
+  
+  @JoinColumn(name = "ADDONS_ID")
+  @OneToMany(mappedBy = "car", cascade = CascadeType.ALL, orphanRemoval = true)
+  @Noncacheable
+  @Valid
+  private List<Addon> addons;
+  
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(name = "OWNER_ID")
+  private Person owner;
+  
+  @JoinColumn(name = "CYCLES1_ID")
+  @OneToMany(mappedBy = "car", cascade = CascadeType.ALL, orphanRemoval = true)
+  @Noncacheable
+  @Valid
+  private List<ToCycle1> cycles1;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.addons != null) {
+        for (Addon addon : this.addons) {
+          addon.dispose();
+        }
+        this.addons = null;
+      }
+      if (this.cycles1 != null) {
+        for (ToCycle1 toCycle1 : this.cycles1) {
+          toCycle1.dispose();
+        }
+        this.cycles1 = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * @return Returns the number property or <code>null</code> if not present.
+   */
+  public String getNumber() {
+    checkDisposed();
+    return this.number;
+  }
+  
+  /**
+   * Sets the number property to this instance.
+   */
+  public void setNumber(final String number) {
+    checkDisposed();
+    this.number = number;
+  }
+  
+  /**
+   * @return Returns the finishingDate property or <code>null</code> if not present.
+   */
+  public Date getFinishingDate() {
+    checkDisposed();
+    return this.finishingDate;
+  }
+  
+  /**
+   * Sets the finishingDate property to this instance.
+   */
+  public void setFinishingDate(final Date finishingDate) {
+    checkDisposed();
+    this.finishingDate = finishingDate;
+  }
+  
+  /**
+   * @return Returns an unmodifiable list of addons.
+   */
+  public List<Addon> getAddons() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetAddons());
+  }
+  
+  /**
+   * Sets the given addons to the object. Currently contained addons instances will be removed.
+   * 
+   * @param addons the list of new instances
+   */
+  public void setAddons(final List<Addon> addons) {
+    // remove the old addon
+    for(Addon oldElement : new ArrayList<Addon>(this.internalGetAddons())){
+      removeFromAddons(oldElement);
+    }
+    
+    // add the new addon
+    for(Addon newElement : addons){
+      addToAddons(newElement);
+    }
+  }
+  
+  /**
+   * For internal use only! Returns the list of <code>Addon</code>s thereby lazy initializing it.
+   */
+  public List<Addon> internalGetAddons() {
+    if (this.addons == null) {
+      this.addons = new ArrayList<Addon>();
+    }
+    return this.addons;
+  }
+  
+  /**
+   * Adds the given addon to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (Addon.car)
+   * of the addon will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link Addon#setCar(Addon)}.
+   * 
+   */
+  public void addToAddons(final Addon addon) {
+    checkDisposed();
+    addon.setCar(this);
+  }
+  
+  /**
+   * Removes the given addon from this object. <p>
+   * Since the reference is a cascading reference, the opposite reference (Addon.car)
+   * of the addon will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link Addon#setCar(Addon)}.
+   * 
+   */
+  public void removeFromAddons(final Addon addon) {
+    checkDisposed();
+    addon.setCar(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToAddons(final Addon addon) {
+    if(addon == null) {
+    	return;
+    }
+    
+    if(!internalGetAddons().contains(addon)) {
+    	internalGetAddons().add(addon);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromAddons(final Addon addon) {
+    internalGetAddons().remove(addon);
+  }
+  
+  /**
+   * @return Returns the owner property or <code>null</code> if not present.
+   */
+  public Person getOwner() {
+    checkDisposed();
+    return this.owner;
+  }
+  
+  /**
+   * Sets the owner property to this instance.
+   * Since the reference is a container reference, the opposite reference (Person.ownsCars)
+   * of the owner will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link Person#setOwnsCars(Person)}.
+   */
+  public void setOwner(final Person owner) {
+    checkDisposed();
+    if (this.owner != null) {
+      this.owner.internalRemoveFromOwnsCars(this);
+    }
+    internalSetOwner(owner);
+    if (this.owner != null) {
+      this.owner.internalAddToOwnsCars(this);
+    }
+    
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetOwner(final Person owner) {
+    this.owner = owner;
+  }
+  
+  /**
+   * @return Returns an unmodifiable list of cycles1.
+   */
+  public List<ToCycle1> getCycles1() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetCycles1());
+  }
+  
+  /**
+   * Sets the given cycles1 to the object. Currently contained cycles1 instances will be removed.
+   * 
+   * @param cycles1 the list of new instances
+   */
+  public void setCycles1(final List<ToCycle1> cycles1) {
+    // remove the old toCycle1
+    for(ToCycle1 oldElement : new ArrayList<ToCycle1>(this.internalGetCycles1())){
+      removeFromCycles1(oldElement);
+    }
+    
+    // add the new toCycle1
+    for(ToCycle1 newElement : cycles1){
+      addToCycles1(newElement);
+    }
+  }
+  
+  /**
+   * For internal use only! Returns the list of <code>ToCycle1</code>s thereby lazy initializing it.
+   */
+  public List<ToCycle1> internalGetCycles1() {
+    if (this.cycles1 == null) {
+      this.cycles1 = new ArrayList<ToCycle1>();
+    }
+    return this.cycles1;
+  }
+  
+  /**
+   * Adds the given toCycle1 to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (ToCycle1.car)
+   * of the toCycle1 will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link ToCycle1#setCar(ToCycle1)}.
+   * 
+   */
+  public void addToCycles1(final ToCycle1 toCycle1) {
+    checkDisposed();
+    toCycle1.setCar(this);
+  }
+  
+  /**
+   * Removes the given toCycle1 from this object. <p>
+   * Since the reference is a cascading reference, the opposite reference (ToCycle1.car)
+   * of the toCycle1 will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link ToCycle1#setCar(ToCycle1)}.
+   * 
+   */
+  public void removeFromCycles1(final ToCycle1 toCycle1) {
+    checkDisposed();
+    toCycle1.setCar(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToCycles1(final ToCycle1 toCycle1) {
+    if(toCycle1 == null) {
+    	return;
+    }
+    
+    if(!internalGetCycles1().contains(toCycle1)) {
+    	internalGetCycles1().add(toCycle1);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromCycles1(final ToCycle1 toCycle1) {
+    internalGetCycles1().remove(toCycle1);
+  }
+  
+  /**
+   * Iterates all cross references and removes them from the parent to avoid ConstraintViolationException
+   */
+  @PreRemove
+  protected void preRemove() {
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Person.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Person.java
new file mode 100644
index 0000000..83f0987
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/Person.java
@@ -0,0 +1,234 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.AttributeOverride;
+import javax.persistence.AttributeOverrides;
+import javax.persistence.Column;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.OneToMany;
+import javax.persistence.PreRemove;
+import javax.persistence.Table;
+import javax.validation.Valid;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.persistence.annotations.Noncacheable;
+
+@Entity
+@Table(name = "PERSON")
+@SuppressWarnings("all")
+public class Person extends Base implements IEntity {
+  @Column(name = "FIRSTNAME")
+  private String firstname;
+  
+  @Column(name = "LASTNAME")
+  private String lastname;
+  
+  @JoinColumn(name = "OWNS_CARS_ID")
+  @OneToMany(mappedBy = "owner")
+  @Noncacheable
+  private List<Car> ownsCars;
+  
+  @Embedded
+  @AttributeOverrides(value = { @AttributeOverride(name = "streetname", column = @Column(name = "HOMEADDRESS_STREETNAME")), @AttributeOverride(name = "postalcode", column = @Column(name = "HOMEADDRESS_POSTALCODE")) })
+  @Column(name = "HOME_ADDRESS")
+  @Valid
+  private Address homeAddress;
+  
+  @Embedded
+  @AttributeOverrides(value = { @AttributeOverride(name = "streetname", column = @Column(name = "WORKADDRESS_STREETNAME")), @AttributeOverride(name = "postalcode", column = @Column(name = "WORKADDRESS_POSTALCODE")) })
+  @Column(name = "WORK_ADDRESS")
+  @Valid
+  private Address workAddress;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    super.dispose();
+  }
+  
+  /**
+   * @return Returns the firstname property or <code>null</code> if not present.
+   */
+  public String getFirstname() {
+    checkDisposed();
+    return this.firstname;
+  }
+  
+  /**
+   * Sets the firstname property to this instance.
+   */
+  public void setFirstname(final String firstname) {
+    checkDisposed();
+    this.firstname = firstname;
+  }
+  
+  /**
+   * @return Returns the lastname property or <code>null</code> if not present.
+   */
+  public String getLastname() {
+    checkDisposed();
+    return this.lastname;
+  }
+  
+  /**
+   * Sets the lastname property to this instance.
+   */
+  public void setLastname(final String lastname) {
+    checkDisposed();
+    this.lastname = lastname;
+  }
+  
+  /**
+   * @return Returns an unmodifiable list of ownsCars.
+   */
+  public List<Car> getOwnsCars() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetOwnsCars());
+  }
+  
+  /**
+   * Sets the given ownsCars to the object. Currently contained ownsCars instances will be removed.
+   * 
+   * @param ownsCars the list of new instances
+   */
+  public void setOwnsCars(final List<Car> ownsCars) {
+    // remove the old car
+    for(Car oldElement : new ArrayList<Car>(this.internalGetOwnsCars())){
+      removeFromOwnsCars(oldElement);
+    }
+    
+    // add the new car
+    for(Car newElement : ownsCars){
+      addToOwnsCars(newElement);
+    }
+  }
+  
+  /**
+   * For internal use only! Returns the list of <code>Car</code>s thereby lazy initializing it.
+   */
+  public List<Car> internalGetOwnsCars() {
+    if (this.ownsCars == null) {
+      this.ownsCars = new ArrayList<Car>();
+    }
+    return this.ownsCars;
+  }
+  
+  /**
+   * Adds the given car to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (Car.owner)
+   * of the car will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link Car#setOwner(Car)}.
+   * 
+   */
+  public void addToOwnsCars(final Car car) {
+    checkDisposed();
+    car.setOwner(this);
+  }
+  
+  /**
+   * Removes the given car from this object. <p>
+   * 
+   */
+  public void removeFromOwnsCars(final Car car) {
+    checkDisposed();
+    car.setOwner(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToOwnsCars(final Car car) {
+    if(car == null) {
+    	return;
+    }
+    
+    if(!internalGetOwnsCars().contains(car)) {
+    	internalGetOwnsCars().add(car);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromOwnsCars(final Car car) {
+    internalGetOwnsCars().remove(car);
+  }
+  
+  /**
+   * @return Returns the homeAddress property or <code>null</code> if not present.
+   */
+  public Address getHomeAddress() {
+    checkDisposed();
+    return this.homeAddress;
+  }
+  
+  /**
+   * Sets the homeAddress property to this instance.
+   */
+  public void setHomeAddress(final Address homeAddress) {
+    checkDisposed();
+    this.homeAddress = homeAddress;
+  }
+  
+  /**
+   * @return Returns the workAddress property or <code>null</code> if not present.
+   */
+  public Address getWorkAddress() {
+    checkDisposed();
+    return this.workAddress;
+  }
+  
+  /**
+   * Sets the workAddress property to this instance.
+   */
+  public void setWorkAddress(final Address workAddress) {
+    checkDisposed();
+    this.workAddress = workAddress;
+  }
+  
+  /**
+   * Iterates all cross references and removes them from the parent to avoid ConstraintViolationException
+   */
+  @PreRemove
+  protected void preRemove() {
+    // remove the ownsCars
+    for(Car oldElement : new ArrayList<Car>(this.internalGetOwnsCars())){
+      removeFromOwnsCars(oldElement);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/ToCycle1.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/ToCycle1.java
new file mode 100644
index 0000000..92a656f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/ToCycle1.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.PreRemove;
+import javax.persistence.Table;
+import javax.validation.Valid;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+import org.eclipse.persistence.annotations.Noncacheable;
+
+@Entity
+@Table(name = "TO_CYCLE1")
+@SuppressWarnings("all")
+public class ToCycle1 extends Base implements IEntity {
+  @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
+  @JoinColumn(name = "CAR_ID")
+  private Car car;
+  
+  @JoinColumn(name = "CYCLES2_ID")
+  @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
+  @Noncacheable
+  @Valid
+  private List<ToCycle2> cycles2;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.car != null) {
+        this.car.dispose();
+        this.car = null;
+      }
+      if (this.cycles2 != null) {
+        for (ToCycle2 toCycle2 : this.cycles2) {
+          toCycle2.dispose();
+        }
+        this.cycles2 = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * @return Returns the car property or <code>null</code> if not present.
+   */
+  public Car getCar() {
+    checkDisposed();
+    return this.car;
+  }
+  
+  /**
+   * Sets the car property to this instance.
+   * Since the reference is a container reference, the opposite reference (Car.cycles1)
+   * of the car will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link Car#setCycles1(Car)}.
+   */
+  public void setCar(final Car car) {
+    checkDisposed();
+    if (this.car != null) {
+      this.car.internalRemoveFromCycles1(this);
+    }
+    internalSetCar(car);
+    if (this.car != null) {
+      this.car.internalAddToCycles1(this);
+    }
+    
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetCar(final Car car) {
+    this.car = car;
+  }
+  
+  /**
+   * @return Returns an unmodifiable list of cycles2.
+   */
+  public List<ToCycle2> getCycles2() {
+    checkDisposed();
+    return Collections.unmodifiableList(internalGetCycles2());
+  }
+  
+  /**
+   * Sets the given cycles2 to the object. Currently contained cycles2 instances will be removed.
+   * 
+   * @param cycles2 the list of new instances
+   */
+  public void setCycles2(final List<ToCycle2> cycles2) {
+    // remove the old toCycle2
+    for(ToCycle2 oldElement : new ArrayList<ToCycle2>(this.internalGetCycles2())){
+      removeFromCycles2(oldElement);
+    }
+    
+    // add the new toCycle2
+    for(ToCycle2 newElement : cycles2){
+      addToCycles2(newElement);
+    }
+  }
+  
+  /**
+   * For internal use only! Returns the list of <code>ToCycle2</code>s thereby lazy initializing it.
+   */
+  public List<ToCycle2> internalGetCycles2() {
+    if (this.cycles2 == null) {
+      this.cycles2 = new ArrayList<ToCycle2>();
+    }
+    return this.cycles2;
+  }
+  
+  /**
+   * Adds the given toCycle2 to this object. <p>
+   * Since the reference is a composition reference, the opposite reference (ToCycle2.parent)
+   * of the toCycle2 will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link ToCycle2#setParent(ToCycle2)}.
+   * 
+   */
+  public void addToCycles2(final ToCycle2 toCycle2) {
+    checkDisposed();
+    toCycle2.setParent(this);
+  }
+  
+  /**
+   * Removes the given toCycle2 from this object. <p>
+   * Since the reference is a cascading reference, the opposite reference (ToCycle2.parent)
+   * of the toCycle2 will be handled automatically and no further coding is required to keep them in sync. 
+   * See {@link ToCycle2#setParent(ToCycle2)}.
+   * 
+   */
+  public void removeFromCycles2(final ToCycle2 toCycle2) {
+    checkDisposed();
+    toCycle2.setParent(null);
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalAddToCycles2(final ToCycle2 toCycle2) {
+    if(toCycle2 == null) {
+    	return;
+    }
+    
+    if(!internalGetCycles2().contains(toCycle2)) {
+    	internalGetCycles2().add(toCycle2);
+    }
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalRemoveFromCycles2(final ToCycle2 toCycle2) {
+    internalGetCycles2().remove(toCycle2);
+  }
+  
+  /**
+   * Iterates all cross references and removes them from the parent to avoid ConstraintViolationException
+   */
+  @PreRemove
+  protected void preRemove() {
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/ToCycle2.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/ToCycle2.java
new file mode 100644
index 0000000..43a1c9d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/eclipse/osbp/dsl/tests/carstore/entities/ToCycle2.java
@@ -0,0 +1,128 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.carstore.entities;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.PreRemove;
+import javax.persistence.Table;
+
+import org.eclipse.osbp.dsl.common.datatypes.IEntity;
+import org.eclipse.osbp.runtime.common.annotations.Dispose;
+
+@Entity
+@Table(name = "TO_CYCLE2")
+@SuppressWarnings("all")
+public class ToCycle2 extends Base implements IEntity {
+  @ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH })
+  @JoinColumn(name = "PARENT_ID")
+  private ToCycle1 parent;
+  
+  @ManyToOne(fetch = FetchType.LAZY)
+  @JoinColumn(name = "CAR_ID")
+  private Car car;
+  
+  /**
+   * Checks whether the object is disposed.
+   * @throws RuntimeException if the object is disposed.
+   */
+  private void checkDisposed() {
+    if (isDisposed()) {
+      throw new RuntimeException("Object already disposed: " + this);
+    }
+  }
+  
+  /**
+   * Calling dispose will destroy that instance. The internal state will be 
+   * set to 'disposed' and methods of that object must not be used anymore. 
+   * Each call will result in runtime exceptions.<br>
+   * If this object keeps composition containments, these will be disposed too. 
+   * So the whole composition containment tree will be disposed on calling this method.
+   */
+  @Dispose
+  public void dispose() {
+    if (isDisposed()) {
+      return;
+    }
+    try {
+      // Dispose all the composition references.
+      if (this.parent != null) {
+        this.parent.dispose();
+        this.parent = null;
+      }
+      
+    }
+    finally {
+      super.dispose();
+    }
+    
+  }
+  
+  /**
+   * @return Returns the parent property or <code>null</code> if not present.
+   */
+  public ToCycle1 getParent() {
+    checkDisposed();
+    return this.parent;
+  }
+  
+  /**
+   * Sets the parent property to this instance.
+   * Since the reference is a container reference, the opposite reference (ToCycle1.cycles2)
+   * of the parent will be handled automatically and no further coding is required to keep them in sync.
+   * See {@link ToCycle1#setCycles2(ToCycle1)}.
+   */
+  public void setParent(final ToCycle1 parent) {
+    checkDisposed();
+    if (this.parent != null) {
+      this.parent.internalRemoveFromCycles2(this);
+    }
+    internalSetParent(parent);
+    if (this.parent != null) {
+      this.parent.internalAddToCycles2(this);
+    }
+    
+  }
+  
+  /**
+   * For internal use only!
+   */
+  public void internalSetParent(final ToCycle1 parent) {
+    this.parent = parent;
+  }
+  
+  /**
+   * @return Returns the car property or <code>null</code> if not present.
+   */
+  public Car getCar() {
+    checkDisposed();
+    return this.car;
+  }
+  
+  /**
+   * Sets the car property to this instance.
+   */
+  public void setCar(final Car car) {
+    checkDisposed();
+    this.car = car;
+  }
+  
+  /**
+   * Iterates all cross references and removes them from the parent to avoid ConstraintViolationException
+   */
+  @PreRemove
+  protected void preRemove() {
+    
+  }
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/AddressDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/AddressDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/AddressDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/BaseIDDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/BaseIDDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/BaseIDDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/BaseUUIDDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/BaseUUIDDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/BaseUUIDDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPaymentDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPaymentDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPaymentDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPaymentMethodDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPaymentMethodDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPaymentMethodDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPositionDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPositionDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashPositionDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashRegisterDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashRegisterDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashRegisterDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashSlipDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashSlipDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CashSlipDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyGroupDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyGroupDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyGroupDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyRelationTypeDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyRelationTypeDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/CompanyRelationTypeDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DepartmentDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DepartmentDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DepartmentDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestBeanDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestBeanDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestBeanDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestChildContainmentDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestChildContainmentDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestChildContainmentDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestChildCrossRefDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestChildCrossRefDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestChildCrossRefDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestParentDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestParentDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/DtoTestParentDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/McustomerDto.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/McustomerDto.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/McustomerDto.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/AddressDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/AddressDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/AddressDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/BaseIDDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/BaseIDDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/BaseIDDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/BaseUUIDDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/BaseUUIDDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/BaseUUIDDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPaymentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPaymentDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPaymentDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPaymentMethodDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPaymentMethodDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPaymentMethodDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPositionDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPositionDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashPositionDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashRegisterDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashRegisterDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashRegisterDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashSlipDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashSlipDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CashSlipDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CompanyDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CompanyDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CompanyDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CompanyRelationTypeDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CompanyRelationTypeDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/CompanyRelationTypeDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DepartmentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DepartmentDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DepartmentDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestBeanDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestBeanDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestBeanDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestChildContainmentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestChildContainmentDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestChildContainmentDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestChildCrossRefDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestChildCrossRefDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestChildCrossRefDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestParentDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestParentDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/DtoTestParentDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/McustomerDtoMapper.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/McustomerDtoMapper.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/mapper/McustomerDtoMapper.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/AddressDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/AddressDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/AddressDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPaymentDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPaymentDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPaymentDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPaymentMethodDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPaymentMethodDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPaymentMethodDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPositionDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPositionDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashPositionDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashRegisterDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashRegisterDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashRegisterDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashSlipDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashSlipDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CashSlipDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyGroupDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyGroupDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyGroupDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyRelationTypeDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyRelationTypeDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/CompanyRelationTypeDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DepartmentDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DepartmentDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DepartmentDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestChildContainmentDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestChildContainmentDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestChildContainmentDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestChildCrossRefDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestChildCrossRefDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestChildCrossRefDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestParentDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestParentDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/DtoTestParentDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/McustomerDtoService.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/McustomerDtoService.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/dtos/service/McustomerDtoService.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Address.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Address.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Address.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/BaseID.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/BaseID.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/BaseID.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/BaseUUID.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/BaseUUID.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/BaseUUID.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPayment.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPayment.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPayment.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPaymentMethod.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPaymentMethod.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPaymentMethod.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPosition.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPosition.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashPosition.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashRegister.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashRegister.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashRegister.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashSlip.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashSlip.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CashSlip.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Company.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Company.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Company.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CompanyGroup.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CompanyGroup.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CompanyGroup.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CompanyRelationType.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CompanyRelationType.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/CompanyRelationType.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Department.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Department.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Department.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestBean.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestBean.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestBean.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestChildContainment.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestChildContainment.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestChildContainment.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestChildCrossRef.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestChildCrossRef.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestChildCrossRef.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestParent.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestParent.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/DtoTestParent.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Mcustomer.java b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Mcustomer.java
new file mode 100644
index 0000000..5be98f0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src-gen/org/osbp/mysmartshop/entities/Mcustomer.java
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
diff --git a/org.eclipse.osbp.dsl.tests.model/src/META-INF/persistence.xml b/org.eclipse.osbp.dsl.tests.model/src/META-INF/persistence.xml
new file mode 100644
index 0000000..40fb275
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/META-INF/persistence.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
+	version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
+	
+	<persistence-unit name="testCarstore"
+		transaction-type="RESOURCE_LOCAL">
+		<class>org.osbp.mysmartshop.entities.BaseID</class>
+		<class>org.osbp.mysmartshop.entities.BaseUUID</class>
+		<class>org.osbp.mysmartshop.entities.DtoTestParent</class>
+		<class>org.osbp.mysmartshop.entities.DtoTestChildContainment</class>
+		<class>org.osbp.mysmartshop.entities.DtoTestChildCrossRef</class>
+		
+		<class>org.osbp.mysmartshop.entities.Mcustomer</class>
+		<class>org.osbp.mysmartshop.entities.CashRegister</class>
+		<class>org.osbp.mysmartshop.entities.CashSlip</class>
+		<class>org.osbp.mysmartshop.entities.CashPosition</class>
+		<class>org.osbp.mysmartshop.entities.CashPayment</class>
+		<class>org.osbp.mysmartshop.entities.CashPaymentMethod</class>
+		
+		<class>org.osbp.mysmartshop.entities.CompanyRelationType</class>
+		<class>org.osbp.mysmartshop.entities.CompanyGroup</class>
+		<class>org.osbp.mysmartshop.entities.Company</class>
+		<class>org.osbp.mysmartshop.entities.Address</class>
+		<class>org.osbp.mysmartshop.entities.Department</class>
+		
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Base</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Car</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Addon</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2</class>
+		<class>org.eclipse.osbp.dsl.tests.carstore.entities.Person</class>
+		<properties>
+			<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
+			<property name="javax.persistence.jdbc.url" value="jdbc:derby:memory:model1;create=true" />
+			<property name="javax.persistence.jdbc.user" value="test" />
+			<property name="javax.persistence.jdbc.password" value="test" />
+
+			<!-- EclipseLink should create the database schema automatically -->
+			<property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
+			<property name="eclipselink.create-ddl-jdbc-file-name"
+				value="createDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.drop-ddl-jdbc-file-name" value="dropDDL_ddlGeneration.jdbc" />
+			<property name="eclipselink.ddl-generation.output-mode"
+				value="both" />
+			<property name="eclipselink.logging.level" value="FINEST" />
+		</properties>
+	</persistence-unit>
+</persistence>
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/dto/bindings/DtoBindingTests.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/dto/bindings/DtoBindingTests.java
new file mode 100644
index 0000000..d5bab4d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/dto/bindings/DtoBindingTests.java
@@ -0,0 +1,135 @@
+package org.eclipse.osbp.dsl.tests.dto.bindings;
+
+import static org.junit.Assert.assertEquals;
+
+import java.util.Date;
+
+import org.eclipse.core.databinding.DataBindingContext;
+import org.eclipse.core.databinding.beans.BeanProperties;
+import org.eclipse.core.databinding.beans.IBeanListProperty;
+import org.eclipse.core.databinding.observable.Realm;
+import org.eclipse.core.databinding.observable.list.IObservableList;
+import org.eclipse.core.databinding.observable.list.WritableList;
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.tests.model.AbstractJPATest;
+import org.junit.Test;
+import org.osbp.mysmartshop.dtos.CashPositionDto;
+import org.osbp.mysmartshop.dtos.CashRegisterDto;
+import org.osbp.mysmartshop.dtos.CashSlipDto;
+import org.osbp.mysmartshop.dtos.McustomerDto;
+
+public class DtoBindingTests extends AbstractJPATest {
+
+	private IDTOService<McustomerDto> customerService;
+	private IDTOService<CashRegisterDto> cashRegisterService;
+	private IDTOService<CashSlipDto> cashSlipService;
+	private IDTOService<CashPositionDto> cashSlipPosService;
+
+	int custId = 10;
+	private CashSlipDto slip;
+
+	@SuppressWarnings("restriction")
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+
+		customerService = DtoServiceAccess.getService(McustomerDto.class);
+		cashRegisterService = DtoServiceAccess
+				.getService(CashRegisterDto.class);
+		cashSlipService = DtoServiceAccess.getService(CashSlipDto.class);
+		cashSlipPosService = DtoServiceAccess.getService(CashPositionDto.class);
+
+		// create customer
+		McustomerDto cust1 = new McustomerDto();
+		cust1.setId(custId);
+		cust1.setFullname("customer1");
+		customerService.update(cust1);
+		cust1 = customerService.get(custId);
+
+		slip = new CashSlipDto();
+		slip.setCashier("Jörg");
+		slip.setCustomer(cust1);
+		slip.setNow(new Date());
+		slip.setCurrentDay(new Date().toString());
+		slip.setSerial(10l);
+		slip.setTotal(100d);
+
+		CashPositionDto pos1 = new CashPositionDto();
+		pos1.setPrice(1000d);
+		pos1.setQuantity(10d);
+		slip.addToPositions(pos1);
+
+		CashPositionDto pos2 = new CashPositionDto();
+		pos2.setPrice(1000d);
+		pos2.setQuantity(10d);
+		slip.addToPositions(pos2);
+		
+		CashPositionDto pos3 = new CashPositionDto();
+		pos3.setPrice(1000d);
+		pos3.setQuantity(10d);
+		slip.addToPositions(pos3);
+		
+		CashPositionDto pos4 = new CashPositionDto();
+		pos4.setPrice(1000d);
+		pos4.setQuantity(10d);
+		slip.addToPositions(pos4);
+
+		cashSlipService.update(slip);
+		
+		// reload the slip
+		slip = cashSlipService.get(slip.getId());
+	}
+
+	@Test
+	public void testListBinding() throws Exception {
+		setUp();
+		
+		new CustomRealm();
+
+		IBeanListProperty sourceProperty = BeanProperties.list(CashSlipDto.class, "positions", CashPositionDto.class);
+		IObservableList sourceList = sourceProperty.observe(slip);
+		
+		WritableList targetList = new WritableList();
+		
+		DataBindingContext dbc = new DataBindingContext();
+		dbc.bindList(targetList, sourceList);		
+		dbc.updateTargets();
+		
+		assertEquals(4, targetList.size());
+
+		CashPositionDto pos1 = (CashPositionDto) sourceList.get(0);
+		CashPositionDto pos2 = (CashPositionDto) sourceList.get(2);
+		
+		slip.removeFromPositions(pos1);
+		assertEquals(3, targetList.size());
+		
+		slip.removeFromPositions(pos2);
+		assertEquals(2, targetList.size());
+		
+		slip.addToPositions(pos1);
+		assertEquals(3, targetList.size());
+		
+		slip.addToPositions(pos2);
+		assertEquals(4, targetList.size());
+		
+		slip.addToPositions(pos2);
+		slip.addToPositions(pos2);
+		slip.addToPositions(pos2);
+		assertEquals(4, targetList.size());
+	}
+	
+	
+	public static class CustomRealm extends Realm {
+
+		public CustomRealm() {
+			setDefault(this);
+		}
+		
+		@Override
+		public boolean isCurrent() {
+			return true;
+		}
+		
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/AbstractJPATest.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/AbstractJPATest.java
new file mode 100644
index 0000000..222f4da
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/AbstractJPATest.java
@@ -0,0 +1,56 @@
+/**
+ * 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
+ */
+package org.eclipse.osbp.dsl.tests.model;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
+import javax.persistence.spi.PersistenceProvider;
+import javax.persistence.spi.PersistenceProviderResolver;
+import javax.persistence.spi.PersistenceProviderResolverHolder;
+
+import org.eclipse.persistence.config.PersistenceUnitProperties;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.FrameworkUtil;
+
+public class AbstractJPATest {
+
+	protected Map<String, Object> properties = new HashMap<String, Object>();
+	protected EntityManagerFactory emf;
+
+	public void setUp() throws Exception {
+		PersistenceProviderResolverHolder
+				.setPersistenceProviderResolver(new PersistenceProviderResolver() {
+					private List<PersistenceProvider> providers = new ArrayList<PersistenceProvider>();
+
+					@Override
+					public List<PersistenceProvider> getPersistenceProviders() {
+						org.eclipse.persistence.jpa.PersistenceProvider provider = new org.eclipse.persistence.jpa.PersistenceProvider();
+						providers.add(provider);
+						return providers;
+					}
+
+					@Override
+					public void clearCachedProviders() {
+						providers.clear();
+					}
+				});
+		properties.put(PersistenceUnitProperties.CLASSLOADER, getClass()
+				.getClassLoader());
+
+		emf = Persistence.createEntityManagerFactory(
+				"testCarstore", properties);
+		Bundle bundle = FrameworkUtil.getBundle(AbstractJPATest.class);
+		bundle.getBundleContext().registerService(EntityManagerFactory.class,
+				emf, null);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/Activator.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/Activator.java
new file mode 100644
index 0000000..5caafc9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/Activator.java
@@ -0,0 +1,58 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.tests.model;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.InvalidSyntaxException;
+import org.osgi.framework.ServiceReference;
+
+public class Activator implements BundleActivator {
+
+	public BundleContext context;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		this.context = context;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		this.context = null;
+	}
+
+	/**
+	 * Returns the entity manager factory or <code>null</code>.
+	 * 
+	 * @return
+	 */
+	@SuppressWarnings({ "rawtypes", "unchecked" })
+	public static EntityManagerFactory getEMF() {
+		BundleContext context = FrameworkUtil.getBundle(Activator.class)
+				.getBundleContext();
+		ServiceReference[] refs;
+		try {
+			refs = context.getServiceReferences(
+					EntityManagerFactory.class.getName(),
+					"(osgi.unit.name=dbDerby)");
+			if (refs != null) {
+				return (EntityManagerFactory) context.getService(refs[0]);
+			}
+		} catch (InvalidSyntaxException e) {
+			throw new RuntimeException(e);
+		}
+
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/company/CompanyGroupTests.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/company/CompanyGroupTests.java
new file mode 100644
index 0000000..4ee3119
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/company/CompanyGroupTests.java
@@ -0,0 +1,201 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.tests.model.company;
+
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.tests.model.AbstractJPATest;
+import org.junit.Assert;
+import org.junit.Test;
+import org.osbp.mysmartshop.dtos.AddressDto;
+import org.osbp.mysmartshop.dtos.CompanyDto;
+import org.osbp.mysmartshop.dtos.CompanyGroupDto;
+import org.osbp.mysmartshop.dtos.DepartmentDto;
+
+@SuppressWarnings("restriction")
+public class CompanyGroupTests extends AbstractJPATest {
+
+	private IDTOService<CompanyDto> companyService;
+	private IDTOService<CompanyGroupDto> companyGroupService;
+
+	private long time = new Date().getTime();
+
+	private CompanyDto currentCompany;
+	private int currentCompanyIndex;
+	private AddressDto currentAddress;
+	private int currentAddressIndex;
+	private DepartmentDto currentDepartment;
+	private int currentDepartmentIndex;
+	private CompanyGroupDto companyGroup;
+
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+
+		companyService = DtoServiceAccess.getService(CompanyDto.class);
+		companyGroupService = DtoServiceAccess
+				.getService(CompanyGroupDto.class);
+
+		EntityManager em = emf.createEntityManager();
+		em.close();
+	}
+
+	@Test
+	public void testOppositesInAddress() throws Exception {
+		setUp();
+
+		String compId;
+		{
+			CompanyDto comp = new CompanyDto();
+			compId = comp.getId();
+			DepartmentDto dep = new DepartmentDto();
+			dep.setCompany(comp);
+
+			AddressDto depAddress = new AddressDto();
+			depAddress.setDepartment(dep);
+			depAddress.setCompany(comp);
+
+			companyService.update(comp);
+		}
+
+		{
+			CompanyDto comp = companyService.get(compId);
+			AddressDto compAddress = comp.getAddress().get(0);
+			AddressDto depAddress = comp.getDepartments().get(0).getAddress()
+					.get(0);
+			Assert.assertSame(compAddress, depAddress);
+		}
+	}
+
+	@Test
+	public void testPersistCompanyGroup() throws Exception {
+		setUp();
+
+		companyGroup = new CompanyGroupDto();
+		companyGroup.setId("COMP_GROUP1__" + time);
+		{
+			createCompanies();
+
+			companyGroupService.update(companyGroup);
+
+			CompanyGroupDto persCompGroup = companyGroupService
+					.get(companyGroup.getId());
+			Assert.assertNotNull(persCompGroup);
+
+			Assert.assertEquals(10, persCompGroup.getCompanies().size());
+
+			for (CompanyDto comp : persCompGroup.getCompanies()) {
+				Assert.assertEquals(10, comp.getDepartments().size());
+
+				// contains addresses from department and from company
+				Assert.assertEquals(110, comp.getAddress().size());
+				
+				// check opposite
+				Assert.assertSame(persCompGroup, comp.getCompany_group());
+
+				for (DepartmentDto dep : comp.getDepartments()) {
+					Assert.assertEquals(10, dep.getAddress().size());
+
+					// check opposite
+					Assert.assertSame(comp, dep.getCompany());
+
+					for (AddressDto addr : dep.getAddress()) {
+						// check opposite
+						Assert.assertSame(dep, addr.getDepartment());
+					}
+				}
+
+				for (AddressDto addr : comp.getAddress()) {
+
+					// check opposite
+					Assert.assertSame(comp, addr.getCompany());
+				}
+			}
+		}
+	}
+
+	void createCompanies() {
+
+		currentCompanyIndex = 0;
+		for (int i = 0; i < 10; i++) {
+
+			currentCompanyIndex++;
+
+			CompanyDto comp = new CompanyDto();
+			currentCompany = comp;
+			comp.setId(createCompanyUUID());
+			comp.setCompany_group(companyGroup);
+
+			createCompanyAddresses();
+			createDepartments();
+		}
+	}
+
+	void createDepartments() {
+		currentDepartmentIndex = 0;
+		for (int i = 0; i < 10; i++) {
+			currentDepartmentIndex++;
+
+			DepartmentDto dep = new DepartmentDto();
+			currentDepartment = dep;
+			dep.setId(createDepartmentUUID());
+			dep.setCompany(currentCompany);
+
+			createDepartmentAddresses();
+		}
+	}
+
+	void createCompanyAddresses() {
+		currentAddressIndex = 0;
+		for (int i = 0; i < 10; i++) {
+			currentAddressIndex++;
+
+			AddressDto addr = new AddressDto();
+			addr.setId(createCompanyAddressUUID());
+			addr.setCompany(currentCompany);
+		}
+	}
+
+	void createDepartmentAddresses() {
+		currentAddressIndex = 0;
+		for (int i = 0; i < 10; i++) {
+			currentAddressIndex++;
+
+			AddressDto addr = new AddressDto();
+			addr.setId(createDepartmentAddressUUID());
+			addr.setCompany(currentCompany);
+			addr.setDepartment(currentDepartment);
+		}
+	}
+
+	private String createCompanyUUID() {
+		return "COMP" + currentCompanyIndex + "__" + time;
+	}
+
+	private String createDepartmentUUID() {
+		return "DEP" + currentDepartmentIndex + "__" + createCompanyUUID();
+	}
+
+	private String createCompanyAddressUUID() {
+		return "ADDR" + currentAddressIndex + "__" + createCompanyUUID();
+	}
+
+	private String createDepartmentAddressUUID() {
+		return "ADDR" + currentAddressIndex + "__" + createDepartmentUUID();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/lazyloading/ServicesTests.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/lazyloading/ServicesTests.java
new file mode 100644
index 0000000..f76d239
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/lazyloading/ServicesTests.java
@@ -0,0 +1,527 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.tests.model.lazyloading;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.osbp.dsl.dto.lib.OppositeContainmentDtoList;
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.dsl.tests.model.AbstractJPATest;
+import org.junit.Assert;
+import org.junit.Test;
+import org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto;
+import org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto;
+import org.osbp.mysmartshop.dtos.DtoTestParentDto;
+
+@SuppressWarnings("restriction")
+public class ServicesTests extends AbstractJPATest {
+
+	/**
+	 * Tests what happens if the dto is bound to UI,... before update.
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	public void testService_Transient() throws Exception {
+		super.setUp();
+
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+
+		// create a dto with 2 containments
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+		childContainmentDto.setContainer(parent);
+
+		DtoTestChildContainmentDto childContainmentDto2 = new DtoTestChildContainmentDto();
+		parent.addToContainmentChilds(childContainmentDto2);
+
+		Assert.assertEquals(2, parent.getContainmentChilds().size());
+
+		boolean found1 = false;
+		boolean found2 = false;
+		for (DtoTestChildContainmentDto child : parent.getContainmentChilds()) {
+			if (child == childContainmentDto) {
+				found1 = true;
+			}
+
+			if (child == childContainmentDto2) {
+				found2 = true;
+			}
+		}
+
+		Assert.assertTrue(found1 && found2);
+
+		parentService.update(parent);
+
+		// read the same dto from database. Then add a new dto and remove a old
+		// one.
+		// then lets resolve the collection
+
+		parent = parentService.get(parent.getId());
+		Assert.assertEquals(2, parent.internalGetContainmentChilds().size());
+
+		OppositeContainmentDtoList<DtoTestChildContainmentDto> childsList = (OppositeContainmentDtoList<DtoTestChildContainmentDto>) parent
+				.internalGetContainmentChilds();
+		Assert.assertFalse(childsList.isResolved());
+
+		// add a child
+		DtoTestChildContainmentDto childContainmentDto3 = new DtoTestChildContainmentDto();
+		// will resolve the collection, since we need a ListDelta-Notification
+		// for databinding
+		parent.addToContainmentChilds(childContainmentDto3);
+		Assert.assertEquals(3, parent.internalGetContainmentChilds().size());
+		Assert.assertTrue(childsList.isResolved());
+
+		DtoTestChildContainmentDto child1 = parent.internalGetContainmentChilds().get(0);
+		DtoTestChildContainmentDto child2 = parent.internalGetContainmentChilds().get(1);
+		DtoTestChildContainmentDto child3 = parent.internalGetContainmentChilds().get(2);
+		// remove a child 2
+		parent.removeFromContainmentChilds(child2);
+		Assert.assertEquals(2, parent.internalGetContainmentChilds().size());
+		Assert.assertTrue(childsList.isResolved());
+
+		found1 = false;
+		found2 = false;
+		boolean found3 = false;
+		for (DtoTestChildContainmentDto child : parent.getContainmentChilds()) {
+			if (child == child1) {
+				found1 = true;
+			}
+
+			if (child == child2) {
+				found2 = true;
+			}
+
+			if (child == child3) {
+				found3 = true;
+			}
+		}
+
+		Assert.assertTrue(found1 && !found2 && found3);
+		
+		
+		
+		
+	}
+
+	@Test
+	public void testService_CRUD() throws Exception {
+		super.setUp();
+
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+		childContainmentDto.setContainer(parent);
+
+		DtoTestChildContainmentDto childContainmentDto2 = new DtoTestChildContainmentDto();
+		parent.addToContainmentChilds(childContainmentDto2);
+
+		parentService.update(parent);
+		parent = parentService.get(parent.getId());
+
+		Assert.assertEquals(2, parent.getContainmentChilds().size());
+
+		DtoTestParentDto parent2 = parentService.get(parent.getId());
+		Assert.assertEquals(2, parent2.getContainmentChilds().size());
+
+		parent2.removeFromContainmentChilds(parent2.getContainmentChilds().get(
+				0));
+		parentService.update(parent2);
+
+		DtoTestParentDto parent3 = parentService.get(parent.getId());
+		Assert.assertEquals(1, parent3.getContainmentChilds().size());
+	}
+
+	@Test
+	public void testSerialize_Dto() throws Exception {
+		super.setUp();
+
+		//
+		// create the cross references
+		//
+		IDTOService<DtoTestChildCrossRefDto> crossRefService = DtoServiceAccess
+				.getService(DtoTestChildCrossRefDto.class);
+
+		List<DtoTestChildCrossRefDto> crossRefs = new ArrayList<>();
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildCrossRefDto crossRef = new DtoTestChildCrossRefDto();
+			crossRefService.update(crossRef);
+			crossRefs.add(crossRef);
+		}
+
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		// add the cross references
+		for (DtoTestChildCrossRefDto crossRef : crossRefs) {
+			parent.addToCrossRefChilds(crossRef);
+		}
+
+		Set<String> ids = new HashSet<>();
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+			parent.addToContainmentChilds(childContainmentDto);
+			if (!ids.add(childContainmentDto.getId())) {
+				throw new Exception("Duplicate ID");
+			}
+		}
+
+		parentService.update(parent);
+
+		DtoTestParentDto parent2 = parentService.get(parent.getId());
+		parent2.getContainmentChilds().iterator();
+
+		ByteArrayOutputStream fos = new ByteArrayOutputStream();
+		ObjectOutputStream oos;
+		oos = new ObjectOutputStream(fos);
+		try {
+			oos.writeObject(parent2);
+		} finally {
+			oos.close();
+		}
+
+		ByteArrayInputStream bis = new ByteArrayInputStream(fos.toByteArray());
+		ObjectInputStream ois = new ObjectInputStream(bis);
+		DtoTestParentDto x_parent2 = (DtoTestParentDto) ois.readObject();
+
+		for (DtoTestChildContainmentDto child : new ArrayList<>(
+				x_parent2.getContainmentChilds())) {
+			x_parent2.removeFromContainmentChilds(child);
+		}
+		parentService.update(x_parent2);
+		DtoTestParentDto parent3 = parentService.get(parent.getId());
+		Assert.assertEquals(0, parent3.getContainmentChilds().size());
+	}
+
+	@Test
+	public void testUpdateContainmentRef_Dto() throws Exception {
+		super.setUp();
+
+		//
+		// create the cross references
+		//
+		IDTOService<DtoTestChildCrossRefDto> crossRefService = DtoServiceAccess
+				.getService(DtoTestChildCrossRefDto.class);
+
+		List<DtoTestChildCrossRefDto> crossRefs = new ArrayList<>();
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildCrossRefDto crossRef = new DtoTestChildCrossRefDto();
+			crossRefService.update(crossRef);
+			crossRefs.add(crossRef);
+		}
+
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		// add the cross references
+		for (DtoTestChildCrossRefDto crossRef : crossRefs) {
+			parent.addToCrossRefChilds(crossRef);
+		}
+
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+			parent.addToContainmentChilds(childContainmentDto);
+		}
+
+		parentService.update(parent);
+
+		DtoTestParentDto parent2 = parentService.get(parent.getId());
+		DtoTestChildContainmentDto firstContainment = parent2
+				.getContainmentChilds().get(0);
+
+		ByteArrayOutputStream fos = new ByteArrayOutputStream();
+		ObjectOutputStream oos;
+		oos = new ObjectOutputStream(fos);
+		try {
+			oos.writeObject(parent2);
+		} finally {
+			oos.close();
+		}
+
+		ByteArrayInputStream bis = new ByteArrayInputStream(fos.toByteArray());
+		ObjectInputStream ois = new ObjectInputStream(bis);
+		DtoTestParentDto x_parent2 = (DtoTestParentDto) ois.readObject();
+
+		for (DtoTestChildContainmentDto child : new ArrayList<>(
+				x_parent2.getContainmentChilds())) {
+			x_parent2.removeFromContainmentChilds(child);
+		}
+		parentService.update(x_parent2);
+		DtoTestParentDto parent3 = parentService.get(parent.getId());
+		Assert.assertEquals(0, parent3.getContainmentChilds().size());
+	}
+
+	@Test
+	public void testCrossReference_getByEntityManager() throws Exception {
+		super.setUp();
+
+		//
+		// create the cross references
+		//
+		IDTOService<DtoTestChildCrossRefDto> crossRefService = DtoServiceAccess
+				.getService(DtoTestChildCrossRefDto.class);
+
+		List<DtoTestChildCrossRefDto> crossRefs = new ArrayList<>();
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildCrossRefDto crossRef = new DtoTestChildCrossRefDto();
+			crossRefService.update(crossRef);
+			crossRefs.add(crossRef);
+		}
+
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		// add the cross references
+		for (DtoTestChildCrossRefDto crossRef : crossRefs) {
+			parent.addToCrossRefChilds(crossRef);
+		}
+
+		// remember the single cross reference
+		DtoTestChildCrossRefDto crossRef = crossRefs.get(0);
+
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+			parent.addToContainmentChilds(childContainmentDto);
+		}
+
+		parentService.update(parent);
+
+		DtoTestParentDto parent2 = parentService.get(parent.getId());
+		// Assert.assertEquals(crossRef.getId(),
+		// parent2.getCrossRefChild().getId());
+
+		parent2.setCrossRefChild(crossRef);
+		parentService.update(parent2);
+	}
+
+	/**
+	 * No exception on update!
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	public void testSetup_LaterFetchForChildren() throws Exception {
+		super.setUp();
+
+		//
+		// create the cross references
+		//
+		IDTOService<DtoTestChildCrossRefDto> crossRefService = DtoServiceAccess
+				.getService(DtoTestChildCrossRefDto.class);
+
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildCrossRefDto crossRef = new DtoTestChildCrossRefDto();
+			crossRefService.update(crossRef);
+		}
+
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		// add the cross references
+		for (DtoTestChildCrossRefDto crossRef : crossRefService
+				.find(new Query())) {
+			parent.addToCrossRefChilds(crossRef);
+		}
+
+		parentService.update(parent);
+
+	}
+
+	/**
+	 * No exception on update!
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	public void testOrphanRemoval() throws Exception {
+		super.setUp();
+
+		// clean up
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+		for (DtoTestParentDto temp : parentService.find(new Query())) {
+			parentService.delete(temp);
+		}
+		IDTOService<DtoTestChildCrossRefDto> crossRefService = DtoServiceAccess
+				.getService(DtoTestChildCrossRefDto.class);
+		for (DtoTestChildCrossRefDto temp : crossRefService.find(new Query())) {
+			crossRefService.delete(temp);
+		}
+
+		// test size of containments
+		IDTOService<DtoTestChildContainmentDto> containmentsService = DtoServiceAccess
+				.getService(DtoTestChildContainmentDto.class);
+		for (DtoTestChildContainmentDto temp : containmentsService
+				.find(new Query())) {
+			containmentsService.delete(temp);
+		}
+
+		Assert.assertEquals(0, containmentsService.size(new Query()));
+
+		// create parent with containments and cross references
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+			parent.addToContainmentChilds(childContainmentDto);
+		}
+
+		parentService.update(parent);
+
+		// now there are 1000 containments
+		Assert.assertEquals(1000, containmentsService.size(new Query()));
+
+		// now delete parent
+		DtoTestParentDto parent2 = parentService.get(parent.getId());
+		parentService.delete(parent2);
+
+		// now there are 0 containments due to orphan removal
+		Assert.assertEquals(0, containmentsService.size(new Query()));
+	}
+
+	/**
+	 * No exception on update!
+	 * 
+	 * @throws Exception
+	 */
+	@Test
+	public void testCrossReference_PreRemoveAnnotation() throws Exception {
+		super.setUp();
+
+		// clean up
+		IDTOService<DtoTestParentDto> parentService = DtoServiceAccess
+				.getService(DtoTestParentDto.class);
+		for (DtoTestParentDto temp : parentService.find(new Query())) {
+			parentService.delete(temp);
+		}
+		IDTOService<DtoTestChildCrossRefDto> crossRefService = DtoServiceAccess
+				.getService(DtoTestChildCrossRefDto.class);
+		for (DtoTestChildCrossRefDto temp : crossRefService.find(new Query())) {
+			crossRefService.delete(temp);
+		}
+
+		//
+		// create the cross references
+		//
+
+		Assert.assertEquals(0, crossRefService.size(new Query()));
+
+		List<DtoTestChildCrossRefDto> crossRefs = new ArrayList<>();
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildCrossRefDto crossRef = new DtoTestChildCrossRefDto();
+			crossRefService.update(crossRef);
+			crossRefs.add(crossRef);
+		}
+
+		Assert.assertEquals(1000, crossRefService.size(new Query()));
+
+		// test size of containments
+		IDTOService<DtoTestChildContainmentDto> containmentsService = DtoServiceAccess
+				.getService(DtoTestChildContainmentDto.class);
+		Assert.assertEquals(0, containmentsService.size(new Query()));
+
+		// create parent with containments and cross references
+
+		DtoTestParentDto parent = new DtoTestParentDto();
+
+		// add the cross references
+		for (DtoTestChildCrossRefDto crossRef : crossRefs) {
+			parent.addToCrossRefChilds(crossRef);
+		}
+
+		for (int i = 0; i < 1000; i++) {
+			DtoTestChildContainmentDto childContainmentDto = new DtoTestChildContainmentDto();
+			parent.addToContainmentChilds(childContainmentDto);
+		}
+
+		parentService.update(parent);
+
+		// now there are 1000 containments
+		Assert.assertEquals(1000, containmentsService.size(new Query()));
+
+		// now delete parent
+		DtoTestParentDto parent2 = parentService.get(parent.getId());
+		parentService.delete(parent2);
+
+		// now there are 0 containments due to orphan removal
+		Assert.assertEquals(0, containmentsService.size(new Query()));
+		// and still 1000 cross references
+		Assert.assertEquals(1000, crossRefService.size(new Query()));
+	}
+
+	@Test
+	public void testSerialize() throws Exception {
+		Serialize1 s1 = new Serialize1();
+		s1.name = "S1Foo";
+		s1.s2.name = "S2Bar";
+
+		ByteArrayOutputStream fos = new ByteArrayOutputStream();
+		ObjectOutputStream oos;
+		oos = new ObjectOutputStream(fos);
+		try {
+			oos.writeObject(s1);
+		} finally {
+			oos.close();
+		}
+
+		ByteArrayInputStream bis = new ByteArrayInputStream(fos.toByteArray());
+		ObjectInputStream ois = new ObjectInputStream(bis);
+		Object xs1 = ois.readObject();
+
+		System.out.println(xs1);
+	}
+
+	@SuppressWarnings("serial")
+	public static class Serialize1 implements Serializable {
+
+		String name;
+		Serialize2 s2;
+
+		public Serialize1() {
+			s2 = new Serialize2();
+		}
+
+	}
+
+	@SuppressWarnings("serial")
+	public static class Serialize2 implements Serializable {
+
+		String name;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/payment/CashTests.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/payment/CashTests.java
new file mode 100644
index 0000000..e67fc85
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/payment/CashTests.java
@@ -0,0 +1,319 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.tests.model.payment;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import java.util.Date;
+
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.tests.model.AbstractJPATest;
+import org.junit.Test;
+import org.osbp.mysmartshop.dtos.CashPositionDto;
+import org.osbp.mysmartshop.dtos.CashRegisterDto;
+import org.osbp.mysmartshop.dtos.CashSlipDto;
+import org.osbp.mysmartshop.dtos.McustomerDto;
+
+@SuppressWarnings("restriction")
+public class CashTests extends AbstractJPATest {
+
+	private IDTOService<McustomerDto> customerService;
+	private IDTOService<CashRegisterDto> cashRegisterService;
+	private IDTOService<CashSlipDto> cashSlipService;
+	private IDTOService<CashPositionDto> cashSlipPosService;
+
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+
+		customerService = DtoServiceAccess.getService(McustomerDto.class);
+		cashRegisterService = DtoServiceAccess
+				.getService(CashRegisterDto.class);
+		cashSlipService = DtoServiceAccess.getService(CashSlipDto.class);
+		cashSlipPosService = DtoServiceAccess.getService(CashPositionDto.class);
+	}
+
+	@Test
+	public void testPersistCash() throws Exception {
+		setUp();
+
+		int custId = 10;
+
+		// create customer
+		McustomerDto cust1 = new McustomerDto();
+		cust1.setId(custId);
+		cust1.setFullname("customer1");
+		customerService.update(cust1);
+		cust1 = customerService.get(custId);
+
+		CashRegisterDto cashRegister = new CashRegisterDto();
+		cashRegister.setNum("1000");
+		cashRegisterService.update(cashRegister);
+		cashRegister = cashRegisterService.get(cashRegister.getId());
+
+		CashSlipDto slip = new CashSlipDto();
+		slip.setCashier("Jörg");
+		slip.setCustomer(cust1);
+		slip.setNow(new Date());
+		slip.setCurrentDay(new Date().toString());
+		slip.setSerial(10l);
+		// slip.setRegister(cashRegister);
+		slip.setTotal(100d);
+		cashSlipService.update(slip);
+		slip = cashSlipService.get(slip.getId());
+
+		CashPositionDto pos1 = new CashPositionDto();
+		pos1.setPrice(1000d);
+		pos1.setQuantity(10d);
+		slip.addToPositions(pos1);
+		cashSlipPosService.update(pos1);
+
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(1, slip.getPositions().size());
+
+		cust1 = customerService.get(custId);
+		assertEquals(1, cust1.getSlips().size());
+
+		// remove the slip position
+		slip.removeFromPositions(slip.getPositions().get(0));
+		cashSlipService.update(slip);
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(0, slip.getPositions().size());
+
+		slip.setCustomer(null);
+		cashSlipService.update(slip);
+
+		slip = cashSlipService.get(slip.getId());
+		assertNotNull(slip);
+		assertNull(slip.getCustomer());
+
+		cust1 = customerService.get(custId);
+		assertEquals(0, cust1.getSlips().size());
+
+	}
+
+	@Test
+	public void testCascade_OneToMany_AddAndPersistDetail() throws Exception {
+		setUp();
+
+		int custId = 11;
+
+		// create customer
+		McustomerDto cust1 = new McustomerDto();
+		cust1.setId(custId);
+		cust1.setFullname("customer1");
+		customerService.update(cust1);
+		cust1 = customerService.get(custId);
+
+		CashSlipDto slip = new CashSlipDto();
+		slip.setCashier("Jörg");
+		slip.setCustomer(cust1);
+		slip.setNow(new Date());
+		slip.setCurrentDay(new Date().toString());
+		slip.setSerial(10l);
+		slip.setTotal(100d);
+		cashSlipService.update(slip);
+
+		// Test slip has not positions
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(0, slip.getPositions().size());
+
+		// UPDATE position by positionService
+		CashPositionDto pos1 = new CashPositionDto();
+		pos1.setPrice(1000d);
+		pos1.setQuantity(10d);
+		slip.addToPositions(pos1);
+		cashSlipPosService.update(pos1);
+
+		// Test that slip was also updated
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(1, slip.getPositions().size());
+
+		// DELETE position by positionService
+		cashSlipPosService.delete(pos1);
+
+		// Test that slip was also updated
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(0, slip.getPositions().size());
+	}
+
+	@Test
+	public void testCascade_OneToMany_AddAndPersistContainer() throws Exception {
+		setUp();
+
+		int custId = 15;
+
+		// create customer
+		McustomerDto cust1 = new McustomerDto();
+		cust1.setId(custId);
+		cust1.setFullname("customer1");
+		customerService.update(cust1);
+		cust1 = customerService.get(custId);
+
+		CashSlipDto slip = new CashSlipDto();
+		slip.setCashier("Jörg");
+		slip.setCustomer(cust1);
+		slip.setNow(new Date());
+		slip.setCurrentDay(new Date().toString());
+		slip.setSerial(10l);
+		slip.setTotal(100d);
+
+		CashPositionDto pos1 = new CashPositionDto();
+		pos1.setPrice(1000d);
+		pos1.setQuantity(10d);
+		slip.addToPositions(pos1);
+
+		CashPositionDto pos2 = new CashPositionDto();
+		pos2.setPrice(1000d);
+		pos2.setQuantity(10d);
+		slip.addToPositions(pos2);
+
+		cashSlipService.update(slip);
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(2, slip.getPositions().size());
+
+		// remove a position
+		slip.removeFromPositions(slip.getPositions().get(0));
+
+		cashSlipService.update(slip);
+		// Test that slip was also updated
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(1, slip.getPositions().size());
+
+		// remove a position and add a new one
+		slip.removeFromPositions(slip.getPositions().get(0));
+
+		CashPositionDto pos3 = new CashPositionDto();
+		pos3.setPrice(1000d);
+		pos3.setQuantity(10d);
+		slip.addToPositions(pos3);
+
+		cashSlipService.update(slip);
+
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(1, slip.getPositions().size());
+		assertEquals(pos3.getId(), slip.getPositions().get(0).getId());
+	}
+
+	@Test
+	public void testManyToOne__setToNull() throws Exception {
+		setUp();
+
+		int custId = 12;
+
+		// create customer
+		McustomerDto cust1 = new McustomerDto();
+		cust1.setId(custId);
+		cust1.setFullname("customer1");
+		customerService.update(cust1);
+		cust1 = customerService.get(custId);
+
+		CashSlipDto slip = new CashSlipDto();
+		slip.setCashier("Jörg");
+		slip.setCustomer(cust1);
+		slip.setNow(new Date());
+		slip.setCurrentDay(new Date().toString());
+		slip.setSerial(10l);
+		slip.setTotal(100d);
+
+		CashPositionDto pos1 = new CashPositionDto();
+		pos1.setPrice(1000d);
+		pos1.setQuantity(10d);
+		slip.addToPositions(pos1);
+
+		cashSlipService.update(slip);
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(1, slip.getPositions().size());
+
+		cust1 = customerService.get(custId);
+		assertEquals(1, cust1.getSlips().size());
+
+		// set the customer to null and update slip
+		slip.setCustomer(null);
+		cashSlipService.update(slip);
+
+		// test that the slip was removed from customer
+		cust1 = customerService.get(custId);
+		assertEquals(0, cust1.getSlips().size());
+
+		slip = cashSlipService.get(slip.getId());
+		assertNotNull(slip);
+		assertNull(slip.getCustomer());
+
+	}
+
+	@Test
+	public void errorRequired__testManyToOne__removeFromList() throws Exception {
+		setUp();
+
+		int custId = 13;
+
+		// create customer
+		McustomerDto cust1 = new McustomerDto();
+		cust1.setId(custId);
+		cust1.setFullname("customer1");
+		customerService.update(cust1);
+		cust1 = customerService.get(custId);
+
+		CashSlipDto slip = new CashSlipDto();
+		slip.setCashier("Jörg");
+		slip.setCustomer(cust1);
+		slip.setNow(new Date());
+		slip.setCurrentDay(new Date().toString());
+		slip.setSerial(10l);
+		slip.setTotal(100d);
+
+		CashPositionDto pos1 = new CashPositionDto();
+		pos1.setPrice(1000d);
+		pos1.setQuantity(10d);
+		slip.addToPositions(pos1);
+
+		cashSlipService.update(slip);
+		slip = cashSlipService.get(slip.getId());
+		assertEquals(1, slip.getPositions().size());
+
+		cust1 = customerService.get(custId);
+		assertEquals(1, cust1.getSlips().size());
+
+		// set the customer to null and update slip
+		cust1.removeFromSlips(cust1.internalGetSlips().get(0));
+		customerService.update(cust1);
+
+		slip = cashSlipService.get(slip.getId());
+		assertNotNull(slip);
+
+		/*
+		 * ATTENTION!!! This is expected, since removing a slip from a customer
+		 * and updating the customer has no effect!!
+		 */
+		try {
+			assertNull(slip.getCustomer());
+			fail();
+		} catch (AssertionError e) {
+			// expected
+		}
+
+		try {
+			cust1 = customerService.get(custId);
+			assertEquals(0, cust1.getSlips().size());
+		} catch (AssertionError e) {
+			// expected
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/tests/CycleTests.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/tests/CycleTests.java
new file mode 100644
index 0000000..dd51ea9
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/tests/CycleTests.java
@@ -0,0 +1,136 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.dsl.tests.model.tests;
+
+import java.lang.reflect.Field;
+import java.util.Collection;
+import java.util.Date;
+
+import javax.persistence.EntityManager;
+
+import org.eclipse.osbp.dsl.dto.lib.OppositeContainmentDtoList;
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.dto.lib.services.Query;
+import org.eclipse.osbp.dsl.dto.lib.services.filters.LCompare;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.carstore.entities.Car;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle1;
+import org.eclipse.osbp.dsl.tests.carstore.entities.ToCycle2;
+import org.eclipse.osbp.dsl.tests.model.AbstractJPATest;
+import org.junit.Assert;
+import org.junit.Test;
+
+@SuppressWarnings("restriction")
+public class CycleTests extends AbstractJPATest {
+
+	private void createData() {
+
+		EntityManager em = emf.createEntityManager();
+		em.getTransaction().begin();
+
+		Car car1 = new Car();
+		car1.setNumber("ct-001");
+
+		ToCycle1 cycle1_1 = new ToCycle1();
+		car1.addToCycles1(cycle1_1);
+		ToCycle2 cycle2_1 = new ToCycle2();
+		cycle2_1.setCar(car1);
+		cycle1_1.addToCycles2(cycle2_1);
+
+		ToCycle1 cycle1_2 = new ToCycle1();
+		car1.addToCycles1(cycle1_2);
+		ToCycle2 cycle2_2 = new ToCycle2();
+		cycle2_2.setCar(car1);
+		cycle1_1.addToCycles2(cycle2_2);
+
+		ToCycle1 cycle1_3 = new ToCycle1();
+		car1.addToCycles1(cycle1_3);
+		ToCycle2 cycle2_3 = new ToCycle2();
+		cycle2_3.setCar(car1);
+		cycle1_1.addToCycles2(cycle2_3);
+
+		em.persist(car1);
+
+		em.getTransaction().commit();
+	}
+
+	@SuppressWarnings("unchecked")
+	@Test
+	public void testService() throws Exception {
+		super.setUp();
+
+		createData();
+
+		IDTOService<CarDto> carService = DtoServiceAccess
+				.getService(CarDto.class);
+
+		Collection<CarDto> cars = carService.find(new Query(new LCompare.Equal(
+				"number", "ct-001")));
+		CarDto car = cars.iterator().next();
+
+		Field field = CarDto.class.getDeclaredField("cycles1");
+		field.setAccessible(true);
+		OppositeContainmentDtoList<CarDto> list = (OppositeContainmentDtoList<CarDto>) field
+				.get(car);
+		Assert.assertFalse(list.isResolved());
+
+		car.setFinishingDate(new Date());
+		carService.update(car);
+		list = (OppositeContainmentDtoList<CarDto>) field.get(car);
+		Assert.assertFalse(list.isResolved());
+
+	}
+
+	// @Test
+	// public void testCopyDto() throws Exception {
+	// CarDto car = new CarDto();
+	// car.setNumber("777777");
+	// car.setFinishingDate(new Date());
+	//
+	// AddonDto addon1 = new AddonDto();
+	// addon1.setDescription("addon1");
+	// car.addToAddons(addon1);
+	//
+	// AddonDto addon2 = new AddonDto();
+	// addon2.setDescription("addon2");
+	// car.addToAddons(addon2);
+	//
+	// PersonDto personDto = new PersonDto();
+	// personDto.addToOwnsCars(car);
+	//
+	// personDto.setFirstname("Florian");
+	// personDto.setLastname("Pirchner");
+	//
+	// AddressDto address = new AddressDto();
+	// address.setPostalcode("112233");
+	// address.setStreetname("Near the beach");
+	//
+	// AddressDto addressWork = new AddressDto();
+	// address.setPostalcode("332211");
+	// address.setStreetname("Near the moon");
+	//
+	// personDto.setHomeAddress(address);
+	// personDto.setWorkAddress(addressWork);
+	//
+	// CarDto newCar = car.copy(new MappingContext());
+	// Assert.assertEquals(car.getNumber(), newCar.getNumber());
+	// Assert.assertEquals(car.getUuid(), newCar.getUuid());
+	// Assert.assertEquals(2, car.getAddons().size());
+	// Assert.assertEquals("addon1", car.getAddons().get(0).getDescription());
+	// Assert.assertEquals("addon2", car.getAddons().get(1).getDescription());
+	//
+	// }
+
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/tests/ServicesTests.java b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/tests/ServicesTests.java
new file mode 100644
index 0000000..2998745
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/src/org/eclipse/osbp/dsl/tests/model/tests/ServicesTests.java
@@ -0,0 +1,101 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  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.dsl.tests.model.tests;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
+import org.eclipse.osbp.dsl.dto.lib.services.IDTOService;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.AddonDto;
+import org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto;
+import org.eclipse.osbp.dsl.tests.model.AbstractJPATest;
+import org.junit.Assert;
+import org.junit.Test;
+
+@SuppressWarnings("restriction")
+public class ServicesTests extends AbstractJPATest {
+
+	@Test
+	public void testService_CRUD() throws Exception {
+		super.setUp();
+		
+		IDTOService<CarDto> carService = DtoServiceAccess
+				.getService(CarDto.class);
+ 
+		CarDto car = new CarDto();
+		car.setNumber("112233");
+		car.setFinishingDate(new Date());
+ 
+		carService.update(car);
+		carService.reload(car);
+		Assert.assertEquals(car.getNumber(), car.getNumber());
+		Assert.assertEquals(car.getUuid(), car.getUuid());
+		
+		CarDto rCar = carService.get(car.getUuid());
+		Assert.assertEquals("112233", rCar.getNumber());
+		
+		carService.delete(rCar);
+		
+		rCar = carService.get(car.getUuid());
+		Assert.assertNull(rCar);
+	}
+	
+	@Test
+	public void testService_CRUD_complex() throws Exception {
+		super.setUp();
+		
+		IDTOService<CarDto> carService = DtoServiceAccess
+				.getService(CarDto.class);
+
+		CarDto car = new CarDto();
+		car.setNumber("777777");
+		car.setFinishingDate(new Date());
+		
+		AddonDto addon1 = new AddonDto();
+		addon1.setDescription("addon1");
+		car.addToAddons(addon1);
+		
+		AddonDto addon2 = new AddonDto();
+		addon2.setDescription("addon2");
+		car.addToAddons(addon2);
+
+		carService.update(car);
+		carService.reload(car);
+		CarDto newCar = car;
+		Assert.assertEquals(car.getNumber(), newCar.getNumber());
+		Assert.assertEquals(car.getUuid(), newCar.getUuid());
+		Assert.assertEquals(2, car.getAddons().size());
+		List<String> values = new ArrayList<>();
+		values.add("addon1");
+		values.add("addon2");
+		Assert.assertTrue(values.contains(car.getAddons().get(0).getDescription()));
+		Assert.assertTrue(values.contains(car.getAddons().get(1).getDescription()));
+		
+		CarDto rCar = carService.get(car.getUuid());
+		Assert.assertEquals("777777", rCar.getNumber());
+		Assert.assertEquals(2, car.getAddons().size());
+		Assert.assertTrue(values.contains(rCar.getAddons().get(0).getDescription()));
+		Assert.assertTrue(values.contains(rCar.getAddons().get(1).getDescription()));
+		Assert.assertSame(rCar, rCar.getAddons().get(0).getCar());
+		Assert.assertSame(rCar, rCar.getAddons().get(1).getCar());
+		
+		carService.delete(rCar);
+		
+		rCar = carService.get(car.getUuid());
+		Assert.assertNull(rCar);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper.xml
new file mode 100644
index 0000000..46e955b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.baseiddtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.BaseIDDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.BaseID"/>
+		<property name="fordto.to.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseIDDto"/>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseIDDto"/>
+		<property name="forentity.to.entity" type="String" value="org.osbp.mysmartshop.entities.BaseID"/>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.baseiddtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper.xml
new file mode 100644
index 0000000..c181a8a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.baseuuiddtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.BaseUUIDDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.BaseUUID"/>
+		<property name="fordto.to.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseUUIDDto"/>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.BaseUUIDDto"/>
+		<property name="forentity.to.entity" type="String" value="org.osbp.mysmartshop.entities.BaseUUID"/>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.baseuuiddtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper.xml
new file mode 100644
index 0000000..8fbcc80
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestbeandtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestBeanDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestBean"/>
+		<property name="fordto.to.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestBeanDto"/>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestBeanDto"/>
+		<property name="forentity.to.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestBean"/>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestbeandtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper.xml
new file mode 100644
index 0000000..946fffd
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestchildcontainmentdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestChildContainmentDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestChildContainment"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.DtoTestChildContainment
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestchildcontainmentdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper.xml
new file mode 100644
index 0000000..0075ac3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestchildcrossrefdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestChildCrossRefDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestChildCrossRef"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.DtoTestChildCrossRef
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestchildcrossrefdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper.xml
new file mode 100644
index 0000000..ecb254f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.mapper.dtotestparentdtomapper">
+       <implementation class="org.osbp.mysmartshop.dtos.mapper.DtoTestParentDtoMapper"/>
+       <service>
+		<provide interface="org.eclipse.osbp.dsl.dto.lib.IMapper"/>
+		  </service>
+		  
+		<property name="fordto.from.entity" type="String" value="org.osbp.mysmartshop.entities.DtoTestParent"/>
+		<property name="fordto.to.dto" type="String">org.osbp.mysmartshop.dtos.DtoTestParentDto
+		org.osbp.mysmartshop.dtos.BaseUUIDDto
+		</property>
+
+		<property name="forentity.from.dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestParentDto"/>
+		<property name="forentity.to.entity" type="String">org.osbp.mysmartshop.entities.DtoTestParent
+		org.osbp.mysmartshop.entities.BaseUUID
+		</property>
+		
+		<property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.mapper.dtotestparentdtomapper"/>
+		<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" 
+				cardinality="1..1" policy="static" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService.xml
new file mode 100644
index 0000000..4f21c53
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.dtotestchildcontainmentdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DtoTestChildContainmentDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildContainmentDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.dtotestchildcontainmentdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService.xml
new file mode 100644
index 0000000..a39038d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.dtotestchildcrossrefdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DtoTestChildCrossRefDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestChildCrossRefDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.dtotestchildcrossrefdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService.xml b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService.xml
new file mode 100644
index 0000000..bded2b4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.tests.model/temp/org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.osbp.mysmartshop.dtos.service.dtotestparentdtoservice">
+       <implementation class="org.osbp.mysmartshop.dtos.service.DtoTestParentDtoService"/>
+       <service>
+       	<provide interface="org.eclipse.osbp.dsl.dto.lib.services.IDTOService"/>
+       </service>
+       <property name="dto" type="String" value="org.osbp.mysmartshop.dtos.DtoTestParentDto"/>
+       <property name="service.pid" type="String" value="org.osbp.mysmartshop.dtos.service.dtotestparentdtoservice"/>
+<reference name="emf" interface="javax.persistence.EntityManagerFactory" cardinality="1..1" 
+	policy="dynamic" bind="bindEmf" unbind="unbindEmf" />
+<reference name="mapperAccess" interface="org.eclipse.osbp.dsl.dto.lib.IMapperAccess" cardinality="1..1" 
+	policy="dynamic" bind="bindMapperAccess" unbind="unbindMapperAccess"/>
+<reference name="filterEnhancers" interface="org.eclipse.osbp.dsl.dto.lib.services.filters.IFilterEnhancer" cardinality="0..n"
+		policy="dynamic" bind="addFilterEnhancer" unbind="removeFilterEnhancer"/>
+</scr:component>
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/.project b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/.project
new file mode 100644
index 0000000..45f97d1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.xtext.builder.participant.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/LICENSE.txt b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.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.dsl.xtext.builder.participant.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..456a697
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,31 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.xtext.builder.participant.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.xtext.builder.participant.tests
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.metadata.services;bundle-version="[0.9.0,0.10.0)",
+ org.knowhowlab.osgi.testing.assertions;bundle-version="[1.3.0,1.3.1)",
+ org.knowhowlab.osgi.testing.utils;bundle-version="[1.2.2,1.2.3)",
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.equinox.ds;bundle-version="1.4.101",
+ org.eclipse.equinox.util;bundle-version="1.0.500",
+ javax.persistence;bundle-version="2.1.0",
+ org.eclipse.osbp.dsl.datatype.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.dto.lib;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.xtext.builder.participant;bundle-version="[0.9.0,0.10.0)"
+Import-Package: javax.validation;version="1.0.0.GA",
+ org.osgi.framework;version="1.7.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Bundle-Activator: org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests.Activator
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/README.txt b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/build.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/build.properties
new file mode 100644
index 0000000..612ab1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/build.properties
@@ -0,0 +1,7 @@
+bin.includes = META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               OSGI-INF/
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/dto-models/entity.dtos b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/dto-models/entity.dtos
new file mode 100644
index 0000000..2ac8bb7
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/dto-models/entity.dtos
@@ -0,0 +1,21 @@
+package org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.dtos.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.dtos.mapper.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.dtos.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.dtos.mapper.*;
+
+
+	autoDto OtherEntityDto extends SuperClassDto wraps OtherEntity {
+		inherit var someValue;
+		inherit ref myEntity mapto MyEntityDto;
+	}
+	
+	enum Foo {
+		FOO, BAR
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/dto-models/entity2.dtos b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/dto-models/entity2.dtos
new file mode 100644
index 0000000..61fc343
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/dto-models/entity2.dtos
@@ -0,0 +1,17 @@
+package org.eclipse.osbp.dsl.xtext.builder.participant.tests.dtos {
+	
+	/* Imports the required artifacts */
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.dtos.*;
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.dtos.mapper.*;
+
+
+	autoDto SuperClassDto wraps SuperClass {
+		inherit var id;
+	}
+	
+	autoDto MyEntityDto extends SuperClassDto wraps MyEntity {
+		inherit var someValue;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/epl-v10.html b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.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.dsl.xtext.builder.participant.tests/i18n/I18N.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N.properties
new file mode 100644
index 0000000..1f43d44
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N.properties
@@ -0,0 +1,4 @@
+#default
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.id=id
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.my_entity=my_entity
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.some_value=some_value
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_de.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_de.properties
new file mode 100644
index 0000000..af6fdef
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_de.properties
@@ -0,0 +1 @@
+#de
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_de_AT.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_de_AT.properties
new file mode 100644
index 0000000..6c73e1d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_de_AT.properties
@@ -0,0 +1 @@
+#de_AT
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_en.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_en.properties
new file mode 100644
index 0000000..143a847
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_en.properties
@@ -0,0 +1,7 @@
+#en
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.id=identifier
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.my_entity=my entity
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.my_entity=my entity
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.other_entity=other entity
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.some_value=some value
+org.eclipse.osbp.dsl.xtext.builder.participant.tests.some_value=some value
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_en_US.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_en_US.properties
new file mode 100644
index 0000000..d89e21c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_en_US.properties
@@ -0,0 +1 @@
+#en_US
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_fr.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_fr.properties
new file mode 100644
index 0000000..a84da83
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/i18n/I18N_fr.properties
@@ -0,0 +1 @@
+#fr
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/license.html b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.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.dsl.xtext.builder.participant.tests/model/entity.entitymodel b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/entity.entitymodel
new file mode 100644
index 0000000..9e65445
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/entity.entitymodel
@@ -0,0 +1,14 @@
+package org.eclipse.osbp.dsl.xtext.builder.participant.tests.other {
+
+	import org.eclipse.osbp.dsl.xtext.builder.participant.tests.*;
+
+	entity OtherEntity extends SuperClass {
+		var Long someValue;
+		ref MyEntity myEntity;
+	}
+
+	enum Foo {
+		FOO,  BAR
+	}
+ 
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/entity2.entitymodel b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/entity2.entitymodel
new file mode 100644
index 0000000..4a5db97
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/entity2.entitymodel
@@ -0,0 +1,11 @@
+package org.eclipse.osbp.dsl.xtext.builder.participant.tests {
+	
+	mapped superclass SuperClass {
+		uuid String id;
+	}
+	
+	entity MyEntity extends SuperClass{
+		var Long someValue;
+	}
+	
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/model.datatypes b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/model.datatypes
new file mode 100644
index 0000000..4e30c1b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/model/model.datatypes
@@ -0,0 +1,6 @@
+package org.eclipse.osbp.dsl.xtext.builder.participant.tests.datatypes {
+	
+	datatype forTest jvmType java.util.List<String>;
+	datatype dateTest dateType time;	 
+	
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/modelsbin/entity2.entitymodel.entities_bin b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/modelsbin/entity2.entitymodel.entities_bin
new file mode 100644
index 0000000..e750c74
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/modelsbin/entity2.entitymodel.entities_bin
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ASCII"?>
+<entity:LEntityModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:entity="http://www.lunifera.org/dsl/entity/v1" xmlns:types="http://www.lunifera.org/dsl/common/types/v1">
+  <packages name="org.eclipse.osbp.dsl.xtext.builder.participant.tests">
+    <types xsi:type="entity:LEntity" name="SuperClass" mappedSuperclass="true" subTypes="//@packages.0/@types.1">
+      <annotationInfo xsi:type="types:LClass"/>
+      <features xsi:type="entity:LEntityAttribute" name="id" uuid="true">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.datatype.lib/src/org.eclipse.osbp/dsl/common/datatypes/baseElements.datatypes#/0/@packages.0/@types.21"/>
+      </features>
+    </types>
+    <types xsi:type="entity:LEntity" name="MyEntity" superType="//@packages.0/@types.0">
+      <annotationInfo xsi:type="types:LClass"/>
+      <persistenceInfo/>
+      <features xsi:type="entity:LEntityAttribute" name="someValue">
+        <annotationInfo xsi:type="entity:LEntityFeature"/>
+        <type href="platform:/resource/org.eclipse.osbp.dsl.datatype.lib/src/org.eclipse.osbp/dsl/common/datatypes/baseElements.datatypes#/0/@packages.0/@types.16"/>
+      </features>
+    </types>
+  </packages>
+</entity:LEntityModel>
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/plugin.properties b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/pom.xml b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/pom.xml
new file mode 100644
index 0000000..450b9b3
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.xtext.builder.participant.tests</artifactId>
+	<packaging>eclipse-test-plugin</packaging>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<pluginManagement>
+			<plugins>
+				<plugin>
+					<groupId>org.eclipse.tycho</groupId>
+					<artifactId>tycho-compiler-plugin</artifactId>
+					<version>0.21.0</version>
+					<configuration>
+						<compilerVersion>1.8</compilerVersion>
+						<encoding>UTF-8</encoding>
+						<source>1.8</source>
+						<target>1.8</target>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.apache.maven.plugins</groupId>
+					<artifactId>maven-compiler-plugin</artifactId>
+					<configuration>
+						<source>1.8</source>
+						<target>1.8</target>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+	</build>
+
+</project>
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Activator.java b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Activator.java
new file mode 100644
index 0000000..05d1485
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Activator.java
@@ -0,0 +1,30 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	public static BundleContext context;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		Activator.context = context;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/DatatypesDSLBuilderParticipantTests.java b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/DatatypesDSLBuilderParticipantTests.java
new file mode 100644
index 0000000..0a65d42
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/DatatypesDSLBuilderParticipantTests.java
@@ -0,0 +1,59 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.knowhowlab.osgi.testing.assertions.OSGiAssert.setDefaultBundleContext;
+import static org.knowhowlab.osgi.testing.utils.ServiceUtils.getService;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.knowhowlab.osgi.testing.utils.BundleUtils;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IDatatypesMetadataService;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.BundleException;
+
+public class DatatypesDSLBuilderParticipantTests {
+
+	private static final String DATATYPE_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.datatypes.forTest";
+	private static final String DATATYPE2_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.datatypes.dateTest";
+	private static final int TIME_15000 = 15000;
+	private static final int TIME_1000 = 1000;
+
+	@Before
+	public void setup() throws BundleException {
+		setDefaultBundleContext(Activator.context);
+
+		BundleUtils.startBundleAsync(Activator.context,
+				"org.eclipse.osbp.xtext.builder.metadata.services");
+		IMetadataBuilderService service = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_15000);
+		assertNotNull(service);
+	}
+
+	@Test
+	public void testAccessDatatype() throws Exception {
+
+		IDatatypesMetadataService service = getService(Activator.context,
+				IDatatypesMetadataService.class, TIME_1000);
+		assertNotNull(service);
+
+		LDataType datatype = service.getMetadata(DATATYPE_FQN);
+		assertEquals("forTest", datatype.getName());
+
+		LDataType datatype2 = service.getMetadata(DATATYPE2_FQN);
+		assertEquals("dateTest", datatype2.getName());
+
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/DtoDSLBuilderParticipantTests.java b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/DtoDSLBuilderParticipantTests.java
new file mode 100644
index 0000000..e602fc8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/DtoDSLBuilderParticipantTests.java
@@ -0,0 +1,75 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.knowhowlab.osgi.testing.assertions.OSGiAssert.setDefaultBundleContext;
+import static org.knowhowlab.osgi.testing.utils.ServiceUtils.getService;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.knowhowlab.osgi.testing.utils.BundleUtils;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IDtoMetadataService;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IEntityMetadataService;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.BundleException;
+
+public class DtoDSLBuilderParticipantTests {
+
+	private static final String DTO_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.dtos.MyEntityDto";
+	private static final String DTO2_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.dtos.OtherEntityDto";
+	private static final String ENUM_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.dtos.Foo";
+	private static final int TIME_15000 = 15000;
+	private static final int TIME_1000 = 1000;
+
+	@Before
+	public void setup() throws BundleException {
+		setDefaultBundleContext(Activator.context);
+
+		BundleUtils.startBundleAsync(Activator.context,
+				"org.eclipse.osbp.xtext.builder.metadata.services");
+		IMetadataBuilderService service = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_15000);
+		assertNotNull(service);
+	}
+
+	@Test
+	public void testAccessDto() throws Exception {
+
+		IDtoMetadataService service = getService(Activator.context,
+				IDtoMetadataService.class, TIME_1000);
+		assertNotNull(service);
+
+		LDto dto = service.getMetadata(DTO_FQN);
+		assertEquals("MyEntityDto", dto.getName());
+
+		LDto dto2 = service.getMetadata(DTO2_FQN);
+		assertEquals("OtherEntityDto", dto2.getName());
+		LEntity lEntity = (LEntity) dto2.getWrappedType();
+		assertEquals("OtherEntity", lEntity.getName());
+	}
+	
+	@Test
+	public void testAccessEnum() throws Exception {
+
+		IDtoMetadataService service = getService(Activator.context,
+				IDtoMetadataService.class, TIME_1000);
+		assertNotNull(service);
+
+		LDto dto = service.getMetadata(ENUM_FQN);
+		assertNull(dto);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/EntityDSLBuilderParticipantTests.java b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/EntityDSLBuilderParticipantTests.java
new file mode 100644
index 0000000..69e3dc0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/EntityDSLBuilderParticipantTests.java
@@ -0,0 +1,72 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.knowhowlab.osgi.testing.assertions.OSGiAssert.setDefaultBundleContext;
+import static org.knowhowlab.osgi.testing.utils.ServiceUtils.getService;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.knowhowlab.osgi.testing.utils.BundleUtils;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IEntityMetadataService;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.BundleException;
+
+public class EntityDSLBuilderParticipantTests {
+
+	private static final String ENTITY_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.OtherEntity";
+	private static final String ENTITY2_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.MyEntity";
+	private static final String ENUM_FQN = "org.eclipse.osbp.dsl.xtext.builder.participant.tests.other.Foo";
+	private static final int TIME_15000 = 15000;
+	private static final int TIME_1000 = 1000;
+
+	@Before
+	public void setup() throws BundleException {
+		setDefaultBundleContext(Activator.context);
+
+		BundleUtils.startBundleAsync(Activator.context,
+				"org.eclipse.osbp.xtext.builder.metadata.services");
+		IMetadataBuilderService service = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_15000);
+		assertNotNull(service);
+	}
+
+	@Test
+	public void testAccessEntity() throws Exception {
+
+		IEntityMetadataService service = getService(Activator.context,
+				IEntityMetadataService.class, TIME_1000);
+		assertNotNull(service);
+
+		LEntity entity = service.getMetadata(ENTITY_FQN);
+		assertEquals("OtherEntity", entity.getName());
+
+		LEntity entity2 = service.getMetadata(ENTITY2_FQN);
+		assertEquals("MyEntity", entity2.getName());
+
+	}
+	
+	@Test
+	public void testAccessEnum() throws Exception {
+
+		IEntityMetadataService service = getService(Activator.context,
+				IEntityMetadataService.class, TIME_1000);
+		assertNotNull(service);
+
+		LEntity entity = service.getMetadata(ENUM_FQN);
+		assertNull(entity);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/.project b/org.eclipse.osbp.dsl.xtext.builder.participant/.project
new file mode 100644
index 0000000..2d2ee3a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.xtext.builder.participant</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/LICENSE.txt b/org.eclipse.osbp.dsl.xtext.builder.participant/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/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.dsl.xtext.builder.participant/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.xtext.builder.participant/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..516b272
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.xtext.builder.participant
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.xtext.builder.participant
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.dsl.xtext.builder.participant;
+  uses:="org.eclipse.osbp.dsl.semantic.common.types,
+   org.eclipse.osbp.dsl.semantic.entity,
+   org.eclipse.osbp.dsl.semantic.dto";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.dsl.dto.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.builder.metadata.services;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.equinox.common;bundle-version="3.6.200",
+ org.eclipse.core.runtime
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.framework.wiring;version="1.1.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/README.md b/org.eclipse.osbp.dsl.xtext.builder.participant/README.md
new file mode 100644
index 0000000..fd0de03
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/README.md
@@ -0,0 +1,92 @@
+Lunifera DSL Metadata Service
+=============================
+
+Returns metadata for datatypes, entities and dtos. These services are provided as OSGi-Services.
+
+## available services
+
+### datatypes
+Get information about a datatype:
+	
+	public interface IDatatypesMetadataService {
+
+	/**
+	 * Returns the datatypes model for the given datatype name.
+	 * 
+	 * @param datatypeName
+	 * @return
+	 */
+	LDataType getMetadata(String datatypeName);
+
+The service will use the given qualified name of the datatype to return the proper LDataType eObject for it.  
+Qualified follows the pattern "{package}.{name}" like `org.eclipse.osbp.datatypes.String` 
+
+### entities
+Get information about a entities:
+	
+	public interface IEntityMetadataService {
+
+	/**
+	 * Returns the entity model for the given class. 
+	 * @param entityClass
+	 * @return
+	 */
+	LEntity getMetadata(Class<?> entityClass);
+	
+	/**
+	 * Returns the entity model for the given class name. 
+	 * @param entityName
+	 * @return
+	 */
+	LEntity getMetadata(String entityName);
+
+The service will use the given qualified name of the entity to return the proper LEntity eObject for it.  
+Qualified follows the pattern "{package}.{name}" like `org.eclipse.osbp.carstore.entities.general.Customer`
+
+### dtos
+Get information about a entities:
+	
+	public interface IDtoMetadataService {
+
+	/**
+	 * Returns the dto model for the given class.
+	 * 
+	 * @param dtoClass
+	 * @return
+	 */
+	LDto getMetadata(Class<?> dtoClass);
+
+	/**
+	 * Returns the dto model for the given class name.
+	 * 
+	 * @param dtoName
+	 * @return
+	 */
+	LDto getMetadata(String dtoName);
+
+The service will use the given qualified name of the entity to return the proper LDto eObject for it.  
+Qualified follows the pattern "{package}.{name}" like `org.eclipse.osbp.carstore.general.CustomerDto`
+	
+
+## How to use
+Services are provided as OSGi Service. So you can consume them by DS (declarative services), get a reference by the bundleContext or even use a ServiceTracker.
+
+The services also allow you to navigate along cross references.
+
+	public void foo(){
+		LDto customerDto = dtoService.getMetadata(CustomerDto.class);
+		
+		// access the entity
+		LEntity customer = customerDto.getWrappedType();
+		List<LIndex> index = customer.getIndexes();
+		
+		// navigate along attributes
+		for(LEntityAttribute attribute : customer.getAllAttributes()) {
+			LDataType datatype = attribute.getDatatype();
+		}
+	}
+
+
+## Attention
+Never ever change values in the given metadata objects. It is not constrainted and may lead to major problems.
+
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/about.html b/org.eclipse.osbp.dsl.xtext.builder.participant/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/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.dsl.xtext.builder.participant/about.ini b/org.eclipse.osbp.dsl.xtext.builder.participant/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/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.dsl.xtext.builder.participant/about.mappings b/org.eclipse.osbp.dsl.xtext.builder.participant/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/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.dsl.xtext.builder.participant/about.properties b/org.eclipse.osbp.dsl.xtext.builder.participant/about.properties
new file mode 100644
index 0000000..f71994f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.xtext.builder.participant
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/build.properties b/org.eclipse.osbp.dsl.xtext.builder.participant/build.properties
new file mode 100644
index 0000000..a769639
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/build.properties
@@ -0,0 +1,10 @@
+bin.includes = about.properties,\
+               about.mappings,\
+               about.ini,\
+               about.html,\
+               META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/epl-v10.html b/org.eclipse.osbp.dsl.xtext.builder.participant/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/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.dsl.xtext.builder.participant/license.html b/org.eclipse.osbp.dsl.xtext.builder.participant/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/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.dsl.xtext.builder.participant/plugin.properties b/org.eclipse.osbp.dsl.xtext.builder.participant/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/pom.xml b/org.eclipse.osbp.dsl.xtext.builder.participant/pom.xml
new file mode 100644
index 0000000..f879f78
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.xtext.builder.participant</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<description>This bundle contains a builder participant. It will setup the Xtext types model and exposes a service IJvmTypeMetadataService. 
+
+Using the method "JvmType getJvmType(String qualifiedName)" the JvmType for the given name will be returned. All bundles in the BundleSpace will be scanned for a matching class.</description>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/source-save/OSBPDslsBuilderParticipant.java b/org.eclipse.osbp.dsl.xtext.builder.participant/source-save/OSBPDslsBuilderParticipant.java
new file mode 100644
index 0000000..03b6f65
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/source-save/OSBPDslsBuilderParticipant.java
@@ -0,0 +1,193 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant.impl;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+import org.eclipse.osbp.dsl.semantic.common.types.OSBPTypesPackage;
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+import org.eclipse.osbp.dsl.semantic.dto.OSBPDtoPackage;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IDatatypesMetadataService;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IDtoMetadataService;
+import org.eclipse.osbp.dsl.xtext.builder.participant.IEntityMetadataService;
+import org.eclipse.osbp.xtext.builder.metadata.services.AbstractBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+
+import com.google.inject.Inject;
+
+//@Component(service = { IBuilderParticipant.class })
+public class OSBPDslsBuilderParticipant extends AbstractBuilderParticipant {
+
+	@Inject
+	private IMetadataBuilderService metadataBuilderService;
+
+	private ComponentContext context;
+	private ServiceRegistration<IDatatypesMetadataService> datatypesServiceRegister;
+	private ServiceRegistration<IEntityMetadataService> entityServiceRegister;
+	private ServiceRegistration<IDtoMetadataService> dtoServiceRegister;
+
+	public OSBPDslsBuilderParticipant() {
+
+	}
+
+	@Activate
+	protected void activate(ComponentContext context) {
+		this.context = context;
+	}
+
+	@Deactivate
+	protected void deactivate(ComponentContext context) {
+		metadataBuilderService.removeFromBundleSpace(context.getBundleContext()
+				.getBundle());
+
+		this.context = null;
+	}
+
+	@Override
+	public List<URL> getModels(Bundle suspect) {
+
+		List<URL> results = new ArrayList<URL>();
+		BundleWiring wiring = suspect.adapt(BundleWiring.class);
+		results.addAll(wiring.findEntries("/", "*.entitymodel",
+				BundleWiring.LISTRESOURCES_RECURSE));
+		results.addAll(wiring.findEntries("/", "*.dtos",
+				BundleWiring.LISTRESOURCES_RECURSE));
+		results.addAll(wiring.findEntries("/", "*.datatypes",
+				BundleWiring.LISTRESOURCES_RECURSE));
+
+		Set<String> fragments = new HashSet<String>();
+		for (Iterator<URL> iterator = results.iterator(); iterator.hasNext();) {
+			URL url = iterator.next();
+			URI uri = URI.createURI(url.toString());
+			if (fragments.contains(uri.lastSegment())) {
+				iterator.remove();
+			}
+			fragments.add(uri.lastSegment());
+		}
+
+		return results;
+	}
+
+	@Override
+	public void notifyLifecyle(LifecycleEvent event) {
+		if (event.getState() == IBuilderParticipant.LifecycleEvent.INITIALIZE) {
+			initialize();
+		} else if (event.getState() == IBuilderParticipant.LifecycleEvent.ACTIVATED) {
+			DatatypesService datatypesService = new DatatypesService();
+			datatypesServiceRegister = context.getBundleContext()
+					.registerService(IDatatypesMetadataService.class,
+							datatypesService, null);
+
+			EntityService entityService = new EntityService();
+			entityServiceRegister = context.getBundleContext().registerService(
+					IEntityMetadataService.class, entityService, null);
+
+			DtoService dtoService = new DtoService();
+			dtoServiceRegister = context.getBundleContext().registerService(
+					IDtoMetadataService.class, dtoService, null);
+		} else {
+			if (datatypesServiceRegister != null) {
+				datatypesServiceRegister.unregister();
+				datatypesServiceRegister = null;
+			}
+
+			if (entityServiceRegister != null) {
+				entityServiceRegister.unregister();
+				entityServiceRegister = null;
+			}
+
+			if (dtoServiceRegister != null) {
+				dtoServiceRegister.unregister();
+				dtoServiceRegister = null;
+			}
+
+			if (metadataBuilderService != null) {
+				metadataBuilderService.removeFromBundleSpace(context
+						.getBundleContext().getBundle());
+			}
+		}
+	}
+
+	private void initialize() {
+		StandaloneGrammarsSetup.setup();
+		metadataBuilderService.addToBundleSpace(context.getBundleContext()
+				.getBundle());
+	}
+
+	/**
+	 * Provided as an OSGi service to return {@link LDataType LDataTypes} for
+	 * the given qualified name.
+	 */
+	private class DatatypesService implements IDatatypesMetadataService {
+
+		@Override
+		public LDataType getMetadata(String datatypeName) {
+			return (LDataType) metadataBuilderService.getMetadata(datatypeName,
+					OSBPTypesPackage.Literals.LDATA_TYPE);
+		}
+
+	}
+
+	/**
+	 * Provided as an OSGi service to return {@link LEntity LEntities} for the
+	 * given qualified name.
+	 */
+	private class EntityService implements IEntityMetadataService {
+
+		@Override
+		public LEntity getMetadata(Class<?> entityClass) {
+			return getMetadata(entityClass.getCanonicalName());
+		}
+
+		@Override
+		public LEntity getMetadata(String className) {
+			return (LEntity) metadataBuilderService.getMetadata(className,
+					OSBPEntityPackage.Literals.LENTITY);
+		}
+	}
+
+	/**
+	 * Provided as an OSGi service to return {@link LDto LDtos} for the given
+	 * qualified name.
+	 */
+	private class DtoService implements IDtoMetadataService {
+
+		@Override
+		public LDto getMetadata(Class<?> entityClass) {
+			return getMetadata(entityClass.getCanonicalName());
+		}
+
+		@Override
+		public LDto getMetadata(String className) {
+			return (LDto) metadataBuilderService.getMetadata(className,
+					OSBPDtoPackage.Literals.LDTO);
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/source-save/StandaloneGrammarsSetup.java b/org.eclipse.osbp.dsl.xtext.builder.participant/source-save/StandaloneGrammarsSetup.java
new file mode 100644
index 0000000..89726d4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/source-save/StandaloneGrammarsSetup.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant.impl;
+
+import org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammarBundleSpaceSetup;
+import org.eclipse.osbp.dsl.dto.xtext.DtoGrammarBundleSpaceSetup;
+import org.eclipse.osbp.dsl.entity.xtext.EntityGrammarBundleSpaceSetup;
+
+/**
+ * A helper class to setup the Xtext grammars properly.
+ */
+@SuppressWarnings("restriction")
+public class StandaloneGrammarsSetup {
+
+	public static void setup() {
+		DatatypeGrammarBundleSpaceSetup.doSetup();
+		DtoGrammarBundleSpaceSetup.doSetup();
+		EntityGrammarBundleSpaceSetup.doSetup();
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IDatatypesMetadataService.java b/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IDatatypesMetadataService.java
new file mode 100644
index 0000000..21feda8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IDatatypesMetadataService.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant;
+
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
+
+// TODO: Auto-generated Javadoc
+/**
+ * @noimplement Should not be implemented by clients. 
+ */
+public interface IDatatypesMetadataService {
+
+	/**
+	 * Returns the datatypes model for the given datatype name.
+	 *
+	 * @param datatypeName
+	 *            the datatype name
+	 * @return the metadata
+	 */
+	LDataType getMetadata(String datatypeName);
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IDtoMetadataService.java b/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IDtoMetadataService.java
new file mode 100644
index 0000000..cbdf4bc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IDtoMetadataService.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant;
+
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.dto.LDto;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Should not implemented by clients.
+ */
+public interface IDtoMetadataService {
+
+	/**
+	 * Returns the dto model for the given class.
+	 *
+	 * @param dtoClass
+	 *            the dto class
+	 * @return the metadata
+	 */
+	LDto getMetadata(Class<?> dtoClass);
+
+	/**
+	 * Returns the dto model for the given class name.
+	 *
+	 * @param className
+	 *            the class name
+	 * @return the metadata
+	 */
+	LDto getMetadata(String className);
+
+	/**
+	 * Returns all dtos.
+	 *
+	 * @return the all
+	 */
+	List<LDto> getAll();
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IEntityMetadataService.java b/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IEntityMetadataService.java
new file mode 100644
index 0000000..87d0ef2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.builder.participant/src/org/eclipse/osbp/dsl/xtext/builder/participant/IEntityMetadataService.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.builder.participant;
+
+import java.util.List;
+
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Should not implemented by clients.
+ */
+public interface IEntityMetadataService {
+
+	/**
+	 * Returns the entity model for the given class.
+	 *
+	 * @param entityClass
+	 *            the entity class
+	 * @return the metadata
+	 */
+	LEntity getMetadata(Class<?> entityClass);
+
+	/**
+	 * Returns the entity model for the given class name.
+	 *
+	 * @param className
+	 *            the class name
+	 * @return the metadata
+	 */
+	LEntity getMetadata(String className);
+
+	/**
+	 * Returns all entities.
+	 *
+	 * @return the all
+	 */
+	List<LEntity> getAll();
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/.project b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/.project
new file mode 100644
index 0000000..bf5f5c0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.xtext.lazyresolver.api</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/LICENSE.txt b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/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.dsl.xtext.lazyresolver.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b2f9539
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.xtext.lazyresolver.api
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.xtext.lazyresolver.api;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="2.10.0",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)"
+Export-Package: org.eclipse.osbp.dsl.xtext.lazyresolver.api;
+  uses:="org.eclipse.emf.ecore.resource,
+   org.eclipse.emf.ecore,
+   org.eclipse.emf.common.notify.impl,
+   org.eclipse.xtext.resource,
+   org.eclipse.xtext.xbase.jvmmodel,
+   org.eclipse.xtext.common.types";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook;
+  uses:="org.eclipse.emf.ecore.resource,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.generator,
+   org.eclipse.xtext.xbase.jvmmodel,
+   org.eclipse.xtext.common.types";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger;
+  uses:="org.slf4j";version="0.9.0"
+Import-Package: org.slf4j
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/about.html b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/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.dsl.xtext.lazyresolver.api/about.ini b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/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.dsl.xtext.lazyresolver.api/about.mappings b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/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.dsl.xtext.lazyresolver.api/about.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/about.properties
new file mode 100644
index 0000000..b47fa67
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.xtext.lazyresolver.api
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/build.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/build.properties
new file mode 100644
index 0000000..264e880
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               schema/,\
+               plugin.xml
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/epl-v10.html b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/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.dsl.xtext.lazyresolver.api/license.html b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/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.dsl.xtext.lazyresolver.api/plugin.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/plugin.xml b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/plugin.xml
new file mode 100644
index 0000000..c491a8d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/plugin.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<plugin>
+     <extension-point id="inferrerDelegate" name="Inferrer Delegate" schema="schema/inferrerDelegate.exsd"/>
+     <extension-point id="generatorDelegate" name="Generator Delegate" schema="schema/generatorDelegate.exsd"/>
+     <extension-point id="runtimeModulesProvider" name="Runtime Modules Provider" schema="schema/runtimeModulesProvider.exsd"/>
+</plugin>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/pom.xml b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/pom.xml
new file mode 100644
index 0000000..e5e35e5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.xtext.lazyresolver.api</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<description>This bundle contains a builder participant. It will setup the Xtext types model and exposes a service IJvmTypeMetadataService. 
+
+Using the method "JvmType getJvmType(String qualifiedName)" the JvmType for the given name will be returned. All bundles in the BundleSpace will be scanned for a matching class.</description>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/generatorDelegate.exsd b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/generatorDelegate.exsd
new file mode 100644
index 0000000..1b22a9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/generatorDelegate.exsd
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osbp.dsl.xtext.lazyresolver.api" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.osbp.dsl.xtext.lazyresolver.api" id="generatorDelegate" name="Generator Delegate"/>
+      </appinfo>
+      <documentation>
+         This extension point allows clients to contribute their own implementations for DSL generators
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="generatorDelegate"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="generatorDelegate">
+      <complexType>
+         <attribute name="grammarName" type="string" use="required">
+            <annotation>
+               <documentation>
+                  A string identifier defining the name of the grammar the hook should be used for.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="generatorDelegateClass" type="string">
+            <annotation>
+               <documentation>
+                  Class implementing &lt;code&gt;IGeneratorDelegate&lt;/code&gt;.  Used to create new instances of this delegate
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook.IGeneratorDelegate"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.8.1
+      </documentation>
+   </annotation>
+
+
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&amp;Co.KG (Heidelberg)&lt;br&gt;
+All rights reserved. This program and the accompanying materials&lt;br&gt;
+are made available under the terms of the Eclipse Public License v1.0&lt;br&gt;
+which accompanies this distribution, and is available at&lt;br&gt;
+http://www.eclipse.org/legal/epl-v10.html&lt;br&gt;
+&lt;p&gt;
+Contributors: 
+ Florian Pirchner - Initial implementation
+&lt;/p&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/inferrerDelegate.exsd b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/inferrerDelegate.exsd
new file mode 100644
index 0000000..2c95e9f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/inferrerDelegate.exsd
@@ -0,0 +1,98 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osbp.dsl.xtext.lazyresolver.api" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.osbp.dsl.xtext.lazyresolver.api" id="inferrerDelegate" name="Inferrer Delegate"/>
+      </appinfo>
+      <documentation>
+         This extension point allows clients to contribute their own implementations for DSL inferrers.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="inferrerDelegate"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="inferrerDelegate">
+      <complexType>
+         <attribute name="grammarName" type="string" use="required">
+            <annotation>
+               <documentation>
+                  A string identifier defining the name of the grammar the hook should be used for.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="inferrerDelegateClass" type="string">
+            <annotation>
+               <documentation>
+                  Class implementing &lt;code&gt;IInferrerDelegate&lt;/code&gt;.  Used to create new instances of this delegate
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook.IInferrerDelegate"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.8.1
+      </documentation>
+   </annotation>
+
+
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&amp;Co.KG (Heidelberg)&lt;br&gt;
+All rights reserved. This program and the accompanying materials&lt;br&gt;
+are made available under the terms of the Eclipse Public License v1.0&lt;br&gt;
+which accompanies this distribution, and is available at&lt;br&gt;
+http://www.eclipse.org/legal/epl-v10.html&lt;br&gt;
+&lt;p&gt;
+Contributors: 
+ Florian Pirchner - Initial implementation
+&lt;/p&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/runtimeModulesProvider.exsd b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/runtimeModulesProvider.exsd
new file mode 100644
index 0000000..545f361
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/schema/runtimeModulesProvider.exsd
@@ -0,0 +1,105 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osbp.dsl.xtext.lazyresolver.api" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appinfo>
+         <meta.schema plugin="org.eclipse.osbp.dsl.xtext.lazyresolver.api" id="runtimeGeneratorDelegate" name="Runtime Generator Delegate"/>
+      </appinfo>
+      <documentation>
+         This extension point allow clients to provide their own Guice Modules for specific grammars.
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appinfo>
+            <meta.element />
+         </appinfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="runtimeModulesProvider"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="runtimeModulesProvider">
+      <complexType>
+         <attribute name="prio" type="string" use="default" value="0">
+            <annotation>
+               <documentation>
+                  Modules with the lowest prio are applied to the injector first. Modules with higher prios will override lower priorized.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="grammarName" type="string" use="required">
+            <annotation>
+               <documentation>
+                  A string identifier defining the name of the grammar the hook should be used for.
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="module" type="string">
+            <annotation>
+               <documentation>
+                  Class implementing &lt;code&gt;com.google.inject.Module&lt;/code&gt;.  Used to create a new Guice Injector.
+               </documentation>
+               <appinfo>
+                  <meta.attribute kind="java" basedOn=":com.google.inject.Module"/>
+               </appinfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appinfo>
+         <meta.section type="since"/>
+      </appinfo>
+      <documentation>
+         0.9.0
+      </documentation>
+   </annotation>
+
+
+
+
+   <annotation>
+      <appinfo>
+         <meta.section type="copyright"/>
+      </appinfo>
+      <documentation>
+         Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (Heidelberg)&lt;br&gt;
+All rights reserved. This program and the accompanying materials&lt;br&gt;
+are made available under the terms of the Eclipse Public License v1.0&lt;br&gt;
+which accompanies this distribution, and is available at&lt;br&gt;
+http://www.eclipse.org/legal/epl-v10.html&lt;br&gt;
+&lt;p&gt;
+Contributors: 
+ Florian Pirchner - Initial implementation
+&lt;/p&gt;
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/DerivedRootAdapter.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/DerivedRootAdapter.java
new file mode 100644
index 0000000..9337331
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/DerivedRootAdapter.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api;
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.common.types.JvmType;
+
+/**
+ * An adapter to attach the semantic element and a selector to the
+ * {@link JvmType}. The selector is used, if more then one {@link JvmType} is
+ * inferred for a single {@link EObject}. Then the inferer needs to separate
+ * which JvmTypes needs to be inferrerd at this state.
+ */
+public class DerivedRootAdapter extends AdapterImpl {
+
+	private final EObject semantic;
+	private final String selector;
+
+	public DerivedRootAdapter(EObject context, String selector) {
+		this.semantic = context;
+		this.selector = selector;
+	}
+
+	@Override
+	public boolean isAdapterForType(Object type) {
+		return type == DerivedRootAdapter.class;
+	}
+
+	/**
+	 * @return the semantic
+	 */
+	public EObject getSemantic() {
+		return semantic;
+	}
+
+	/**
+	 * @return the selector
+	 */
+	public String getSelector() {
+		return selector;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/EcoreUtil3.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/EcoreUtil3.java
new file mode 100644
index 0000000..0974c77
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/EcoreUtil3.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/**
+ * A helper class that uses the {@link ISemanticLoadingResource} to resolve the
+ * semantic element without installing the derived state.
+ */
+public class EcoreUtil3 {
+
+	public static EObject resolve(EObject proxy, ResourceSet resourceSet) {
+		URI proxyURI = ((InternalEObject) proxy).eProxyURI();
+		if (proxyURI != null) {
+			try {
+				EObject resolvedObject = null;
+				if (resourceSet != null) {
+					try {
+						Resource resource = resourceSet.getResource(
+								proxyURI.trimFragment(), true);
+						if (resource instanceof ISemanticLoadingResource) {
+							ISemanticLoadingResource castedResource = (ISemanticLoadingResource) resource;
+							resolvedObject = castedResource
+									.getSemanticElement(proxyURI.fragment());
+						} else {
+							return EcoreUtil.resolve(proxy, resourceSet);
+						}
+					} catch (RuntimeException exception) {
+						resolvedObject = resourceSet
+								.getEObject(proxyURI, false);
+					}
+				} else {
+					EPackage ePackage = EPackage.Registry.INSTANCE
+							.getEPackage(proxyURI.trimFragment().toString());
+					if (ePackage != null) {
+						Resource resource = ePackage.eResource();
+						if (resource != null) {
+							resolvedObject = resource.getEObject(proxyURI
+									.fragment().toString());
+						}
+					}
+				}
+
+				if (resolvedObject != null && resolvedObject != proxy) {
+					return resolve(resolvedObject, resourceSet);
+				}
+			} catch (RuntimeException exception) {
+				// Failure to resolve is ignored.
+			}
+		}
+		return proxy;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/IIndexDerivedStateComputer.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/IIndexDerivedStateComputer.java
new file mode 100644
index 0000000..d60c69e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/IIndexDerivedStateComputer.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api;
+
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.resource.DerivedStateAwareResource;
+import org.eclipse.xtext.resource.IDerivedStateComputer;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IIndexDerivedStateComputer.
+ */
+public interface IIndexDerivedStateComputer extends IDerivedStateComputer{
+
+	/**
+	 * Installs the derived state for the given type.
+	 *
+	 * @param resource
+	 *            the resource
+	 * @param type
+	 *            the type
+	 * @param preLinkingPhase
+	 *            the pre linking phase
+	 */
+	void installDerivedState(DerivedStateAwareResource resource, JvmDeclaredType type, boolean preLinkingPhase);
+	
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/IIndexModelAssociator.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/IIndexModelAssociator.java
new file mode 100644
index 0000000..e166067
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/IIndexModelAssociator.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelAssociations;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IIndexModelAssociator.
+ */
+public interface IIndexModelAssociator extends IJvmModelAssociations {
+
+	/**
+	 * If a semantic element like an LDto will generate different jvmTypes like
+	 * Dto and DtoMapper, this allows to register the sourceElement and the
+	 * jvmElement by a given selector.
+	 *
+	 * @param sourceElement
+	 *            the source element
+	 * @param jvmElement
+	 *            the jvm element
+	 * @param selector
+	 *            the selector
+	 */
+	void associateBySelector(EObject sourceElement, JvmGenericType jvmElement,
+			String selector);
+
+	/**
+	 * This method returns the registered jvmType by its source element and the
+	 * given selector. See
+	 * {@link #associateBySelector(EObject, JvmGenericType, String)}.
+	 *
+	 * @param sourceElement
+	 *            the source element
+	 * @param selector
+	 *            the selector
+	 * @return the by selector
+	 */
+	JvmGenericType getBySelector(EObject sourceElement, String selector);
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/ISemanticLoadingResource.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/ISemanticLoadingResource.java
new file mode 100644
index 0000000..f97bc9e
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/ISemanticLoadingResource.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+ 
+/**
+ * This kind of resource allows to load the semantic element without installing
+ * derived state.
+ */
+public interface ISemanticLoadingResource extends Resource {
+
+	/**
+	 * Disables the feature, that installing the derived state in an inferrer may
+	 * install another derived state for a referenced semantic element.
+	 */
+	public static final String SYS_PROPERTY__DERIVED_STATE_CHAIN_DISALLOWED = "org.eclipse.osbp.dsl.xtext.lazyresolver.DerivedStateChainDisallowed";
+
+	/**
+	 * Returns the semantic element for the given fragment without installing
+	 * the derived state.
+	 *
+	 * @param fragment
+	 *            the fragment
+	 * @return the semantic element
+	 */
+	EObject getSemanticElement(String fragment);
+
+	/**
+	 * Returns the root semantic element for the given fragment without
+	 * installing the derived state.
+	 *
+	 * @return the semantic element
+	 */
+	EObject getSemanticElement();
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/hook/IGeneratorDelegate.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/hook/IGeneratorDelegate.java
new file mode 100644
index 0000000..cc1cac1
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/hook/IGeneratorDelegate.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.generator.OutputConfiguration;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IGeneratorDelegate.
+ */
+public interface IGeneratorDelegate {
+
+	/**
+	 * Returns a set of output configurations that should be registered with the
+	 * grammar. Must NEVER return <code>null</code>.
+	 *
+	 * @return the output configurations
+	 */
+	Set<OutputConfiguration> getOutputConfigurations();
+
+	/**
+	 * Delegates can implement their own generator that will be called during
+	 * the main generation.
+	 *
+	 * @param input
+	 *            the input
+	 * @param fsa
+	 *            the fsa
+	 */
+	void generate(Resource input, IFileSystemAccess fsa);
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/hook/IInferrerDelegate.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/hook/IInferrerDelegate.java
new file mode 100644
index 0000000..8206593
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/hook/IInferrerDelegate.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IInferrerDelegate.
+ */
+public interface IInferrerDelegate {
+
+	/**
+	 * Infers only the JvmTypes.
+	 * <p>
+	 * The type must become marked as to be derived later by following code:<br>
+	 * <code>jvmType.markAsToBeDerivedLater(semanticElement, isPrelinkingPhase)</code>
+	 * . See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.
+	 * EntityGrammarJvmModelInferrer #inferTypesOnly.
+	 *
+	 * @param semanticElement
+	 *            the semantic element
+	 * @param acceptor
+	 *            the acceptor
+	 * @param preIndexingPhase
+	 *            the pre indexing phase
+	 */
+	void inferTypesOnly(EObject semanticElement,
+			final IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase);
+
+	/**
+	 * Is called to install the complete derived state on the given jvmType
+	 * using the information from the given semanticElement.
+	 * <p>
+	 * The type must become marked as "derived" by following code:<br>
+	 * <code>jvmType.markAsDerived</code>. See
+	 * org.eclipse.osbp.dsl.entity.xtext.jvmmodel
+	 * .EntityGrammarJvmModelInferrer#inferForLater.
+	 *
+	 * @param jvmType
+	 *            the jvm type
+	 * @param semanticElement
+	 *            the semantic element
+	 * @param acceptor
+	 *            the acceptor
+	 * @param preIndexingPhase
+	 *            the pre indexing phase
+	 * @param selector
+	 *            the selector
+	 */
+	void inferFullState(JvmDeclaredType jvmType, EObject semanticElement,
+			IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase,
+			String selector);
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/logger/TimeLogger.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/logger/TimeLogger.java
new file mode 100644
index 0000000..d56a00f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.api/src/org/eclipse/osbp/dsl/xtext/lazyresolver/api/logger/TimeLogger.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger;
+
+import java.util.Date;
+
+import org.slf4j.Logger;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class TimeLogger.
+ */
+public class TimeLogger {
+
+	/** The clazz. */
+	private final Class<?> clazz;
+	
+	/** The start. */
+	private final long start;
+
+	/**
+	 * Start.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 * @return the time logger
+	 */
+	public static TimeLogger start(Class<?> clazz) {
+		return new TimeLogger(clazz);
+	}
+
+	/**
+	 * Instantiates a new time logger.
+	 *
+	 * @param clazz
+	 *            the clazz
+	 */
+	private TimeLogger(Class<?> clazz) {
+		this.clazz = clazz;
+		start = new Date().getTime();
+	}
+
+	/**
+	 * Stop.
+	 *
+	 * @param logger
+	 *            the logger
+	 * @param message
+	 *            the message
+	 */
+	public void stop(Logger logger, String message) {
+		long stop = new Date().getTime();
+//		logger.debug((stop - start)
+//				+ "ms : " + message);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/.project b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/.project
new file mode 100644
index 0000000..19bb290
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.xtext.lazyresolver.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/LICENSE.txt b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.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.dsl.xtext.lazyresolver.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0d808c0
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.xtext.lazyresolver.ui
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.xtext.lazyresolver.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="2.10.0",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)"
+Export-Package: org.eclipse.osbp.dsl.xtext.lazyresolver.ui;
+  uses:="org.eclipse.xtext.ui.editor.model,
+   org.eclipse.swt.graphics,
+   org.eclipse.xtext.ui.editor.outline.impl,
+   org.eclipse.xtext.util.concurrent";version="0.9.0"
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/about.html b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.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.dsl.xtext.lazyresolver.ui/about.ini b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.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.dsl.xtext.lazyresolver.ui/about.mappings b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.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.dsl.xtext.lazyresolver.ui/about.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/about.properties
new file mode 100644
index 0000000..d57cb59
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.xtext.lazyresolver.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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/build.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/build.properties
new file mode 100644
index 0000000..0fb94f4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/build.properties
@@ -0,0 +1,6 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/epl-v10.html b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.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.dsl.xtext.lazyresolver.ui/license.html b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.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.dsl.xtext.lazyresolver.ui/plugin.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/pom.xml b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/pom.xml
new file mode 100644
index 0000000..ccf2d25
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.xtext.lazyresolver.ui</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<description>This bundle contains a builder participant. It will setup the Xtext types model and exposes a service IJvmTypeMetadataService. 
+
+Using the method "JvmType getJvmType(String qualifiedName)" the JvmType for the given name will be returned. All bundles in the BundleSpace will be scanned for a matching class.</description>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/src/org/eclipse/osbp/dsl/xtext/lazyresolver/ui/FastDocumentRootNode.java b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/src/org/eclipse/osbp/dsl/xtext/lazyresolver/ui/FastDocumentRootNode.java
new file mode 100644
index 0000000..82ba673
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver.ui/src/org/eclipse/osbp/dsl/xtext/lazyresolver/ui/FastDocumentRootNode.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.ui;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.model.IXtextDocument;
+import org.eclipse.xtext.ui.editor.outline.impl.DocumentRootNode;
+import org.eclipse.xtext.ui.editor.outline.impl.IOutlineTreeStructureProvider;
+import org.eclipse.xtext.util.concurrent.IUnitOfWork;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.ISemanticLoadingResource;
+
+/**
+ * This implementation ensures, that the editor is opened immediately. Further
+ * calculations like "installing derived state" is processed in background.<br>
+ * So it may happen, that tooltips about the JvmTypes will be available only a
+ * few seconds later. And please note: The derived states will only be
+ * installed, if the cursor is positioned in the editor.
+ */
+public class FastDocumentRootNode extends DocumentRootNode {
+	public FastDocumentRootNode(Image image, Object text,
+			IXtextDocument document, IOutlineTreeStructureProvider treeProvider) {
+		super(image, text, document, treeProvider);
+	}
+
+	@Override
+	public <T> T readOnly(final IUnitOfWork<T, EObject> work) {
+		return getDocument().readOnly(new IUnitOfWork<T, XtextResource>() {
+			public T exec(XtextResource resource) throws Exception {
+				ISemanticLoadingResource semanticLoadingResource = (ISemanticLoadingResource) resource;
+				if (semanticLoadingResource == null) {
+					return null;
+				}
+				EObject semanticElement = semanticLoadingResource
+						.getSemanticElement();
+				if (resource != null && semanticElement != null) { // NOSONAR
+					work.exec(semanticElement);
+				}
+				return null;
+			}
+		});
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/.project b/org.eclipse.osbp.dsl.xtext.lazyresolver/.project
new file mode 100644
index 0000000..d5c4110
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.dsl.xtext.lazyresolver</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/LICENSE.txt b/org.eclipse.osbp.dsl.xtext.lazyresolver/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/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.dsl.xtext.lazyresolver/META-INF/MANIFEST.MF b/org.eclipse.osbp.dsl.xtext.lazyresolver/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..3705552
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/META-INF/MANIFEST.MF
@@ -0,0 +1,61 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.dsl.xtext.lazyresolver
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.dsl.xtext.lazyresolver;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.emf.ecore;bundle-version="2.10.0",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.core.runtime;bundle-version="3.10.0"
+Export-Package: org.eclipse.osbp.dsl.xtext.lazyresolver;
+  uses:="org.eclipse.emf.ecore.resource,
+   org.eclipse.osbp.dsl.xtext.lazyresolver.api,
+   org.eclipse.emf.common.util,
+   org.eclipse.xtext.common.types,
+   org.eclipse.emf.ecore.resource.impl,
+   org.eclipse.xtext.xbase.linking,
+   org.slf4j,
+   org.eclipse.xtext.linking,
+   org.eclipse.xtext.xbase.resource,
+   org.eclipse.xtext.linking.impl,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.util,
+   org.eclipse.xtext.resource,
+   org.eclipse.xtext.xbase.jvmmodel,
+   org.eclipse.xtext.nodemodel,
+   com.google.inject";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.generator;
+  uses:="org.eclipse.emf.ecore.resource,
+   org.eclipse.xtext.xbase.compiler,
+   org.eclipse.xtext.generator";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.hook;
+  uses:="org.eclipse.emf.ecore.resource,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.generator,
+   org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook,
+   org.eclipse.xtext.xbase.jvmmodel,
+   org.eclipse.xtext.common.types";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.linker;
+  uses:="org.eclipse.osbp.dsl.xtext.lazyresolver,
+   org.eclipse.xtext.linking.impl,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.serializer.sequencer,
+   org.eclipse.xtext.nodemodel";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.scoping;
+  uses:="org.eclipse.osbp.dsl.xtext.lazyresolver,
+   org.eclipse.emf.ecore.resource,
+   org.eclipse.emf.ecore,
+   org.eclipse.xtext.scoping,
+   org.eclipse.xtext.naming,
+   org.eclipse.xtext.resource,
+   org.eclipse.xtext.scoping.impl";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.lazyresolver.validation;
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.emf.common.notify.impl,
+   org.eclipse.xtext.xbase.validation,
+   org.eclipse.xtext.common.types";version="0.9.0"
+Import-Package: org.slf4j;version="1.7.2"
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/about.html b/org.eclipse.osbp.dsl.xtext.lazyresolver/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/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.dsl.xtext.lazyresolver/about.ini b/org.eclipse.osbp.dsl.xtext.lazyresolver/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/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.dsl.xtext.lazyresolver/about.mappings b/org.eclipse.osbp.dsl.xtext.lazyresolver/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/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.dsl.xtext.lazyresolver/about.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver/about.properties
new file mode 100644
index 0000000..21d83df
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.dsl.xtext.lazyresolver
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/build.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver/build.properties
new file mode 100644
index 0000000..b70f730
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/build.properties
@@ -0,0 +1,9 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               .classpath,\
+               .project,\
+               LICENSE.txt
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/epl-v10.html b/org.eclipse.osbp.dsl.xtext.lazyresolver/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/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.dsl.xtext.lazyresolver/license.html b/org.eclipse.osbp.dsl.xtext.lazyresolver/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/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.dsl.xtext.lazyresolver/plugin.properties b/org.eclipse.osbp.dsl.xtext.lazyresolver/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/pom.xml b/org.eclipse.osbp.dsl.xtext.lazyresolver/pom.xml
new file mode 100644
index 0000000..3019faa
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/pom.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+	<artifactId>org.eclipse.osbp.dsl.xtext.lazyresolver</artifactId>
+	<packaging>eclipse-plugin</packaging>
+	<description>This bundle contains a builder participant. It will setup the Xtext types model and exposes a service IJvmTypeMetadataService. 
+
+Using the method "JvmType getJvmType(String qualifiedName)" the JvmType for the given name will be returned. All bundles in the BundleSpace will be scanned for a matching class.</description>
+
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+	</build>
+</project>
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexDerivedStateComputer.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexDerivedStateComputer.java
new file mode 100644
index 0000000..702d0a6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexDerivedStateComputer.java
@@ -0,0 +1,210 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver;
+
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.Constants;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmGenericType;
+import org.eclipse.xtext.resource.DerivedStateAwareResource;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.util.internal.Stopwatches;
+import org.eclipse.xtext.util.internal.Stopwatches.StoppedTask;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator;
+import org.eclipse.xtext.xbase.jvmmodel.JvmModelCompleter;
+import org.eclipse.xtext.xbase.lib.Pair;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
+import org.eclipse.xtext.xbase.typesystem.util.Maps2;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.DerivedRootAdapter;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexDerivedStateComputer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexModelAssociator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.name.Named;
+
+@SuppressWarnings("restriction")
+public class IndexDerivedStateComputer extends JvmModelAssociator implements
+		IIndexDerivedStateComputer, IIndexModelAssociator {
+
+	private final static Logger LOGGER = LoggerFactory
+			.getLogger(IndexDerivedStateComputer.class);
+
+	@Inject
+	@Named(Constants.LANGUAGE_NAME)
+	private String languageName;
+
+	@Inject
+	private Provider<IJvmModelInferrer> inferrerProvider;
+
+	@Inject
+	private JvmModelCompleter completer;
+
+	public void setCompleter(JvmModelCompleter completer) {
+		this.completer = completer;
+	}
+
+	/**
+	 * @since 2.8
+	 * @noreference This method is not intended to be referenced by clients
+	 */
+	public void setInferrerProvider(Provider<IJvmModelInferrer> inferrerProvider) {
+		this.inferrerProvider = inferrerProvider;
+	}
+
+	/**
+	 * Never installs the fully derived state by invoking doLater.
+	 */
+	public void installDerivedState(final DerivedStateAwareResource resource,
+			boolean preIndexingPhase) {
+		if (resource.getContents().isEmpty())
+			return;
+
+		EObject eObject = resource.getContents().get(0);
+
+		StoppedTask task = Stopwatches
+				.forTask("JVM Model inference (JvmModelAssociator.installDerivedState)");
+		task.start();
+		JvmDeclaredTypeAcceptor acceptor = new JvmDeclaredTypeAcceptor(resource);
+		try {
+			IndexModelInferrer inferrer = (IndexModelInferrer) inferrerProvider
+					.get();
+			inferrer.setContext(resource);
+			inferrer.inferTypesOnly(eObject, acceptor, preIndexingPhase);
+		} catch (RuntimeException e) {
+			// LOG.error("Error calling inferrer", e);
+		}
+		task.stop();
+	}
+
+	/**
+	 * Installs the complete derived state for the {@link EObject} at the given
+	 * index in the resource.
+	 */
+	@Override
+	public void installDerivedState(DerivedStateAwareResource resource,
+			JvmDeclaredType derivedOne, boolean preIndexingPhase) {
+		DerivedRootAdapter derivedRootAdapter = (DerivedRootAdapter) EcoreUtil
+				.getAdapter(derivedOne.eAdapters(), DerivedRootAdapter.class);
+		EObject derivedSemantic = derivedRootAdapter.getSemantic();
+
+		StoppedTask task = Stopwatches
+				.forTask("JVM Model inference (JvmModelAssociator.installDerivedState)");
+		task.start();
+		JvmDeclaredTypeAcceptor acceptor = new JvmDeclaredTypeAcceptor(resource);
+		try {
+			IndexModelInferrer inferrer = (IndexModelInferrer) inferrerProvider
+					.get();
+			inferrer.setContext(resource);
+
+			// infer the full state by the inferrer
+			inferrer.inferFullState(derivedOne, derivedSemantic, acceptor,
+					preIndexingPhase, derivedRootAdapter.getSelector());
+
+			// then delegate the inferring to all extension delegates
+			inferrer.inferFullStateByDelegates(derivedOne, derivedSemantic,
+					acceptor, preIndexingPhase,
+					derivedRootAdapter.getSelector());
+
+		} catch (RuntimeException e) {
+			// LOG.error("Error calling inferrer", e);
+			System.out.println(e);
+		}
+		if (!preIndexingPhase) {
+			for (Pair<JvmDeclaredType, Procedure1<? super JvmDeclaredType>> initializer : acceptor.later) {
+				try {
+					initializer.getValue().apply(initializer.getKey());
+				} catch (RuntimeException e) {
+					// LOG.error("Error calling inferrer", e);
+					LOGGER.error("{}", e); 
+				}
+			}
+		}
+		task.stop();
+
+		if (!preIndexingPhase) {
+			completer.complete(derivedOne);
+		}
+	}
+
+	protected ExtendedAdapter getOrInstall(Resource resource) {
+		if (!(resource instanceof XtextResource)) {
+			return new ExtendedAdapter();
+		}
+		String resourceLanguageName = ((XtextResource) resource)
+				.getLanguageName();
+		if (!languageName.equals(resourceLanguageName)) {
+			return new ExtendedAdapter();
+		}
+		Adapter adapter = (Adapter) EcoreUtil.getAdapter(resource.eAdapters(),
+				Adapter.class);
+		if (adapter == null) {
+			adapter = new ExtendedAdapter();
+			resource.eAdapters().add(adapter);
+		}
+		return (ExtendedAdapter) adapter;
+	}
+
+	protected Map<EObject, Set<Pair<String, JvmGenericType>>> selectorTypeMap(
+			Resource res) {
+		return getOrInstall(res).selectorTypeMap;
+	}
+
+	@Override
+	public void associateBySelector(EObject sourceElement,
+			JvmGenericType jvmElement, String selector) {
+		Resource resource = sourceElement.eResource();
+		Map<EObject, Set<Pair<String, JvmGenericType>>> selectorTypeMap = selectorTypeMap(resource);
+
+		Set<Pair<String, JvmGenericType>> pairs = selectorTypeMap
+				.get(sourceElement);
+		if (pairs == null) {
+			pairs = new HashSet<Pair<String, JvmGenericType>>(2);
+			selectorTypeMap.put(sourceElement, pairs);
+		}
+
+		pairs.add(Pair.of(selector, jvmElement));
+	}
+
+	@Override
+	public JvmGenericType getBySelector(EObject sourceElement, String selector) {
+		Resource resource = sourceElement.eResource();
+		Set<Pair<String, JvmGenericType>> pairs = selectorTypeMap(resource)
+				.get(sourceElement);
+		if (pairs != null) {
+			for (Pair<String, JvmGenericType> pair : pairs) {
+				if (pair.getKey().equals(selector)) {
+					return pair.getValue();
+				}
+			}
+		}
+
+		LOGGER.error("No registration found for " + selector + " : "
+				+ sourceElement);
+		return null;
+	}
+
+	protected static class ExtendedAdapter extends JvmModelAssociator.Adapter {
+		public Map<EObject, Set<Pair<String, JvmGenericType>>> selectorTypeMap = Maps2
+				.newLinkedHashMapWithExpectedSize(40);
+
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexDerivedStateHelper.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexDerivedStateHelper.java
new file mode 100644
index 0000000..39b0dd2
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexDerivedStateHelper.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.DerivedRootAdapter;
+
+public class IndexDerivedStateHelper {
+
+	/**
+	 * Marks the given type to be derived later if its index is requested.
+	 * 
+	 * @param type
+	 * @param context
+	 * @param isPrelinkingPhase
+	 */
+	public void markAsToBeDerivedLater(JvmDeclaredType type,
+			EObject context, boolean isPrelinkingPhase) {
+		markAsToBeDerivedLater(type, context, isPrelinkingPhase, "");
+	}
+
+	/**
+	 * Marks the given type to be derived later if its index is requested. The
+	 * selector is used if more then one JvmType is derived with the same
+	 * semantic element.
+	 * 
+	 * @param type
+	 * @param context
+	 * @param isPrelinkingPhase
+	 */
+	public void markAsToBeDerivedLater(JvmDeclaredType type,
+			EObject context, boolean isPrelinkingPhase, String selector) {
+		if (!isPrelinkingPhase) {
+
+			DerivedRootAdapter adapter = new DerivedRootAdapter(context,
+					selector);
+			type.eAdapters().add(adapter);
+		}
+	}
+
+	/**
+	 * Marks the given type as derived.
+	 * 
+	 * @param type
+	 */
+	public void markAsDerived(JvmDeclaredType type) {
+		DerivedRootAdapter adapter = (DerivedRootAdapter) EcoreUtil.getAdapter(
+				type.eAdapters(), DerivedRootAdapter.class);
+		if (adapter != null) {
+			type.eAdapters().remove(adapter);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexModelInferrer.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexModelInferrer.java
new file mode 100644
index 0000000..b162542
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/IndexModelInferrer.java
@@ -0,0 +1,135 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.eclipse.xtext.xbase.jvmmodel.JvmAnnotationReferenceBuilder;
+import org.eclipse.xtext.xbase.jvmmodel.JvmTypeReferenceBuilder;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.hook.ExtensionsInferrerDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+
+public class IndexModelInferrer extends AbstractModelInferrer {
+
+	protected Logger log = LoggerFactory.getLogger(IndexModelInferrer.class);
+
+	private @Inject JvmAnnotationReferenceBuilder.Factory annotationRefBuilderFactory;
+	private @Inject JvmTypeReferenceBuilder.Factory typeRefBuilderFactory;
+
+	protected @Extension JvmAnnotationReferenceBuilder _annotationTypesBuilder;
+	protected @Extension JvmTypeReferenceBuilder _typeReferenceBuilder;
+
+	@Inject
+	private ExtensionsInferrerDelegate inferrerDelegate;
+
+	@Inject
+	private IndexDerivedStateHelper helper;
+
+	/**
+	 * @noreference This method is called by the framework
+	 * @nooverride
+	 */
+	void setContext(Resource resource) {
+		_annotationTypesBuilder = annotationRefBuilderFactory.create(resource
+				.getResourceSet());
+		_typeReferenceBuilder = typeRefBuilderFactory.create(resource
+				.getResourceSet());
+	}
+
+	public void infer(EObject e,
+			final/* @NonNull */IJvmDeclaredTypeAcceptor acceptor,
+			boolean preIndexingPhase) {
+		_infer(e, acceptor, preIndexingPhase);
+	}
+
+	public void _infer(EObject e, /* @NonNull */
+			IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase) {
+		for (EObject child : e.eContents()) {
+			infer(child, acceptor, preIndexingPhase);
+		}
+	}
+
+	public void inferTypesOnly(EObject e,
+			final/* @NonNull */IJvmDeclaredTypeAcceptor acceptor,
+			boolean preIndexingPhase) {
+
+		// then iterate the contents
+		_inferTypesOnly(e, acceptor, preIndexingPhase);
+	}
+
+	public void _inferTypesOnly(EObject e, IJvmDeclaredTypeAcceptor acceptor,
+			boolean preIndexingPhase) {
+
+		// pass inferring to delegates first
+		inferTypesOnlyByDelegates(e, acceptor, preIndexingPhase);
+
+		for (EObject child : e.eContents()) {
+			inferTypesOnly(child, acceptor, preIndexingPhase);
+		}
+	}
+
+	/**
+	 * Delegates the inferTypes call to the delegates.
+	 * 
+	 * @param semanticElement
+	 * @param acceptor
+	 * @param preIndexingPhase
+	 */
+	protected void inferTypesOnlyByDelegates(EObject semanticElement,
+			IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase) {
+		inferrerDelegate.inferTypesOnly(semanticElement, acceptor,
+				preIndexingPhase);
+	}
+
+	public void inferFullState(JvmType type, EObject e,
+			IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase,
+			String selector) {
+	}
+
+	/**
+	 * Delegates the inferTypes call to the delegates.
+	 * 
+	 * @param jvmType
+	 * @param semanticElement
+	 * @param acceptor
+	 * @param preIndexingPhase
+	 * @param selector
+	 */
+	public void inferFullStateByDelegates(JvmType jvmType,
+			EObject semanticElement, IJvmDeclaredTypeAcceptor acceptor,
+			boolean preIndexingPhase, String selector) {
+		inferrerDelegate.inferFullState((JvmDeclaredType) jvmType,
+				semanticElement, acceptor, preIndexingPhase, selector);
+	}
+
+	protected void markAsToBeDerivedLater(JvmDeclaredType type,
+			EObject context, boolean isPrelinkingPhase) {
+		helper.markAsToBeDerivedLater(type, context, isPrelinkingPhase, "");
+	}
+
+	protected void markAsToBeDerivedLater(JvmDeclaredType type,
+			EObject context, boolean isPrelinkingPhase, String selector) {
+		helper.markAsToBeDerivedLater(type, context, isPrelinkingPhase,
+				selector);
+	}
+
+	protected void markAsDerived(JvmDeclaredType type) {
+		helper.markAsDerived(type);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/LazyJvmTypeLinker.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/LazyJvmTypeLinker.java
new file mode 100644
index 0000000..d504754
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/LazyJvmTypeLinker.java
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.TypesFactory;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.xbase.linking.XbaseLazyLinker;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper.IJvmTypeRefFinisher;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class LazyJvmTypeLinker extends XbaseLazyLinker {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(LazyJvmTypeLinker.class);
+
+	@Inject
+	private LazyJvmTypeLinkingHelper jvmLinkingHelper;
+
+	@Override
+	protected void clearReference(EObject obj, EReference ref) {
+		if (jvmLinkingHelper.isJvmLink((EReference) obj.eContainingFeature())) {
+			// do not clear this reference
+			return;
+		}
+
+		super.clearReference(obj, ref);
+	}
+
+	@SuppressWarnings("unchecked")
+	protected void createAndSetProxy(EObject obj, INode node, EReference eRef) {
+		if (jvmLinkingHelper.isJvmLink(eRef)) {
+			return;
+		}
+
+		EObject proxy = createProxy(obj, node, eRef);
+		if (eRef.isMany()) {
+			((InternalEList<EObject>) obj.eGet(eRef, false)).addUnique(proxy);
+		} else {
+			obj.eSet(eRef, proxy);
+		}
+
+		if (jvmLinkingHelper.needsJvmLinking(eRef)) {
+			for (EReference jvmLinkReference : jvmLinkingHelper
+					.getJvmLinkingReferences(eRef)) {
+				final JvmParameterizedTypeReference typeRef = TypesFactory.eINSTANCE
+						.createJvmParameterizedTypeReference();
+				if (eRef.isMany()) {
+					((InternalEList<EObject>) obj.eGet(jvmLinkReference, false))
+							.addUnique(typeRef);
+				} else {
+					obj.eSet(jvmLinkReference, typeRef);
+				}
+
+				final JvmType jvmProxy = (JvmType) createProxy(
+						typeRef,
+						node,
+						TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE);
+				typeRef.setType(jvmProxy);
+
+				IJvmTypeRefFinisher finisher = jvmLinkingHelper
+						.getFinisher(jvmLinkReference);
+				if (finisher != null) {
+					finisher.finish(jvmLinkReference, typeRef);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Unique name of representation.
+	 * 
+	 * @param referenceType
+	 * @param crossReferenceString
+	 * @return
+	 */
+	private String createProxyAccess(EClass referenceType,
+			String crossReferenceString) {
+		return String.format("%s.%s.%s",
+				referenceType.getEPackage().getNsURI(),
+				referenceType.getName(), crossReferenceString);
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/LazyJvmTypeLinkingHelper.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/LazyJvmTypeLinkingHelper.java
new file mode 100644
index 0000000..1efc43c
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/LazyJvmTypeLinkingHelper.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A helper class to register jvmLinkingReferences.
+ */
+public class LazyJvmTypeLinkingHelper {
+
+	/** The link mappings. */
+	private Map<EReference, Set<EReference>> linkMappings = new HashMap<EReference, Set<EReference>>();
+	
+	/** The jvm link to enhancers. */
+	private Map<EReference, IJvmLinkCrossRefStringEnhancer> jvmLinkToEnhancers = new HashMap<EReference, IJvmLinkCrossRefStringEnhancer>();
+	
+	/** The jvm link to finisher. */
+	private Map<EReference, IJvmTypeRefFinisher> jvmLinkToFinisher = new HashMap<EReference, IJvmTypeRefFinisher>();
+	
+	/** The jvm links. */
+	private Set<EReference> jvmLinks = new HashSet<EReference>();
+
+	/**
+	 * Instantiates a new lazy jvm type linking helper.
+	 */
+	public LazyJvmTypeLinkingHelper() {
+	}
+
+	/**
+	 * Registers a jvmTypeReference for a given semanticReference.
+	 *
+	 * @param semanticReference
+	 *            the semantic reference
+	 * @param jvmTypeReference
+	 *            the jvm type reference
+	 * @return the e reference
+	 */
+	public EReference register(EReference semanticReference,
+			EReference jvmTypeReference) {
+		return register(semanticReference, jvmTypeReference, null, null);
+	}
+
+	/**
+	 * Registers a jvmTypeReference for a given semanticReference.
+	 *
+	 * @param semanticReference
+	 *            the semantic reference
+	 * @param jvmTypeReference
+	 *            the jvm type reference
+	 * @param enhancer
+	 *            the enhancer
+	 * @param finisher
+	 *            the finisher
+	 * @return the e reference
+	 */
+	public EReference register(EReference semanticReference,
+			EReference jvmTypeReference,
+			IJvmLinkCrossRefStringEnhancer enhancer,
+			IJvmTypeRefFinisher finisher) {
+
+		Set<EReference> links = linkMappings.get(semanticReference);
+		if (links == null) {
+			links = new HashSet<EReference>();
+			linkMappings.put(semanticReference, links);
+		}
+		links.add(jvmTypeReference);
+		jvmLinks.add(jvmTypeReference);
+
+		if (enhancer != null) {
+			jvmLinkToEnhancers.put(jvmTypeReference, enhancer);
+		}
+
+		if (finisher != null) {
+			jvmLinkToFinisher.put(jvmTypeReference, finisher);
+		}
+
+		return jvmTypeReference;
+	}
+
+	/**
+	 * Returns true, if the semanticReference needs jvmLinking.
+	 *
+	 * @param semanticReference
+	 *            the semantic reference
+	 * @return true, if successful
+	 */
+	public boolean needsJvmLinking(EReference semanticReference) {
+		return linkMappings.containsKey(semanticReference);
+	}
+
+	/**
+	 * Returns true, if the given reference is a jvmLink.
+	 *
+	 * @param feature
+	 *            the feature
+	 * @return true, if is jvm link
+	 */
+	public boolean isJvmLink(EStructuralFeature feature) {
+		if (feature instanceof EReference) {
+			return jvmLinks.contains(feature);
+		} else {
+			return false;
+		}
+	}
+
+	/**
+	 * Returns the enhancer for the given feature.
+	 *
+	 * @param feature
+	 *            the feature
+	 * @return the enhancer
+	 */
+	public IJvmLinkCrossRefStringEnhancer getEnhancer(EStructuralFeature feature) {
+		return jvmLinkToEnhancers.get(feature);
+	}
+
+	/**
+	 * Returns the finisher for the given feature.
+	 *
+	 * @param feature
+	 *            the feature
+	 * @return the finisher
+	 */
+	public IJvmTypeRefFinisher getFinisher(EStructuralFeature feature) {
+		return jvmLinkToFinisher.get(feature);
+	}
+
+	/**
+	 * Returns the jvmLinkingReference for the given semanticReference.
+	 *
+	 * @param semanticReference
+	 *            the semantic reference
+	 * @return the jvm linking references
+	 */
+	public Set<EReference> getJvmLinkingReferences(EReference semanticReference) {
+		return linkMappings.get(semanticReference);
+	}
+
+	/**
+	 * The JvmLinks are a helper construct to provide proper proxies. But in
+	 * some cases the cross reference String that is used for scoping needs to
+	 * be enhanced. For instance if a DTO mapper is queried. The naming
+	 * convention defines, that a mapper is called "{DTO-FQN}Mapper". So the
+	 * jvmLink-proxy from LDto#mapperJvmType needs to become resolved with the
+	 * name of the mapper.
+	 */
+	public interface IJvmLinkCrossRefStringEnhancer {
+
+		/**
+		 * Returns the crossRefString to be used.
+		 * <p>
+		 * Example: given "ItemDTO" and returned "ItemDTOMapper".
+		 *
+		 * @param context
+		 *            the context
+		 * @param feature
+		 *            the feature
+		 * @param crossRefString
+		 *            the cross ref string
+		 * @return the string
+		 */
+		String enhance(EObject context, EStructuralFeature feature,
+				String crossRefString);
+
+	}
+
+	/**
+	 * The JvmHelperProxies will be validated by Xbase. So it is necessary to
+	 * add type arguments to raw types. This finisher gives access to the
+	 * created {@link JvmTypeReference}.
+	 */
+	public interface IJvmTypeRefFinisher {
+
+		/**
+		 * Allows to manipulate the created type reference.
+		 *
+		 * @param jvmLinkFeature
+		 *            the jvm link feature
+		 * @param typeRef
+		 *            the type ref
+		 */
+		void finish(EStructuralFeature jvmLinkFeature, JvmTypeReference typeRef);
+
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/SemanticLoadingResource.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/SemanticLoadingResource.java
new file mode 100644
index 0000000..cd3bf5d
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/SemanticLoadingResource.java
@@ -0,0 +1,360 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.ListIterator;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider;
+import org.eclipse.xtext.linking.ILinkingDiagnosticMessageProvider.ILinkingDiagnosticContext;
+import org.eclipse.xtext.linking.impl.LinkingHelper;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.resource.IDerivedStateComputer;
+import org.eclipse.xtext.resource.SaveOptions;
+import org.eclipse.xtext.util.Triple;
+import org.eclipse.xtext.xbase.resource.BatchLinkableResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper.IJvmLinkCrossRefStringEnhancer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.DerivedRootAdapter;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.IIndexDerivedStateComputer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.ISemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+@SuppressWarnings("restriction")
+public class SemanticLoadingResource extends BatchLinkableResource implements
+		ISemanticLoadingResource {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(SemanticLoadingResource.class);
+
+	@Inject
+	private LazyJvmTypeLinkingHelper jvmProxyLinkingHelper;
+
+	@Inject
+	private IDerivedStateComputer derivedStateComputer;
+
+	private boolean suppressDerivedState;
+
+	public SemanticLoadingResource() {
+
+	}
+
+	@Override
+	public EObject getSemanticElement(String fragment) {
+		try {
+			suppressDerivedState = true;
+			return super.getEObject(fragment);
+		} finally {
+			suppressDerivedState = false;
+		}
+	}
+
+	@Override
+	public EObject getSemanticElement() {
+		try {
+			suppressDerivedState = true;
+			return getContents().get(0);
+		} finally {
+			suppressDerivedState = false;
+		}
+	}
+
+	protected void resolveLazyCrossReference(InternalEObject source,
+			EStructuralFeature crossRef) {
+		if (isPotentialLazyCrossReference(crossRef)
+				&& !isJvmHelperLink(source, crossRef)) {
+			doResolveLazyCrossReference(source, crossRef);
+		}
+	}
+
+	protected boolean isJvmHelperLink(InternalEObject source,
+			EStructuralFeature crossRef) {
+		EStructuralFeature containingFeature = source.eContainingFeature();
+		return jvmProxyLinkingHelper.isJvmLink(containingFeature);
+	}
+
+	public void installDerivedState(boolean preIndexingPhase) {
+		if (preIndexingPhase || !suppressDerivedState) {
+
+			if (!isLoaded)
+				throw new IllegalStateException(
+						"The resource must be loaded, before installDerivedState can be called.");
+			if (!fullyInitialized && !isInitializing) {
+				try {
+					isInitializing = true;
+					if (derivedStateComputer != null)
+						derivedStateComputer.installDerivedState(this,
+								preIndexingPhase);
+					fullyInitialized = true;
+				} finally {
+					isInitializing = false;
+					getCache().clear(this);
+				}
+			}
+		}
+	}
+
+	@Override
+	public void doSave(OutputStream outputStream, Map<?, ?> options)
+			throws IOException {
+
+		if (getContents().isEmpty()) {
+			// TODO check me
+			return;
+		}
+
+		EObject semanticElement = getSemanticElement();
+		if (semanticElement == null)
+			throw new IllegalStateException(
+					"The Xtext resource must contain at least one element.");
+		SaveOptions saveOptions = SaveOptions.getOptions(options);
+		setEncodingFromOptions(options);
+		getSerializer().serialize(semanticElement,
+				new OutputStreamWriter(outputStream, getEncoding()),
+				saveOptions);
+	}
+
+	@Override
+	public EObject getEObject(String uriFragment) {
+
+		// look up the fragment cache
+		FragmentCache cache = getFragmentCache();
+		// if (cache.containsKey(uriFragment)) {
+		// LOGGER.debug("Firstlevel-Fragment-Cache-Hit for " + uriFragment);
+		// return cache.get(uriFragment);
+		// }
+
+		EObject result = null;
+		if (uriFragment.startsWith("/0")) {
+			// will access semantic model -> No need to install derived state
+			try {
+				suppressDerivedState = true;
+				result = super.getEObject(uriFragment);
+			} finally {
+				suppressDerivedState = false;
+			}
+		} else {
+			result = super.getEObject(uriFragment);
+		}
+
+		// put result to fragment cache
+		cache.put(uriFragment, result);
+
+		return result;
+	}
+
+	protected void clearInternalState() {
+		try {
+			suppressDerivedState = true;
+			super.clearInternalState();
+		} finally {
+			suppressDerivedState = false;
+		}
+	}
+
+	@SuppressWarnings("sync-override")
+	@Override
+	public EList<EObject> getContents() {
+		if (derivedStateComputer instanceof IIndexDerivedStateComputer) {
+			synchronized (getLock()) {
+				if (isLoaded && !isLoading && !isInitializing && !isUpdating
+						&& !fullyInitialized) {
+					try {
+						eSetDeliver(false);
+						installDerivedState(false);
+					} finally {
+						eSetDeliver(true);
+					}
+				}
+				return doGetMyContents();
+			}
+		} else {
+			return super.getContents();
+		}
+	}
+
+	/**
+	 * @since 2.4
+	 */
+	protected EList<EObject> doGetMyContents() {
+		if (contents == null) {
+			contents = new ContentsList<EObject>();
+		}
+		return contents;
+	}
+
+	protected ILinkingDiagnosticContext createDiagnosticMessageContext(
+			Triple<EObject, EReference, INode> triple) {
+		return new JvmLinkAwareDiagnosticMessageContext(triple,
+				getLinkingHelper(), jvmProxyLinkingHelper);
+	}
+
+	public FragmentCache getFragmentCache() {
+		return getCache().get("osbp-fragments", this,
+				new Provider<FragmentCache>() {
+					public FragmentCache get() {
+						return new FragmentCache();
+					}
+				});
+	}
+
+	@SuppressWarnings("serial")
+	protected class ContentsList<E extends Object & EObject> extends
+			ResourceImpl.ContentsEList<E> {
+
+		private boolean initializing;
+
+		@Override
+		public E get(int index) {
+			if (!initializing && fullyInitialized && index > 0) {
+				try {
+					initializing = true;
+					EObject context = super.get(index);
+					if (isUnDerived(context)) {
+						TimeLogger logger = TimeLogger.start(getClass());
+						IndexDerivedStateComputer computer = (IndexDerivedStateComputer) derivedStateComputer;
+						computer.installDerivedState(
+								SemanticLoadingResource.this,
+								(JvmDeclaredType) context, false);
+						logger.stop(LOGGER, "Inferring index " + index
+								+ " for resource " + getURI() + " took");
+					}
+				} finally {
+					initializing = false;
+				}
+			} else if (initializing && fullyInitialized && index > 0) {
+				if (isDerivedStateChainAllowed()) {
+					EObject context = super.get(index);
+					if (isUnDerived(context)) {
+						TimeLogger logger = TimeLogger.start(getClass());
+						IndexDerivedStateComputer computer = (IndexDerivedStateComputer) derivedStateComputer;
+						computer.installDerivedState(
+								SemanticLoadingResource.this,
+								(JvmDeclaredType) context, false);
+						logger.stop(LOGGER, "Inferring index " + index
+								+ " for resource " + getURI() + " took");
+					}
+				} else {
+					LOGGER.error(String
+							.format("Index %s should be inferred. But another inferring is already active. Ensure you use the xyzJvm proxies in jvmInferrer. See LazyJvmTypeLinkingHelper. To allow this issue, remove -D%s in vm-arguments.",
+									Integer.toString(index),
+									SYS_PROPERTY__DERIVED_STATE_CHAIN_DISALLOWED));
+					throw new IllegalStateException(
+							String.format(
+									"Index %s should be inferred. But another inferring is already active. Ensure you use the xyzJvm proxies in jvmInferrer. See LazyJvmTypeLinkingHelper. To allow this issue, remove -D%s in vm-arguments.",
+									Integer.toString(index),
+									SYS_PROPERTY__DERIVED_STATE_CHAIN_DISALLOWED));
+				}
+			}
+			return super.size() > index ? super.get(index) : null;
+		}
+
+		private boolean isDerivedStateChainAllowed() {
+			return System
+					.getProperty(SYS_PROPERTY__DERIVED_STATE_CHAIN_DISALLOWED) == null;
+		}
+
+		private boolean isUnDerived(EObject context) {
+			return EcoreUtil.getAdapter(context.eAdapters(),
+					DerivedRootAdapter.class) != null;
+		}
+
+		@Override
+		public Iterator<E> iterator() {
+			return super.iterator();
+		}
+
+		@Override
+		public ListIterator<E> listIterator() {
+			return super.listIterator();
+		}
+
+		@Override
+		public ListIterator<E> listIterator(int index) {
+			return super.listIterator(index);
+		}
+	}
+
+	protected static class JvmLinkAwareDiagnosticMessageContext implements
+			ILinkingDiagnosticMessageProvider.ILinkingDiagnosticContext {
+
+		private final Triple<EObject, EReference, INode> triple;
+		private final String linkText;
+
+		protected JvmLinkAwareDiagnosticMessageContext(
+				Triple<EObject, EReference, INode> triple,
+				LinkingHelper linkingHelper,
+				LazyJvmTypeLinkingHelper crossRefStringHelper) {
+			this.triple = triple;
+			this.linkText = getCrossRefString(triple, linkingHelper,
+					crossRefStringHelper);
+		}
+
+		private String getCrossRefString(
+				Triple<EObject, EReference, INode> triple,
+				LinkingHelper linkingHelper,
+				LazyJvmTypeLinkingHelper crossRefStringHelper) {
+			String result = linkingHelper.getCrossRefNodeAsString(
+					triple.getThird(), true);
+
+			EStructuralFeature containingFeature = triple.getFirst()
+					.eContainingFeature();
+			IJvmLinkCrossRefStringEnhancer enhancer = crossRefStringHelper
+					.getEnhancer(containingFeature);
+			if (enhancer != null) {
+				result = enhancer.enhance(triple.getFirst(), containingFeature,
+						result);
+			}
+
+			return result;
+		}
+
+		public EObject getContext() {
+			return triple.getFirst();
+		}
+
+		public EReference getReference() {
+			return triple.getSecond();
+		}
+
+		public String getLinkText() {
+			return linkText;
+		}
+	}
+
+	/**
+	 * A cache that caches the uriFragment with the scoped result.
+	 */
+	@SuppressWarnings("serial")
+	protected class FragmentCache extends HashMap<String, EObject> {
+
+		public FragmentCache() {
+		}
+
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/generator/DelegatingGenerator.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/generator/DelegatingGenerator.java
new file mode 100644
index 0000000..5f67959
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/generator/DelegatingGenerator.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.generator;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.xbase.compiler.JvmModelGenerator;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.hook.ExtensionsGeneratorDelegate;
+
+import com.google.inject.Inject;
+
+/**
+ * Delegates generator calls to extensions.
+ */
+@SuppressWarnings("restriction")
+public class DelegatingGenerator extends JvmModelGenerator {
+
+	private @Inject ExtensionsGeneratorDelegate generatorDelegate;
+
+	public void doGenerate(Resource input, IFileSystemAccess fsa) {
+		super.doGenerate(input, fsa);
+
+		generatorDelegate.generate(input, fsa);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/generator/DelegatingOutputConfigurationProvider.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/generator/DelegatingOutputConfigurationProvider.java
new file mode 100644
index 0000000..19a5575
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/generator/DelegatingOutputConfigurationProvider.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.generator;
+
+import java.util.Set;
+
+import org.eclipse.xtext.generator.OutputConfiguration;
+import org.eclipse.xtext.generator.OutputConfigurationProvider;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.hook.ExtensionsGeneratorDelegate;
+
+import com.google.inject.Inject;
+
+public class DelegatingOutputConfigurationProvider extends
+		OutputConfigurationProvider {
+
+	private @Inject ExtensionsGeneratorDelegate generatorDelegate;
+
+	/**
+	 * @return a set of {@link OutputConfiguration} available for the generator
+	 */
+	public Set<OutputConfiguration> getOutputConfigurations() {
+		Set<OutputConfiguration> configs = super.getOutputConfigurations();
+
+		configs.addAll(generatorDelegate.getOutputConfigurations());
+
+		return configs;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsGeneratorDelegate.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsGeneratorDelegate.java
new file mode 100644
index 0000000..dd2647b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsGeneratorDelegate.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.hook;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.LanguageInfo;
+import org.eclipse.xtext.generator.IFileSystemAccess;
+import org.eclipse.xtext.generator.OutputConfiguration;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook.IGeneratorDelegate;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+/**
+ * Delegates generation to registered extensions. See extensionpoint
+ * "org.eclipse.osbp.dsl.xtext.lazyresolver.generatorDelegate"
+ */
+public class ExtensionsGeneratorDelegate implements IGeneratorDelegate {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(ExtensionsGeneratorDelegate.class);
+
+	private static final String ATTR_GRAMMAR = "grammarName"; //$NON-NLS-1$
+	private static final String ATTR_INFERRERHOOK = "generatorDelegateClass"; //$NON-NLS-1$
+	private static final String INFERRER_HOOK_EXTPT = "generatorDelegate"; //$NON-NLS-1$
+
+	@Inject
+	private LanguageInfo languageInfo;
+	@Inject
+	private Injector injector;
+
+	@Override
+	public void generate(Resource input, IFileSystemAccess fsa) {
+		for (IGeneratorDelegate hook : readExtentions(languageInfo
+				.getLanguageName())) {
+			hook.generate(input, fsa);
+		}
+	}
+
+	@Override
+	public Set<OutputConfiguration> getOutputConfigurations() {
+		Set<OutputConfiguration> result = new HashSet<OutputConfiguration>();
+		for (IGeneratorDelegate hook : readExtentions(languageInfo
+				.getLanguageName())) {
+			result.addAll(hook.getOutputConfigurations());
+		}
+		return result;
+	}
+
+	/**
+	 * Extensions are being processed new for each request, since each call
+	 * needs a new instance of inferrer.
+	 * 
+	 * @param grammarName
+	 * @return
+	 */
+	private List<IGeneratorDelegate> readExtentions(String grammarName) {
+		IExtensionRegistry registry = Platform.getExtensionRegistry();
+		IExtensionPoint point = registry.getExtensionPoint(
+				"org.eclipse.osbp.dsl.xtext.lazyresolver.api", INFERRER_HOOK_EXTPT);
+		if (point == null) {
+			return Collections.emptyList();
+		}
+
+		List<IGeneratorDelegate> delegates = new ArrayList<IGeneratorDelegate>(
+				1);
+		IExtension[] extensions = point.getExtensions();
+		for (int i = 0; i < extensions.length; i++) {
+			IConfigurationElement[] elements = extensions[i]
+					.getConfigurationElements();
+			for (int j = 0; j < elements.length; j++) {
+				String _grammarName = elements[j].getAttribute(ATTR_GRAMMAR);
+				if (_grammarName != null && _grammarName.equals(grammarName)) {
+					try {
+						IGeneratorDelegate delegate = (IGeneratorDelegate) elements[j]
+								.createExecutableExtension(ATTR_INFERRERHOOK);
+						injector.injectMembers(delegate);
+						delegates.add(delegate);
+					} catch (CoreException e) {
+						LOGGER.error("{}", e);
+					}
+				}
+			}
+		}
+		return delegates;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsInferrerDelegate.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsInferrerDelegate.java
new file mode 100644
index 0000000..b328572
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsInferrerDelegate.java
@@ -0,0 +1,110 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ * 		Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.hook;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.hook.IInferrerDelegate;
+import org.eclipse.xtext.LanguageInfo;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Injector;
+
+/**
+ * Delegates inferring to registered extensions. See extensionpoint
+ * "org.eclipse.osbp.dsl.xtext.lazyresolver.inferrerDelegate"
+ */
+public class ExtensionsInferrerDelegate implements IInferrerDelegate {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(ExtensionsInferrerDelegate.class);
+
+	private static final String ATTR_GRAMMAR = "grammarName"; //$NON-NLS-1$
+	private static final String ATTR_INFERRERHOOK = "inferrerDelegateClass"; //$NON-NLS-1$
+	private static final String INFERRER_HOOK_EXTPT = "inferrerDelegate"; //$NON-NLS-1$
+
+	@Inject
+	private LanguageInfo languageInfo;
+	@Inject
+	private Injector injector;
+
+	@Override
+	public void inferTypesOnly(EObject semanticElement,
+			IJvmDeclaredTypeAcceptor acceptor, boolean preIndexingPhase) {
+
+		for (IInferrerDelegate hook : readExtentions(languageInfo
+				.getLanguageName())) {
+			hook.inferTypesOnly(semanticElement, acceptor, preIndexingPhase);
+		}
+	}
+
+	@Override
+	public void inferFullState(JvmDeclaredType jvmType,
+			EObject semanticElement, IJvmDeclaredTypeAcceptor acceptor,
+			boolean preIndexingPhase, String selector) {
+
+		for (IInferrerDelegate hook : readExtentions(languageInfo
+				.getLanguageName())) {
+			hook.inferFullState(jvmType, semanticElement, acceptor,
+					preIndexingPhase, selector);
+		}
+	}
+
+	/**
+	 * Extensions are being processed new for each request, since each call
+	 * needs a new instance of inferrer.
+	 * 
+	 * @param grammarName
+	 * @return
+	 */
+	private List<IInferrerDelegate> readExtentions(String grammarName) {
+		IExtensionRegistry registry = Platform.getExtensionRegistry();
+		IExtensionPoint point = registry.getExtensionPoint(
+				"org.eclipse.osbp.dsl.xtext.lazyresolver.api", INFERRER_HOOK_EXTPT);
+		if (point == null) {
+			return Collections.emptyList();
+		}
+
+		List<IInferrerDelegate> delegates = new ArrayList<IInferrerDelegate>(1);
+		IExtension[] extensions = point.getExtensions();
+		for (int i = 0; i < extensions.length; i++) {
+			IConfigurationElement[] elements = extensions[i]
+					.getConfigurationElements();
+			for (int j = 0; j < elements.length; j++) {
+				String _grammarName = elements[j].getAttribute(ATTR_GRAMMAR);
+				if (_grammarName != null && _grammarName.equals(grammarName)) {
+					try {
+						IInferrerDelegate delegate = (IInferrerDelegate) elements[j]
+								.createExecutableExtension(ATTR_INFERRERHOOK);
+						injector.injectMembers(delegate);
+						delegates.add(delegate);
+					} catch (CoreException e) {
+						LOGGER.error("{}", e);
+					}
+				}
+			}
+		}
+		return delegates;
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsRuntimeModulesProvider.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsRuntimeModulesProvider.java
new file mode 100644
index 0000000..1407ae6
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/hook/ExtensionsRuntimeModulesProvider.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.hook;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.xtext.util.Modules2;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Module;
+
+/**
+ * Delegates generation to registered extensions. See extensionpoint
+ * "org.eclipse.osbp.dsl.xtext.lazyresolver.generatorDelegate"
+ */
+public class ExtensionsRuntimeModulesProvider {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(ExtensionsRuntimeModulesProvider.class);
+
+	private static final String ATTR_NAME = "runtimeModulesProvider"; //$NON-NLS-1$
+	private static final String ATTR_GRAMMAR = "grammarName"; //$NON-NLS-1$
+	private static final String ATTR_PRIO = "prio"; //$NON-NLS-1$
+	private static final String ATTR_CLASS = "module"; //$NON-NLS-1$
+
+	/**
+	 * The instance. Using a singleton since extensions may only be available at
+	 * platformlevel once.
+	 */
+	private static final ExtensionsRuntimeModulesProvider INSTANCE = new ExtensionsRuntimeModulesProvider();
+
+	/**
+	 * Returns the instance of the extension runtime modules provider.
+	 * 
+	 * @return the instance
+	 */
+	public static ExtensionsRuntimeModulesProvider getInstance() {
+		return INSTANCE;
+	}
+
+	/**
+	 * Returns a mixin of all provided modules. If no modules have been
+	 * provided, <code>null</code> is returned.
+	 * 
+	 * @param grammarName
+	 * @return
+	 */
+	public Module get(String grammarName) {
+		List<Module> modules = readExtentions(grammarName);
+		if (!modules.isEmpty()) {
+			return Modules2.mixin(modules.toArray(new Module[modules.size()]));
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Extensions are being processed new for each request, since each call
+	 * needs a new instance of inferrer.
+	 * 
+	 * @param grammarName
+	 * @return
+	 */
+	private List<Module> readExtentions(String grammarName) {
+		IExtensionRegistry registry = Platform.getExtensionRegistry();
+		IExtensionPoint point = registry.getExtensionPoint(
+				"org.eclipse.osbp.dsl.xtext.lazyresolver.api", ATTR_NAME);
+		if (point == null) {
+			return Collections.emptyList();
+		}
+
+		// filter extensions
+		List<IConfigurationElement> temp = new ArrayList<IConfigurationElement>();
+		IExtension[] extensions = point.getExtensions();
+		for (int i = 0; i < extensions.length; i++) {
+			IConfigurationElement[] elements = extensions[i]
+					.getConfigurationElements();
+			for (int j = 0; j < elements.length; j++) {
+				String _grammarName = elements[j].getAttribute(ATTR_GRAMMAR);
+				if (_grammarName != null && _grammarName.equals(grammarName)) {
+
+					temp.add(elements[j]);
+
+				}
+			}
+		}
+
+		// sort the elements
+		Collections.sort(temp, new Comparator<IConfigurationElement>() {
+			@Override
+			public int compare(IConfigurationElement o1,
+					IConfigurationElement o2) {
+				return o1.getAttribute(ATTR_PRIO).compareTo(
+						o2.getAttribute(ATTR_PRIO));
+			}
+		});
+
+		// create instances
+		List<Module> delegates = new ArrayList<Module>(1);
+		for (IConfigurationElement element : temp) {
+			try {
+				Module delegate = (Module) element
+						.createExecutableExtension(ATTR_CLASS);
+				delegates.add(delegate);
+			} catch (CoreException e) {
+				LOGGER.error("{}", e);
+			}
+		}
+
+		return delegates;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/linker/FastLinkingService.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/linker/FastLinkingService.java
new file mode 100644
index 0000000..42b625b
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/linker/FastLinkingService.java
@@ -0,0 +1,115 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.linker;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.xtext.linking.impl.DefaultLinkingService;
+import org.eclipse.xtext.linking.impl.IllegalNodeException;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.nodemodel.INode;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.IScopeProvider;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper.IJvmLinkCrossRefStringEnhancer;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.logger.TimeLogger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Inject;
+
+public class FastLinkingService extends DefaultLinkingService {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(FastLinkingService.class);
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Inject
+	private LazyJvmTypeLinkingHelper jvmTypeLinkingHelper;
+
+	/**
+	 * @return the first element returned from the injected
+	 *         {@link IScopeProvider} which matches the text of the passed
+	 *         {@link INode node}
+	 */
+	public List<EObject> getLinkedObjects(EObject context, EReference ref,
+			INode node) throws IllegalNodeException {
+		final EClass requiredType = ref.getEReferenceType();
+		if (requiredType == null)
+			return Collections.<EObject> emptyList();
+
+		String crossRefString = getCrossRefNodeAsString(node);
+		if (crossRefString != null && !crossRefString.equals("")) {
+
+			// enhance the cross reference string before scoping
+			try {
+				EStructuralFeature containingFeature = context
+						.eContainingFeature();
+				if (jvmTypeLinkingHelper.isJvmLink(containingFeature)) {
+					IJvmLinkCrossRefStringEnhancer enhancer = jvmTypeLinkingHelper
+							.getEnhancer(containingFeature);
+					if (enhancer != null) {
+						crossRefString = enhancer.enhance(context,
+								containingFeature, crossRefString);
+					}
+					if(crossRefString == null || crossRefString.equals("")){
+						crossRefString = "LUN__UNDEFINED";
+					}
+				}
+			} catch (Exception e) {
+				LOGGER.error("{}", e);
+			}
+
+//			if (LOGGER.isDebugEnabled()) {
+//				LOGGER.debug("before getLinkedObjects: node: '"
+//						+ crossRefString + "'");
+//			}
+
+//			TimeLogger createLog = TimeLogger.start(getClass());
+			final IScope scope = getScope(context, ref);
+//			createLog.stop(LOGGER, "Creating scope for " + crossRefString + " "
+//					+ toRefName(ref) + " and context " + context + " took");
+
+			QualifiedName qualifiedLinkName = qualifiedNameConverter
+					.toQualifiedName(crossRefString);
+
+//			TimeLogger doScopeLog = TimeLogger.start(getClass());
+			IEObjectDescription eObjectDescription = scope
+					.getSingleElement(qualifiedLinkName);
+//			doScopeLog.stop(LOGGER, "Executing scope for " + crossRefString
+//					+ " " + toRefName(ref) + " and context " + context
+//					+ " with result " + eObjectDescription + " took");
+
+//			if (LOGGER.isDebugEnabled()) {
+//				LOGGER.debug("after getLinkedObjects: node: '" + crossRefString
+//						+ "' result: " + eObjectDescription);
+//			}
+			if (eObjectDescription != null)
+				return Collections.singletonList(eObjectDescription
+						.getEObjectOrProxy());
+		}
+		return Collections.emptyList();
+	}
+
+	private String toRefName(EReference ref) {
+		EClass type = ref.getEReferenceType();
+		return type.getName() + "#" + ref.getName();
+	}
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/linker/LazyJvmTypeTransientValueService.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/linker/LazyJvmTypeTransientValueService.java
new file mode 100644
index 0000000..5fde138
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/linker/LazyJvmTypeTransientValueService.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.linker;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.xtext.serializer.sequencer.LegacyTransientValueService;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.LazyJvmTypeLinkingHelper;
+
+import com.google.inject.Inject;
+
+/**
+ * Ensures, that jvm links will not be serialized.
+ */
+@SuppressWarnings("restriction")
+public class LazyJvmTypeTransientValueService extends
+		LegacyTransientValueService {
+
+	@Inject
+	LazyJvmTypeLinkingHelper linkingHelper;
+
+	@Override
+	public ValueTransient isValueTransient(EObject semanticObject,
+			EStructuralFeature feature) {
+		if (linkingHelper.isJvmLink(feature)) {
+			// JvmHelperLinks must not be serialized
+			return ValueTransient.YES;
+		}
+
+		return super.isValueTransient(semanticObject, feature);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/scoping/CachingTypeScope.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/scoping/CachingTypeScope.java
new file mode 100644
index 0000000..a2713a8
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/scoping/CachingTypeScope.java
@@ -0,0 +1,73 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.xtext.lazyresolver.scoping;
+
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.impl.AbstractScope;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.Maps;
+
+public class CachingTypeScope extends AbstractScope {
+
+	private static final Logger LOGGER = LoggerFactory
+			.getLogger(CachingTypeScope.class);
+
+	private final Map<QualifiedName, IEObjectDescription> cache;
+	private String cacheId;
+
+	public CachingTypeScope(String cacheId, IScope parent) {
+		super(parent, false);
+		this.cacheId = cacheId;
+		this.cache = Maps.newHashMapWithExpectedSize(50);
+	}
+
+	@Override
+	public IEObjectDescription getSingleElement(QualifiedName name) {
+		IEObjectDescription cached = cache.get(name);
+		if (cached == null) {
+			if (cache.containsKey(name)) {
+				return null;
+			}
+			cached = getParent().getSingleElement(name);
+			cache.put(name, cached);
+//			LOGGER.debug("Cached " + name);
+//		} else {
+//			LOGGER.debug("Cachehit for " + name + " in " + cacheId);
+		}
+
+//		LOGGER.debug(String.format("Cache %s has %s entries.", cacheId,
+//				String.valueOf(cache.size())));
+		return cached;
+	}
+
+	@Override
+	public Iterable<IEObjectDescription> getElements(QualifiedName name) {
+		IEObjectDescription element = getSingleElement(name);
+		return element == null ? Collections.<IEObjectDescription> emptyList()
+				: Collections.singletonList(element);
+	}
+
+	@Override
+	protected Iterable<IEObjectDescription> getAllLocalElements() {
+		return Collections.emptyList();
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/scoping/FastImportedNamespaceAwareLocalScopeProvider.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/scoping/FastImportedNamespaceAwareLocalScopeProvider.java
new file mode 100644
index 0000000..d3823b4
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/scoping/FastImportedNamespaceAwareLocalScopeProvider.java
@@ -0,0 +1,193 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.scoping;
+
+import static java.util.Collections.singletonList;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.EcoreUtil2;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.ISelectable;
+import org.eclipse.xtext.scoping.IScope;
+import org.eclipse.xtext.scoping.Scopes;
+import org.eclipse.xtext.scoping.impl.ImportNormalizer;
+import org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider;
+import org.eclipse.xtext.scoping.impl.MultimapBasedSelectable;
+import org.eclipse.xtext.scoping.impl.SelectableBasedScope;
+import org.eclipse.xtext.util.IResourceScopeCache;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.SemanticLoadingResource;
+import org.eclipse.osbp.dsl.xtext.lazyresolver.api.ISemanticLoadingResource;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class FastImportedNamespaceAwareLocalScopeProvider extends
+		ImportedNamespaceAwareLocalScopeProvider {
+
+	private boolean collectingParents;
+
+	@Inject
+	private IResourceScopeCache cache = IResourceScopeCache.NullImpl.INSTANCE;
+
+	protected IScope getResourceScope(Resource res, EReference reference) {
+		EObject context = null;
+		if (res instanceof ISemanticLoadingResource) {
+			context = ((ISemanticLoadingResource) res).getSemanticElement();
+		} else {
+			context = res.getContents().get(0);
+		}
+		IScope globalScope = getGlobalScope(res, reference);
+		List<ImportNormalizer> normalizers = getImplicitImports(isIgnoreCase(reference));
+		if (!normalizers.isEmpty()) {
+			globalScope = createImportScope(globalScope, normalizers, null,
+					reference.getEReferenceType(), isIgnoreCase(reference));
+		}
+		return getResourceScope(globalScope, context, reference);
+	}
+
+	protected IScope getResourceScope(final IScope parent,
+			final EObject context, final EReference reference) {
+		if (context.eResource() == null)
+			return parent;
+
+		ISelectable allDescriptions = null;
+		if (context.eResource() instanceof SemanticLoadingResource
+				&& !EcoreUtil2.isAssignableFrom(
+						TypesPackage.Literals.JVM_TYPE_REFERENCE,
+						reference.eClass())) {
+			// avoid derived state creation
+			allDescriptions = getSemanticDescription((SemanticLoadingResource) context
+					.eResource());
+		} else {
+			allDescriptions = getAllDescriptions(context.eResource());
+		}
+		return SelectableBasedScope.createScope(parent, allDescriptions,
+				reference.getEReferenceType(), isIgnoreCase(reference));
+	}
+
+	protected ISelectable getSemanticDescription(
+			final SemanticLoadingResource resource) {
+		return cache.get("internalGetSemanticDescription", resource,
+				new Provider<ISelectable>() {
+					public ISelectable get() {
+						return internalGetSemanticDescription(resource);
+					}
+				});
+	}
+
+	protected ISelectable internalGetSemanticDescription(
+			final SemanticLoadingResource resource) {
+		Iterable<EObject> allContents = new Iterable<EObject>() {
+			public Iterator<EObject> iterator() {
+				return EcoreUtil.getAllContents(resource.getSemanticElement(),
+						false);
+			}
+		};
+
+		Iterable<IEObjectDescription> allDescriptions = Scopes
+				.scopedElementsFor(allContents, getQualifiedNameProvider());
+		return new MultimapBasedSelectable(allDescriptions);
+	}
+
+	protected IScope getLocalElementsScope(IScope parent,
+			final EObject context, final EReference reference) {
+		IScope result = parent;
+		ISelectable allDescriptions = null;
+		if (context.eResource() instanceof SemanticLoadingResource
+				&& !EcoreUtil2.isAssignableFrom(
+						TypesPackage.Literals.JVM_TYPE_REFERENCE,
+						reference.eClass())) {
+			// avoid derived state creation
+			allDescriptions = getSemanticDescription((SemanticLoadingResource) context
+					.eResource());
+		} else {
+			allDescriptions = getAllDescriptions(context.eResource());
+		}
+
+		QualifiedName name = getQualifiedNameOfLocalElement(context);
+		boolean ignoreCase = isIgnoreCase(reference);
+		final List<ImportNormalizer> namespaceResolvers = getImportedNamespaceResolvers(
+				context, ignoreCase);
+		if (!namespaceResolvers.isEmpty()) {
+			if (isRelativeImport() && name != null) {
+				ImportNormalizer localNormalizer = doCreateImportNormalizer(
+						name, true, ignoreCase);
+				result = createImportScope(result,
+						singletonList(localNormalizer), allDescriptions,
+						reference.getEReferenceType(), isIgnoreCase(reference));
+			}
+			result = createImportScope(result, namespaceResolvers, null,
+					reference.getEReferenceType(), isIgnoreCase(reference));
+		}
+		if (name != null) {
+			ImportNormalizer localNormalizer = doCreateImportNormalizer(name,
+					true, ignoreCase);
+			result = createImportScope(result, singletonList(localNormalizer),
+					allDescriptions, reference.getEReferenceType(),
+					isIgnoreCase(reference));
+		}
+		return result;
+	}
+
+	@Override
+	public IScope getScope(final EObject context, final EReference reference) {
+		if (!collectingParents) {
+			try {
+				collectingParents = true;
+				return getCachingScope(context, reference);
+			} finally {
+				collectingParents = false;
+			}
+		} else {
+			return super.getScope(context, reference);
+		}
+	}
+
+	public IScope getCachingScope(final EObject context,
+			final EReference reference) {
+		final String cacheId = getCacheID(reference);
+		return cache.get(cacheId, context.eResource(), new Provider<IScope>() {
+			public IScope get() {
+				try {
+					collectingParents = true;
+					final IScope parent = getScope(context, reference);
+					return new CachingTypeScope(cacheId, parent);
+				} finally {
+					collectingParents = false;
+				}
+			}
+		});
+	}
+
+	private String getCacheID(final EReference reference) {
+		EClass eClass = reference.getEReferenceType();
+		EPackage ePkg = eClass.getEPackage();
+
+		return ePkg.getNsURI() + "-" + eClass.getName();
+	}
+
+	@Override
+	protected boolean isRelativeImport() {
+		// do not so to improve performance
+		return false;
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/validation/SuppressWarningAdapter.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/validation/SuppressWarningAdapter.java
new file mode 100644
index 0000000..bbb1036
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/validation/SuppressWarningAdapter.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.validation;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
+import org.eclipse.xtext.common.types.JvmTypeReference;
+
+/**
+ * Can be used to mark {@link JvmTypeReference} that warnings of different types
+ * will be suppressed.
+ */
+public class SuppressWarningAdapter extends AdapterImpl {
+
+	public static final String RAW_TYPE = "rawTypes";
+
+	private Set<String> types = new HashSet<String>();
+
+	public SuppressWarningAdapter(String... types) {
+		this.types.addAll(Arrays.asList(types));
+	}
+
+	@Override
+	public boolean isAdapterForType(Object type) {
+		return type == SuppressWarningAdapter.class;
+	}
+
+	/**
+	 * Returns true, if the type is suppressed.
+	 * 
+	 * @param type
+	 * @return
+	 */
+	public boolean isSuppressed(String type) {
+		return types.contains(type);
+	}
+
+}
diff --git a/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/validation/WarningAwareJvmTypeReferencesValidator.java b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/validation/WarningAwareJvmTypeReferencesValidator.java
new file mode 100644
index 0000000..86a7a41
--- /dev/null
+++ b/org.eclipse.osbp.dsl.xtext.lazyresolver/src/org/eclipse/osbp/dsl/xtext/lazyresolver/validation/WarningAwareJvmTypeReferencesValidator.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.lazyresolver.validation;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.xbase.validation.JvmTypeReferencesValidator;
+
+@SuppressWarnings("restriction")
+public class WarningAwareJvmTypeReferencesValidator extends
+		JvmTypeReferencesValidator {
+
+	@Override
+	protected void warnRawType(JvmType type,
+			JvmParameterizedTypeReference typeRef) {
+		if (!isSuppressed(SuppressWarningAdapter.RAW_TYPE, typeRef)) {
+			super.warnRawType(type, typeRef);
+		}
+	}
+
+	protected boolean isSuppressed(String warning, EObject eObject) {
+		SuppressWarningAdapter adapter = (SuppressWarningAdapter) EcoreUtil
+				.getAdapter(eObject.eAdapters(), SuppressWarningAdapter.class);
+		if (adapter != null) {
+			return adapter.isSuppressed(warning);
+		} else {
+			return false;
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/.project b/org.eclipse.osbp.xtext.basic.ui/.project
new file mode 100644
index 0000000..a6ad821
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.basic.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.xtext.ui.shared.xtextNature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.basic.ui/LICENSE.txt b/org.eclipse.osbp.xtext.basic.ui/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.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.basic.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.basic.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..82f9793
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,35 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.basic.ui
+Bundle-SymbolicName: org.eclipse.osbp.xtext.basic.ui
+Bundle-Version: 0.9.0.qualifier
+Bundle-Activator: org.eclipse.osbp.xtext.basic.ui.Activator
+Bundle-Vendor: Eclipse OSBP
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Import-Package: org.eclipse.osbp.dsl.semantic.common.types;version="0.9.0",
+ org.osgi.framework;version="1.3.0"
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.ui,
+ org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.antlr.runtime,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.xtend,
+ org.eclipse.xpand,
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.compare,
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
+ org.apache.log4j;bundle-version="1.2.15",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.jdt.debug.ui,
+ org.eclipse.jdt.core;bundle-version="3.10.0",
+ org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.xtext.basic.ui;version="0.9.0",
+ org.eclipse.osbp.xtext.basic.ui.contentassist;version="0.9.0",
+ org.eclipse.osbp.xtext.basic.ui.labeling;version="0.9.0"
diff --git a/org.eclipse.osbp.xtext.basic.ui/about.html b/org.eclipse.osbp.xtext.basic.ui/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.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.basic.ui/about.ini b/org.eclipse.osbp.xtext.basic.ui/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.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.basic.ui/about.mappings b/org.eclipse.osbp.xtext.basic.ui/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.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.basic.ui/about.properties b/org.eclipse.osbp.xtext.basic.ui/about.properties
new file mode 100644
index 0000000..204a8be
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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.basic.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.basic.ui/build.properties b/org.eclipse.osbp.xtext.basic.ui/build.properties
new file mode 100644
index 0000000..5633d9d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/build.properties
@@ -0,0 +1,15 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               .classpath,\
+               .project,\
+               .settings/,\
+               license.html,\
+               LICENSE.txt,\
+               epl-v10.html,\
+               icons/
+src.includes = about.properties,  about.mappings,  about.ini,  about.html,  license.html,\
+               LICENSE.txt,\
+               epl-v10.html,\
+               icons/
diff --git a/org.eclipse.osbp.xtext.basic.ui/epl-v10.html b/org.eclipse.osbp.xtext.basic.ui/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.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.basic.ui/icons/dsl_import.png b/org.eclipse.osbp.xtext.basic.ui/icons/dsl_import.png
new file mode 100644
index 0000000..f4fdcc9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/icons/dsl_import.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.basic.ui/icons/model.png b/org.eclipse.osbp.xtext.basic.ui/icons/model.png
new file mode 100644
index 0000000..cffb857
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/icons/model.png
Binary files differ
diff --git a/org.eclipse.osbp.xtext.basic.ui/icons/package.gif b/org.eclipse.osbp.xtext.basic.ui/icons/package.gif
new file mode 100644
index 0000000..34506fb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/icons/package.gif
Binary files differ
diff --git a/org.eclipse.osbp.xtext.basic.ui/license.html b/org.eclipse.osbp.xtext.basic.ui/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.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.basic.ui/notice.html b/org.eclipse.osbp.xtext.basic.ui/notice.html
new file mode 100644
index 0000000..c3d34c3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/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.basic.ui/pom.xml b/org.eclipse.osbp.xtext.basic.ui/pom.xml
new file mode 100644
index 0000000..6dc5b8d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/pom.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) -->
+<!--# All rights reserved. This program and the accompanying materials -->
+<!--# are made available under the terms of the Eclipse Public License v1.0 -->
+<!--# which accompanies this distribution, and is available at -->
+<!--# http://www.eclipse.org/legal/epl-v10.html -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Christophe Loetz (Loetz GmbH&Co.KG) - initial API and implementation -->
+<!--#======================================================================= -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>org.eclipse.osbp.xtext.basic.ui</artifactId>
+    <packaging>eclipse-plugin</packaging>
+    <parent>
+        <groupId>org.eclipse.osbp.dsl</groupId>
+        <artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+</project>
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/Activator.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/Activator.java
new file mode 100644
index 0000000..42c1209
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/Activator.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.basic.ui;
+
+import org.eclipse.osbp.gitinfo.Loginfo;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		(new Loginfo()).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.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLDocumentationTranslator.java
new file mode 100644
index 0000000..f1a29f8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLDocumentationTranslator.java
@@ -0,0 +1,201 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.ParserRule;
+import org.eclipse.xtext.TypeRef;
+
+
+
+/**
+ * <b>For the complete to-do-list to support keyword information for DSL editors <code>org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper</code></b>
+ * <hr>
+ * support for DSL grammar keywords
+ * <hr>
+ * <ul>
+ * <li>generate a folder <code>i18n</code> with property files <code>I18N{_languages}.properties</code></li>
+ * <li>Generate {your}DSLUiTranslator:
+ * <pre>
+ * public class {your}DSLDocumentationTranslator extends BasicDSLDocumentationTranslator {
+ * 
+ *     private static {your}DSLDocumentationTranslator INSTANCE = new {your}DSLDocumentationTranslator();
+ * 
+ *     public static BasicDSLDocumentationTranslator instance() {
+ *         return INSTANCE;
+ *     }
+ * 
+ *     @Override
+ *     protected ResourceBundle getResourceBundle() {
+ *         return java.util.ResourceBundle.getBundle(GeneratorConstants.I18N_RESOURCE_FULL_BUNDLE_NAME, getLocale(), getClass().getClassLoader());
+ *     }
+ * }
+ * </pre>
+ * </li>
+ * </ul>
+ */
+public abstract class BasicDSLDocumentationTranslator {
+
+	/**
+	 * get the translator key for the class and item
+	 * @param clazz
+	 * @param item
+	 * @return translator key
+	 */
+	public static String getTranslatorKey(Object object, String item) {
+		return getTranslatorCanonicalName(object)+"."+item;
+	}
+
+	/**
+	 * get the translator key for the class and item
+	 * @param clazz
+	 * @param item
+	 * @return translator key
+	 */
+	public static String getTranslatorKey(Class<?> clazz, String item) {
+		return getTranslatorCanonicalName(clazz)+"."+item;
+	}
+
+	/**
+	 * get the translator key for the EObject
+	 * @param object
+	 * @return translator key
+	 */
+	public static String getTranslatorKey(EObject object) {
+		// --- if it's a keyword ---
+		if	(object instanceof Keyword) {
+			ParserRule parserRule = null;
+			Class<?> ruleClass = null;
+			EObject group = object.eContainer();
+			while ((group != null) && !(group instanceof ParserRule)) {
+				group = group.eContainer();
+			}
+			if	(group instanceof ParserRule) {
+				parserRule = (ParserRule) group;
+				TypeRef type = parserRule.getType();
+				EClassifier classifier = type.getClassifier();
+				ruleClass = classifier.getInstanceClass();
+			}
+			// --- the translator key is defined by the corresponding parser rule's class and the keywords value ---
+			if	(ruleClass == null) {
+				return ((Keyword)object).getValue();
+			}
+			else {
+				return getTranslatorCanonicalName(ruleClass)+"."+((Keyword)object).getValue();
+			}
+		}
+		// --- otherwise it's the EObject's class
+		else {
+			return getTranslatorCanonicalName(object);
+		}
+	}
+	
+	/**
+	 * @param object
+	 * @return get the canonical class name used for the translator key
+	 */
+	private static String getTranslatorCanonicalName(Object object) {
+		return getTranslatorCanonicalName(object.getClass());
+	}
+
+	private final static String IGNORE_IMPL_PREFIX = "Impl";
+	private final static String IGNORE_IMPL_PACKAGE = ".impl.";
+	
+	/**
+	 * <ul>
+	 * <li>Impl-prefix and impl-package part is removed</li>
+	 * <li>Inner classes are handled with "normal" package separator</li>
+	 * </ul>
+	 * @param clazz the class
+	 * @return get the canonical class name used for the translator key
+	 */
+	private static String getTranslatorCanonicalName(Class<?> clazz) {
+		String result = clazz.getCanonicalName();
+		if	(result.endsWith(IGNORE_IMPL_PREFIX)) {
+			result = result.substring(0, result.length()-IGNORE_IMPL_PREFIX.length());
+		}
+		return result.replace('$','.').replace(IGNORE_IMPL_PACKAGE,".");
+	}
+	
+	/**
+	 * one locale definition for all DSL-UI instances running in this Eclipse instance  
+	 */
+	private static Locale sLocale = Locale.getDefault();
+
+	/**
+	 * If the Eclipse instance locale should be changed, inform this translator!
+	 * @param locale
+	 */
+	public static final void setLocale(Locale locale) {
+		sLocale = locale;
+	}
+
+	protected static final Locale getLocale() {
+		return sLocale;
+	}
+	
+	/**
+	 * @return the resource bundle with the translation property files of the DSL-UI-Bundle
+	 */
+	protected abstract ResourceBundle getResourceBundle();
+
+	/**
+	 * Get the translated documentation for the EObject
+	 * @param object
+	 * @param warning true, if the information about missing translation or documentation should be shown
+	 * @return
+	 */
+	public final String getDocumentation(EObject object, boolean warning) {
+		String translatorKey = getTranslatorKey(object);
+		if	(!translatorKey.contains(".") && (object instanceof Keyword)) {
+			warning = false;
+		}
+		return getDocumentation(translatorKey, warning);
+	}
+	
+	/**
+	 * Get the translated documentation for the key
+	 * @param key
+	 * @param warning true, if the information about missing translation or documentation should be shown
+	 * @return
+	 */
+	public final String getDocumentation(String key, boolean warning) {
+		// --- if it's just a single operation, do nothing at all
+		if	(key.contains("}") || key.contains("{")) {
+			return null;
+		}
+		// --- get the translated documentation
+		try {
+			String result = getResourceBundle().getString(key);
+			if	(result.isEmpty()) {
+				System.err.println(" - empty translation or documentation: "+key);
+			}
+			return result;
+		}
+		catch (MissingResourceException mre) {
+			System.err.println("- missing translation or documentation: "+key);
+			if	(warning) {
+				return key+" - missing translation or documentation";
+			}
+			else {
+				return null;
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHover.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHover.java
new file mode 100644
index 0000000..8b3034c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHover.java
@@ -0,0 +1,121 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.Region;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.nodemodel.ILeafNode;
+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+import org.eclipse.xtext.parser.IParseResult;
+import org.eclipse.xtext.resource.XtextResource;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
+import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider.IInformationControlCreatorProvider;
+import org.eclipse.xtext.util.ITextRegion;
+import org.eclipse.xtext.util.Pair;
+import org.eclipse.xtext.util.Tuples;
+import org.eclipse.xtext.xbase.ui.hover.XbaseDispatchingEObjectTextHover;
+
+
+
+/**
+ * <b>For the complete to-do-list to support keyword information for DSL editors <code>org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper</code></b>
+ * <hr>
+ * support for DSL grammar keywords
+ * <hr>
+ * <ul>
+ * <li>Generate <code>{your}DSLEObjectHover</code>:
+ * <pre>
+ * public class {your}DSLEObjectHover extends BasicDSLEObjectHover {
+ * 
+ *     @Override
+ *     public IEObjectHoverProvider getHoverProvider() {
+ *         return {your}DSLEObjectHoverProvider.instance();
+ *     }
+ * }
+ * </pre>
+ * </li>
+ * </ul>
+ */
+@SuppressWarnings("restriction")
+public abstract class BasicDSLEObjectHover extends XbaseDispatchingEObjectTextHover {
+
+	/**
+	 * @return the hover provider of the DSL-UI-Bundle
+	 */
+	public abstract IEObjectHoverProvider getHoverProvider();
+	
+	/**
+	 * necessary to support keyword hover info
+	 * @see XbaseDispatchingEObjectTextHover#getHoverInfo(EObject,ITextViewer,IRegion)
+	 */
+	@Override
+	public final Object getHoverInfo(EObject first, ITextViewer textViewer,
+			IRegion hoverRegion) {
+		if (first instanceof Keyword) {
+			return getKeywordHoverInfo(first, textViewer, hoverRegion);
+		}
+		else {
+			return super.getHoverInfo(first, textViewer, hoverRegion);
+		}
+	}
+
+	/**
+	 * try to do the default to get the keyword hover info, otherwise special handling
+	 * @param keyword
+	 * @param textViewer
+	 * @param hoverRegion
+	 * @return the hover info for the keyword given
+	 */
+	protected Object getKeywordHoverInfo(EObject keyword, ITextViewer textViewer, IRegion hoverRegion) {
+		Object result = super.getHoverInfo(keyword, textViewer, hoverRegion);
+		// --- if no default keyword info was found ---
+		if	(result == null) {
+			// --- check if the DSL-UI-Bundle has defined a hover provider (service doesn't work here)
+			if (getHoverProvider()==null)
+				return null;
+			// --- let this provider do the work ---
+			IInformationControlCreatorProvider creatorProvider = getHoverProvider().getHoverInfo(keyword, textViewer, hoverRegion);
+			if (creatorProvider==null)
+				return null;
+			this.lastCreatorProvider = creatorProvider;
+			result = lastCreatorProvider.getInfo();
+		}
+		return result;
+	}
+
+	/**
+	 * necessary to support keyword hover info
+	 * @see XbaseDispatchingEObjectTextHover#getXtextElementAt(XtextResource,int)
+	 */
+	@Override
+	protected final Pair<EObject, IRegion> getXtextElementAt(XtextResource resource, int offset) {
+		Pair<EObject, IRegion> result = super.getXtextElementAt(resource, offset);
+		// --- if the default doesn't return any information ---
+		if	(result == null) {
+			IParseResult parseResult = resource.getParseResult();
+			if (parseResult != null) {
+				ILeafNode leafNode = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset);
+				// --- check if this leaf node is a keyword 
+				if	((leafNode != null) && (leafNode.getGrammarElement() instanceof Keyword)) {
+					ITextRegion leafRegion = leafNode.getTextRegion();
+					Keyword keyword = ((Keyword)leafNode.getGrammarElement());
+					result = Tuples.create((EObject)keyword, (IRegion) new Region(leafRegion.getOffset(), leafRegion.getLength()));
+				}
+			}
+		}
+		return result;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHoverDocumentationProvider.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHoverDocumentationProvider.java
new file mode 100644
index 0000000..b881d84
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHoverDocumentationProvider.java
@@ -0,0 +1,79 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtext.xbase.ui.hover.XbaseHoverDocumentationProvider;
+
+
+
+/**
+ * <b>For the complete to-do-list to support keyword information for DSL editors <code>org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper</code></b>
+ * <hr>
+ * support for DSL grammar keywords
+ * <hr>
+ * <ul>
+ * <li>Generate <code>{your}DSLEObjectHoverDocumentationProvider</code>:
+ * <pre>
+ * public class {your}DSLEObjectHoverDocumentationProvider extends BasicDSLEObjectHoverDocumentationProvider {
+ * 
+ *     private static {your}DSLEObjectHoverDocumentationProvider INSTANCE;
+ * 
+ *     public static {your}DSLEObjectHoverDocumentationProvider instance() {
+ *         return INSTANCE;
+ *     }
+ * 
+ *     public {your}DSLEObjectHoverDocumentationProvider() {
+ *         super();
+ *         INSTANCE = this;
+ *     }
+ * 
+ *     @Override
+ *     protected BasicDSLDocumentationTranslator getTranslator() {
+ *         return {your}DSLDocumentationTranslator.instance();
+ *     }
+ * }
+ * </pre>
+ * </li>
+ * </ul>
+ */
+@SuppressWarnings("restriction")
+public abstract class BasicDSLEObjectHoverDocumentationProvider extends XbaseHoverDocumentationProvider {
+
+	/**
+	 * @return the documentation translator of the DSL-UI-Bundle
+	 */
+	protected abstract BasicDSLDocumentationTranslator getTranslator();
+
+	/**
+	 * add additional translated documentation
+	 * @see XbaseHoverDocumentationProvider#getDocumentation(EObject)
+	 */
+	@Override
+	public String getDocumentation(EObject object) {
+		String documentation = super.getDocumentation(object);
+		if	((documentation != null) && documentation.isEmpty()) {
+			documentation = null;
+		}
+		String translated = getTranslator().getDocumentation(object, true);
+		if	(documentation == null) {
+			return translated;
+		}
+		else if (translated == null) {
+			return documentation;
+		}
+		else {
+			return documentation+"<p>"+translated+"</p>";
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHoverProvider.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHoverProvider.java
new file mode 100644
index 0000000..7d569c9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLEObjectHoverProvider.java
@@ -0,0 +1,131 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jface.internal.text.html.HTMLPrinter;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.common.types.JvmIdentifiableElement;
+import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+import org.eclipse.xtext.ui.editor.hover.html.XtextBrowserInformationControlInput;
+import org.eclipse.xtext.xbase.ui.hover.XbaseHoverProvider;
+import org.eclipse.xtext.xbase.ui.hover.XbaseInformationControlInput;
+
+
+
+/**
+ * <b>For the complete to-do-list to support keyword information for DSL editors <code>org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper</code></b>
+ * <hr>
+ * support for DSL grammar keywords
+ * <hr>
+ * <ul>
+ * <li>Generate <code>{your}DSLEObjectHoverProvider</code>:
+ * <pre>
+ * public class {your}DSLEObjectHoverProvider extends BasicDSLEObjectHoverProvider {
+ * 
+ *     private static {your}DSLEObjectHoverProvider INSTANCE;
+ * 
+ *     public static {your}DSLEObjectHoverProvider instance() {
+ *         return INSTANCE;
+ *     }
+ * 
+ *     public {your}DSLEObjectHoverProvider() {
+ *         super();
+ *         INSTANCE = this;
+ *     }
+ * 
+ *     @Override
+ *     public IEObjectHoverDocumentationProvider getDocumentationHoverProvider() {
+ *         return {your}DSLEObjectHoverDocumentationProvider.instance();
+ *     }
+ * }
+ * </pre>
+ * </li>
+ * </ul>
+ */
+@SuppressWarnings("restriction")
+public abstract class BasicDSLEObjectHoverProvider extends XbaseHoverProvider {
+
+	/**
+	 * @return the hover documentation provider of the DSL-UI-Bundle
+	 */
+	public abstract IEObjectHoverDocumentationProvider getDocumentationHoverProvider();
+
+	/**
+	 * @param o
+	 * @return true if documentation for this EObject exists
+	 */
+	private boolean hasDocumentation(EObject o) {
+		return (getDocumentationHoverProvider() != null)
+		    && (getDocumentationHoverProvider().getDocumentation(o) != null)
+		    && !getDocumentationHoverProvider().getDocumentation(o).isEmpty();
+	}
+
+	/**
+	 * necessary to support hover documentation for keywords
+	 * @see XbaseHoverProvider#hasHover(EObject)
+	 */
+	@Override
+	protected boolean hasHover(EObject o) {
+		return hasDocumentation(o) || super.hasHover(o) || (o instanceof Keyword);
+	}
+
+	/**
+	 * necessary to support hover documentation for keywords
+	 * @see XbaseHoverProvider#getDocumentation(EObject)
+	 */
+	@Override
+	protected String getDocumentation(EObject o) {
+		// --- if it's a keyword, let the documentation hover provider do the work ---
+		if	(o instanceof Keyword) {
+			return getDocumentationHoverProvider().getDocumentation(o);
+		}
+		else {
+			return super.getDocumentation(o);
+		}
+	}
+
+	/**
+	 * necessary to support hover documentation for keywords
+	 * @see XbaseHoverProvider#getHoverInfo(EObject,IRegion,XtextBrowserInformationControlInput)
+	 */
+	@Override
+	protected XtextBrowserInformationControlInput getHoverInfo(EObject element, IRegion hoverRegion,
+			XtextBrowserInformationControlInput previous) {
+		// --- if it's a keyword, do something special (without irrevelant check inside the super implementation) ---
+		if 	(element instanceof Keyword) {
+			EObject objectToView = getObjectToView(element);
+			if(objectToView == null || objectToView.eIsProxy())
+				return null;
+			String html = getHoverInfoAsHtml(element, objectToView, hoverRegion);
+			if (html != null) {
+				StringBuffer buffer = new StringBuffer(html);
+				HTMLPrinter.insertPageProlog(buffer, 0, getStyleSheet());
+				HTMLPrinter.addPageEpilog(buffer);
+				html = buffer.toString();
+				IJavaElement javaElement = null;
+				if (objectToView != element && objectToView instanceof JvmIdentifiableElement) {
+					javaElement = javaElementFinder.findElementFor((JvmIdentifiableElement) objectToView);
+				}
+				return new XbaseInformationControlInput(previous, objectToView, javaElement, html, labelProvider);
+			}
+		}
+		// --- otherwise do the default ---
+		else {
+			return super.getHoverInfo(element, hoverRegion, previous);
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLUiModuleHelper.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLUiModuleHelper.java
new file mode 100644
index 0000000..16e9e8b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/BasicDSLUiModuleHelper.java
@@ -0,0 +1,137 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui;
+
+import java.io.InputStream;
+import java.net.URL;
+
+import org.eclipse.jface.text.templates.persistence.TemplatePersistenceData;
+import org.eclipse.jface.text.templates.persistence.TemplateReaderWriter;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.slf4j.Logger;
+
+/**
+ * <ol>
+ * <li><b><u><code>{your-dsl-bundle}</code></u></b></h1>
+ * <ol>
+ * <li>Add <i><u>optional</u></i> import package <code>org.eclipse.osbp.xtext.basic.generator</code> to the MANIFEST.MF of <code>{your-dsl-bundle}</code></li>
+ * <li>Append Grammar I18n generator at the end of the MWE2 workflow
+ * <pre>
+ * // parse grammar and generate i18n grammar
+ * fragment = org.eclipse.osbp.xtext.basic.generator.BasicDslGrammarI18nGenerator auto-inject {}
+ * </pre></li>
+ * <li>run the MWE2 workflow</li>
+ * <li>import any required classes inside <code>{your-dsl-bundle}.generator.{your}DSLGenerator.createAppendable()</code> via <code>org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils.addImportFor()</code></li>
+ * </ol></li>
+ * <li><b><u><code>{your-dsl-bundle}.ui</code></u></b></h1>
+ * <ol>
+ * <li>Add required bundle <code>org.eclipse.osbp.xtext.basic.ui</code> to the MANIFEST.MF of <code>{your-dsl-bundle}.ui</code></li>
+ * <li>If not already added, add imported package <code>org.eclipse.osbp.utils.constants</code> to the MANIFEST.MF of <code>{your-dsl-bundle}.ui</code></li>
+ * <li>Generate the templates file <code>templates/templates.xml</code> to <code>{your-dsl-bundle}.ui</code></li>
+ * <li>Add the directories <code>i18n</code> <code>templates</code> to the build of <code>{your-dsl-bundle}.ui</code></li>
+ * <li>Generate a <code>{your-dsl-bundle}.ui.{your}DSLDocumentationTranslator</code> and extend it from <code>BasicDSLDocumentationTranslator</code>; see there</li>
+ * <li>Extend <code>{your-dsl-bundle}.ui.{your}DSLEObjectHover</code> from <code>BasicDSLEObjectHover</code></li>
+ * <li>Extend <code>{your-dsl-bundle}.ui.{your}DSLEObjectHoverProvider</code> from <code>BasicDSLEObjectHoverProvider</code></li>
+ * <li>Extend <code>{your-dsl-bundle}.ui.{your}DSLEObjectHoverDocumentationProvider</code> from <code>BasicDSLEObjectHoverDocumentationProvider</code></li>
+ * <li>Apply changes in <code>{your-dsl-bundle}.ui.contentassist.{your}DSLProposalProvider</code> as described in <code>BasicDSLProposalProviderHelper</code></li>
+ * <li>Extend <code>{your-dsl-bundle}.ui.labeling.{your}DSLLabelProvider</code> from <code>BasicDSLLabelProvider</code></li>
+ * <li>
+ * Modify or add the following methods to your <code>{your-dsl-bundle}.ui.{your}DSLUiModule</code>, generated the corresponding classes and extend them from the corresponding <code>BasicDSL...</code> classes:
+ * <pre>
+ * private static Logger LOGGER = LoggerFactory.getLogger({your}DslUiModule.class);
+ *
+ * public {your}DslUiModule(AbstractUIPlugin plugin) {
+ *     super(plugin);
+ *     BasicDSLUiModuleHelper.unitTestTemplates(plugin, LOGGER);
+ * }
+ *
+ * @Override
+ * public Class&lt;? extends IEObjectHover&gt; bindIEObjectHover() {
+ *     return {your}DSLEObjectHover.class;
+ * }
+ * 
+ * @Override
+ * public Class&lt;? extends IEObjectHoverProvider&gt; bindIEObjectHoverProvider() {
+ *     return {your}DSLEObjectHoverProvider.class;
+ * }
+ * 
+ * @Override
+ * public Class&lt;? extends IEObjectHoverDocumentationProvider&gt; bindIEObjectHoverDocumentationProvider() {
+ *      return {your}DSLEObjectHoverDocumentationProvider.class;
+ * }
+ * </pre>
+ * </ol></li>
+ * </li>
+ * </ol>
+ */
+public final class BasicDSLUiModuleHelper {
+	
+	protected static class UnitTestTemplateReader extends TemplateReaderWriter {
+		final Logger logger;
+		final AbstractUIPlugin plugin;
+		
+		protected UnitTestTemplateReader(AbstractUIPlugin plugin, Logger logger) {
+			this.plugin = plugin;
+			this.logger = logger;
+		}
+		
+		protected void unitTestTemplates() {
+			// org.eclipse.xtext.ui.editor.templates.XtextTemplateStore#getTemplateFileURL(AbstractUIPlugin)
+			URL res = plugin.getBundle().getEntry("templates/templates.xml");
+			if	(res == null) {
+				logger.info("'"+plugin.getClass().getSimpleName()+"': no templates available");
+			}
+			else {
+				// org.eclipse.xtext.ui.editor.templates.XtextTemplateStore#loadContributedTemplates()
+				InputStream openStream = null;
+				try {
+					openStream = res.openStream();
+					try {
+						TemplatePersistenceData[] read = read(openStream, null);
+						for (TemplatePersistenceData templatePersistenceData : read) {
+							if	(templatePersistenceData.getId() == null) {
+								logger.error("'"+plugin.getClass().getSimpleName()+"': template has no id: name='"+templatePersistenceData.getTemplate().getName()+"'");
+							}
+							else if	(templatePersistenceData.isDeleted()) {
+								logger.debug("'"+plugin.getClass().getSimpleName()+"': template is deleted: name='"+templatePersistenceData.getTemplate().getName()+"'");
+							}
+							else if	(!templatePersistenceData.isEnabled()) {
+								logger.debug("'"+plugin.getClass().getSimpleName()+"': template is disabled: name='"+templatePersistenceData.getTemplate().getName()+"'");
+							}
+						}
+					}
+					catch (Exception e) {
+						logger.error("'"+plugin.getClass().getSimpleName()+"': exception while loading templates - "+e.getLocalizedMessage());
+					}
+					finally {
+						openStream.close();
+					}
+				}
+				catch (Exception e) {
+					logger.info("'"+plugin.getClass().getSimpleName()+"': template file could not be loaded - "+e.getLocalizedMessage());
+				}
+			}
+		}
+	}
+	
+	/**
+	 * try to load any existing templates for the given DSL plugin
+	 * @see   org.eclipse.xtext.ui.editor.templates.XtextTemplateStore
+	 * @see   org.eclipse.jface.text.templates.persistence.TemplateReaderWriter
+	 * @param plugin
+	 * @param logger
+	 */
+	public static void unitTestTemplates(AbstractUIPlugin plugin, Logger logger) {
+		(new UnitTestTemplateReader(plugin, logger)).unitTestTemplates();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/contentassist/BasicDSLProposalProviderHelper.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/contentassist/BasicDSLProposalProviderHelper.java
new file mode 100644
index 0000000..3beb175
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/contentassist/BasicDSLProposalProviderHelper.java
@@ -0,0 +1,160 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui.contentassist;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.jface.viewers.StyledString;
+import org.eclipse.xtext.Assignment;
+import org.eclipse.xtext.GrammarUtil;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.RuleCall;
+import org.eclipse.xtext.ui.editor.contentassist.AbstractContentProposalProvider;
+import org.eclipse.xtext.ui.editor.contentassist.ConfigurableCompletionProposal;
+import org.eclipse.xtext.ui.editor.contentassist.ContentAssistContext;
+import org.eclipse.xtext.ui.editor.contentassist.ICompletionProposalAcceptor;
+import org.eclipse.xtext.ui.editor.contentassist.PrefixMatcher;
+import org.eclipse.xtext.util.Strings;
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
+
+/**
+ * <b>For the complete to-do-list to support keyword information for DSL editors
+ * <code>org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper</code></b>
+ * <hr>
+ * Helper needed inProposalProviders
+ * <hr>
+ * Add the following method to your <code>{your}DSLProposalProvider</code>:
+ * 
+ * <pre>
+ * override protected StyledString getKeywordDisplayString(Keyword keyword) {
+ *     return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, {your}DSLDocumentationTranslator.instance())
+ * }
+ * </pre>
+ */
+public class BasicDSLProposalProviderHelper {
+
+	/**
+	 * get a translated documentation to be displayed in a proposal dialog in
+	 * Eclipse
+	 * 
+	 * @param keyword
+	 *            the Keyword
+	 * @param translator
+	 *            the translator of the DSL-UI-Bundle
+	 * @return StyledString
+	 */
+	public static StyledString getKeywordDisplayString(Keyword keyword,
+			BasicDSLDocumentationTranslator translator) {
+		String translated = translator.getDocumentation(keyword, true);
+		if (translated == null) {
+			translated = "";
+		} else {
+			// --- if the documentation contains more than one line, use only
+			// the first line ---
+			translated = " - " + (translated.split("<br>"))[0];
+		}
+		return new StyledString(keyword.getValue() + translated);
+	}
+
+	public void complete_PackageName(EObject model, RuleCall ruleCall,
+			final ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor,
+			AbstractContentProposalProvider provider) {
+		PrefixMatcher newMatcher = new PrefixMatcher() {
+			@Override
+			public boolean isCandidateMatchingPrefix(String name, String prefix) {
+				String strippedName = name;
+				if (name.startsWith("^") && !prefix.startsWith("^")) {
+					strippedName = name.substring(1);
+				}
+				return context.getMatcher().isCandidateMatchingPrefix(
+						strippedName, prefix);
+			}
+		};
+		ContentAssistContext myContext = context.copy().setMatcher(newMatcher)
+				.toContext();
+		String feature = getAssignedFeature(ruleCall);
+		String proposalPrefix = "com.example.mypackage.";
+		String proposalText = feature != null ? feature.toLowerCase()
+				: ruleCall.getRule().getName().toLowerCase();
+		proposalText = proposalPrefix.concat(proposalText);
+		String displayText = proposalText;
+		if (feature != null)
+			displayText = proposalText + " - dot separated "
+					+ ruleCall.getRule().getName();
+		proposalText = provider.getValueConverter().toString(proposalText,
+				ruleCall.getRule().getName());
+		ICompletionProposal proposal = provider.createCompletionProposal(
+				proposalText, displayText, null, myContext);
+		configureProposal(myContext, proposalText, proposal);
+		acceptor.accept(proposal);
+	}
+
+	public String getAssignedFeature(RuleCall call) {
+		Assignment ass = GrammarUtil.containingAssignment(call);
+		if (ass != null) {
+			String result = ass.getFeature();
+			if (result.equals(result.toLowerCase()))
+				result = Strings.toFirstUpper(result);
+			return result;
+		}
+		return null;
+	}
+
+	public void createIntProposal(ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor, RuleCall ruleCall,
+			String feature, int i, String displayTextInput,
+			AbstractContentProposalProvider provider) {
+		displayTextInput = (displayTextInput != null) ? displayTextInput : "";
+		String proposalText = provider.getValueConverter().toString(i,
+				ruleCall.getRule().getName());
+		String displayText = proposalText.concat(" - ")
+				.concat(displayTextInput).concat(" ");
+		displayText = (feature != null) ? displayText.concat(" ").concat(
+				feature) : displayText.concat(" ").concat(
+				ruleCall.getRule().getName());
+		ICompletionProposal proposal = provider.createCompletionProposal(
+				proposalText, displayText, null, context);
+		configureProposal(context, proposalText, proposal);
+		acceptor.accept(proposal);
+	}
+
+	public void createNumberProposal(ContentAssistContext context,
+			ICompletionProposalAcceptor acceptor, RuleCall ruleCall,
+			AbstractContentProposalProvider provider) {
+		String proposalText = "0.0";
+		String displayTextSuffix = "";
+		String feature = getAssignedFeature(ruleCall);
+		displayTextSuffix = (feature != null) ? feature.concat(" as ").concat(
+				ruleCall.getRule().getName().toLowerCase()) : ruleCall
+				.getRule().getName().toLowerCase();
+		String displayText = proposalText.concat(" - decimal value for ")
+				.concat(displayTextSuffix);
+		ICompletionProposal proposal = provider.createCompletionProposal(
+				proposalText, displayText, null, context);
+		configureProposal(context, proposalText, proposal);
+		acceptor.accept(proposal);
+	}
+
+	private void configureProposal(ContentAssistContext context,
+			String proposalText, ICompletionProposal proposal) {
+		if (proposal instanceof ConfigurableCompletionProposal) {
+			ConfigurableCompletionProposal configurable = (ConfigurableCompletionProposal) proposal;
+			configurable.setSelectionStart(configurable.getReplacementOffset());
+			configurable.setSelectionLength(proposalText.length());
+			configurable.setAutoInsertable(false);
+			configurable.setSimpleLinkedMode(context.getViewer(), '\t', ' ');
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/labeling/BasicDSLLabelProvider.java b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/labeling/BasicDSLLabelProvider.java
new file mode 100644
index 0000000..230159d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.basic.ui/src/org/eclipse/osbp/xtext/basic/ui/labeling/BasicDSLLabelProvider.java
@@ -0,0 +1,362 @@
+/**
+ *                                                                            
+ * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ *                                                                            
+ * All rights reserved. This program and the accompanying materials           
+ * are made available under the 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.basic.ui.labeling;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.osbp.dsl.semantic.common.types.LImport;
+import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.xtext.Keyword;
+import org.eclipse.xtext.xbase.ui.labeling.XbaseLabelProvider;
+
+/**
+ * <b>For the complete to-do-list to support keyword information for DSL editors <code>org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper</code></b>
+ * <hr>
+ * support for DSL grammar keywords
+ * <hr>
+ * <ul>
+ * <li>let <code>{your}DSLLabelProvider</code> extend from <code>BasicDSLLabelProvider</code></li>
+ * </ul>
+ */
+@SuppressWarnings("restriction")
+public abstract class BasicDSLLabelProvider extends XbaseLabelProvider {
+
+	static	final	private	int		maxOutputLen	=	24;
+	static	final	private	String	abbrMark		=	" ...";
+
+	/**
+	 * Currently available outline image sizes for displaying colors:
+	 */
+	public	enum	outlineImgSize {
+		BIG		( 16, 16 ),
+		SMALL	( 12, 12 );
+
+		private final int width ;
+		private final int height;
+
+		private outlineImgSize ( int width, int height ) {
+			this.width	= width ;
+			this.height	= height;
+		}
+
+		public int getWidth () { return	width ; }
+		public int getHeight() { return	height; }
+	}
+
+	/**
+	 * enable doGetText(Object) for keywords
+	 */
+	@Override
+	protected Object doGetText(Object element) {
+		if	(element instanceof Keyword) {
+			return ((Keyword) element).getValue();
+		}
+		return super.doGetText(element);
+	}
+
+	/**
+	 * Constructor needed 
+	 * @param provider
+	 */
+	protected BasicDSLLabelProvider(AdapterFactoryLabelProvider provider) {
+		super(provider);
+		fImages = new HashMap<String,Image>();
+	}
+
+	protected Map<String,Image> fImages;
+
+	protected final Image getErrorImage() {
+		return getImage("error.gif");
+	}
+	
+	/* ********************************************************************************************** */
+	/**         Returns a reference to the image instance according to the passed image filename.
+	 * 
+	 * 			Scans the context specific subdirectory first, if specified by overridden method
+	 * 			{@code getImagePrefix()}. Falls back to common image directory if no context specific
+	 * 			image file was found.
+	 *
+	 *	@see	getImagePrefix()
+	 * 
+	 *	@param	imgFileName	Name of image file (incl. extension)
+	 *
+	 *	@return	Reference to the image instance if image file found, {@code null} otherwise.
+	 *
+	 *	@since	@D yymmdd, name
+	 *	@date	@D 150916, gu
+	 *	@date	@D 160512, ri
+	 */ /* ******************************************************************************************* */
+	protected final Image getInternalImage ( String imgFileName, Class<?> clz ) {
+		try {
+			Image image = fImages.get( imgFileName );
+			if	( image == null ) {
+				ClassLoader clzLoader = clz.getClassLoader();
+				InputStream stream = clzLoader.getResourceAsStream("icons/"+imgFileName);
+				image = new Image( null, stream);
+				fImages.put( imgFileName, image );
+			}
+			return image;
+		}
+		catch (Exception e) {
+			return null;
+		}
+	}
+
+	/* ********************************************************************************************** */
+	/**	Overloaded version with no name provided and without limiting outline text to maximum outline
+	 * 	text size.
+	 * 
+	 *	@since	150916, gu
+	 *	@date	160803, gu
+	 */ /* ******************************************************************************************* */
+	protected String generateText ( Object element, String description ) {
+		return	generateText( element, description, true );
+	}
+
+	/* ********************************************************************************************** */
+	/**	Overloaded version with no name provided and parameter {@code showFullDesc} for limiting
+	 *	outline text to maximum outline text size.
+	 * 
+	 *	@since	160803, gu
+	 *	@date	yymmdd, name
+	 */ /* ******************************************************************************************* */
+	protected String generateText ( Object element, String description, boolean showFullDesc ) {
+		return	generateText( element, description, null, showFullDesc );
+	}
+
+	/* ********************************************************************************************** */
+	/**	Overloaded version with limiting outline text to maximum outline text size.
+	 * 	@see	{@link protected String generateText( Object element, String description, String name, boolean showFullDesc )}
+	 *	@since	160803, gu
+	 *	@date	yymmdd, name
+	 */ /* ******************************************************************************************* */
+	protected String generateText ( Object element, String description, String name ) {
+		return	generateText( element, description, name, false );
+	}
+
+	/* ********************************************************************************************** */
+	/**	Common version of the method for generating an outline text for the passed element.
+	 * 
+	 * 	Appends the passed description with a hyphen (" - ") to the provided name if a name is given,
+	 * 	respectively could be found. Returns the pure {@code description} if no name is provided.
+	 * 
+	 * 	Limits description to maximum outline text size unless parameter {@code showFullDesc} is not
+	 * 	set to {@code true}.
+	 * 
+	 *	@param	element			Current outline element
+	 *	@param	description		Description to be appended to the name
+	 *	@param	name			Name of the element
+	 *	@param	showFullDesc	Don't shorten description if maximum outline text size is exceeded
+	 *
+	 *	@return	Formatted outline text if a suitable outline text could be found, return value of
+	 *			overridden superclass method otherwise.
+	 *
+	 *	@since	150916, gu
+	 *	@date	160803, gu
+	 */ /* ******************************************************************************************* */
+	protected String generateText( Object element, String description, String name, boolean showFullDesc ) {
+		String result = name;
+
+		// --- BEWARE: method getText() MUST NOT be called here, for the method to be called from class
+		// --- DeclarativeLabelProvider is method "text" (not getText), where DeclarativeLabelProvider's
+		// --- superclass AbstractLabelProvider contains a method named "getText" - which would be called
+		// --- where it mustn't (and would lead to an endless loop and further on to a stack overflow)!
+		if	( result == null )
+			result = (String) super.text( element );
+//			result = (String) super.getText( element );
+
+		//	Don' worry about null-pointer for 'result' (it will just stay null):
+		if	( !showFullDesc ) {
+			result = limitOutlineText( result );
+		}
+
+		if	( result == null ) {
+			result = description;
+		}
+
+		else if ( description != null ) {
+			result = result.concat( " - " ).concat( description );
+		}
+
+		return	result;
+	}
+
+
+	/* ********************************************************************************************** */
+	/**			Limits given text to maximum outline text size ({@value maxOutputLen}) if exceeded.
+	 * 			Indicates abbreviation by adding 3 dots, separated by space (" ...") to output text.
+	 * 			<p>
+	 * 	@note	The abbreviation marking (" ...") shortens the effective outline text.
+	 * 
+	 * @example	<code>
+	 * 			original text = "1234567890123456789012345" (length 25)<br>
+	 * 			output text   = "12345678901234567890 ..."  (length 24)
+	 * 			<p>
+	 * 			original text = "123456789012345678901234"  (length 24)<br>
+	 * 			output text   = "123456789012345678901234"  (length 24)
+	 * 			</code>
+	 * 
+	 *	@param	refString	Original outline text
+	 *
+	 *	@return	Abbreviated text if maximum size exceeded, original text otherwise.
+	 *
+	 *	@since	160803, gu
+	 *	@date	yymmdd, name
+	 */ /* ******************************************************************************************* */
+	protected String limitOutlineText ( String refString ) {
+		String  outString = refString;
+
+		//	Shorten string if maximum length exceeded:
+		if	( outString != null && outString.length() > maxOutputLen ) {
+			outString = outString.substring( 0, maxOutputLen - abbrMark.length() ).concat( abbrMark );
+		}
+
+		return	outString;
+	}
+
+	/* ********************************************************************************************** */
+	/**			Draws <b>big</b> color outline image with given color.
+	 * 
+	 *	@see	{@link BasicDSLLabelProvider.getColorOutlineImage(String,boolean)}
+	 * 
+	 *	@param	rgbString	String containing RGB value according to format "<red>,<green>,<blue>"
+	 *
+	 *	@return	Reference to generated image in case of success, null otherwise.
+	 *
+	 *	@since	@D 150929, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	public Image getColorOutlineImage ( String rgbString ) { return	getColorOutlineImage( rgbString, false ); }
+
+
+	/* ********************************************************************************************** */
+	/**			Draws color outline image with given color.
+	 * 
+	 * 			Two sizes of images can currently be provided according to enumeration {@code outlineImgSize}:
+	 * 			big: 16x16 Pixel, small: 12x12 Pixel.
+	 * 
+	 *	@see	{@link outlineImgSize}
+	 * 
+	 *	@param	rgbString	String containing RGB value according to format "<red>,<green>,<blue>"
+	 *	@param	small		Draw small image
+	 *
+	 *	@return	Reference to generated image in case of success, null otherwise.
+	 *
+	 *	@since	@D 150929, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	public Image getColorOutlineImage ( String rgbString, boolean small ) {
+
+		Image		retImg		=	null;
+		try {
+			Color			imgColor	=	null;
+			GC				graphic		=	null;
+			String[]		rgbStrList	=	rgbString.split( "," );
+			outlineImgSize	outSize		=	outlineImgSize.BIG;
+
+			// --- Small image requested?: ---
+			if	( small == true )
+				outSize = outlineImgSize.SMALL;
+
+				// --- Exactly 3 color values are expected: ---
+			if	( rgbStrList.length == 3 ) {
+				int		idx			=	0;
+				int[]	rgbList		=	new int[ 3 ];
+
+				// --- Cast string colors to integers: ---
+				for	( String entry : rgbString.split( "," ) )
+					rgbList[ idx++ ] = Integer.parseInt( entry );
+
+				// --- Generate image with given colors: ---
+				imgColor = new Color( null, rgbList[ 0 ], rgbList[ 1 ], rgbList[ 2 ] );
+			}
+	
+			// --- If something went wrong further processing is dispensable: ---
+			if	( imgColor == null )
+				return	null;
+	
+			// --- Generate new outline image and corresponding graphic element with defined default size: ---
+			retImg  = new Image( null, new Rectangle( 0, 0, outSize.getWidth(), outSize.getHeight() ) );
+			graphic = new GC( retImg );
+
+			// --- Fill and draw image with given color: --- 
+			graphic.setBackground( imgColor );
+			graphic.fillRectangle( 0, 0, outSize.getWidth(), outSize.getHeight() );
+
+			// --- Clean up color and graphic elements: --- 
+			graphic.dispose();
+			imgColor.dispose();
+		}
+		catch (Exception e) {
+			return null;
+		}
+
+		return	retImg;
+	}
+
+
+	/* ********************************************************************************************** */
+	/**			Generates a common outline text for the passed outline element, suitable for all
+	 * 			elements of the same type of DSLs.
+	 * 
+	 *	@param	element	Current outline element
+	 *
+	 *	@return	Formatted outline text if a suitable outline text could be found, return value of
+	 *			overridden superclass method otherwise.
+	 *
+	 *	@since	@D 150916, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	public Object text ( Object element ) {
+
+		if	( element instanceof LImport )
+			return	generateText( element, "import", ( (LImport) element ).getImportedNamespace(), true );
+
+		if	( element instanceof LPackage )
+			return	generateText( element, "package", ( (LPackage) element ).getName(), true );
+
+		return	super.text( element );
+	}
+
+
+	/* ********************************************************************************************** */
+	/**         Returns a reference to the common image instance according to the passed outline
+	 * 			element, suitable for all elements of the same type of DSLs.
+	 * 
+	 *	@param	element	Current outline element
+	 *
+	 *	@return	Formatted outline text if a suitable outline text could be found, return value of
+	 *			overridden superclass method otherwise.
+	 *
+	 *	@since	@D 150916, gu
+	 *	@date	@D yymmdd, name
+	 */ /* ******************************************************************************************* */
+	public Object image ( Object element ) {
+
+		if	( element instanceof LImport )
+			return	getInternalImage( "dsl_import.png", getClass());
+
+		if	( element instanceof LPackage )
+			return	getInternalImage( "package.gif", getClass());
+
+		return	super.image( element );
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.feature.runtime/.project b/org.eclipse.osbp.xtext.builder.feature.runtime/.project
new file mode 100644
index 0000000..660ece9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.feature.runtime</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.builder.feature.runtime/LICENSE.txt b/org.eclipse.osbp.xtext.builder.feature.runtime/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/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.builder.feature.runtime/build.properties b/org.eclipse.osbp.xtext.builder.feature.runtime/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.builder.feature.runtime/epl-v10.html b/org.eclipse.osbp.xtext.builder.feature.runtime/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/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.builder.feature.runtime/feature.properties b/org.eclipse.osbp.xtext.builder.feature.runtime/feature.properties
new file mode 100644
index 0000000..2e2c15a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/feature.properties
@@ -0,0 +1,178 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = Xtext Runtime OSGi Builder Core (only Runtime, never IDE) 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This features feature contains a "OSGi Runtime Xtext Builder". It\n\
+allows builder participants to join the build. Participants are responsible\n\
+to initialize supported Xtext grammars by invoking the standalone setup,\n\
+by providing model files and by exposing their own service for model access.\n\
+There is also a way to extend class loading. The OSGi runtime builder uses a\n\
+BundleSpaceTypeProvider and delegates every class loading request to the registered bundles.\n\
+BundleSpace-Bundles can become registered by the IMetadataService or by adding a bunde manifest\n\
+header called: "OSBP-RuntimeBuilder-BundleSpace". If a bundle contains that manifest header\n\
+it will be automatically added to the BundleSpace.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.builder.feature.runtime/feature.xml b/org.eclipse.osbp.xtext.builder.feature.runtime/feature.xml
new file mode 100644
index 0000000..390a889
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/feature.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.xtext.builder.feature.runtime"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext releases" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="luna" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <requires>
+        <import feature="org.eclipse.osbp.xtext.builder.feature.types" version="0.9.0" match="equivalent"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.metadata.services"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.builder.feature.runtime/license.html b/org.eclipse.osbp.xtext.builder.feature.runtime/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/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.builder.feature.runtime/pom.xml b/org.eclipse.osbp.xtext.builder.feature.runtime/pom.xml
new file mode 100644
index 0000000..075d97b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.feature.runtime</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>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.feature.runtime/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.builder.feature.runtime/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/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.builder.feature.runtime/src/overview.html b/org.eclipse.osbp.xtext.builder.feature.runtime/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.runtime/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/.project b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/.project
new file mode 100644
index 0000000..85f1c1e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.feature.service.jvmtypes</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.builder.feature.service.jvmtypes/LICENSE.txt b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/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.builder.feature.service.jvmtypes/build.properties b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/epl-v10.html b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/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.builder.feature.service.jvmtypes/feature.properties b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/feature.properties
new file mode 100644
index 0000000..a56a457
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/feature.properties
@@ -0,0 +1,172 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = JvmTypes builder participant (only Runtime, never IDE) 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This features contains a builder participant. It will setup the Xtext types\n\
+model and exposes a service IJvmTypeMetadataService. Using the method\n\
+"JvmType getJvmType(String qualifiedName)" the JvmType for the given name\n\
+will be returned. All bundles in the BundleSpace will be scanned for a matching class.\n\ 
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/feature.xml b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/feature.xml
new file mode 100644
index 0000000..c4a2d27
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/feature.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.xtext.builder.feature.service.jvmtypes"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext releases" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="luna" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <requires>
+        <import feature="org.eclipse.osbp.xtext.builder.feature.runtime" version="0.9.0" match="equivalent"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.participant.jvmtypes"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/license.html b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/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.builder.feature.service.jvmtypes/pom.xml b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/pom.xml
new file mode 100644
index 0000000..9ef9f6e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.feature.service.jvmtypes</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>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/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.builder.feature.service.jvmtypes/src/overview.html b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.service.jvmtypes/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.feature.types/.project b/org.eclipse.osbp.xtext.builder.feature.types/.project
new file mode 100644
index 0000000..4c86d17
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.feature.types</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.builder.feature.types/LICENSE.txt b/org.eclipse.osbp.xtext.builder.feature.types/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/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.builder.feature.types/build.properties b/org.eclipse.osbp.xtext.builder.feature.types/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.builder.feature.types/epl-v10.html b/org.eclipse.osbp.xtext.builder.feature.types/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/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.builder.feature.types/feature.properties b/org.eclipse.osbp.xtext.builder.feature.types/feature.properties
new file mode 100644
index 0000000..2707b62
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/feature.properties
@@ -0,0 +1,186 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = BundleSpaceTypeProvider, Xbase Standalone Setups and RuntimeTypeLoader (Runtime and IDE) 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This features contains an implementation for an BundleSpaceTypeProvider and for a RuntimeTypeLoader.\n\
+\n\
+BundleSpaceTypeProvider:\n\
+It is similar to the ClasspathTypeProvider, but all requests to load a class are forwarded to the BundleSpaceTypeProvider \n\
+who will delegate the request to all registered bundles. Bundles may become registered by the IMetadataService API or \n\
+by OSGi extender pattern. Every class that exposes the MANIFEST-header OSBP-RuntimeBuilder-BundleSpace will be added \n\
+to the BundleSpace automatically.\n\
+\n\
+XbaseRuntimeBuilderSetup:\n\
+It additionally comes with XbaseRuntimeBuilderSetup implementations. The will respect the use of the BundleSpaceTypeProvider.\n\
+\n\
+RuntimeTypeLoader:\n\
+TypeLoader - It is used to load classes based on a so called BundleSpace (see org.eclipse.osbp.xtext.builder.types.bundles) in \n\
+runtime. It is necessary that XtextResource is configured with a BundleSpaceTypeProvider. The bundle space is created \n\
+and configured by the osbp Xtext runtime builder (org.eclipse.osbp.xtext.builder.metadata.services). If a MANIFEST.MF \n\
+contains the bundle header "OSBP-RuntimeBuilder-BundleSpace", it is automatically added to the BundleSpace.\n\
+
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.builder.feature.types/feature.xml b/org.eclipse.osbp.xtext.builder.feature.types/feature.xml
new file mode 100644
index 0000000..2c1f776
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/feature.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.xtext.builder.feature.types"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext releases" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="luna" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.types.bundles"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.xbase.setups"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.types.loader.api"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.types.loader.runtime"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.builder.feature.types/license.html b/org.eclipse.osbp.xtext.builder.feature.types/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/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.builder.feature.types/pom.xml b/org.eclipse.osbp.xtext.builder.feature.types/pom.xml
new file mode 100644
index 0000000..767d68b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.feature.types</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>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.feature.types/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.builder.feature.types/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/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.builder.feature.types/src/overview.html b/org.eclipse.osbp.xtext.builder.feature.types/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.types/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.feature.ui.access/.project b/org.eclipse.osbp.xtext.builder.feature.ui.access/.project
new file mode 100644
index 0000000..54597f0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.feature.ui.access</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.builder.feature.ui.access/LICENSE.txt b/org.eclipse.osbp.xtext.builder.feature.ui.access/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/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.builder.feature.ui.access/build.properties b/org.eclipse.osbp.xtext.builder.feature.ui.access/build.properties
new file mode 100644
index 0000000..b74af86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/build.properties
@@ -0,0 +1,4 @@
+bin.includes = feature.xml,\
+               feature.properties,\
+               epl-v10.html,\
+               license.html
diff --git a/org.eclipse.osbp.xtext.builder.feature.ui.access/epl-v10.html b/org.eclipse.osbp.xtext.builder.feature.ui.access/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/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.builder.feature.ui.access/feature.properties b/org.eclipse.osbp.xtext.builder.feature.ui.access/feature.properties
new file mode 100644
index 0000000..36efa92
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/feature.properties
@@ -0,0 +1,173 @@
+###############################################################################
+# 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
+# 
+# Contributors:
+#    Florian Pirchner - initial API and implementation
+###############################################################################
+# feature.properties
+# contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "copyright" property - text of the "Feature Update Copyright"
+copyright=\
+Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany) \n\
+All rights reserved. This program and the accompanying materials\n\
+are made available under the terms of the Eclipse Public License v1.0\n\
+which accompanies this distribution, and is available at\n\
+http://www.eclipse.org/legal/epl-v10.html\n\
+\n\
+################ end of copyright property ####################################
+
+# "featureName" property - name of the feature
+featureName = Xtext Util features (IDE, never Runtime) 
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse OSBP
+
+# "description" property - description of the feature
+description=This feature provides an OSGi-Service (IXtextUtilService) to get information about \n\
+projects in the workspace containing java files, Xtext models,... \n\
+It may be used to load classes defined in a javaproject in the IDE \n\
+and to use that class in the running instance. Very useful for previews. It defines a special classloader \n\
+that allows to do so.
+
+# "updateSiteName" property - label for the update site
+updateSiteName=
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+Eclipse Foundation Software User Agreement\n\
+February 1, 2011\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the\n\
+Eclipse Foundation is provided to you under the terms and conditions of\n\
+the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
+provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse Foundation source code\n\
+repository ("Repository") in software modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+       - Content may be structured and packaged into modules to facilitate delivering,\n\
+         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
+         plug-in fragments ("Fragments"), and features ("Features").\n\
+       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
+         in a directory named "plugins".\n\
+       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
+         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
+         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
+         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
+       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
+         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+       - The top-level (root) directory\n\
+       - Plug-in and Fragment directories\n\
+       - Inside Plug-ins and Fragments packaged as JARs\n\
+       - Sub-directories of the directory named "src" of certain Plug-ins\n\
+       - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
+Update License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties" found within a Feature.\n\
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
+terms and conditions (or references to such terms and conditions) that\n\
+govern your use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+       - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)\n\
+       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+\n\Use of Provisioning Technology\n\
+\n\
+The Eclipse Foundation makes available provisioning software, examples of which include,\n\
+but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
+the purpose of allowing users to install software, documentation, information and/or\n\
+other materials (collectively "Installable Software"). This capability is provided with\n\
+the intent of allowing such users to install, extend and update Eclipse-based products.\n\
+Information about packaging Installable Software is available at\n\
+http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
+\n\
+You may use Provisioning Technology to allow other parties to install Installable Software.\n\
+You shall be responsible for enabling the applicable license agreements relating to the\n\
+Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
+in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
+making it available in accordance with the Specification, you further acknowledge your\n\
+agreement to, and the acquisition of all necessary rights to permit the following:\n\
+\n\
+       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
+          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
+          extending or updating the functionality of an Eclipse-based product.\n\
+       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
+          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
+       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
+          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
+          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
+          with the Specification. Such Installable Software Agreement must inform the user of the\n\
+          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
+          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
+          indication of agreement by the user, the provisioning Technology will complete installation\n\
+          of the Installable Software.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use, and\n\
+re-export of encryption software, to see if this is permitted.\n\
+\n\
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
+########### end of license property ##########################################
diff --git a/org.eclipse.osbp.xtext.builder.feature.ui.access/feature.xml b/org.eclipse.osbp.xtext.builder.feature.ui.access/feature.xml
new file mode 100644
index 0000000..2de1af0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/feature.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2012, 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--#     Lunifera GmbH - initial API and implementation -->
+<!--#======================================================================= -->
+
+<feature
+        id="org.eclipse.osbp.xtext.builder.feature.ui.access"
+        label="%featureName"
+        version="0.9.0.qualifier"
+        provider-name="%providerName">
+        
+    <description>
+        %description
+    </description>
+        
+    <copyright>
+        %copyright
+    </copyright>
+        
+    <license url="%licenseURL">
+        %license
+    </license>
+        
+    <url>
+    <discovery label="Xtext releases" url="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases/"/>
+    <discovery label="luna" url="http://download.eclipse.org/releases/luna"/>
+    </url>
+        
+    <requires>
+        <import feature="org.eclipse.xtext.sdk" version="2.7.3" match="equivalent"/>
+        <import feature="org.eclipse.osbp.xtext.builder.feature.types" version="0.9.0" match="equivalent"/>
+    </requires>
+        
+    <plugin
+        id="org.eclipse.osbp.xtext.builder.ui.access"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+</feature>
diff --git a/org.eclipse.osbp.xtext.builder.feature.ui.access/license.html b/org.eclipse.osbp.xtext.builder.feature.ui.access/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/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.builder.feature.ui.access/pom.xml b/org.eclipse.osbp.xtext.builder.feature.ui.access/pom.xml
new file mode 100644
index 0000000..7286e36
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.feature.ui.access</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>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.feature.ui.access/src/main/javadoc/README.txt b/org.eclipse.osbp.xtext.builder.feature.ui.access/src/main/javadoc/README.txt
new file mode 100644
index 0000000..831da7e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/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.builder.feature.ui.access/src/overview.html b/org.eclipse.osbp.xtext.builder.feature.ui.access/src/overview.html
new file mode 100644
index 0000000..b079b59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.feature.ui.access/src/overview.html
@@ -0,0 +1,10 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+  <HEAD>
+    <TITLE>OSBP .... Overview</TITLE>
+  </HEAD>
+  <BODY>
+    The <b>OSBP ....</b> implements the functionality ...
+
+	</BODY>
+</HTML>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/.project b/org.eclipse.osbp.xtext.builder.metadata.services/.project
new file mode 100644
index 0000000..2b11822
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.metadata.services</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/LICENSE.txt b/org.eclipse.osbp.xtext.builder.metadata.services/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/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.builder.metadata.services/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.metadata.services/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..48995e9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/META-INF/MANIFEST.MF
@@ -0,0 +1,28 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.metadata.services
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.metadata.services
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.osbp.xtext.builder.metadata.services;
+  uses:="org.eclipse.emf.ecore,
+   org.osgi.framework";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
+ org.slf4j.api;bundle-version="1.7.2",
+ org.apache.felix.gogo.runtime;bundle-version="0.10.0",
+ org.eclipse.core.runtime;bundle-version="3.10.0"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.framework.wiring;version="1.1.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.osgi.util.tracker;version="1.5.1"
+Service-Component: OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.xml,
+ OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.Commands.xml
+Provide-Capability: 	osgi.extender;		osgi.extender="org.eclipse.osbp.metadata.builder";		version:Version="1.0"
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.Commands.xml b/org.eclipse.osbp.xtext.builder.metadata.services/OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.Commands.xml
new file mode 100644
index 0000000..337498a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.Commands.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osbp.xtext.builder.metadata.services.impl.Commands">
+   <property name="osgi.command.scope" value="osbp"/>
+   <property name="osgi.command.function" value="modelindex"/>
+   <service>
+      <provide interface="java.lang.Object"/>
+   </service>
+   <reference bind="bindIMetadataBuilderService" cardinality="1..1" interface="org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService" name="IMetadataBuilderService" policy="static" unbind="unbindIMetadataBuilderService"/>
+   <implementation class="org.eclipse.osbp.xtext.builder.metadata.services.impl.Commands"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.xml b/org.eclipse.osbp.xtext.builder.metadata.services/OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.xml
new file mode 100644
index 0000000..7aeea3e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/OSGI-INF/org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" immediate="true" name="org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder">
+   <implementation class="org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder"/>
+   <reference bind="addParticipant" cardinality="1..n" interface="org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant" name="Participant" policy="dynamic" unbind="removeParticipant"/>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/README.txt b/org.eclipse.osbp.xtext.builder.metadata.services/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/about.html b/org.eclipse.osbp.xtext.builder.metadata.services/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/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.builder.metadata.services/about.ini b/org.eclipse.osbp.xtext.builder.metadata.services/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/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.builder.metadata.services/about.mappings b/org.eclipse.osbp.xtext.builder.metadata.services/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/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.builder.metadata.services/about.properties b/org.eclipse.osbp.xtext.builder.metadata.services/about.properties
new file mode 100644
index 0000000..217cf3e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.metadata.services
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/build.properties b/org.eclipse.osbp.xtext.builder.metadata.services/build.properties
new file mode 100644
index 0000000..36ef80a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/build.properties
@@ -0,0 +1,11 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               OSGI-INF/,\
+               .project,\
+               .classpath,\
+               .settings/,\
+               plugin.properties
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/epl-v10.html b/org.eclipse.osbp.xtext.builder.metadata.services/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/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.builder.metadata.services/license.html b/org.eclipse.osbp.xtext.builder.metadata.services/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/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.builder.metadata.services/plugin.properties b/org.eclipse.osbp.xtext.builder.metadata.services/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/pom.xml b/org.eclipse.osbp.xtext.builder.metadata.services/pom.xml
new file mode 100644
index 0000000..58f41f1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.metadata.services</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/AbstractBuilderParticipant.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/AbstractBuilderParticipant.java
new file mode 100644
index 0000000..0a1432c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/AbstractBuilderParticipant.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.metadata.services;
+
+import java.net.URL;
+import java.util.List;
+
+import org.osgi.framework.Bundle;
+
+public abstract class AbstractBuilderParticipant implements IBuilderParticipant {
+
+	@Override
+	public List<URL> getModels(Bundle suspect) {
+		throw new UnsupportedOperationException();
+	}
+
+	@Override
+	public void notifyLifecyle(LifecycleEvent event) {
+		throw new UnsupportedOperationException();
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IBuilderParticipant.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IBuilderParticipant.java
new file mode 100644
index 0000000..a68228f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IBuilderParticipant.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.metadata.services;
+
+import java.net.URL;
+import java.util.List;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.osgi.framework.Bundle;
+
+// TODO: Auto-generated Javadoc
+/**
+ * Builder participants can participate to the model builder.<br>
+ * Attention: The runtime builder needs to use the
+ * {@link BundleSpaceTypeProvider}. Attached {@link IBuilderParticipant} for
+ * implementation details.
+ * 
+ * <b>Attention:</b> This interface should not be implemented by clients. Use
+ * {@link AbstractBuilderParticipant} instead.
+ */
+@SuppressWarnings("restriction")
+public interface IBuilderParticipant {
+
+	/**
+	 * Returns a list with all models that should be loaded into the builder. To
+	 * become part of model providers, the {@link IMetadataBuilderService} Guice
+	 * Inject may be used.
+	 * 
+	 * @param suspect
+	 *            The bundle which might contain model files.
+	 * 
+	 * @return urls - never <code>null</code>
+	 */
+	List<URL> getModels(Bundle suspect);
+
+	/**
+	 * Registers the participant about the lifecyle.<br>
+	 * The participant needs to do different issues. On ACTIVATE OSGi-services
+	 * should be registered. On DEACTIVATE they should be unregistered.
+	 *
+	 * @param event
+	 *            the event
+	 */
+	void notifyLifecyle(LifecycleEvent event);
+
+	/**
+	 * The lifecycle event for the participant.
+	 */
+	class LifecycleEvent {
+
+		/** The Constant INITIALIZE. */
+		public static final int INITIALIZE = 10;
+
+		/** The Constant ACTIVATED. */
+		public static final int ACTIVATED = 20;
+
+		/** The Constant BUNDLES_SCANNED. */
+		public static final int BUNDLES_SCANNED = 30;
+
+		/** The Constant DEACTIVATED. */
+		public static final int DEACTIVATED = 40;
+
+		/** The state. */
+		private int state;
+
+		/**
+		 * Instantiates a new lifecycle event.
+		 *
+		 * @param state
+		 *            the state
+		 */
+		public LifecycleEvent(int state) {
+			super();
+			this.state = state;
+		}
+
+		/**
+		 * Gets the state.
+		 *
+		 * @return the state
+		 */
+		public int getState() {
+			return state;
+		}
+
+		/**
+		 * Sets the state.
+		 *
+		 * @param state
+		 *            the new state
+		 */
+		public void setState(int state) {
+			this.state = state;
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IMetadataBuilderService.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IMetadataBuilderService.java
new file mode 100644
index 0000000..84bf622
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IMetadataBuilderService.java
@@ -0,0 +1,177 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.metadata.services;
+
+import java.util.Set;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpace;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.osgi.framework.Bundle;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A service that handles the runtime build of Xtext models or Ecore models. It
+ * uses delegates to extend the types of models that may become handled.
+ * {@link IBuilderParticipant} have to become registered as an OSGi service.
+ * Guice injection is enabled. After a participant was added to the service,
+ * injections will be done.
+ * 
+ * <p>
+ * <b>Attention:</b> This interface should not be implemented by clients!
+ */
+@SuppressWarnings("restriction")
+public interface IMetadataBuilderService {
+
+	/**
+	 * Bundles that add this header to their MANIFEST are added to the
+	 * BundleSpace of the builder. So class loading issues are forwareded to
+	 * this bundle.
+	 */
+	static final String LUN_RUNTIME_BUILDER_BUNDLE_SPACE = "OSBP-RuntimeBuilder-BundleSpace";
+
+	/**
+	 * Returns the resolved model or <code>null</code> if the model could not be
+	 * found.<br>
+	 * <b>Attention:</b> Avoid using this method directly. Better use it in an
+	 * active transaction using {@link IUnitOfWork} and
+	 * {@link #execute(Object, IUnitOfWork)}. For thread safety and
+	 * "Xtext in the Web" calls to this method may require an active transaction
+	 * using {@link IUnitOfWork} in future versions.
+	 *
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @param type
+	 *            the type
+	 * @return the metadata
+	 */
+	EObject getMetadata(String qualifiedName, EClass type);
+
+	/**
+	 * Returns all {@link IEObjectDescription}s found for the given type.<br>
+	 * <b>Attention:</b> Avoid using this method directly. Better use it in an
+	 * active transaction using {@link IUnitOfWork} and
+	 * {@link #execute(Object, IUnitOfWork)}. For thread safety and
+	 * "Xtext in the Web" calls to this method may require an active transaction
+	 * using {@link IUnitOfWork} in future versions.
+	 *
+	 * @param type
+	 *            the type
+	 * @return the all descriptions
+	 */
+	Iterable<IEObjectDescription> getAllDescriptions(EClass type);
+
+	/**
+	 * Adds the given bundle to the {@link BundleSpace}, so it may be used to
+	 * resolved classes. Note, that also
+	 * {@link #LUN_RUNTIME_BUILDER_BUNDLE_SPACE} MANIFEST header may be used, to
+	 * add a bundle to the {@link BundleSpace}. This method allows
+	 * {@link IBuilderParticipant} to add additional bundles that do not provide
+	 * the header.
+	 *
+	 * @param bundle
+	 *            the bundle
+	 */
+	void addToBundleSpace(Bundle bundle);
+
+	/**
+	 * Removes the given bundle from the {@link BundleSpace}.
+	 *
+	 * @param bundle
+	 *            the bundle
+	 */
+	void removeFromBundleSpace(Bundle bundle);
+
+	/**
+	 * Returns the underlying resource set. Be carefully if using directly.
+	 * Maybe you should work with {@link IUnitOfWork} to have a controlled
+	 * transaction.<br>
+	 * <b>Attention:</b> Avoid using this method directly. Better use it in an
+	 * active transaction using {@link IUnitOfWork} and
+	 * {@link #execute(Object, IUnitOfWork)}. For thread safety and
+	 * "Xtext in the Web" calls to this method may require an active transaction
+	 * using {@link IUnitOfWork} in future versions.
+	 * 
+	 * @return
+	 */
+	XtextResourceSet getResourceSet();
+
+	/**
+	 * Returns the bundle space.
+	 *
+	 * @return the bundle space
+	 */
+	IBundleSpace getBundleSpace();
+
+	/**
+	 * Returns all resolved EObjects provided by
+	 * {@link #getAllDescriptions(EClass)}.<br>
+	 * <b>Attention:</b> Avoid using this method directly. Better use it in an
+	 * active transaction using {@link IUnitOfWork} and
+	 * {@link #execute(Object, IUnitOfWork)}. For thread safety and
+	 * "Xtext in the Web" calls to this method may require an active transaction
+	 * using {@link IUnitOfWork} in future versions.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @return the all EObjects
+	 */
+	Iterable<EObject> getAll(EClass eClass);
+
+	/**
+	 * Resolves the given proxy using the internal resource set.<br>
+	 * <b>Attention:</b> Avoid using this method directly. Better use it in an
+	 * active transaction using {@link IUnitOfWork} and
+	 * {@link #execute(Object, IUnitOfWork)}. For thread safety and
+	 * "Xtext in the Web" calls to this method may require an active transaction
+	 * using {@link IUnitOfWork} in future versions.
+	 * 
+	 * @param proxy
+	 *            the proxy instance
+	 * @return resolved EObject
+	 * 
+	 *         TODO goingEclipse - should be wrapped by a transaction to unload
+	 *         the resource savely
+	 */
+	EObject resolve(EObject proxy);
+
+	/**
+	 * Executes the given unit of work in a transaction. Changes applied to any
+	 * of the resources contained in the resource set, may become undone after
+	 * the execution.
+	 * 
+	 * @param the
+	 *            state that should become processed
+	 * @param unitOfWork
+	 */
+	<T> void execute(T state, IUnitOfWork<T> unitOfWork);
+
+	/**
+	 * Returns a set with all sub types of the given type. The JvmTypes need to
+	 * be contained in the index. Otherwise no subtypes can be found.
+	 * 
+	 * @param type
+	 * @return
+	 */
+	Set<JvmDeclaredType> findSubTypes(JvmDeclaredType type);
+
+	/**
+	 * Gets the bundle space type provider.
+	 *
+	 * @return the type provider
+	 */
+	BundleSpaceTypeProvider getTypeProvider();
+}
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IUnitOfWork.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IUnitOfWork.java
new file mode 100644
index 0000000..c97f9c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/IUnitOfWork.java
@@ -0,0 +1,121 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the 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.builder.metadata.services;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.resource.EObjectDescription;
+
+import com.google.common.collect.Iterables;
+
+/**
+ * A unit of work acts as a transaction block, which can be passed to the
+ * metadata service. The passed resourceSet may be used to load and / or resolve
+ * resources.
+ * <p>
+ * The resources resolved and loaded may become unloaded after the
+ * {@link #exec(ResourceSet, Object)} methode was invoked.
+ */
+public interface IUnitOfWork<P> {
+	/**
+	 * @param service
+	 *            The service.
+	 * @param state
+	 *            The state, which is synchronized while this method is executed
+	 * @throws Exception
+	 */
+	void exec(IMetadataBuilderService service, P state) throws Exception;
+
+	/**
+	 * This unit of work will resolve the passed {@link EObject} before
+	 * delegating to {@link #process(EObject)}.
+	 */
+	public abstract class ResolvingUnitOfWork implements IUnitOfWork<EObject> {
+
+		@Override
+		public void exec(IMetadataBuilderService service, EObject state)
+				throws Exception {
+			if (state.eIsProxy()) {
+				process(EcoreUtil.resolve(state, service.getResourceSet()));
+			} else {
+				process(state);
+			}
+		}
+
+		/**
+		 * Ensures, that the passed {@link EObject} was resolved by this method
+		 * is invoked.
+		 * 
+		 * @param resolved
+		 */
+		protected abstract void process(EObject resolved);
+	}
+
+	/**
+	 * This unit of work will extract the {@link EObject} from the passed
+	 * {@link EObjectDescription} and ensures, that the {@link EObject} was
+	 * resolved before delegating to {@link #process(EObject)}.
+	 */
+	public abstract class EObjectDescriptionUnitOfWork implements
+			IUnitOfWork<EObjectDescription> {
+
+		@Override
+		public void exec(IMetadataBuilderService service,
+				EObjectDescription description) throws Exception {
+
+			EObject state = description.getEObjectOrProxy();
+			if (state.eIsProxy()) {
+				process(EcoreUtil.resolve(state, service.getResourceSet()));
+			} else {
+				process(state);
+			}
+		}
+
+		/**
+		 * Ensures, that the passed {@link EObject} was resolved by this method
+		 * is invoked.
+		 * 
+		 * @param resolved
+		 */
+		protected abstract void process(EObject resolved);
+	}
+
+	/**
+	 * This unit of work calls
+	 * {@link IMetadataBuilderService#getAll(org.eclipse.emf.ecore.EClass)} in a
+	 * controlled environment. And passes its result to the
+	 * {@link #process(EObject)} method.
+	 */
+	public abstract class GetAllUnitOfWork implements IUnitOfWork<EClass> {
+
+		@Override
+		public void exec(IMetadataBuilderService service, EClass eClass)
+				throws Exception {
+
+			// TODO goingEclipse - if the #resolve() call in getAll() is
+			// removed, then it needs to become added here.
+			process(service.getAll(eClass));
+		}
+
+		/**
+		 * Ensures, that the passed {@link objects} were resolved before this
+		 * method is invoked.
+		 * 
+		 * @param resolved
+		 */
+		protected abstract void process(Iterable<EObject> objects);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/Commands.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/Commands.java
new file mode 100644
index 0000000..6f2067a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/Commands.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                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ */
+package org.eclipse.osbp.xtext.builder.metadata.services.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.felix.service.command.Descriptor;
+import org.apache.felix.service.command.Parameter;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.runtime.common.shell.ICommandConstants;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.eclipse.osbp.xtext.builder.metadata.services.IUnitOfWork;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferenceCardinality;
+
+@Component(service = Object.class, property = {
+		ICommandConstants.COMMAND_SCOPE + "=osbp",
+		ICommandConstants.COMMAND_FUNCTION + "=modelindex" })
+public class Commands {
+
+	IMetadataBuilderService service;
+
+	@Descriptor("Lists all resources contained in the model index.")
+	public List<String> modelindex(
+			@Parameter(absentValue = "false", presentValue = "true", names = {
+					"-ul", "--unload" }) boolean unload) {
+		return modelindex(unload, new String[0]);
+	}
+
+	@Descriptor("Lists all resources contained in the model index. The result String will be filtered by the filters using contains.")
+	public List<String> modelindex(
+			@Descriptor("unloads the filtered resources") @Parameter(absentValue = "false", presentValue = "true", names = {
+					"-ul", "--unload" }) boolean unload,
+			@Descriptor("filter") String... filters) {
+
+		// selected filtered resources
+		List<Resource> filtered = new ArrayList<>();
+		List<Resource> resources = new ArrayList<>(service.getResourceSet()
+				.getResources());
+		for (Resource resource : resources) {
+			String line = toResourceStatusLine(resource);
+			if (filters == null || filters.length == 0
+					|| contains(line, filters)) {
+				filtered.add(resource);
+			}
+		}
+
+		// unload resources
+		if (unload) {
+			service.execute(null, new IUnitOfWork<Void>() {
+				@Override
+				public void exec(IMetadataBuilderService service, Void state)
+						throws Exception {
+					for (Resource resource : filtered) {
+						resource.unload();
+					}
+				}
+			});
+		}
+
+		// create the output
+		List<String> result = new ArrayList<>();
+		for (Resource resource : filtered) {
+			result.add(toResourceStatusLine(resource));
+		}
+
+		return result;
+	}
+
+	private String toResourceStatusLine(Resource resource) {
+		String line = String.format("uri=%s, loaded=%s", resource.getURI()
+				.toString(), Boolean.toString(resource.isLoaded()));
+		return line;
+	}
+
+	private boolean contains(String line, String... filters) {
+		for (String filter : filters) {
+			if (!line.toLowerCase().contains(filter.toLowerCase())) {
+				return false;
+			}
+		}
+		return true;
+	}
+
+	@Reference(cardinality = ReferenceCardinality.MANDATORY)
+	void bindIMetadataBuilderService(IMetadataBuilderService service) {
+		this.service = service;
+	}
+
+	void unbindIMetadataBuilderService(IMetadataBuilderService service) {
+		this.service = service;
+	}
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/MetadataBuilder.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/MetadataBuilder.java
new file mode 100644
index 0000000..c62075b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/MetadataBuilder.java
@@ -0,0 +1,1359 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.metadata.services.impl;
+
+import static com.google.common.collect.Iterables.addAll;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Dictionary;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpace;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProvider;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.eclipse.osbp.xtext.builder.metadata.services.IUnitOfWork;
+import org.eclipse.xtext.common.types.JvmDeclaredType;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.common.types.access.impl.IndexedJvmTypeAccess;
+import org.eclipse.xtext.findReferences.IReferenceFinder;
+import org.eclipse.xtext.findReferences.IReferenceFinder.Acceptor;
+import org.eclipse.xtext.findReferences.ReferenceFinder;
+import org.eclipse.xtext.findReferences.TargetURIs;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IReferenceDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.IResourceServiceProvider;
+import org.eclipse.xtext.resource.ISelectable;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsData;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsData.ResourceSetAdapter;
+import org.eclipse.xtext.validation.CheckMode;
+import org.eclipse.xtext.validation.IResourceValidator;
+import org.eclipse.xtext.validation.Issue;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleEvent;
+import org.osgi.framework.BundleListener;
+import org.osgi.framework.FrameworkEvent;
+import org.osgi.framework.FrameworkListener;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+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;
+
+import com.google.common.base.Function;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class MetadataBuilder.
+ *
+ * @author riegel
+ */
+@SuppressWarnings("restriction")
+@Component(immediate=true, service={})
+public class MetadataBuilder implements BundleListener {
+
+	/** The Constant LOGGER. */
+	private static final Logger LOGGER = org.slf4j.LoggerFactory
+			.getLogger(MetadataBuilder.class);
+
+	// The service impl, which is being registered in the service registry
+
+	/** The service impl. */
+	private ServiceImpl serviceImpl;
+
+	/** The context. */
+	// Is used to sync calls to the bundle space
+	private ComponentContext context;
+	
+	/** The resource set. */
+	private XtextResourceSet resourceSet;
+	
+	/** The index. */
+	private ResourceDescriptionsData index;
+	
+	/** The grammar registry. */
+	private IResourceServiceProvider.Registry grammarRegistry;
+	
+	/** The injector. */
+	private Injector injector;
+	
+	/** The reference finder. */
+	private ReferenceFinder referenceFinder;
+
+	/** The converter. */
+	private IQualifiedNameConverter converter;
+	
+	/** The jvm type access. */
+	private IndexedJvmTypeAccess jvmTypeAccess;
+	
+	/** The bundle space. */
+	private IBundleSpace bundleSpace;
+	
+	/** The type provider. */
+	private BundleSpaceTypeProvider typeProvider;
+
+	/** The model providers. */
+	// participants
+	private Set<Bundle> modelProviders = Collections
+			.synchronizedSet(new HashSet<Bundle>());
+	
+	/** The participants. */
+	private List<IBuilderParticipant> participants = Collections
+			.synchronizedList(new ArrayList<IBuilderParticipant>());
+	
+	/** The injected participants. */
+	private Set<IBuilderParticipant> injectedParticipants = Collections
+			.synchronizedSet(new HashSet<IBuilderParticipant>());
+
+	/** The waiting for framework started event. */
+	// lifecycle
+	private AtomicBoolean waitingForFrameworkStartedEvent = new AtomicBoolean(
+			true);
+	
+	/** The resolved. */
+	private AtomicBoolean resolved = new AtomicBoolean(false);
+
+	/** The bundle space reg. */
+	// service registrations
+	private ServiceRegistration<IBundleSpace> bundleSpaceReg;
+	
+	/** The service impl reg. */
+	private ServiceRegistration<IMetadataBuilderService> serviceImplReg;
+
+	/**
+	 * Activate.
+	 *
+	 * @param context the context
+	 */
+	@Activate
+	public synchronized void activate(ComponentContext context) {
+		this.context = context;
+		this.serviceImpl = new ServiceImpl();
+
+		new ServiceActivatedTask().run();
+	}
+
+	/**
+	 * Checks if is active.
+	 *
+	 * @return true, if is active
+	 */
+	private boolean isActive() {
+		return context != null;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Deactivate
+	public synchronized void deactivate() {
+		new ServiceDeactivatedTask().run();
+		this.context = null;
+	}
+
+	/**
+	 * Returns the eObject for the given fully qualified name and type.
+	 *
+	 * @param fqn the fqn
+	 * @param type the type
+	 * @return the e object for FQN
+	 */
+	public EObject getEObjectForFQN(QualifiedName fqn, EClass type) {
+		EObject result = null;
+		ISelectable resourceDescriptions = ResourceDescriptionsData.ResourceSetAdapter
+				.findResourceDescriptionsData(resourceSet);
+		Iterable<IEObjectDescription> descriptions = resourceDescriptions
+				.getExportedObjects(type, fqn, false);
+		for (IEObjectDescription desc : descriptions) {
+			result = desc.getEObjectOrProxy();
+			if (result.eIsProxy()) {
+				result = EcoreUtil.resolve(result, resourceSet);
+			}
+			break;
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns true, if the bundle contains the header.
+	 *
+	 * @param bundle the bundle
+	 * @param header the header
+	 * @return true, if successful
+	 */
+	private boolean containsHeader(Bundle bundle, String header) {
+		Dictionary<String, String> headers = bundle.getHeaders();
+		Enumeration<String> keys = headers.keys();
+		while (keys.hasMoreElements()) {
+			String key = keys.nextElement();
+			if (key.equals(header)) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Activates the given participant.
+	 *
+	 * @param participant the participant
+	 */
+	private void doNotifyParticipantActivate(IBuilderParticipant participant) {
+		if (isActive()) {
+			// Tell the participant to activate its state
+			participant.notifyLifecyle(new IBuilderParticipant.LifecycleEvent(
+					IBuilderParticipant.LifecycleEvent.ACTIVATED));
+		}
+	}
+
+	/**
+	 * Do notify participant bundles scanned.
+	 *
+	 * @param participant the participant
+	 */
+	private void doNotifyParticipantBundlesScanned(
+			IBuilderParticipant participant) {
+		if (isActive()) {
+			// Tell the participant to activate its state
+			participant.notifyLifecyle(new IBuilderParticipant.LifecycleEvent(
+					IBuilderParticipant.LifecycleEvent.BUNDLES_SCANNED));
+		}
+	}
+
+	/**
+	 * Removes the models contained in the given bundle from the index.
+	 *
+	 * @param bundle the bundle
+	 */
+	private void removeFromIndex(Bundle bundle) {
+		if (!isActive()) {
+			return;
+		}
+		List<URL> urls = doFindModels(bundle);
+		if (urls.isEmpty()) {
+			return;
+		}
+
+		removeFromIndex(urls);
+	}
+
+	/**
+	 * Removes the models contained in the given bundle from the index.
+	 *
+	 * @param participant the participant
+	 */
+	private void removeFromIndex(IBuilderParticipant participant) {
+		if (!resolved.get()) {
+			return;
+		}
+		List<URL> urls = doFindAllModelsToRemoveForParticipant(participant);
+		if (urls.isEmpty()) {
+			return;
+		}
+
+		removeFromIndex(urls);
+	}
+
+	/**
+	 * Validate.
+	 *
+	 * @param resourceSet the resource set
+	 * @return the list
+	 */
+	protected List<Issue> validate(ResourceSet resourceSet) {
+		if (resourceSet.getResources() == null) {
+			return Collections.emptyList();
+		}
+		List<Issue> issues = Lists.newArrayList();
+		List<Resource> resources = Lists.newArrayList(resourceSet
+				.getResources());
+		for (Resource resource : resources) {
+			IResourceServiceProvider resourceServiceProvider = IResourceServiceProvider.Registry.INSTANCE
+					.getResourceServiceProvider(resource.getURI());
+			if (resourceServiceProvider != null) {
+				IResourceValidator resourceValidator = resourceServiceProvider
+						.getResourceValidator();
+				List<Issue> result = resourceValidator.validate(resource,
+						CheckMode.ALL, null);
+				addAll(issues, result);
+			}
+		}
+		return issues;
+	}
+
+	/**
+	 * Looks up for all models available.
+	 *
+	 * @param suspect the suspect
+	 * @return the list
+	 */
+	private List<URL> doFindModels(Bundle suspect) {
+
+		List<URL> result = new ArrayList<URL>();
+		// iterate all participants
+		synchronized (participants) {
+			for (IBuilderParticipant participant : participants) {
+				result.addAll(doFindModels(suspect, participant));
+			}
+		}
+
+		if (result.size() > 0) {
+			modelProviders.add(suspect);
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns all models for the given bundle and participant.
+	 *
+	 * @param suspect the suspect
+	 * @param participant the participant
+	 * @return the list
+	 */
+	private List<URL> doFindModels(Bundle suspect,
+			IBuilderParticipant participant) {
+		return participant.getModels(suspect);
+	}
+
+	/**
+	 * Returns all models for the given participant. Therefore <b>only known
+	 * model provider bundles</b> are used.
+	 *
+	 * @param participant the participant
+	 * @return the list
+	 */
+	private List<URL> doFindAllModelsToRemoveForParticipant(
+			IBuilderParticipant participant) {
+
+		List<URL> result = new ArrayList<URL>();
+		synchronized (modelProviders) {
+			for (Bundle bundle : modelProviders) {
+				result.addAll(doFindModels(bundle, participant));
+			}
+		}
+
+		return result;
+	}
+
+	/**
+	 * Returns all models for the given participant. Therefore <b>ALL</b>
+	 * bundles are used.
+	 *
+	 * @param participant the participant
+	 * @return the list
+	 */
+	private List<URL> doFindAllModelsForNewParticipant(
+			IBuilderParticipant participant) {
+
+		List<URL> result = new ArrayList<URL>();
+		for (Bundle bundle : context.getBundleContext().getBundles()) {
+
+			List<URL> temp = doFindModels(bundle, participant);
+			if (temp.size() > 0) {
+				doAddToBundleSpace(bundle);
+				modelProviders.add(bundle);
+			}
+
+			result.addAll(temp);
+		}
+
+		return result;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.osgi.framework.BundleListener#bundleChanged(org.osgi.framework.BundleEvent)
+	 */
+	@Override
+	public synchronized void bundleChanged(BundleEvent event) {
+		if (event.getType() == BundleEvent.STARTED) {
+			new BundleAddedTask(event.getBundle()).run();
+		} else if (event.getType() == BundleEvent.STOPPED) {
+			new BundleRemovedTask(event.getBundle()).run();
+		}
+	}
+
+	/**
+	 * Called by OSGi-DS.
+	 *
+	 * @param participant the participant
+	 */
+	@Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policy = ReferencePolicy.DYNAMIC, unbind = "removeParticipant")
+	public synchronized void addParticipant(IBuilderParticipant participant) {
+		try {
+			new ParticipantAddedTask(participant).run();
+		} catch (Exception ex) {
+			LOGGER.error("{}", ex);
+		}
+	}
+
+	/**
+	 * Resolves all models for all proper model bundles.
+	 */
+	private void doScanAllBundles() {
+		for (Bundle bundle : context.getBundleContext().getBundles()) {
+			if (bundle.getState() <= 2) {
+				continue;
+			}
+			if (containsHeader(bundle,
+					IMetadataBuilderService.LUN_RUNTIME_BUILDER_BUNDLE_SPACE)) {
+				doAddToBundleSpace(bundle);
+			}
+			for (URL url : doFindModels(bundle)) {
+				LOGGER.info("Adding model " + url.toString()
+						+ " to model index.");
+				if (filter(url)) {
+					continue;
+				}
+
+				addToIndex(URI.createURI(url.toString()));
+
+				// adds the bundle to the bundleSpace if header is available
+				doAddToBundleSpace(bundle);
+			}
+		}
+
+		LOGGER.info("Models indexed. In case of error, see messages before.");
+	}
+
+	/**
+	 * Unloads all resources in the resource set.
+	 */
+	private void doUnloadAllResources() {
+		for (Resource resource : new ArrayList<>(resourceSet.getResources())) {
+			if (!resource.getURI().scheme().equals("java")) {
+				resource.unload();
+			}
+		}
+
+		LOGGER.info("Unloaded all resources.");
+	}
+
+	/**
+	 * Filter.
+	 *
+	 * @param url the url
+	 * @return true, if successful
+	 */
+	private boolean filter(URL url) {
+		if (url.toExternalForm().contains("META-INF/maven")) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Resolves all models for the given participant. Therefore <b>all
+	 * bundles</b> are used.
+	 *
+	 * @param participant the participant
+	 */
+	private void doScanAllBundles(IBuilderParticipant participant) {
+		for (URL url : doFindAllModelsForNewParticipant(participant)) {
+			if (filter(url)) {
+				continue;
+			}
+
+			LOGGER.info("Adding model " + url.toString() + " to model index.");
+			addToIndex(URI.createURI(url.toString()));
+		}
+
+		LOGGER.info("Models indexed. In case of error, see messages before.");
+	}
+
+	/**
+	 * Do notify participants bundles scanned.
+	 */
+	private void doNotifyParticipantsBundlesScanned() {
+		synchronized (participants) {
+			for (IBuilderParticipant participant : participants) {
+				doNotifyParticipantBundlesScanned(participant);
+			}
+		}
+	}
+
+	/**
+	 * Do notify participant initialize.
+	 *
+	 * @param participant the participant
+	 */
+	private void doNotifyParticipantInitialize(IBuilderParticipant participant) {
+		participant.notifyLifecyle(new IBuilderParticipant.LifecycleEvent(
+				IBuilderParticipant.LifecycleEvent.INITIALIZE));
+	}
+
+	/**
+	 * Do inject participant.
+	 *
+	 * @param participant the participant
+	 */
+	private void doInjectParticipant(IBuilderParticipant participant) {
+		if (isActive() && !injectedParticipants.contains(participant)) {
+			injector.injectMembers(participant);
+			injectedParticipants.add(participant);
+		}
+	}
+
+	/**
+	 * Handle task finish.
+	 *
+	 * @param task the task
+	 */
+	protected void handleTaskFinish(ITask task) {
+		if (task.getClass() == ServiceActivatedTask.class) {
+			new WaitForFrameworkTask().run();
+		} else if (task.getClass() == WaitForFrameworkTask.class) {
+			new InitialIndexingTask().run();
+		} else if (task.getClass() == InitialIndexingTask.class) {
+			registerOSGiService();
+			// nothing to do for now. All listeners are installed properly
+		}
+	}
+
+	/**
+	 * Register the service impl as an OSGi service.
+	 */
+	private void registerOSGiService() {
+		serviceImplReg = context.getBundleContext().registerService(
+				IMetadataBuilderService.class, serviceImpl, null);
+	}
+
+	/**
+	 * Called by OSGi-DS.
+	 *
+	 * @param participant the participant
+	 */
+	public synchronized void removeParticipant(IBuilderParticipant participant) {
+		try {
+			new ParticipantRemovedTask(participant).run();
+		} catch (Exception ex) {
+			LOGGER.error("{}", ex);
+		}
+	}
+
+	/**
+	 * Do deactivate participant.
+	 *
+	 * @param participant the participant
+	 */
+	private void doDeactivateParticipant(IBuilderParticipant participant) {
+
+		// remove all models for the given participant from the index
+		removeFromIndex(participant);
+
+		participants.remove(participant);
+		injectedParticipants.remove(participant);
+
+		// tell the participant to deactivate
+		participant.notifyLifecyle(new IBuilderParticipant.LifecycleEvent(
+				IBuilderParticipant.LifecycleEvent.DEACTIVATED));
+
+	}
+
+	/**
+	 * Adds the bundle to the bundle space if the header is available.
+	 *
+	 * @param bundle the bundle
+	 */
+	private void doAddToBundleSpace(Bundle bundle) {
+		synchronized (bundleSpace) {
+			bundleSpace.add(bundle);
+		}
+	}
+
+	/**
+	 * Removes the given bundle from the bundle space.
+	 *
+	 * @param bundle the bundle
+	 */
+	private void doRemoveFromBundleSpace(Bundle bundle) {
+		synchronized (bundleSpace) {
+			bundleSpace.remove(bundle);
+		}
+	}
+
+	/**
+	 * Adds the to index.
+	 *
+	 * @param uri the uri
+	 */
+	protected void addToIndex(URI uri) {
+		Resource resource = resourceSet.getResource(uri, true);
+		if (resource.isLoaded()) {
+
+			IResourceDescription.Manager manager = grammarRegistry
+					.getResourceServiceProvider(uri).get(
+							IResourceDescription.Manager.class);
+			try {
+				index.addDescription(uri,
+						manager.getResourceDescription(resource));
+			} catch (Exception ex) {
+				LOGGER.error("Exception adding " + uri + " to index. See: {}",
+						ex);
+			}
+
+			// unload the resource again
+			resource.unload();
+		}
+	}
+
+	/**
+	 * Removes the given URLs from the index.
+	 *
+	 * @param urls the urls
+	 */
+	protected void removeFromIndex(List<URL> urls) {
+		if (!isActive()) {
+			return;
+		}
+
+		for (URL url : urls) {
+			if (filter(url)) {
+				continue;
+			}
+
+			LOGGER.info("Unregistered " + url.toString());
+			removeFromIndex(URI.createURI(url.toString()));
+		}
+	}
+
+	/**
+	 * Removes the from index.
+	 *
+	 * @param uri the uri
+	 */
+	protected void removeFromIndex(URI uri) {
+		index.removeDescription(uri);
+	}
+
+	/**
+	 * An internal task that processes different kinds of issues.
+	 */
+	interface ITask {
+		
+		/**
+		 * Run.
+		 */
+		void run();
+	}
+
+	/**
+	 * This task handles waiting for the framework start. Only if the framework
+	 * became started, the models may become indexed.
+	 */
+	private class WaitForFrameworkTask implements ITask, FrameworkListener {
+		
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+
+			// get the state of the framework
+			Bundle framework = context.getBundleContext().getBundle(0);
+			if (framework.getState() == Bundle.ACTIVE) {
+				waitingForFrameworkStartedEvent.set(false);
+			}
+
+			if (waitingForFrameworkStartedEvent.get()) {
+				context.getBundleContext().addFrameworkListener(this);
+			} else {
+				notifyFrameworkStarted();
+			}
+		}
+
+		/* (non-Javadoc)
+		 * @see org.osgi.framework.FrameworkListener#frameworkEvent(org.osgi.framework.FrameworkEvent)
+		 */
+		@Override
+		public void frameworkEvent(FrameworkEvent event) {
+			if (event.getType() == FrameworkEvent.STARTED) {
+				context.getBundleContext().removeFrameworkListener(this);
+
+				notifyFrameworkStarted();
+			}
+		}
+
+		/**
+		 * Notify framework started.
+		 */
+		private void notifyFrameworkStarted() {
+			waitingForFrameworkStartedEvent.set(false);
+
+			handleTaskFinish(this);
+		}
+	}
+
+	/**
+	 * This task will be called, if the service service was activated.
+	 */
+	private class ServiceActivatedTask implements ITask {
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			doSetupService();
+			doInjectParticipants();
+			doInitializeParticipants();
+			doActivateParticipants();
+
+			handleTaskFinish(this);
+		}
+
+		/**
+		 * Does the setup.
+		 */
+		protected void doSetupService() {
+			injector = Guice.createInjector(new MetadataBuilderModule(
+					serviceImpl));
+			converter = injector.getInstance(IQualifiedNameConverter.class);
+			resourceSet = injector.getInstance(XtextResourceSet.class);
+			index = new ResourceDescriptionsData(
+					new ArrayList<IResourceDescription>());
+			ResourceDescriptionsData.ResourceSetAdapter
+					.installResourceDescriptionsData(resourceSet, index);
+			grammarRegistry = injector
+					.getInstance(IResourceServiceProvider.Registry.class);
+
+			jvmTypeAccess = injector.getInstance(IndexedJvmTypeAccess.class);
+			bundleSpace = injector.getInstance(BundleSpace.class);
+
+			referenceFinder = injector.getInstance(ReferenceFinder.class);
+
+			// register the bundle space
+			bundleSpaceReg = context.getBundleContext().registerService(
+					IBundleSpace.class, bundleSpace, null);
+
+			bundleSpace.add(context.getBundleContext().getBundle());
+
+			// Create the bundle space for class loading issues
+			typeProvider = new BundleSpaceTypeProvider(bundleSpace, resourceSet, jvmTypeAccess);
+			resourceSet.setClasspathURIContext(bundleSpace);
+		}
+
+		/**
+		 * Do initialize participants.
+		 */
+		private void doInitializeParticipants() {
+			for (IBuilderParticipant participant : participants
+					.toArray(new IBuilderParticipant[participants.size()])) {
+				doNotifyParticipantInitialize(participant);
+			}
+		}
+
+		/**
+		 * Do inject participants.
+		 */
+		private void doInjectParticipants() {
+			for (IBuilderParticipant participant : participants) {
+				doInjectParticipant(participant);
+			}
+		}
+
+		/**
+		 * Activate all participants.
+		 */
+		private void doActivateParticipants() {
+			for (IBuilderParticipant participant : participants
+					.toArray(new IBuilderParticipant[participants.size()])) {
+				doNotifyParticipantActivate(participant);
+			}
+		}
+	}
+
+	/**
+	 * The Class InitialIndexingTask.
+	 */
+	private class InitialIndexingTask implements ITask {
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			doScanAllBundles();
+
+			doUnloadAllResources();
+
+			doNotifyParticipantsBundlesScanned();
+
+			startBundleTracking();
+
+			resolved.set(true);
+
+			handleTaskFinish(this);
+		}
+
+		/**
+		 * Starts the tracking of bundles.
+		 */
+		private synchronized void startBundleTracking() {
+			context.getBundleContext().addBundleListener(MetadataBuilder.this);
+		}
+
+	}
+
+	/**
+	 * The Class AddBundleToBundleSpaceTask.
+	 */
+	private class AddBundleToBundleSpaceTask implements ITask {
+
+		/** The bundle. */
+		private final Bundle bundle;
+
+		/**
+		 * Instantiates a new adds the bundle to bundle space task.
+		 *
+		 * @param bundle the bundle
+		 */
+		public AddBundleToBundleSpaceTask(Bundle bundle) {
+			this.bundle = bundle;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			doAddToBundleSpace(bundle);
+		}
+	}
+
+	/**
+	 * The Class RemoveBundleFromBundleSpaceTask.
+	 */
+	private class RemoveBundleFromBundleSpaceTask implements ITask {
+
+		/** The bundle. */
+		private final Bundle bundle;
+
+		/**
+		 * Instantiates a new removes the bundle from bundle space task.
+		 *
+		 * @param bundle the bundle
+		 */
+		public RemoveBundleFromBundleSpaceTask(Bundle bundle) {
+			this.bundle = bundle;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			doRemoveFromBundleSpace(bundle);
+		}
+
+	}
+
+	/**
+	 * The Class BundleAddedTask.
+	 */
+	private class BundleAddedTask implements ITask {
+
+		/** The bundle. */
+		private final Bundle bundle;
+
+		/**
+		 * Instantiates a new bundle added task.
+		 *
+		 * @param bundle the bundle
+		 */
+		public BundleAddedTask(Bundle bundle) {
+			this.bundle = bundle;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			// started bundles need to expose the MANIFEST header
+			if (containsHeader(bundle,
+					IMetadataBuilderService.LUN_RUNTIME_BUILDER_BUNDLE_SPACE)) {
+				doAddToBundleSpace(bundle);
+			}
+
+			// if the bundle was not scanned yet
+			if (!modelProviders.contains(bundle)) {
+				doIndexAddedBundle(bundle);
+			}
+		}
+
+		/**
+		 * Indexes the models contained in the given bundle.
+		 *
+		 * @param bundle the bundle
+		 */
+		private synchronized void doIndexAddedBundle(Bundle bundle) {
+			List<URL> urls = doFindModels(bundle);
+			if (urls.isEmpty()) {
+				return;
+			}
+			for (URL url : urls) {
+				LOGGER.info("Added " + url.toString() + " to metadata cache.");
+				addToIndex(URI.createURI(url.toString()));
+			}
+		}
+	}
+
+	/**
+	 * The Class BundleRemovedTask.
+	 */
+	private class BundleRemovedTask implements ITask {
+
+		/** The bundle. */
+		private final Bundle bundle;
+
+		/**
+		 * Instantiates a new bundle removed task.
+		 *
+		 * @param bundle the bundle
+		 */
+		public BundleRemovedTask(Bundle bundle) {
+			this.bundle = bundle;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			if (!isActive()) {
+				return;
+			}
+
+			// remove the bundle from the bundle space
+			serviceImpl.removeFromBundleSpace(bundle);
+
+			// the bundle was already scanned
+			if (!modelProviders.contains(bundle)) {
+				return;
+			}
+
+			removeFromIndex(bundle);
+
+			modelProviders.remove(bundle);
+		}
+
+	}
+
+	/**
+	 * The Class ServiceDeactivatedTask.
+	 */
+	private class ServiceDeactivatedTask implements ITask {
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+
+			if (bundleSpaceReg != null) {
+				bundleSpaceReg.unregister();
+				bundleSpaceReg = null;
+			}
+
+			if (serviceImplReg != null) {
+				serviceImplReg.unregister();
+				serviceImplReg = null;
+			}
+
+			context.getBundleContext().removeBundleListener(
+					MetadataBuilder.this);
+
+			modelProviders.clear();
+
+			serviceImpl = null;
+			resourceSet = null;
+			index = null;
+			grammarRegistry = null;
+			resolved.set(false);
+		}
+	}
+
+	/**
+	 * The Class ParticipantAddedTask.
+	 */
+	private class ParticipantAddedTask implements ITask {
+
+		/** The participant. */
+		private final IBuilderParticipant participant;
+
+		/**
+		 * Instantiates a new participant added task.
+		 *
+		 * @param participant the participant
+		 */
+		public ParticipantAddedTask(IBuilderParticipant participant) {
+			this.participant = participant;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			if (!participants.contains(participant)) {
+				doInjectParticipant(participant);
+
+				participants.add(participant);
+
+				if (isActive()) {
+					// activate the participant
+					doNotifyParticipantInitialize(participant);
+
+					// activate the participant
+					doNotifyParticipantActivate(participant);
+
+					// scan all bundles to find proper models
+					doScanAllBundles(participant);
+
+					doNotifyParticipantBundlesScanned(participant);
+				}
+			}
+		}
+
+	}
+
+	/**
+	 * The Class ParticipantRemovedTask.
+	 */
+	private class ParticipantRemovedTask implements ITask {
+
+		/** The participant. */
+		private final IBuilderParticipant participant;
+
+		/**
+		 * Instantiates a new participant removed task.
+		 *
+		 * @param participant the participant
+		 */
+		public ParticipantRemovedTask(IBuilderParticipant participant) {
+			this.participant = participant;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.impl.MetadataBuilder.ITask#run()
+		 */
+		@Override
+		public void run() {
+			doDeactivateParticipant(participant);
+		}
+
+	}
+
+	/**
+	 * This service is immediatelly available for participants by @Inject
+	 * IMetadataBuilderService. But it won't become registered as an OSGi
+	 * service, before the models became resolved.
+	 */
+	public class ServiceImpl implements IMetadataBuilderService {
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#getAllDescriptions(org.eclipse.emf.ecore.EClass)
+		 */
+		@Override
+		public Iterable<IEObjectDescription> getAllDescriptions(EClass type) {
+			ISelectable resourceDescriptions = ResourceDescriptionsData.ResourceSetAdapter
+					.findResourceDescriptionsData(resourceSet);
+			Iterable<IEObjectDescription> descriptions = resourceDescriptions
+					.getExportedObjectsByType(type);
+			return descriptions;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#addToBundleSpace(org.osgi.framework.Bundle)
+		 */
+		@Override
+		public synchronized void addToBundleSpace(Bundle bundle) {
+			new AddBundleToBundleSpaceTask(bundle).run();
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#removeFromBundleSpace(org.osgi.framework.Bundle)
+		 */
+		@Override
+		public synchronized void removeFromBundleSpace(Bundle bundle) {
+			new RemoveBundleFromBundleSpaceTask(bundle).run();
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#getAll(org.eclipse.emf.ecore.EClass)
+		 */
+		@Override
+		public Iterable<EObject> getAll(EClass eClass) {
+			return Iterables.transform(getAllDescriptions(eClass),
+					new Function<IEObjectDescription, EObject>() {
+						@Override
+						public EObject apply(IEObjectDescription desc) {
+							EObject result = desc.getEObjectOrProxy();
+							// TODO goingEclipse - maybe we should remove
+							// resolving here. See IUnitOfWork.GetAllUnitOfWork
+							return resolve(result);
+						}
+					});
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#resolve(org.eclipse.emf.ecore.EObject)
+		 */
+		@Override
+		public EObject resolve(EObject proxy) {
+			// TODO goingEclipse - maybe we should remove
+			// resolving here. See IUnitOfWork.ResolveUnitOfWork
+			return proxy.eIsProxy() ? EcoreUtil.resolve(proxy, resourceSet)
+					: proxy;
+		}
+
+		/**
+		 * Returns the metadata model element for the given parameters. Or
+		 * <code>null</code> if no model could be found.
+		 *
+		 * @param qualifiedName the qualified name
+		 * @param type the type
+		 * @return the metadata
+		 */
+		public EObject getMetadata(String qualifiedName, EClass type) {
+			return getEObjectForFQN(converter.toQualifiedName(qualifiedName),
+					type);
+		}
+
+		/**
+		 * Gets the bundle space.
+		 *
+		 * @return the bundleSpace
+		 */
+		public IBundleSpace getBundleSpace() {
+			return bundleSpace;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#execute(java.lang.Object, org.eclipse.osbp.xtext.builder.metadata.services.IUnitOfWork)
+		 */
+		@Override
+		public <T> void execute(T state, IUnitOfWork<T> unitOfWork) {
+			try {
+				unitOfWork.exec(this, state);
+			} catch (Exception e) {
+				LOGGER.error("{}", e);
+			}
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#getResourceSet()
+		 */
+		@Override
+		public XtextResourceSet getResourceSet() {
+			return resourceSet;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService#findSubTypes(org.eclipse.xtext.common.types.JvmDeclaredType)
+		 */
+		@Override
+		public Set<JvmDeclaredType> findSubTypes(JvmDeclaredType type) {
+			Set<JvmDeclaredType> result = new HashSet<>();
+			TargetURIs jvmTypeURIs = injector.getInstance(TargetURIs.class);
+			jvmTypeURIs.addURI(EcoreUtil.getURI(type));
+			Acceptor acceptor = new Acceptor() {
+
+				@Override
+				public void accept(EObject source, URI sourceURI,
+						EReference eReference, int index,
+						EObject targetOrProxy, URI targetURI) {
+					if (eReference == TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE) {
+						if (sourceURI.fragment().endsWith("/@superTypes.0")) {
+							addToResult(sourceURI);
+						}
+					}
+				}
+
+				@Override
+				public void accept(IReferenceDescription description) {
+					if (description.getEReference() == TypesPackage.Literals.JVM_PARAMETERIZED_TYPE_REFERENCE__TYPE) {
+						if (description.getSourceEObjectUri().fragment()
+								.endsWith("/@superTypes.0")) {
+							addToResult(description.getSourceEObjectUri());
+						}
+					}
+				}
+
+				private void addToResult(URI sourceURI) {
+					URI uri = URI.createURI(sourceURI.toString().replace(
+							"/@superTypes.0", ""));
+					result.add((JvmDeclaredType) resourceSet.getEObject(uri,
+							true));
+				}
+			};
+			referenceFinder.findAllReferences(
+					jvmTypeURIs,
+					new LocalResourceAccess(resourceSet),
+					new DescriptionsWrapper(ResourceSetAdapter
+							.findResourceDescriptionsData(resourceSet)),
+					acceptor, null);
+
+			return result;
+		}
+
+		@Override
+		/**
+		 * Gets the bundle space type provider.
+		 *
+		 * @return the type provider
+		 */
+		public BundleSpaceTypeProvider getTypeProvider() {
+			return typeProvider;
+		}
+	}
+
+	/**
+	 * The Class DescriptionsWrapper.
+	 */
+	public static class DescriptionsWrapper implements IResourceDescriptions {
+
+		/** The data. */
+		private final ResourceDescriptionsData data;
+
+		/**
+		 * Instantiates a new descriptions wrapper.
+		 *
+		 * @param data the data
+		 */
+		public DescriptionsWrapper(ResourceDescriptionsData data) {
+			this.data = data;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.ISelectable#isEmpty()
+		 */
+		@Override
+		public boolean isEmpty() {
+			return data.isEmpty();
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.ISelectable#getExportedObjects()
+		 */
+		@Override
+		public Iterable<IEObjectDescription> getExportedObjects() {
+			return data.getExportedObjects();
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.ISelectable#getExportedObjects(org.eclipse.emf.ecore.EClass, org.eclipse.xtext.naming.QualifiedName, boolean)
+		 */
+		@Override
+		public Iterable<IEObjectDescription> getExportedObjects(EClass type,
+				QualifiedName name, boolean ignoreCase) {
+			return data.getExportedObjects(type, name, ignoreCase);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.ISelectable#getExportedObjectsByType(org.eclipse.emf.ecore.EClass)
+		 */
+		@Override
+		public Iterable<IEObjectDescription> getExportedObjectsByType(
+				EClass type) {
+			return data.getExportedObjectsByType(type);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.ISelectable#getExportedObjectsByObject(org.eclipse.emf.ecore.EObject)
+		 */
+		@Override
+		public Iterable<IEObjectDescription> getExportedObjectsByObject(
+				EObject object) {
+			return data.getExportedObjectsByObject(object);
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.IResourceDescriptions#getAllResourceDescriptions()
+		 */
+		@Override
+		public Iterable<IResourceDescription> getAllResourceDescriptions() {
+			return data.getAllResourceDescriptions();
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.resource.IResourceDescriptions#getResourceDescription(org.eclipse.emf.common.util.URI)
+		 */
+		@Override
+		public IResourceDescription getResourceDescription(URI uri) {
+			return data.getResourceDescription(uri);
+		}
+
+	}
+
+	/**
+	 * The Class LocalResourceAccess.
+	 */
+	public static class LocalResourceAccess implements
+			IReferenceFinder.IResourceAccess {
+
+		/** The rs. */
+		private final ResourceSet rs;
+
+		/**
+		 * Instantiates a new local resource access.
+		 *
+		 * @param rs the rs
+		 */
+		public LocalResourceAccess(ResourceSet rs) {
+			this.rs = rs;
+		}
+
+		/* (non-Javadoc)
+		 * @see org.eclipse.xtext.findReferences.IReferenceFinder.IResourceAccess#readOnly(org.eclipse.emf.common.util.URI, org.eclipse.xtext.util.concurrent.IUnitOfWork)
+		 */
+		@Override
+		public <R> R readOnly(
+				URI resourceURI,
+				org.eclipse.xtext.util.concurrent.IUnitOfWork<R, ResourceSet> work) {
+			try {
+				return work.exec(rs);
+			} catch (Exception e) {
+				throw new IllegalStateException(e);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/MetadataBuilderModule.java b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/MetadataBuilderModule.java
new file mode 100644
index 0000000..bcfee22
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.metadata.services/src/org/eclipse/osbp/xtext/builder/metadata/services/impl/MetadataBuilderModule.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.metadata.services.impl;
+
+import org.eclipse.xtext.common.types.access.IJvmTypeProvider;
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+import org.eclipse.xtext.resource.impl.ResourceSetBasedResourceDescriptions;
+import org.eclipse.xtext.service.AbstractGenericModule;
+import org.eclipse.xtext.service.SingletonBinding;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+
+import com.google.inject.name.Names;
+
+@SuppressWarnings("restriction")
+public class MetadataBuilderModule extends AbstractGenericModule {
+
+	private IMetadataBuilderService service;
+
+	public MetadataBuilderModule(IMetadataBuilderService service) {
+		this.service = service;
+	}
+
+	public void configureIMetaBuilderService(com.google.inject.Binder binder) {
+		binder.bind(IMetadataBuilderService.class).toInstance(service);
+	}
+
+	public void configureNamedProviderScope(com.google.inject.Binder binder) {
+		binder.bind(IResourceDescriptions.class)
+				.annotatedWith(
+						Names.named(ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE))
+				.to(ResourceSetBasedResourceDescriptions.class);
+	}
+
+	public void configureLiveProviderScope(com.google.inject.Binder binder) {
+		binder.bind(IResourceDescriptions.class)
+				.annotatedWith(
+						Names.named(ResourceDescriptionsProvider.LIVE_SCOPE))
+				.to(ResourceSetBasedResourceDescriptions.class);
+	}
+
+	public void configurePeristedProviderScope(com.google.inject.Binder binder) {
+		binder.bind(IResourceDescriptions.class)
+				.annotatedWith(
+						Names.named(ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS))
+				.to(ResourceSetBasedResourceDescriptions.class);
+	}
+
+	@SingletonBinding
+	public Class<? extends IResourceDescriptions> bindIResourceDescriptions() {
+		return ResourceSetBasedResourceDescriptions.class;
+	}
+
+	public Class<? extends AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+	public Class<? extends IJvmTypeProvider.Factory> bindbindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	@SingletonBinding
+	public Class<? extends XtextResourceSet> bindbindXtextResourceSet() {
+		return XtextResourceSet.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/.project b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/.project
new file mode 100644
index 0000000..6b8067f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/LICENSE.txt b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.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.builder.participant.dmodelsample.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8eab3c2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,27 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.metadata.services;bundle-version="[0.9.0,0.10.0)",
+ org.knowhowlab.osgi.testing.assertions;bundle-version="[1.3.0,1.3.1)",
+ org.knowhowlab.osgi.testing.utils;bundle-version="1.2.2",
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.equinox.ds;bundle-version="1.4.101",
+ org.eclipse.equinox.util;bundle-version="1.0.500",
+ org.eclipse.xtext.example.domainmodel;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.participant.dmodelsample;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Bundle-Activator: org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests.Activator
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/README.txt b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/build.properties b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/build.properties
new file mode 100644
index 0000000..d048260
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/build.properties
@@ -0,0 +1,6 @@
+bin.includes = META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/epl-v10.html b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.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.builder.participant.dmodelsample.tests/license.html b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.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.builder.participant.dmodelsample.tests/model/dmodelTest.dmodel b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/model/dmodelTest.dmodel
new file mode 100644
index 0000000..b50ee6c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/model/dmodelTest.dmodel
@@ -0,0 +1,14 @@
+// import java.util.List
+// import java.awt.Point
+// import org.eclipse.osbp.xtext.builder.tests.LocalClass
+
+package org.my.tests {
+
+	entity Simple {
+	// 	list : List < String >
+	// 	dbl : Double
+	// 	point : Point
+	// 	localClass : LocalClass
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/plugin.properties b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/pom.xml b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/pom.xml
new file mode 100644
index 0000000..20e1d59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests</artifactId>
+    <packaging>eclipse-test-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/tests/Activator.java b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/tests/Activator.java
new file mode 100644
index 0000000..1f35800
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/tests/Activator.java
@@ -0,0 +1,34 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	public static BundleContext context;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		Activator.context = context;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/tests/DomainModelBuilderParticipantTests.java b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/tests/DomainModelBuilderParticipantTests.java
new file mode 100644
index 0000000..b792188
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/tests/DomainModelBuilderParticipantTests.java
@@ -0,0 +1,181 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.knowhowlab.osgi.testing.assertions.OSGiAssert.setDefaultBundleContext;
+import static org.knowhowlab.osgi.testing.assertions.ServiceAssert.assertServiceUnavailable;
+import static org.knowhowlab.osgi.testing.utils.BundleUtils.findBundle;
+import static org.knowhowlab.osgi.testing.utils.ServiceUtils.getService;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.XtextPackage;
+import org.eclipse.xtext.example.domainmodel.domainmodel.DomainmodelPackage;
+import org.eclipse.xtext.example.domainmodel.domainmodel.Entity;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+public class DomainModelBuilderParticipantTests {
+
+	private static final String ENTITY_NAME = "Simple";
+	private static final String ENTITY = "org.my.tests.Simple";
+	private static final int TIME_500 = 500;
+	private static final int TIME_1000 = 1000;
+	private static final int TIME_2000 = 2000;
+	private static final int TIME_2500 = 2500;
+	private Bundle builderBundle;
+	private Bundle participantBundle;
+
+	@Before
+	public void setup() throws BundleException {
+
+		setDefaultBundleContext(Activator.context);
+
+		participantBundle = findBundle(Activator.context,
+				"org.eclipse.osbp.xtext.builder.participant.dmodelsample");
+		participantBundle.stop();
+
+		// restart the metadata service
+		builderBundle = findBundle(Activator.context,
+				"org.eclipse.osbp.xtext.builder.metadata.services");
+		builderBundle.stop();
+		builderBundle.start();
+		getService(Activator.context, IMetadataBuilderService.class, TIME_2000);
+	}
+
+	@Test
+	public void testDeactivateService() throws Exception {
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+
+		participantBundle.start();
+		Thread.sleep(TIME_2000);
+		
+		Entity entity = findEntity(builderService);
+		assertEquals(ENTITY_NAME, entity.getName());
+
+		builderBundle.stop();
+		Thread.sleep(TIME_500);
+
+		assertServiceUnavailable(IMetadataBuilderService.class);
+
+		builderBundle.start();
+		Thread.sleep(TIME_500);
+
+		builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+
+		Entity entity2 = findEntity(builderService);
+		assertEquals(ENTITY_NAME, entity2.getName());
+
+		assertNotSame(entity, entity2);
+
+		// since the resource was unloaded, the entity loaded with old service
+		// is
+		// an EProxy now
+		InternalEObject iEntity = (InternalEObject) entity;
+		assertFalse(iEntity.eIsProxy());
+		assertNull(iEntity.eResource().getResourceSet());
+		assertNotNull(entity2.eResource().getResourceSet());
+
+		assertTrue(EcoreUtil.equals(entity, entity2));
+	}
+
+	private Entity findEntity(IMetadataBuilderService builderService) {
+		return (Entity) builderService.getMetadata(ENTITY,
+				DomainmodelPackage.Literals.ENTITY);
+	}
+
+	@Test
+	public void testCache() throws Exception {
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+		
+		participantBundle.start();
+		Thread.sleep(TIME_2000);
+		
+		Entity entity = findEntity(builderService);
+		assertEquals(ENTITY_NAME, entity.getName());
+
+		Entity entity2 = findEntity(builderService);
+		assertEquals(ENTITY_NAME, entity.getName());
+
+		InternalEObject iEntity = (InternalEObject) entity;
+		assertFalse(iEntity.eIsProxy());
+		assertNotNull(iEntity.eResource().getResourceSet());
+		assertNotNull(entity2.eResource().getResourceSet());
+
+		assertTrue(EcoreUtil.equals(entity, entity2));
+		assertSame(entity, entity2);
+	}
+
+	@Test
+	public void testStopParticipantBundle() throws Exception {
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+
+		participantBundle.stop();
+		Thread.sleep(TIME_2500);
+
+		builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+
+		// access the entity by using the builder service directly
+		Entity entity = (Entity) builderService.getMetadata(ENTITY,
+				XtextPackage.Literals.GRAMMAR);
+		assertNull(entity);
+
+		participantBundle.start();
+		Thread.sleep(TIME_500);
+
+		entity = findEntity(builderService);
+		assertEquals(ENTITY_NAME, entity.getName());
+
+		// stop and start again
+		participantBundle.stop();
+		Thread.sleep(TIME_500);
+		participantBundle.start();
+		Thread.sleep(TIME_500);
+
+		Entity entity3 = findEntity(builderService);
+		assertNotNull(entity3);
+		assertEquals(ENTITY_NAME, entity3.getName());
+
+		// assert that the entity loaded before stopping the service has
+		// changed to an eProxy
+		InternalEObject iEntity = (InternalEObject) entity;
+		assertFalse(iEntity.eIsProxy());
+		assertNull(entity.eResource().getResourceSet());
+		assertNotNull(entity3.eResource().getResourceSet());
+
+		assertTrue(EcoreUtil.equals(entity, entity3));
+		assertNotSame(entity, entity3);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/.project b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/.project
new file mode 100644
index 0000000..60b4237
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.participant.dmodelsample</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</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.pde.ds.core.builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</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.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/LICENSE.txt b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/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.builder.participant.dmodelsample/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..05190eb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.participant.dmodelsample
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.participant.dmodelsample
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.metadata.services;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtend.typesystem.emf,
+ org.eclipse.xtend,
+ org.eclipse.xtext.example.domainmodel;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.xbase.setups;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.framework.wiring;version="1.1.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl.DomainmodelBuilderParticipant.xml
+Export-Package: org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl;x-internal:="true";version="0.9.0"
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/OSGI-INF/org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl.DomainmodelBuilderParticipant.xml b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/OSGI-INF/org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl.DomainmodelBuilderParticipant.xml
new file mode 100644
index 0000000..ae79213
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/OSGI-INF/org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl.DomainmodelBuilderParticipant.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl.DomainmodelBuilderParticipant">
+   <implementation class="org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl.DomainmodelBuilderParticipant"/>
+   <service>
+      <provide interface="org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant"/>
+   </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/README.txt b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/about.html b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/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.builder.participant.dmodelsample/about.ini b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/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.builder.participant.dmodelsample/about.mappings b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/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.builder.participant.dmodelsample/about.properties b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/about.properties
new file mode 100644
index 0000000..a8c6cdb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.participant.dmodelsample
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/build.properties b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/build.properties
new file mode 100644
index 0000000..dc7d84b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/build.properties
@@ -0,0 +1,7 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               OSGI-INF/
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/epl-v10.html b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/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.builder.participant.dmodelsample/license.html b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/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.builder.participant.dmodelsample/plugin.properties b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/pom.xml b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/pom.xml
new file mode 100644
index 0000000..0f4655c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.participant.dmodelsample</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBuilderParticipant.java b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBuilderParticipant.java
new file mode 100644
index 0000000..4ab0689
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBuilderParticipant.java
@@ -0,0 +1,93 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.osbp.xtext.builder.metadata.services.AbstractBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.wiring.BundleWiring;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+
+import com.google.inject.Inject;
+
+@Component(service={IBuilderParticipant.class})
+public class DomainmodelBuilderParticipant extends AbstractBuilderParticipant {
+
+	@Inject
+	private IMetadataBuilderService metadataBuilderService;
+
+	private ComponentContext context;
+
+	public DomainmodelBuilderParticipant() {
+
+	}
+
+	@Activate
+	protected void activate(ComponentContext context) {
+		this.context = context;
+	}
+
+	@Deactivate
+	protected void deactivate(ComponentContext context) {
+		metadataBuilderService.removeFromBundleSpace(context.getBundleContext()
+				.getBundle());
+
+		this.context = null;
+	}
+
+	@Override
+	public List<URL> getModels(Bundle suspect) {
+		List<URL> results = new ArrayList<URL>();
+		BundleWiring wiring = suspect.adapt(BundleWiring.class);
+		results.addAll(wiring.findEntries("/", "*.dmodel",
+				BundleWiring.LISTRESOURCES_RECURSE));
+		return results;
+	}
+
+	@Override
+	public void notifyLifecyle(LifecycleEvent event) {
+		if (event.getState() == IBuilderParticipant.LifecycleEvent.INITIALIZE) {
+			initialize();
+		} else if (event.getState() == IBuilderParticipant.LifecycleEvent.ACTIVATED) {
+			// XBaseService xbaseService = new XBaseService();
+			// serviceRegister = context.getBundleContext().registerService(
+			// IXbaseMetadataService.class, xbaseService, null);
+		} else {
+			// if (serviceRegister != null) {
+			// serviceRegister.unregister();
+			// serviceRegister = null;
+			// }
+
+			if (metadataBuilderService != null) {
+				metadataBuilderService.removeFromBundleSpace(context
+						.getBundleContext().getBundle());
+			}
+		}
+	}
+
+	private void initialize() {
+		DomainmodelBundleSpaceStandaloneSetup.doSetup();
+		metadataBuilderService.addToBundleSpace(context.getBundleContext()
+				.getBundle());
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..e66f18a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBundleSpaceRuntimeModule.java
@@ -0,0 +1,35 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl;
+
+import org.eclipse.xtext.example.domainmodel.DomainmodelRuntimeModule;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+@SuppressWarnings("restriction")
+public class DomainmodelBundleSpaceRuntimeModule extends
+		DomainmodelRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..8cc2931
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.dmodelsample/src/org/eclipse/osbp/xtext/builder/participant/dmodelsample/impl/DomainmodelBundleSpaceStandaloneSetup.java
@@ -0,0 +1,43 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.xtext.builder.participant.dmodelsample.impl;
+
+import org.eclipse.xtext.example.domainmodel.DomainmodelStandaloneSetup;
+import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@SuppressWarnings("restriction")
+public class DomainmodelBundleSpaceStandaloneSetup extends
+		DomainmodelStandaloneSetup {
+
+	public static void doSetup() {
+		new DomainmodelBundleSpaceStandaloneSetup()
+				.createInjectorAndDoEMFRegistration();
+	}
+
+	public Injector createInjector() {
+		return Guice.createInjector(new DomainmodelBundleSpaceRuntimeModule());
+	}
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/.project b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/.project
new file mode 100644
index 0000000..ab71147
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/LICENSE.txt b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.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.builder.participant.jvmtypes.extender.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..325cc80
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.extender.tests;version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.metadata.services;bundle-version="[0.9.0,0.10.0)",
+ org.knowhowlab.osgi.testing.assertions;bundle-version="[1.3.0,1.3.1)",
+ org.knowhowlab.osgi.testing.utils;bundle-version="1.2.2",
+ org.eclipse.osbp.xtext.builder.participant.jvmtypes;bundle-version="[0.9.0,0.10.0)",
+ org.junit;bundle-version="4.11.0"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+OSBP-RuntimeBuilder-BundleSpace: 
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/README.txt b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/build.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/build.properties
new file mode 100644
index 0000000..d048260
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/build.properties
@@ -0,0 +1,6 @@
+bin.includes = META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/epl-v10.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.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.builder.participant.jvmtypes.extender.tests/license.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.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.builder.participant.jvmtypes.extender.tests/plugin.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/pom.xml b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/pom.xml
new file mode 100644
index 0000000..d436636
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests</artifactId>
+    <packaging>eclipse-test-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/extender/tests/ExtenderClass2ToLoad.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/extender/tests/ExtenderClass2ToLoad.java
new file mode 100644
index 0000000..4204fb5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/extender/tests/ExtenderClass2ToLoad.java
@@ -0,0 +1,38 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.extender.tests;
+
+public class ExtenderClass2ToLoad {
+
+	public ExtenderClass2ToLoad() {
+
+	}
+
+	public ExtenderClass2ToLoad(String value, ExtenderClass2ToLoad other) {
+
+	}
+
+	public static class InnerClass {
+
+		public InnerClass() {
+
+		}
+
+		public InnerClass(String value, ExtenderClass2ToLoad.InnerClass other) {
+
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/extender/tests/ExtenderClassToLoad.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/extender/tests/ExtenderClassToLoad.java
new file mode 100644
index 0000000..4a027d2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/extender/tests/ExtenderClassToLoad.java
@@ -0,0 +1,27 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.extender.tests;
+
+public class ExtenderClassToLoad {
+
+	public ExtenderClassToLoad() {
+
+	}
+
+	public ExtenderClassToLoad(String value, ExtenderClass2ToLoad class2) {
+
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/.project b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/.project
new file mode 100644
index 0000000..cdad6c9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.participant.jvmtypes.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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/LICENSE.txt b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.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.builder.participant.jvmtypes.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..43b45c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.metadata.services;bundle-version="[0.9.0,0.10.0)",
+ org.knowhowlab.osgi.testing.assertions;bundle-version="[1.3.0,1.3.1)",
+ org.knowhowlab.osgi.testing.utils;bundle-version="1.2.2",
+ org.eclipse.osbp.xtext.builder.participant.jvmtypes;bundle-version="[0.9.0,0.10.0)",
+ org.junit;bundle-version="4.11.0",
+ org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.equinox.ds;bundle-version="1.4.101",
+ org.eclipse.equinox.util;bundle-version="1.0.500"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Bundle-Activator: org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests.Activator
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/README.txt b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/build.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/build.properties
new file mode 100644
index 0000000..d048260
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/build.properties
@@ -0,0 +1,6 @@
+bin.includes = META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/epl-v10.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.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.builder.participant.jvmtypes.tests/license.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.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.builder.participant.jvmtypes.tests/plugin.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/pom.xml b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/pom.xml
new file mode 100644
index 0000000..2f4417e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests</artifactId>
+    <packaging>eclipse-test-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Activator.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Activator.java
new file mode 100644
index 0000000..df7a05e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Activator.java
@@ -0,0 +1,33 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	public static BundleContext context;
+
+	@Override
+	public void start(BundleContext context) throws Exception {
+		Activator.context = context;
+	}
+
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Class1ToLoad.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Class1ToLoad.java
new file mode 100644
index 0000000..44454ef
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Class1ToLoad.java
@@ -0,0 +1,24 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+public class Class1ToLoad {
+
+	public Class1ToLoad() {
+
+	}
+
+	public Class1ToLoad(String value, Class2ToLoad class2) {
+
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Class2ToLoad.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Class2ToLoad.java
new file mode 100644
index 0000000..81adad3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/Class2ToLoad.java
@@ -0,0 +1,38 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+public class Class2ToLoad {
+
+	public Class2ToLoad() {
+
+	}
+
+	public Class2ToLoad(String value, Class2ToLoad other) {
+
+	}
+
+	public static class InnerClass {
+
+		public InnerClass() {
+
+		}
+
+		public InnerClass(String value, Class2ToLoad.InnerClass other) {
+
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/JvmTypesBuilderParticipantTests.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/JvmTypesBuilderParticipantTests.java
new file mode 100644
index 0000000..a0dbbdc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/tests/JvmTypesBuilderParticipantTests.java
@@ -0,0 +1,242 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.knowhowlab.osgi.testing.assertions.OSGiAssert.setDefaultBundleContext;
+import static org.knowhowlab.osgi.testing.assertions.ServiceAssert.assertServiceUnavailable;
+import static org.knowhowlab.osgi.testing.utils.BundleUtils.findBundle;
+import static org.knowhowlab.osgi.testing.utils.ServiceUtils.getService;
+
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.common.types.JvmType;
+import org.junit.Before;
+import org.junit.Test;
+import org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.IJvmTypeMetadataService;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleException;
+
+public class JvmTypesBuilderParticipantTests {
+
+	private static final String STRING_CLASS = "java.lang.String";
+	private static final String EXTENDER_CLASS2 = "org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.extender.tests.ExtenderClass2ToLoad";
+	private static final String EXTENDER_CLASS = "org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.extender.tests.ExtenderClassToLoad";
+	private static final String BUNDLE_METADATA_SERVICE = "org.eclipse.osbp.xtext.builder.metadata.services";
+	private static final String BUNDLE_EXTENDER = "org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests";
+	private static final int TIME_500 = 500;
+	private static final int TIME_1000 = 1000;
+	private static final int TIME_2000 = 2000;
+
+	private Bundle extenderBundle;
+	private Bundle builderBundle;
+
+	@Before
+	public void setup() throws BundleException, InterruptedException {
+
+		setDefaultBundleContext(Activator.context);
+
+		extenderBundle = findBundle(Activator.context, BUNDLE_EXTENDER);
+		extenderBundle.stop();
+		Thread.sleep(TIME_1000);
+
+		// restart the metadata service
+		builderBundle = findBundle(Activator.context, BUNDLE_METADATA_SERVICE);
+		builderBundle.stop();
+		builderBundle.start();
+		getService(Activator.context, IMetadataBuilderService.class, TIME_2000);
+	}
+
+	@Test
+	public void testCacheReset() {
+
+		IJvmTypeMetadataService service = getService(Activator.context,
+				IJvmTypeMetadataService.class, TIME_1000);
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(service);
+		assertNotNull(builderService);
+
+		JvmType type = service.getJvmType(String.class);
+		assertEquals(STRING_CLASS, type.getQualifiedName());
+
+		JvmType testClass = service.getJvmType(getClass());
+		assertNull(testClass);
+
+		// the new bundle resets the cache
+		builderService.addToBundleSpace(Activator.context.getBundle());
+		testClass = service.getJvmType(getClass());
+		assertNotNull(testClass);
+	}
+
+	@Test
+	public void testGetJvmTypeWithManuallyAddedBundleSpace() {
+
+		IJvmTypeMetadataService service = getService(Activator.context,
+				IJvmTypeMetadataService.class, TIME_1000);
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(service);
+		assertNotNull(builderService);
+
+		// add this test bundle to bundle space
+		builderService.addToBundleSpace(Activator.context.getBundle());
+
+		JvmType testClass = service.getJvmType(getClass());
+		assertNotNull(testClass);
+
+	}
+
+	@Test
+	public void testLoadClassThenRemoveParticipant() {
+		IJvmTypeMetadataService service = getService(Activator.context,
+				IJvmTypeMetadataService.class, TIME_1000);
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+		assertNotNull(service);
+
+		// add this test bundle to bundle space
+		builderService.addToBundleSpace(Activator.context.getBundle());
+
+		JvmType testClass = service.getJvmType(Class1ToLoad.class);
+		assertNotNull(testClass);
+
+		// remove the bundle again from bundle space
+		builderService.removeFromBundleSpace(Activator.context.getBundle());
+		// then load class2
+		JvmType testClass2 = service.getJvmType(Class2ToLoad.class);
+		assertNull(testClass2);
+
+		// load the class1 again -> Needs to be cached
+		testClass = service.getJvmType(Class1ToLoad.class);
+		assertNotNull(testClass);
+
+		// add this test bundle to bundle space again
+		builderService.addToBundleSpace(Activator.context.getBundle());
+
+		testClass2 = service.getJvmType(Class2ToLoad.class);
+		assertNotNull(testClass2);
+	}
+
+	@Test
+	public void testBundleSpaceExtenderBundle() throws BundleException,
+			InterruptedException {
+		IJvmTypeMetadataService service = getService(Activator.context,
+				IJvmTypeMetadataService.class, TIME_1000);
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(builderService);
+		assertNotNull(service);
+
+		extenderBundle.start();
+		Thread.sleep(TIME_500);
+		extenderBundle.stop();
+		Thread.sleep(TIME_1000);
+		
+		// then load class
+		JvmType testClass = service.getJvmType(EXTENDER_CLASS);
+		assertNull(testClass);
+		JvmType testClass2 = service.getJvmType(EXTENDER_CLASS2);
+		assertNull(testClass2);
+
+		// now start the extender bundle
+		assertEquals(Bundle.RESOLVED, extenderBundle.getState());
+		extenderBundle.start();
+		// wait TIME_500 ms since bundle start is async
+		Thread.sleep(TIME_500);
+
+		testClass = service.getJvmType(EXTENDER_CLASS);
+		assertNotNull(testClass);
+
+		// now stop the extender bundle again
+		extenderBundle.stop();
+		// wait TIME_500 ms since bundle stop is async
+		Thread.sleep(TIME_500);
+
+		// test class1 is still available, since cached
+		testClass = service.getJvmType(EXTENDER_CLASS);
+		assertNotNull(testClass);
+
+		// test class2 can not be loaded, since not available in bundle space
+		testClass2 = service.getJvmType(EXTENDER_CLASS2);
+		assertNull(testClass2);
+	}
+
+	@Test
+	public void testDeactivateService() throws Exception {
+		IJvmTypeMetadataService service = getService(Activator.context,
+				IJvmTypeMetadataService.class, TIME_1000);
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(service);
+		assertNotNull(builderService);
+
+		JvmType type = service.getJvmType(String.class);
+		assertEquals(STRING_CLASS, type.getQualifiedName());
+
+		builderBundle.stop();
+		Thread.sleep(TIME_500);
+
+		assertServiceUnavailable(IJvmTypeMetadataService.class);
+		assertServiceUnavailable(IMetadataBuilderService.class);
+
+		builderBundle.start();
+		Thread.sleep(TIME_500);
+
+		service = getService(Activator.context, IJvmTypeMetadataService.class,
+				TIME_1000);
+		builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(service);
+		assertNotNull(builderService);
+
+		JvmType type2 = service.getJvmType(String.class);
+		assertEquals(STRING_CLASS, type.getQualifiedName());
+
+		assertNotSame(type, type2);
+
+		// since the resource was unloaded, the type loaded with old service is
+		// an EProxy now
+		InternalEObject iType = (InternalEObject) type;
+		assertFalse(iType.eIsProxy());
+		assertFalse(EcoreUtil.equals(type, type2));
+	}
+
+	@Test
+	public void testCache() throws Exception {
+		IJvmTypeMetadataService service = getService(Activator.context,
+				IJvmTypeMetadataService.class, TIME_1000);
+		IMetadataBuilderService builderService = getService(Activator.context,
+				IMetadataBuilderService.class, TIME_1000);
+		assertNotNull(service);
+		assertNotNull(builderService);
+
+		JvmType type = service.getJvmType(String.class);
+		assertEquals(STRING_CLASS, type.getQualifiedName());
+
+		JvmType type2 = service.getJvmType(String.class);
+		assertEquals(STRING_CLASS, type.getQualifiedName());
+
+		InternalEObject iType = (InternalEObject) type;
+		assertFalse(iType.eIsProxy());
+		assertSame(type, type2);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/.project b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/.project
new file mode 100644
index 0000000..2a9db1d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.participant.jvmtypes</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/LICENSE.txt b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/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.builder.participant.jvmtypes/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..46defdd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.participant.jvmtypes
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.participant.jvmtypes
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes;
+  uses:="org.eclipse.xtext.common.types";version="0.9.0",
+ org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl;x-internal:=true;version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.metadata.services;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl.JvmTypesBuilderParticipant.xml
+Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/OSGI-INF/org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl.JvmTypesBuilderParticipant.xml b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/OSGI-INF/org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl.JvmTypesBuilderParticipant.xml
new file mode 100644
index 0000000..01b0455
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/OSGI-INF/org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl.JvmTypesBuilderParticipant.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl.JvmTypesBuilderParticipant">
+   <implementation class="org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl.JvmTypesBuilderParticipant"/>
+   <service>
+      <provide interface="org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant"/>
+   </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/README.txt b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/about.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/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.builder.participant.jvmtypes/about.ini b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/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.builder.participant.jvmtypes/about.mappings b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/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.builder.participant.jvmtypes/about.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/about.properties
new file mode 100644
index 0000000..4a177b9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.participant.jvmtypes
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/build.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/build.properties
new file mode 100644
index 0000000..dc7d84b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/build.properties
@@ -0,0 +1,7 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               OSGI-INF/
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/epl-v10.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/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.builder.participant.jvmtypes/license.html b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/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.builder.participant.jvmtypes/plugin.properties b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/pom.xml b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/pom.xml
new file mode 100644
index 0000000..d00cbdf
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.participant.jvmtypes</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/IJvmTypeMetadataService.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/IJvmTypeMetadataService.java
new file mode 100644
index 0000000..ff23c36
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/IJvmTypeMetadataService.java
@@ -0,0 +1,35 @@
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes;
+
+import org.eclipse.xtext.common.types.JvmType;
+
+public interface IJvmTypeMetadataService {
+
+	/**
+	 * Returns the {@link JvmType} for the given class.
+	 * 
+	 * @param clazz
+	 * @return
+	 */
+	JvmType getJvmType(Class<?> clazz);
+
+	/**
+	 * Returns the {@link JvmType} for the given qualified name.
+	 * 
+	 * @param qualifiedName
+	 * @return
+	 */
+	JvmType getJvmType(String qualifiedName);
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.participant.jvmtypes/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/impl/JvmTypesBuilderParticipant.java b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/impl/JvmTypesBuilderParticipant.java
new file mode 100644
index 0000000..c7900b4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.participant.jvmtypes/src/org/eclipse/osbp/dsl/xtext/builder/participant/jvmtypes/impl/JvmTypesBuilderParticipant.java
@@ -0,0 +1,139 @@
+
+
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+
+
+package org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.impl;
+
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.osbp.dsl.xtext.builder.participant.jvmtypes.IJvmTypeMetadataService;
+import org.eclipse.osbp.xtext.builder.metadata.services.AbstractBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IBuilderParticipant;
+import org.eclipse.osbp.xtext.builder.metadata.services.IMetadataBuilderService;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+
+import com.google.inject.Inject;
+
+@Component(service = { IBuilderParticipant.class })
+public class JvmTypesBuilderParticipant extends AbstractBuilderParticipant {
+
+	@Inject
+	private XtextResourceSet resourceSet;
+
+	@Inject
+	private IMetadataBuilderService metadataBuilderService;
+
+	private ComponentContext context;
+	private ServiceRegistration<IJvmTypeMetadataService> serviceRegister;
+
+	@Activate
+	protected void activate(ComponentContext context) {
+		this.context = context;
+	}
+
+	@Deactivate
+	protected void deactivate(ComponentContext context) {
+		metadataBuilderService.removeFromBundleSpace(context.getBundleContext()
+				.getBundle());
+
+		this.context = null;
+	}
+
+	@Override
+	public List<URL> getModels(Bundle suspect) {
+		return Collections.emptyList();
+	}
+
+	@Override
+	public void notifyLifecyle(LifecycleEvent event) {
+		if (event.getState() == IBuilderParticipant.LifecycleEvent.INITIALIZE) {
+			initialize();
+		} else if (event.getState() == IBuilderParticipant.LifecycleEvent.ACTIVATED) {
+			JvmTypeService jvmTypeService = new JvmTypeService();
+			serviceRegister = context.getBundleContext().registerService(
+					IJvmTypeMetadataService.class, jvmTypeService, null);
+		} else if (event.getState() == IBuilderParticipant.LifecycleEvent.DEACTIVATED) {
+			if (serviceRegister != null) {
+				serviceRegister.unregister();
+				serviceRegister = null;
+			}
+
+			if (metadataBuilderService != null) {
+				metadataBuilderService.removeFromBundleSpace(context
+						.getBundleContext().getBundle());
+			}
+		}
+	}
+
+	private void initialize() {
+		if (!Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap()
+				.containsKey("ecore")) {
+			Resource.Factory.Registry.INSTANCE
+					.getExtensionToFactoryMap()
+					.put("ecore",
+							new org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl());
+		}
+
+		if (!Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap()
+				.containsKey("xmi")) {
+			Resource.Factory.Registry.INSTANCE
+					.getExtensionToFactoryMap()
+					.put("xmi",
+							new org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl());
+		}
+
+		if (!EPackage.Registry.INSTANCE.containsKey(TypesPackage.eNS_URI)) {
+			EPackage.Registry.INSTANCE.put(TypesPackage.eNS_URI,
+					TypesPackage.eINSTANCE);
+		}
+
+		metadataBuilderService.addToBundleSpace(context.getBundleContext()
+				.getBundle());
+	}
+
+	/**
+	 * Provided as an OSGi service to return {@link JvmType JvmTypes} for the
+	 * given class name.
+	 */
+	private class JvmTypeService implements IJvmTypeMetadataService {
+
+		@Override
+		public JvmType getJvmType(Class<?> clazz) {
+			return getJvmType(clazz.getCanonicalName());
+		}
+
+		@Override
+		public JvmType getJvmType(String qualifiedName) {
+			Resource resource = resourceSet.getResource(URI.createURI(String
+					.format("java://%s/Objects/%s", qualifiedName,
+							qualifiedName)), true);
+			return (JvmType) (resource.getContents().size() > 0 ? resource
+					.getContents().get(0) : null);
+		}
+
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/.project b/org.eclipse.osbp.xtext.builder.types.bundles/.project
new file mode 100644
index 0000000..ec3d64a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.types.bundles</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.pde.ds.core.builder</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.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/LICENSE.txt b/org.eclipse.osbp.xtext.builder.types.bundles/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/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.builder.types.bundles/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.types.bundles/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9efff4e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.types.bundles
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.types.bundles
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.osbp.dsl.xtext.types.bundles;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.apache.felix.gogo.runtime;bundle-version="0.10.0"
+Import-Package: org.eclipse.osbp.runtime.common.shell;version="0.9.0",
+ org.eclipse.osbp.runtime.common.types;version="0.9.0",
+ org.osgi.framework;version="1.7.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/bundlespace.commands.xml
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/README.txt b/org.eclipse.osbp.xtext.builder.types.bundles/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/about.html b/org.eclipse.osbp.xtext.builder.types.bundles/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/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.builder.types.bundles/about.ini b/org.eclipse.osbp.xtext.builder.types.bundles/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/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.builder.types.bundles/about.mappings b/org.eclipse.osbp.xtext.builder.types.bundles/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/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.builder.types.bundles/about.properties b/org.eclipse.osbp.xtext.builder.types.bundles/about.properties
new file mode 100644
index 0000000..9e9e061
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.types.bundles
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/build.properties b/org.eclipse.osbp.xtext.builder.types.bundles/build.properties
new file mode 100644
index 0000000..0fb94f4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/build.properties
@@ -0,0 +1,6 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/epl-v10.html b/org.eclipse.osbp.xtext.builder.types.bundles/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/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.builder.types.bundles/license.html b/org.eclipse.osbp.xtext.builder.types.bundles/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/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.builder.types.bundles/plugin.properties b/org.eclipse.osbp.xtext.builder.types.bundles/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/pom.xml b/org.eclipse.osbp.xtext.builder.types.bundles/pom.xml
new file mode 100644
index 0000000..9d329bc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.types.bundles</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpace.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpace.java
new file mode 100644
index 0000000..d8409a9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpace.java
@@ -0,0 +1,165 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ * 
+ * Based on Xtext org.eclipse.xtext.common.types.access.impl.ClassFinder
+ * 
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+import org.eclipse.xtext.common.types.access.impl.ClassNameUtil;
+import org.eclipse.xtext.common.types.access.impl.Primitives;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.osgi.framework.Bundle;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class BundleSpace implements IBundleSpace {
+
+	private static final Class<?> NULL_CLASS;
+	@Inject
+	private XtextResourceSet resourceSet;
+
+	static {
+		class Null {
+		}
+		NULL_CLASS = Null.class;
+	}
+
+	private final Set<Bundle> bundles = Collections
+			.synchronizedSet(new HashSet<Bundle>());
+	private final ClassNameUtil classNameUtil;
+	private final Class<?> nullValue;
+	private final Cache cache;
+
+	public BundleSpace() {
+		this.nullValue = NULL_CLASS;
+		this.cache = new Cache();
+		this.classNameUtil = new ClassNameUtil();
+	}
+
+	public Set<Bundle> getBundles() {
+		return new HashSet<>(bundles);
+	}
+
+	/**
+	 * Tries to find a class for the given class name using the bundles
+	 * registered in the bundle space.
+	 * 
+	 * @param name
+	 * @return
+	 * @throws ClassNotFoundException
+	 */
+	public Class<?> forName(String name) throws ClassNotFoundException {
+		Class<?> result = null;
+		synchronized (cache) {
+			result = cache.get(name);
+			if (result != null) {
+				if (result == nullValue) {
+					throw new ClassNotFoundException();
+				}
+				return result;
+			}
+
+			synchronized (bundles) {
+				for (Bundle bundle : bundles) {
+					try {
+						result = bundle.loadClass(classNameUtil
+								.normalizeClassName(name));
+						if (result != null) {
+							break;
+						}
+					} catch (ClassNotFoundException e) {
+						// nothing to do
+					}
+				}
+			}
+
+			if (result != null) {
+				cache.put(name, result);
+			} else {
+				cache.put(name, NULL_CLASS);
+				throw new ClassNotFoundException();
+			}
+		}
+		return result;
+	}
+
+	/**
+	 * Adds a new bundle to the bundle space. The bundle will be used to find
+	 * classes.
+	 * 
+	 * @param bundle
+	 */
+	public void add(Bundle bundle) {
+		bundles.add(bundle);
+
+		synchronized (cache) {
+			cache.resetNullValue();
+		}
+	}
+
+	/**
+	 * Removes the bundle from the bundle space.
+	 * 
+	 * @param bundle
+	 */
+	public void remove(Bundle bundle) {
+		bundles.remove(bundle);
+	}
+
+	@SuppressWarnings("serial")
+	private class Cache extends HashMap<String, Class<?>> {
+		private static final int INITIAL_SIZE = 500;
+
+		public Cache() {
+			super(INITIAL_SIZE);
+			for (Class<?> primitiveType : Primitives.ALL_PRIMITIVE_TYPES) {
+				put(primitiveType.getName(), primitiveType);
+			}
+		}
+
+		public void resetNullValue() {
+			for (Iterator<Map.Entry<String, Class<?>>> iterator = entrySet()
+					.iterator(); iterator.hasNext();) {
+				Map.Entry<String, Class<?>> entry = iterator.next();
+				if (entry.getValue() == NULL_CLASS) {
+					unloadClassResource(entry);
+					iterator.remove();
+				}
+			}
+		}
+
+		/**
+		 * Unloads the class resource.
+		 * 
+		 * @param entry
+		 */
+		private void unloadClassResource(Map.Entry<String, Class<?>> entry) {
+			Resource resource = resourceSet.getResource(
+					URI.createURI(String.format("java://%s/Objects/%s",
+							entry.getKey(), entry.getKey())), false);
+			if (resource != null) {
+				resource.unload();
+				resourceSet.getResources().remove(resource);
+			}
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceConstructorScope.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceConstructorScope.java
new file mode 100644
index 0000000..5d0e53f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceConstructorScope.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import org.eclipse.xtext.common.types.xtext.AbstractConstructorScope;
+
+@SuppressWarnings("restriction")
+public class BundleSpaceConstructorScope extends AbstractConstructorScope {
+
+	public BundleSpaceConstructorScope(BundleSpaceTypeScope typeScope) {
+		super(typeScope);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceResourceSetProvider.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceResourceSetProvider.java
new file mode 100644
index 0000000..c33262a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceResourceSetProvider.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.resource.XtextResourceSet;
+
+public class BundleSpaceResourceSetProvider {
+
+	/**
+	 * Uses the given resourceSet to find the bundle space registered with it.
+	 * 
+	 * @param resourceSet
+	 * @return
+	 */
+	public BundleSpace getBundleSpace(ResourceSet resourceSet) {
+		if (resourceSet instanceof XtextResourceSet) {
+			XtextResourceSet xtextResourceSet = (XtextResourceSet) resourceSet;
+			Object context = xtextResourceSet.getClasspathURIContext();
+			if (context instanceof BundleSpace) {
+				return (BundleSpace) context;
+			}
+		}
+		return null;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeProvider.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeProvider.java
new file mode 100644
index 0000000..388a609
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeProvider.java
@@ -0,0 +1,219 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ * 
+ * Based on Xtext org.eclipse.xtext.common.types.access.reflect.ReflectionTypeProvider
+ * 
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xtext.common.types.JvmType;
+import org.eclipse.xtext.common.types.access.IMirror;
+import org.eclipse.xtext.common.types.access.TypeResource;
+import org.eclipse.xtext.common.types.access.impl.AbstractRuntimeJvmTypeProvider;
+import org.eclipse.xtext.common.types.access.impl.ClassMirror;
+import org.eclipse.xtext.common.types.access.impl.IndexedJvmTypeAccess;
+import org.eclipse.xtext.common.types.access.reflect.ReflectURIHelper;
+import org.eclipse.xtext.common.types.access.reflect.ReflectionTypeFactory;
+import org.eclipse.osbp.runtime.common.types.IBundleSpace;
+
+@SuppressWarnings({ "restriction", "deprecation" })
+public class BundleSpaceTypeProvider extends AbstractRuntimeJvmTypeProvider {
+
+	private final IBundleSpace classFinder;
+
+	private final ReflectionTypeFactory reflectionTypeFactory;
+
+	private final ReflectURIHelper uriHelper;
+
+	@Deprecated()
+	public BundleSpaceTypeProvider(BundleSpace classFinder,
+			ResourceSet resourceSet, IndexedJvmTypeAccess indexedJvmTypeAccess) {
+		super(resourceSet, indexedJvmTypeAccess);
+		this.classFinder = classFinder;
+		uriHelper = new ReflectURIHelper();
+		reflectionTypeFactory = new ReflectionTypeFactory(uriHelper);
+	}
+
+	public BundleSpaceTypeProvider(IBundleSpace classFinder,
+			ResourceSet resourceSet, IndexedJvmTypeAccess indexedJvmTypeAccess) {
+		super(resourceSet, indexedJvmTypeAccess);
+		this.classFinder = classFinder;
+		uriHelper = new ReflectURIHelper();
+		reflectionTypeFactory = new ReflectionTypeFactory(uriHelper);
+	}
+
+	/**
+	 * Returns the type factory used.
+	 * 
+	 * @return
+	 */
+	public ReflectionTypeFactory getDeclaredTypeFactory() {
+		return reflectionTypeFactory;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public JvmType findTypeByName(String name) {
+		try {
+			// seems to be the only reliable way to locate nested types
+			// since dollar signs are a quite good indicator but not necessarily
+			// the best
+			Class<?> clazz = classFinder.forName(name);
+			return findTypeByClass(clazz);
+		} catch (ClassNotFoundException e) {
+			return tryFindTypeInIndex(name, true);
+		} catch (NoClassDefFoundError e) {
+			/*
+			 * Error will be thrown if the contents of the binary class file
+			 * does not match the expectation (transitively). See
+			 * java.lang.ClassLoader.defineClass(String, byte[], int, int,
+			 * ProtectionDomain)
+			 */
+			return tryFindTypeInIndex(name, true);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public JvmType findTypeByName(String name, boolean binaryNestedTypeDelimiter) {
+		if (isBinaryNestedTypeDelimiter(name, binaryNestedTypeDelimiter)) {
+			return findTypeByName(name);
+		}
+		return doFindTypeByName(name);
+	}
+
+	private JvmType doFindTypeByName(String name) {
+		try {
+			// seems to be the only reliable way to locate nested types
+			// since dollar signs are a quite good indicator but not necessarily
+			// the best
+			Class<?> clazz = findClassByName(name);
+			return findTypeByClass(clazz);
+		} catch (ClassNotFoundException e) {
+			return tryFindTypeInIndex(name, false);
+		} catch (NoClassDefFoundError e) {
+			/*
+			 * Error will be thrown if the contents of the binary class file
+			 * does not match the expectation (transitively). See
+			 * java.lang.ClassLoader.defineClass(String, byte[], int, int,
+			 * ProtectionDomain)
+			 */
+			return tryFindTypeInIndex(name, false);
+		}
+	}
+
+	private JvmType findTypeByClass(Class<?> clazz) {
+		IndexedJvmTypeAccess indexedJvmTypeAccess = getIndexedJvmTypeAccess();
+		URI resourceURI = uriHelper.createResourceURI(clazz);
+		if (indexedJvmTypeAccess != null) {
+			URI proxyURI = resourceURI.appendFragment(uriHelper
+					.getFragment(clazz));
+			EObject candidate = indexedJvmTypeAccess.getIndexedJvmType(
+					proxyURI, getResourceSet());
+			if (candidate instanceof JvmType) {
+				return (JvmType) candidate;
+			}
+		}
+		TypeResource result = (TypeResource) getResourceSet().getResource(
+				resourceURI, true);
+		return findTypeByClass(clazz, result);
+	}
+
+	private Class<?> findClassByName(String name) throws ClassNotFoundException {
+		try {
+			Class<?> clazz = classFinder.forName(name);
+			return clazz;
+		} catch (ClassNotFoundException exception) {
+			int index = name.lastIndexOf('.');
+			if (index <= 0) {
+				throw exception;
+			}
+			String baseName = name.substring(0, index);
+			try {
+				Class<?> resolvedOuterClass = findClassByName(baseName);
+				baseName = resolvedOuterClass.getName();
+			} catch (ClassNotFoundException baseNameException) {
+				throw exception;
+			}
+			Class<?> clazz = classFinder.forName(baseName + '$'
+					+ name.substring(index + 1));
+			return clazz;
+		}
+	}
+
+	/**
+	 * Uses the index to find the type by its name.
+	 * 
+	 * @param name
+	 * @param binaryNestedTypeDelimiter
+	 * @return
+	 */
+	protected JvmType tryFindTypeInIndex(String name,
+			boolean binaryNestedTypeDelimiter) {
+		TypeInResourceSetAdapter adapter = (TypeInResourceSetAdapter) EcoreUtil
+				.getAdapter(getResourceSet().eAdapters(),
+						TypeInResourceSetAdapter.class);
+		if (adapter != null) {
+			return adapter.tryFindTypeInIndex(name, this,
+					binaryNestedTypeDelimiter);
+		} else {
+			return doTryFindInIndex(name, binaryNestedTypeDelimiter);
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	protected IMirror createMirrorForFQN(String name) {
+		try {
+			Class<?> clazz = classFinder.forName(name);
+			return createMirror(clazz);
+		} catch (ClassNotFoundException e) {
+			return null;
+		}
+	}
+
+	/**
+	 * Creates a mirror for the given class.
+	 * 
+	 * @param clazz
+	 * @return
+	 */
+	public ClassMirror createMirror(Class<?> clazz) {
+		return ClassMirror.createClassMirror(clazz, reflectionTypeFactory);
+	}
+
+	/**
+	 * Tries to find the type for the given class and resource.
+	 * 
+	 * @param clazz
+	 * @param resource
+	 * @return
+	 */
+	public JvmType findTypeByClass(Class<?> clazz, Resource resource) {
+		String fragment = uriHelper.getFragment(clazz);
+		JvmType result = (JvmType) resource.getEObject(fragment);
+		if (result == null) {
+			throw new IllegalStateException("Resource has not been loaded");
+		}
+		return result;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeProviderFactory.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeProviderFactory.java
new file mode 100644
index 0000000..6af7c2c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeProviderFactory.java
@@ -0,0 +1,69 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ * 
+ * Based on Xtext org.eclipse.xtext.common.types.access.reflect.ReflectionTypeProviderFactory
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.common.types.access.AbstractTypeProviderFactory;
+
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class BundleSpaceTypeProviderFactory extends AbstractTypeProviderFactory {
+
+	@Inject
+	private BundleSpaceResourceSetProvider bundleSpaceProvider;
+
+	public BundleSpaceTypeProviderFactory() {
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	public BundleSpaceTypeProvider createTypeProvider(ResourceSet resourceSet) {
+		if (resourceSet == null) {
+			throw new IllegalArgumentException("resourceSet may not be null.");
+		}
+		BundleSpaceTypeProvider result = createBundleSpaceTypeProvider(resourceSet);
+		return result;
+	}
+
+	/**
+	 * Creates the bundle space type provider.
+	 * 
+	 * @param resourceSet
+	 * @return
+	 */
+	protected BundleSpaceTypeProvider createBundleSpaceTypeProvider(
+			ResourceSet resourceSet) {
+		return new BundleSpaceTypeProvider(
+				bundleSpaceProvider.getBundleSpace(resourceSet), resourceSet,
+				getIndexedJvmTypeAccess());
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public BundleSpaceTypeProvider createTypeProvider() {
+		return (BundleSpaceTypeProvider) super.createTypeProvider();
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public BundleSpaceTypeProvider findTypeProvider(ResourceSet resourceSet) {
+		return (BundleSpaceTypeProvider) super.findTypeProvider(resourceSet);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeScope.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeScope.java
new file mode 100644
index 0000000..0689043
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeScope.java
@@ -0,0 +1,30 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ * 
+ * Based on Xtext org.eclipse.xtext.common.types.access.reflect.ReflectionTypeScope
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScope;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.resource.IEObjectDescription;
+
+import com.google.common.base.Predicate;
+
+@SuppressWarnings("restriction")
+public class BundleSpaceTypeScope extends AbstractTypeScope {
+
+	public BundleSpaceTypeScope(BundleSpaceTypeProvider typeProvider,
+			IQualifiedNameConverter qualifiedNameConverter,
+			Predicate<IEObjectDescription> filter) {
+		super(typeProvider, qualifiedNameConverter, filter);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeScopeProvider.java b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeScopeProvider.java
new file mode 100644
index 0000000..4280364
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.bundles/src/org/eclipse/osbp/dsl/xtext/types/bundles/BundleSpaceTypeScopeProvider.java
@@ -0,0 +1,77 @@
+/**
+ * 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
+ * 
+ * Contributors: 
+ * 		Florian Pirchner - Initial implementation
+ * 
+ * Based on Xtext org.eclipse.xtext.common.types.access.reflect.ReflectionTypeScopeProvider
+ * 
+ */
+package org.eclipse.osbp.dsl.xtext.types.bundles;
+
+import org.eclipse.xtext.common.types.access.IJvmTypeProvider;
+import org.eclipse.xtext.common.types.xtext.AbstractConstructorScope;
+import org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider;
+import org.eclipse.xtext.naming.IQualifiedNameConverter;
+import org.eclipse.xtext.resource.IEObjectDescription;
+
+import com.google.common.base.Predicate;
+import com.google.inject.Inject;
+
+@SuppressWarnings("restriction")
+public class BundleSpaceTypeScopeProvider extends AbstractTypeScopeProvider {
+
+	@Inject
+	private BundleSpaceTypeProviderFactory typeProviderFactory;
+
+	@Inject
+	private IQualifiedNameConverter qualifiedNameConverter;
+
+	@Inject
+	public BundleSpaceTypeScopeProvider() {
+
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public BundleSpaceTypeScope createTypeScope(IJvmTypeProvider typeProvider,
+			Predicate<IEObjectDescription> filter) {
+		return new BundleSpaceTypeScope((BundleSpaceTypeProvider) typeProvider,
+				qualifiedNameConverter, filter);
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public AbstractConstructorScope createConstructorScope(
+			IJvmTypeProvider typeProvider, Predicate<IEObjectDescription> filter) {
+		BundleSpaceTypeScope typeScope = createTypeScope(typeProvider, filter);
+		return new BundleSpaceConstructorScope(typeScope);
+	}
+
+	/**
+	 * Sets the type provider factory.
+	 * 
+	 * @param typeProviderFactory
+	 */
+	public void setTypeProviderFactory(
+			BundleSpaceTypeProviderFactory typeProviderFactory) {
+		this.typeProviderFactory = typeProviderFactory;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public BundleSpaceTypeProviderFactory getTypeProviderFactory() {
+		return typeProviderFactory;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/.project b/org.eclipse.osbp.xtext.builder.types.loader.api/.project
new file mode 100644
index 0000000..3b1a4db
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.types.loader.api</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/LICENSE.txt b/org.eclipse.osbp.xtext.builder.types.loader.api/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/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.builder.types.loader.api/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.types.loader.api/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..39eb915
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.types.loader.api
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.types.loader.api
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.xtext.builder.types.loader.api;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.slf4j;version="1.7.2"
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/README.txt b/org.eclipse.osbp.xtext.builder.types.loader.api/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/about.html b/org.eclipse.osbp.xtext.builder.types.loader.api/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/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.builder.types.loader.api/about.ini b/org.eclipse.osbp.xtext.builder.types.loader.api/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/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.builder.types.loader.api/about.mappings b/org.eclipse.osbp.xtext.builder.types.loader.api/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/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.builder.types.loader.api/about.properties b/org.eclipse.osbp.xtext.builder.types.loader.api/about.properties
new file mode 100644
index 0000000..90b58b3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.types.loader.api
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/build.properties b/org.eclipse.osbp.xtext.builder.types.loader.api/build.properties
new file mode 100644
index 0000000..0fb94f4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/build.properties
@@ -0,0 +1,6 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/epl-v10.html b/org.eclipse.osbp.xtext.builder.types.loader.api/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/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.builder.types.loader.api/license.html b/org.eclipse.osbp.xtext.builder.types.loader.api/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/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.builder.types.loader.api/plugin.properties b/org.eclipse.osbp.xtext.builder.types.loader.api/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/pom.xml b/org.eclipse.osbp.xtext.builder.types.loader.api/pom.xml
new file mode 100644
index 0000000..b1b4bf9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/pom.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.types.loader.api</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoader.java b/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoader.java
new file mode 100644
index 0000000..0114078
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoader.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.types.loader.api;
+
+public interface ITypeLoader {
+
+	Class<?> findTypeByName(String fullyQualifiedName);
+
+	void dispose();
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoaderFactory.java b/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoaderFactory.java
new file mode 100644
index 0000000..1725dbe
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoaderFactory.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.types.loader.api;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+public interface ITypeLoaderFactory {
+
+	ITypeLoader createTypeLoader(ResourceSet resourceSet);
+	
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoaderProvider.java b/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoaderProvider.java
new file mode 100644
index 0000000..2c4d007
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.api/src/org/eclipse/osbp/xtext/builder/types/loader/api/ITypeLoaderProvider.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.types.loader.api;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+
+public interface ITypeLoaderProvider {
+
+	ITypeLoader get(ResourceSet resourceSet);
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/.project b/org.eclipse.osbp.xtext.builder.types.loader.runtime/.project
new file mode 100644
index 0000000..62dc662
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.types.loader.runtime</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/LICENSE.txt b/org.eclipse.osbp.xtext.builder.types.loader.runtime/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/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.builder.types.loader.runtime/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.types.loader.runtime/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..04370d0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.types.loader.runtime
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.types.loader.runtime
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.xtext.builder.types.loader.runtime;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.api;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.slf4j;version="1.7.2"
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/README.txt b/org.eclipse.osbp.xtext.builder.types.loader.runtime/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/about.html b/org.eclipse.osbp.xtext.builder.types.loader.runtime/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/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.builder.types.loader.runtime/about.ini b/org.eclipse.osbp.xtext.builder.types.loader.runtime/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/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.builder.types.loader.runtime/about.mappings b/org.eclipse.osbp.xtext.builder.types.loader.runtime/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/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.builder.types.loader.runtime/about.properties b/org.eclipse.osbp.xtext.builder.types.loader.runtime/about.properties
new file mode 100644
index 0000000..92c95cb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.types.loader.runtime
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/build.properties b/org.eclipse.osbp.xtext.builder.types.loader.runtime/build.properties
new file mode 100644
index 0000000..0fb94f4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/build.properties
@@ -0,0 +1,6 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/epl-v10.html b/org.eclipse.osbp.xtext.builder.types.loader.runtime/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/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.builder.types.loader.runtime/license.html b/org.eclipse.osbp.xtext.builder.types.loader.runtime/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/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.builder.types.loader.runtime/plugin.properties b/org.eclipse.osbp.xtext.builder.types.loader.runtime/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/pom.xml b/org.eclipse.osbp.xtext.builder.types.loader.runtime/pom.xml
new file mode 100644
index 0000000..4f4660f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.types.loader.runtime</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoader.java b/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoader.java
new file mode 100644
index 0000000..ea6a5c7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoader.java
@@ -0,0 +1,52 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.types.loader.runtime;
+
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpace;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@SuppressWarnings("restriction")
+public class TypeLoader implements ITypeLoader {
+
+	private static final Logger logger = LoggerFactory
+			.getLogger(TypeLoader.class);
+
+	private final BundleSpace bundleSpace;
+
+	/**
+	 * @noreference This constructor is not intended to be referenced by
+	 *              clients.
+	 */
+	public TypeLoader(BundleSpace bundleSpace) {
+		if (bundleSpace == null)
+			throw new IllegalArgumentException("bundleSpace must not be null");
+		this.bundleSpace = bundleSpace;
+	}
+
+	public Class<?> findTypeByName(String fullyQualifiedName) {
+		if (fullyQualifiedName == null || fullyQualifiedName.equals("")) {
+			return null;
+		}
+
+		try {
+			return bundleSpace.forName(fullyQualifiedName);
+		} catch (ClassNotFoundException e) {
+			logger.error("{}", e);
+		}
+		return null;
+	}
+
+	@Override
+	public void dispose() {
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoaderFactory.java b/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoaderFactory.java
new file mode 100644
index 0000000..3b8429e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoaderFactory.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.types.loader.runtime;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpace;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoader;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderFactory;
+
+import com.google.inject.Singleton;
+
+@SuppressWarnings("restriction")
+@Singleton
+public class TypeLoaderFactory implements ITypeLoaderFactory {
+
+	public ITypeLoader createTypeLoader(ResourceSet resourceSet) {
+		if (resourceSet == null)
+			throw new IllegalArgumentException("resourceSet may not be null.");
+
+		XtextResourceSet xtextRS = (XtextResourceSet) resourceSet;
+		Object context = xtextRS.getClasspathURIContext();
+		if (!(context instanceof BundleSpace)) {
+			throw new IllegalArgumentException(
+					"No bundlespace available to load classes.");
+		}
+
+		return new TypeLoader((BundleSpace) context);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoaderProvider.java b/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoaderProvider.java
new file mode 100644
index 0000000..1b2bb20
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.types.loader.runtime/src/org/eclipse/osbp/xtext/builder/types/loader/runtime/TypeLoaderProvider.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.types.loader.runtime;
+
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpace;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoader;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderProvider;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+@SuppressWarnings("restriction")
+public class TypeLoaderProvider implements ITypeLoaderProvider {
+
+	@Inject
+	private ITypeLoaderFactory factory;
+
+	private Map<WeakReference<ResourceSet>, ITypeLoader> loaders = new HashMap<WeakReference<ResourceSet>, ITypeLoader>(
+			3);
+
+	private ReferenceQueue<ResourceSet> referenceQueue = new ReferenceQueue<ResourceSet>();
+
+	@Override
+	public ITypeLoader get(ResourceSet resourceSet) {
+		ITypeLoader loader = null;
+		synchronized (loaders) {
+			cleanUp();
+
+			if (resourceSet == null)
+				throw new IllegalArgumentException(
+						"resourceSet may not be null.");
+
+			XtextResourceSet xtextRS = (XtextResourceSet) resourceSet;
+			Object context = xtextRS.getClasspathURIContext();
+			if (!(context instanceof BundleSpace)) {
+				throw new IllegalArgumentException(
+						"No bundlespace available to load classes.");
+			}
+
+			for (Map.Entry<WeakReference<ResourceSet>, ITypeLoader> entry : loaders
+					.entrySet()) {
+				if (entry.getKey().get() == xtextRS) {
+					loader = entry.getValue();
+					break;
+				}
+			}
+
+			if (loader == null) {
+				loader = factory.createTypeLoader(xtextRS);
+				loaders.put(new WeakReference<ResourceSet>(xtextRS,
+						referenceQueue), loader);
+			}
+		}
+		return loader;
+	}
+
+	private void cleanUp() {
+		while (true) {
+			Reference<? extends ResourceSet> ref = referenceQueue.poll();
+			if (ref == null) {
+				break;
+			}
+			ITypeLoader toDispose = loaders.get(ref);
+			toDispose.dispose();
+			loaders.remove(toDispose);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/.project b/org.eclipse.osbp.xtext.builder.ui.access/.project
new file mode 100644
index 0000000..d8fcfa7
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/.project
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.ui.access</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.pde.ds.core.builder</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/LICENSE.txt b/org.eclipse.osbp.xtext.builder.ui.access/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/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.builder.ui.access/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.ui.access/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..c1c0749
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/META-INF/MANIFEST.MF
@@ -0,0 +1,33 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.ui.access
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.ui.access
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.jdt.core,
+ org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.jdt.launching,
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.types.loader.api;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.osgi.framework.wiring;version="1.1.0",
+ org.osgi.service.component;version="1.2.0",
+ org.osgi.service.component.annotations;version="1.2.0",
+ org.slf4j;version="1.7.2"
+Service-Component: OSGI-INF/org.eclipse.osbp.xtext.builder.ui.access.impl.XtextUtilService.xml
+Export-Package: org.eclipse.osbp.xtext.builder.ui.access;
+  uses:="org.eclipse.emf.ecore,
+   org.eclipse.core.resources,
+   org.eclipse.xtext.resource";version="0.9.0",
+ org.eclipse.osbp.xtext.builder.ui.access.impl;x-internal:=true;version="0.9.0",
+ org.eclipse.osbp.xtext.builder.ui.access.jdt;
+  uses:="org.eclipse.emf.ecore.resource,
+   org.eclipse.jdt.core,
+   org.eclipse.osbp.xtext.builder.types.loader.api";version="0.9.0",
+ org.eclipse.osbp.xtext.builder.ui.access.jdt.impl;x-internal:=true;version="0.9.0"
+Bundle-ActivationPolicy: lazy
+DynamicImport-Package: *
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/OSGI-INF/org.eclipse.osbp.xtext.builder.ui.access.impl.XtextUtilService.xml b/org.eclipse.osbp.xtext.builder.ui.access/OSGI-INF/org.eclipse.osbp.xtext.builder.ui.access.impl.XtextUtilService.xml
new file mode 100644
index 0000000..1757a86
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/OSGI-INF/org.eclipse.osbp.xtext.builder.ui.access.impl.XtextUtilService.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" activate="activate" deactivate="deactivate" name="org.eclipse.osbp.xtext.builder.ui.access.impl.XtextUtilService">
+   <implementation class="org.eclipse.osbp.xtext.builder.ui.access.impl.XtextUtilService"/>
+   <service>
+      <provide interface="org.eclipse.osbp.xtext.builder.ui.access.IXtextUtilService"/>
+   </service>
+</scr:component>
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/README.txt b/org.eclipse.osbp.xtext.builder.ui.access/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/about.html b/org.eclipse.osbp.xtext.builder.ui.access/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/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.builder.ui.access/about.ini b/org.eclipse.osbp.xtext.builder.ui.access/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/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.builder.ui.access/about.mappings b/org.eclipse.osbp.xtext.builder.ui.access/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/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.builder.ui.access/about.properties b/org.eclipse.osbp.xtext.builder.ui.access/about.properties
new file mode 100644
index 0000000..d2e51a8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.ui.access
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/build.properties b/org.eclipse.osbp.xtext.builder.ui.access/build.properties
new file mode 100644
index 0000000..560e566
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/build.properties
@@ -0,0 +1,8 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html,\
+               OSGI-INF/
+output.. = target/classes
+source.. = src/
+jre.compilation.profile = JavaSE-1.6
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/epl-v10.html b/org.eclipse.osbp.xtext.builder.ui.access/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/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.builder.ui.access/license.html b/org.eclipse.osbp.xtext.builder.ui.access/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/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.builder.ui.access/plugin.properties b/org.eclipse.osbp.xtext.builder.ui.access/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/pom.xml b/org.eclipse.osbp.xtext.builder.ui.access/pom.xml
new file mode 100644
index 0000000..acd8d62
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.ui.access</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/IXtextUtilService.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/IXtextUtilService.java
new file mode 100644
index 0000000..0729ef6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/IXtextUtilService.java
@@ -0,0 +1,185 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access;
+
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.xtext.resource.EObjectDescription;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface IXtextUtilService.
+ */
+public interface IXtextUtilService {
+
+	/**
+	 * Returns the project for the given qualified name that contains the java
+	 * class. Returns <code>null</code> if no project is involved.
+	 *
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @return the project
+	 */
+	IProject getProject(String qualifiedName);
+
+	/**
+	 * Returns the project for the given description that contains the element.
+	 * Returns <code>null</code> if no project is involved.
+	 *
+	 * @param description
+	 *            the description
+	 * @return the project
+	 */
+	IProject getProject(IEObjectDescription description);
+
+	/**
+	 * Returns the project for the given description that contains the element.
+	 * Returns <code>null</code> if no project is involved.
+	 *
+	 * @param description
+	 *            the description
+	 * @return the project
+	 */
+	IProject getProject(IResourceDescription description);
+
+	/**
+	 * Returns the project for the given eClass and qualified name that contains
+	 * the xtext model. Returns <code>null</code> if no project is involved.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @return the project
+	 */
+	IProject getProject(EClass eClass, String qualifiedName);
+
+	/**
+	 * Returns a fully configured XtextResourceSet for the uri defined by eClass
+	 * and qualifiedName. It will hook up the java project from workspace and
+	 * installs a properly configured IJdtTypeProvider.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @return the configured xtext resource for
+	 */
+	XtextResourceSet getConfiguredXtextResourceFor(EClass eClass,
+			String qualifiedName);
+
+	/**
+	 * Returns a fully configured XtextResourceSet for the project. It will
+	 * install a properly configured IJdtTypeProvider.
+	 *
+	 * @param project
+	 *            the project
+	 * @return the configured xtext resource for
+	 */
+	XtextResourceSet getConfiguredXtextResourceFor(IProject project);
+
+	/**
+	 * Returns a fully configured XtextResourceSet for the project. It will
+	 * install a properly configured IJdtTypeProvider and uses the given scope
+	 * for loading resource descriptions.
+	 *
+	 * @param project
+	 *            the project
+	 * @param scope
+	 *            the scope
+	 * @return the configured xtext resource for
+	 */
+	XtextResourceSet getConfiguredXtextResourceFor(IProject project, Scope scope);
+
+	/**
+	 * Loads the class for the given qualifiedName. Therefore the java project
+	 * containing the java class is determined and the class is loaded from the
+	 * workspace. To load the class an URLClassLoader is used. The parent
+	 * classloader is the bundle classloader from
+	 * org.eclipse.osbp.xtext.builder.ui.access. Since it defines a
+	 * dynamic-import: "*" all classes contained in the running IDE are loaded
+	 * properly.
+	 *
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @return the class
+	 */
+	Class<?> loadClass(String qualifiedName);
+
+	/**
+	 * See {@link #loadClass(String)}. The main difference is, that this method
+	 * uses a newly prepared class loader.
+	 *
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @return the class
+	 */
+	Class<?> reloadClass(String qualifiedName);
+
+	/**
+	 * Returns the {@link EObjectDescription}s for the given eClass and
+	 * qualifiedName.
+	 *
+	 * @param eClass
+	 *            the e class
+	 * @param qualifiedName
+	 *            the qualified name
+	 * @return the e object descriptions
+	 */
+	Iterable<IEObjectDescription> getEObjectDescriptions(EClass eClass,
+			String qualifiedName);
+
+	/**
+	 * Defines the different scopes of Xtext. See
+	 * {@link ResourceDescriptionsProvider} for details.
+	 */
+	enum Scope {
+		
+		/** The named builder scope. */
+		NAMED_BUILDER_SCOPE(ResourceDescriptionsProvider.NAMED_BUILDER_SCOPE), 
+ /** The live scope. */
+ LIVE_SCOPE(
+				ResourceDescriptionsProvider.LIVE_SCOPE), 
+ /** The persisted descriptions. */
+ PERSISTED_DESCRIPTIONS(
+				ResourceDescriptionsProvider.PERSISTED_DESCRIPTIONS);
+
+		/** The xtext scope. */
+		private String xtextScope;
+
+		/**
+		 * Instantiates a new scope.
+		 *
+		 * @param xtextScope
+		 *            the xtext scope
+		 */
+		Scope(String xtextScope) {
+			this.xtextScope = xtextScope;
+		}
+
+		/**
+		 * Put load option.
+		 *
+		 * @param options
+		 *            the options
+		 */
+		public void putLoadOption(Map<Object, Object> options) {
+			options.put(xtextScope, Boolean.TRUE);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/impl/UiModule.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/impl/UiModule.java
new file mode 100644
index 0000000..d9aaedb
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/impl/UiModule.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.impl;
+
+import org.eclipse.xtext.ui.shared.SharedStateModule;
+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.ui.access.jdt.IJdtTypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoaderProvider;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.impl.JdtTypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.impl.JdtTypeLoaderProvider;
+
+import com.google.inject.Binder;
+import com.google.inject.Singleton;
+
+@SuppressWarnings("restriction")
+public class UiModule extends SharedStateModule {
+
+	public void configureITypeLoaderFactory(Binder binder) {
+		binder.bind(ITypeLoaderFactory.class).to(JdtTypeLoaderFactory.class)
+				.in(Singleton.class);
+		binder.bind(IJdtTypeLoaderFactory.class).to(JdtTypeLoaderFactory.class)
+				.in(Singleton.class);
+	}
+
+	public void configureITypeLoaderProvider(Binder binder) {
+		binder.bind(ITypeLoaderProvider.class).to(JdtTypeLoaderProvider.class)
+				.in(Singleton.class);
+		binder.bind(IJdtTypeLoaderProvider.class)
+				.to(JdtTypeLoaderProvider.class).in(Singleton.class);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/impl/XtextUtilService.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/impl/XtextUtilService.java
new file mode 100644
index 0000000..fd0cd70
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/impl/XtextUtilService.java
@@ -0,0 +1,218 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.impl;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.xtext.common.types.TypesPackage;
+import org.eclipse.xtext.naming.QualifiedName;
+import org.eclipse.xtext.resource.IEObjectDescription;
+import org.eclipse.xtext.resource.IResourceDescription;
+import org.eclipse.xtext.resource.IResourceDescriptions;
+import org.eclipse.xtext.resource.XtextResourceSet;
+import org.eclipse.xtext.ui.containers.JavaProjectsStateHelper;
+import org.eclipse.xtext.ui.resource.XtextResourceSetProvider;
+import org.eclipse.xtext.ui.shared.Access;
+import org.eclipse.xtext.util.Pair;
+import org.eclipse.osbp.xtext.builder.ui.access.IXtextUtilService;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoader;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoaderProvider;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@SuppressWarnings({ "unused", "restriction" })
+@Component(service = { IXtextUtilService.class })
+public class XtextUtilService implements IXtextUtilService {
+
+	private ComponentContext context;
+	private Injector injector;
+	private IResourceDescriptions resourceDescriptions;
+	private JavaProjectsStateHelper javaStateHelper;
+	private XtextResourceSetProvider resourceSetProvider;
+	private IJdtTypeLoaderProvider typeLoaderProvider;
+	private IJdtTypeLoaderFactory typeLoaderFactory;
+
+	public XtextUtilService() {
+
+	}
+
+	@Activate
+	protected void activate(ComponentContext context) {
+		this.context = context;
+
+		injector = Guice.createInjector(new UiModule());
+		resourceDescriptions = Access.getIResourceDescriptions().get();
+		javaStateHelper = injector.getInstance(JavaProjectsStateHelper.class);
+		resourceSetProvider = injector
+				.getInstance(XtextResourceSetProvider.class);
+		typeLoaderProvider = injector.getInstance(IJdtTypeLoaderProvider.class);
+		typeLoaderFactory = injector.getInstance(IJdtTypeLoaderFactory.class);
+	}
+
+	@Deactivate
+	protected void deactivate(ComponentContext context) {
+		this.context = null;
+		injector = null;
+	}
+
+	@Override
+	public IProject getProject(String qualifiedName) {
+		IEObjectDescription temp = null;
+		for (IEObjectDescription desc : getEObjectDescriptionsForJvmTypes(qualifiedName)) {
+			temp = desc;
+			break;
+		}
+		IProject project = getProject(temp);
+		return project;
+	}
+
+	@Override
+	public IProject getProject(EClass eClass, String qualifiedName) {
+		IEObjectDescription temp = null;
+		for (IEObjectDescription desc : getEObjectDescriptions(eClass,
+				qualifiedName)) {
+			temp = desc;
+			break;
+		}
+		IProject project = getProject(temp);
+		return project;
+	}
+
+	public IProject getProject(IEObjectDescription desc) {
+		IProject project = null;
+		if (desc != null) {
+			Iterable<Pair<IStorage, IProject>> storages = javaStateHelper
+					.getMapper().getStorages(
+							desc.getEObjectURI().trimFragment());
+
+			for (Pair<IStorage, IProject> pair : storages) {
+				project = pair.getSecond();
+				break;
+			}
+		}
+		return project;
+	}
+
+	@Override
+	public IProject getProject(IResourceDescription description) {
+		IProject project = null;
+		if (description != null) {
+			Iterable<Pair<IStorage, IProject>> storages = javaStateHelper
+					.getMapper().getStorages(description.getURI());
+
+			for (Pair<IStorage, IProject> pair : storages) {
+				project = pair.getSecond();
+				break;
+			}
+		}
+		return project;
+	}
+
+	@Override
+	public XtextResourceSet getConfiguredXtextResourceFor(EClass eClass,
+			String qualifiedName) {
+		IEObjectDescription firstDesc = null;
+		for (IEObjectDescription desc : getEObjectDescriptions(eClass,
+				qualifiedName)) {
+			firstDesc = desc;
+			break;
+		}
+
+		XtextResourceSet resourceSet = null;
+		if (firstDesc != null) {
+			IProject project = getProject(firstDesc);
+			if (project != null) {
+				resourceSet = (XtextResourceSet) resourceSetProvider
+						.get(project);
+				resourceSet.getResource(firstDesc.getEObjectURI()
+						.trimFragment(), true);
+			}
+		}
+		return resourceSet;
+	}
+
+	@Override
+	public XtextResourceSet getConfiguredXtextResourceFor(IProject project) {
+		return getConfiguredXtextResourceFor(project, null);
+	}
+
+	@Override
+	public XtextResourceSet getConfiguredXtextResourceFor(IProject project,
+			Scope scope) {
+		XtextResourceSet resourceSet = null;
+		if (project != null) {
+			if (project != null) {
+				resourceSet = (XtextResourceSet) resourceSetProvider
+						.get(project);
+				if (scope != null) {
+					scope.putLoadOption(resourceSet.getLoadOptions());
+				}
+			}
+		}
+		return resourceSet;
+	}
+
+	public Iterable<IEObjectDescription> getEObjectDescriptions(EClass eClass,
+			String qualifiedName) {
+		Iterable<IEObjectDescription> result = resourceDescriptions
+				.getExportedObjects(eClass,
+						QualifiedName.create(qualifiedName.split("\\.")), true);
+		return result;
+	}
+
+	private Iterable<IEObjectDescription> getEObjectDescriptionsForJvmTypes(
+			String qualifiedName) {
+		Iterable<IEObjectDescription> result = resourceDescriptions
+				.getExportedObjects(TypesPackage.Literals.JVM_TYPE,
+						QualifiedName.create(qualifiedName.split("\\.")), true);
+		return result;
+	}
+
+	public Class<?> loadClass(String qualifiedName) {
+		IEObjectDescription firstDesc = null;
+		for (IEObjectDescription desc : getEObjectDescriptionsForJvmTypes(qualifiedName)) {
+			firstDesc = desc;
+			break;
+		}
+
+		if (firstDesc != null) {
+			IProject project = getProject(firstDesc);
+			IJdtTypeLoader loader = typeLoaderProvider.get(JavaCore
+					.create(project));
+			return loader.findTypeByName(qualifiedName);
+		}
+		return null;
+	}
+
+	public Class<?> reloadClass(String qualifiedName) {
+		IEObjectDescription firstDesc = null;
+		for (IEObjectDescription desc : getEObjectDescriptionsForJvmTypes(qualifiedName)) {
+			firstDesc = desc;
+			break;
+		}
+
+		if (firstDesc != null) {
+			IProject project = getProject(firstDesc);
+			IJdtTypeLoader loader = typeLoaderFactory
+					.createJdtTypeLoader(JavaCore.create(project));
+			return loader.findTypeByName(qualifiedName);
+		}
+		return null;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoader.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoader.java
new file mode 100644
index 0000000..cad16cd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoader.java
@@ -0,0 +1,18 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.jdt;
+
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoader;
+
+@SuppressWarnings("restriction")
+public interface IJdtTypeLoader extends ITypeLoader {
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoaderFactory.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoaderFactory.java
new file mode 100644
index 0000000..641c1d6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoaderFactory.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.jdt;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderFactory;
+
+@SuppressWarnings("restriction")
+public interface IJdtTypeLoaderFactory extends ITypeLoaderFactory {
+
+	IJdtTypeLoader createJdtTypeLoader(ResourceSet resourceSet);
+
+	IJdtTypeLoader createJdtTypeLoader(IJavaProject javaProject);
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoaderProvider.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoaderProvider.java
new file mode 100644
index 0000000..4f9eeb5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/IJdtTypeLoaderProvider.java
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.jdt;
+
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoaderProvider;
+
+@SuppressWarnings("restriction")
+public interface IJdtTypeLoaderProvider extends ITypeLoaderProvider {
+
+	IJdtTypeLoader get(IJavaProject project);
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoader.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoader.java
new file mode 100644
index 0000000..a12557d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoader.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.jdt.impl;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoader;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Class JdtTypeLoader.
+ */
+public class JdtTypeLoader implements IJdtTypeLoader {
+
+	/** The java project. */
+	private final IJavaProject javaProject;
+	
+	/** The class loader. */
+	private URLClassLoader classLoader;
+
+	/**
+	 * Instantiates a new jdt type loader.
+	 *
+	 * @param javaProject
+	 *            the java project
+	 * @since 2.4
+	 * @noreference This constructor is not intended to be referenced by
+	 *              clients.
+	 */
+	public JdtTypeLoader(IJavaProject javaProject) {
+		if (javaProject == null)
+			throw new IllegalArgumentException("javaProject may not be null");
+		this.javaProject = javaProject;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoader#findTypeByName(java.lang.String)
+	 */
+	public Class<?> findTypeByName(String fullyQualifiedName) {
+		if (fullyQualifiedName == null || fullyQualifiedName.equals("")) {
+			return null;
+		}
+		try {
+			synchronized (this) {
+				ClassLoader classloader = getClassloader();
+				return classloader.loadClass(fullyQualifiedName);
+			}
+		} catch (JavaModelException e) {
+			throw new IllegalStateException(e);
+		} catch (ClassNotFoundException e) {
+			// nothing to do
+		} catch (CoreException e) {
+			throw new IllegalStateException(e);
+		} catch (MalformedURLException e) {
+			throw new IllegalStateException(e);
+		} catch(NoClassDefFoundError e){
+			// nothing to do
+		}
+
+		return null;
+	}
+
+	/**
+	 * Returns the class loader if not available.
+	 *
+	 * @return the classloader
+	 * @throws CoreException
+	 *             the core exception
+	 * @throws MalformedURLException
+	 *             the malformed url exception
+	 */
+	private ClassLoader getClassloader() throws CoreException,
+			MalformedURLException {
+		if (classLoader != null) {
+			return classLoader;
+		}
+
+		String[] classPathEntries = JavaRuntime
+				.computeDefaultRuntimeClassPath(javaProject);
+
+		Set<URL> urlList = new HashSet<URL>();
+		for (int i = 0; i < classPathEntries.length; i++) {
+			String entry = classPathEntries[i];
+			IPath path = new Path(entry);
+			URL url = path.toFile().toURI().toURL();
+			urlList.add(url);
+		}
+
+		// the parentClassLoader contains references to required ECView classes
+		ClassLoader parentClassLoader = getClass().getClassLoader();
+		URL[] urls = (URL[]) urlList.toArray(new URL[urlList.size()]);
+		classLoader = new URLClassLoader(urls, parentClassLoader);
+
+		return classLoader;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.xtext.builder.types.loader.api.ITypeLoader#dispose()
+	 */
+	@Override
+	public void dispose() {
+		synchronized (this) {
+			// try {
+			if (classLoader != null) {
+				// classLoader.close();
+				classLoader = null;
+			}
+			// } catch (IOException e) {
+			// throw new IllegalStateException(e);
+			// }
+		}
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoaderFactory.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoaderFactory.java
new file mode 100644
index 0000000..a4c1434
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoaderFactory.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.jdt.impl;
+
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoader;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoaderFactory;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class JdtTypeLoaderFactory implements IJdtTypeLoaderFactory {
+
+	@Inject
+	private IJavaProjectProvider javaProjectProvider;
+
+	public IJdtTypeLoader createJdtTypeLoader(ResourceSet resourceSet) {
+		if (resourceSet == null)
+			throw new IllegalArgumentException("resourceSet may not be null.");
+		IJavaProject javaProject = javaProjectProvider
+				.getJavaProject(resourceSet);
+		IJdtTypeLoader result = createJdtTypeLoader(javaProject);
+		return result;
+	}
+
+	public IJdtTypeLoader createJdtTypeLoader(IJavaProject javaProject) {
+		return new JdtTypeLoader(javaProject);
+	}
+
+	@Override
+	public IJdtTypeLoader createTypeLoader(ResourceSet resourceSet) {
+		return createJdtTypeLoader(resourceSet);
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoaderProvider.java b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoaderProvider.java
new file mode 100644
index 0000000..75a436d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.ui.access/src/org/eclipse/osbp/xtext/builder/ui/access/jdt/impl/JdtTypeLoaderProvider.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.ui.access.jdt.impl;
+
+import java.lang.ref.Reference;
+import java.lang.ref.ReferenceQueue;
+import java.lang.ref.WeakReference;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.xtext.common.types.access.jdt.IJavaProjectProvider;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoader;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoaderFactory;
+import org.eclipse.osbp.xtext.builder.ui.access.jdt.IJdtTypeLoaderProvider;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class JdtTypeLoaderProvider implements IJdtTypeLoaderProvider {
+
+	@Inject
+	private IJavaProjectProvider javaProjectProvider;
+
+	@Inject
+	private IJdtTypeLoaderFactory factory;
+
+	private Map<WeakReference<IProject>, IJdtTypeLoader> loaders = new HashMap<WeakReference<IProject>, IJdtTypeLoader>(
+			3);
+
+	private ReferenceQueue<IProject> referenceQueue = new ReferenceQueue<IProject>();
+
+	@Override
+	public IJdtTypeLoader get(ResourceSet resourceSet) {
+		IJavaProject javaProject = javaProjectProvider
+				.getJavaProject(resourceSet);
+		if (javaProject == null) {
+			return null;
+		}
+
+		IJdtTypeLoader loader = get(javaProject);
+
+		return loader;
+	}
+
+	@Override
+	public IJdtTypeLoader get(IJavaProject javaProject) {
+		IJdtTypeLoader loader = null;
+		synchronized (loaders) {
+			cleanUp();
+
+			IProject project = javaProject.getProject();
+			for (Map.Entry<WeakReference<IProject>, IJdtTypeLoader> entry : loaders
+					.entrySet()) {
+				if (entry.getKey().get() == project) {
+					loader = entry.getValue();
+					break;
+				}
+			}
+
+			if (loader == null) {
+				loader = factory.createJdtTypeLoader(javaProject);
+				loaders.put(
+						new WeakReference<IProject>(project, referenceQueue),
+						loader);
+			}
+		}
+		return loader;
+	}
+
+	@SuppressWarnings("restriction")
+	private void cleanUp() {
+		while (true) {
+			Reference<? extends IProject> ref = referenceQueue.poll();
+			if (ref == null) {
+				break;
+			}
+			IJdtTypeLoader toDispose = loaders.get(ref);
+			toDispose.dispose();
+			loaders.remove(toDispose);
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/.project b/org.eclipse.osbp.xtext.builder.xbase.setups/.project
new file mode 100644
index 0000000..4b501e9
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/.project
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.builder.xbase.setups</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.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
+	</natures>
+</projectDescription>
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/LICENSE.txt b/org.eclipse.osbp.xtext.builder.xbase.setups/LICENSE.txt
new file mode 100644
index 0000000..ff42ad4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/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.builder.xbase.setups/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.builder.xbase.setups/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..023d7ff
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/META-INF/MANIFEST.MF
@@ -0,0 +1,17 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.builder.xbase.setups
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.builder.xbase.setups
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.osbp.xtext.builder.xbase.setups;x-internal:="true";version="0.9.0"
+Require-Bundle: com.google.guava;bundle-version="[10.0.0,19.0.0)",
+ org.objectweb.asm;bundle-version="3.3.1",
+ org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.builder.types.bundles;bundle-version="[0.9.0,0.10.0)"
+Import-Package: org.osgi.framework;version="1.7.0",
+ org.slf4j;version="1.7.2"
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/README.txt b/org.eclipse.osbp.xtext.builder.xbase.setups/README.txt
new file mode 100644
index 0000000..37a4f59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/README.txt
@@ -0,0 +1,56 @@
+-------------------------------------------------------------------------------------------------
+-----------------  C U S T O M    O P E R A T I O N    -    LEntityMemberImpl  ------------------
+-------------------------------------------------------------------------------------------------
+LEntityMemberImpl contains custom operation
+	/**
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * 
+	 * @generated NOT
+	 */
+	public EList<LAnnotationDef> getAnnotations() {
+		if (getAnnotationInfo() != null) {
+			return getAnnotationInfo().getAnnotations();
+		}
+		return super.getAnnotations();
+	}
+	
+It delegates the call to the annotation info. That is required to avoid antlr parser errors.
+Therefore see also Entity.xtext
+Rule:
+EntityMember returns LEntityMember:
+	{LEntityMember}
+	annotations+=LAnnotationDef*
+	({LProperty.annotationInfo=current}
+		'var' ((id?='id') | (version?='version') | (transient?='transient'))? type=JvmTypeReference
+		multiplicity=LMultiplicity?
+		name=ValidIDWithKeywords ('=' defaultValueLiteral=STRING)?
+	| {LRefers.annotationInfo=current}
+		'refers' ((lazy?='lazy')? & (notnull?='notnull')?)
+		type=[LEntity|LFQN]
+	...
+	...
+	...
+	
+	
+-------------------------------------------------------------------------------------------------
+-----------------  C O M P I L E R   T E M P L A T E                           ------------------
+-------------------------------------------------------------------------------------------------
+	
+The package org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services contains some interfaces. The core is
+delegating to them to ensure the right compiler is chosen. Each of the interfaces requires the implementation
+of method
+
+boolean isResponsible(LCompilerType compilerType);
+
+It should return true, if the implementation should be used for the compiler types.
+
+Providing them:
+See org.eclipse.osbp.dsl.entity.xtext.jvmmodel.services.jpa.DefaultJPACompiler.entitymodel
+This model provides the JPA Compiler as a template to the Xtext document in the IDE editor.
+
+Currently 2 different compilers are implemented:
+EntityCompiler -> No compilerType definition file required since this is the default
+JPACompiler -> Generates all the entities in JPA type and adds default annotations to the beans.
+
+They can be overridden by specifying annotations directly in the entitymodel file. Note the 'exclude' modifier
+of all entity definitions. It can be used to suppress the generation of that types of annotations.
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/about.html b/org.eclipse.osbp.xtext.builder.xbase.setups/about.html
new file mode 100644
index 0000000..64c0598
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/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.builder.xbase.setups/about.ini b/org.eclipse.osbp.xtext.builder.xbase.setups/about.ini
new file mode 100644
index 0000000..7df671f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/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.builder.xbase.setups/about.mappings b/org.eclipse.osbp.xtext.builder.xbase.setups/about.mappings
new file mode 100644
index 0000000..4511a0a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/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.builder.xbase.setups/about.properties b/org.eclipse.osbp.xtext.builder.xbase.setups/about.properties
new file mode 100644
index 0000000..9fba796
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/about.properties
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), 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:
+#    Loetz GmbH&Co.KG - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+featureName=org.eclipse.osbp.xtext.builder.xbase.setups
+
+################ 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\
+    Loetz GmbH&Co.KG - implementation\n
+################ end of blurb property ####################################
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/build.properties b/org.eclipse.osbp.xtext.builder.xbase.setups/build.properties
new file mode 100644
index 0000000..0fb94f4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/build.properties
@@ -0,0 +1,6 @@
+bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+               .,\
+               epl-v10.html,\
+               license.html
+output.. = target/classes
+source.. = src/
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/epl-v10.html b/org.eclipse.osbp.xtext.builder.xbase.setups/epl-v10.html
new file mode 100644
index 0000000..b398acc
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/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.builder.xbase.setups/license.html b/org.eclipse.osbp.xtext.builder.xbase.setups/license.html
new file mode 100644
index 0000000..6e579a5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/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.builder.xbase.setups/plugin.properties b/org.eclipse.osbp.xtext.builder.xbase.setups/plugin.properties
new file mode 100644
index 0000000..176c2d8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Lang Model
+providerName = www.example.org
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/pom.xml b/org.eclipse.osbp.xtext.builder.xbase.setups/pom.xml
new file mode 100644
index 0000000..584b825
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/pom.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), -->
+<!--# 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: -->
+<!--# Florian Pirchner - Initial 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.dsl</groupId>
+		<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+		<version>0.9.0-SNAPSHOT</version>
+		<relativePath>..</relativePath>
+	</parent>
+
+    <artifactId>org.eclipse.osbp.xtext.builder.xbase.setups</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+    <build>
+        <sourceDirectory>src</sourceDirectory>
+    </build>
+</project>
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..24e362c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseBundleSpaceRuntimeModule.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.xbase.setups;
+
+import org.eclipse.xtext.xbase.XbaseRuntimeModule;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+@SuppressWarnings("restriction")
+public class XbaseBundleSpaceRuntimeModule extends XbaseRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..d93dbf2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseBundleSpaceStandaloneSetup.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.xbase.setups;
+
+import org.eclipse.xtext.xbase.XbaseStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+public class XbaseBundleSpaceStandaloneSetup extends XbaseStandaloneSetup {
+
+	public Injector createInjector() {
+		return Guice.createInjector(new XbaseBundleSpaceRuntimeModule());
+	}
+}
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseWithAnnotationsBundleSpaceRuntimeModule.java b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseWithAnnotationsBundleSpaceRuntimeModule.java
new file mode 100644
index 0000000..5c324bd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseWithAnnotationsBundleSpaceRuntimeModule.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.xbase.setups;
+
+import org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsRuntimeModule;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeProviderFactory;
+import org.eclipse.osbp.dsl.xtext.types.bundles.BundleSpaceTypeScopeProvider;
+
+
+@SuppressWarnings("restriction")
+public class XbaseWithAnnotationsBundleSpaceRuntimeModule extends
+		XbaseWithAnnotationsRuntimeModule {
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.access.IJvmTypeProvider.Factory> bindIJvmTypeProvider$Factory() {
+		return BundleSpaceTypeProviderFactory.class;
+	}
+
+	// contributed by org.eclipse.xtext.generator.types.TypesGeneratorFragment
+	public Class<? extends org.eclipse.xtext.common.types.xtext.AbstractTypeScopeProvider> bindAbstractTypeScopeProvider() {
+		return BundleSpaceTypeScopeProvider.class;
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseWithAnnotationsBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseWithAnnotationsBundleSpaceStandaloneSetup.java
new file mode 100644
index 0000000..6433303
--- /dev/null
+++ b/org.eclipse.osbp.xtext.builder.xbase.setups/src/org/eclipse/osbp/xtext/builder/xbase/setups/XbaseWithAnnotationsBundleSpaceStandaloneSetup.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *         Florian Pirchner - Initial implementation
+ */
+package org.eclipse.osbp.xtext.builder.xbase.setups;
+
+import org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsStandaloneSetup;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+@SuppressWarnings("restriction")
+public class XbaseWithAnnotationsBundleSpaceStandaloneSetup extends
+		XbaseWithAnnotationsStandaloneSetup {
+
+	public Injector createInjectorAndDoEMFRegistration() {
+		XbaseBundleSpaceStandaloneSetup.doSetup();
+
+		Injector injector = createInjector();
+		register(injector);
+		return injector;
+	}
+
+	public Injector createInjector() {
+		return Guice
+				.createInjector(new XbaseWithAnnotationsBundleSpaceRuntimeModule());
+	}
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..50f6e8b
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--#======================================================================= -->
+<!--# 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 -->
+<!--# -->
+<!--# Contributors: -->
+<!--# Florian Pirchner - initial API and implementation -->
+<!--# Christophe Loetz - various extensions --> 
+<!--#======================================================================= -->
+<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>
+	</parent>
+
+	<groupId>org.eclipse.osbp.dsl</groupId>
+	<artifactId>org.eclipse.osbp.dsl.aggregator</artifactId>
+	<packaging>pom</packaging>
+
+	<url>${distribution.site.url}</url>
+	<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>
+		<osbp.build.p2.project.name>org.eclipse.osbp.dsl.p2</osbp.build.p2.project.name>
+		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+		<xtext.version>2.7.3</xtext.version>
+		<osbp.jacoco.include>org.eclipse.osbp.dsl.*</osbp.jacoco.include>
+		<sonar.skippedModules>
+			org.eclipse.osbp.dsl.common.xtext.tests,
+			org.eclipse.osbp.dsl.datatype.xtext.tests,
+			org.eclipse.osbp.dsl.dto.xtext.tests,
+			org.eclipse.osbp.dsl.entity.xtext.tests,
+			org.eclipse.osbp.dsl.services.xtext.tests,
+			org.eclipse.osbp.dsl.xtext.builder.participant.tests,
+			org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests,
+			org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests,
+			org.eclipse.osbp.xtext.builder.participant.xbase.extender.tests,
+			org.eclipse.osbp.xtext.builder.participant.xbase.tests,
+			org.eclipse.xtext.example.domainmodel
+		</sonar.skippedModules>
+	</properties>
+
+	<modules>
+		<module>org.eclipse.osbp.dsl.mwe</module>
+
+		<module>org.eclipse.osbp.dsl.common.xtext</module>
+		<module>org.eclipse.osbp.xtext.basic.ui</module>
+		<module>org.eclipse.osbp.dsl.common.xtext.edit</module>
+		<module>org.eclipse.osbp.dsl.common.xtext.ui</module>
+
+		<module>org.eclipse.osbp.dsl.datatype.xtext</module>
+		<module>org.eclipse.osbp.dsl.datatype.xtext.ui</module>
+		<module>org.eclipse.osbp.dsl.datatype.lib</module>
+
+		<module>org.eclipse.osbp.dsl.entity.xtext</module>
+		<module>org.eclipse.osbp.dsl.entity.xtext.edit</module>
+		<module>org.eclipse.osbp.dsl.entity.xtext.ui</module>
+
+		<module>org.eclipse.osbp.dsl.dto.lib</module>
+		<module>org.eclipse.osbp.dsl.dto.xtext</module>
+		<module>org.eclipse.osbp.dsl.dto.xtext.edit</module>
+		<module>org.eclipse.osbp.dsl.dto.xtext.ui</module>
+
+		<module>org.eclipse.osbp.dsl.services.xtext</module>
+		<module>org.eclipse.osbp.dsl.services.xtext.edit</module>
+		<module>org.eclipse.osbp.dsl.services.xtext.ui</module>
+
+		<module>org.eclipse.osbp.dsl.xtext.lazyresolver</module>
+		<module>org.eclipse.osbp.dsl.xtext.lazyresolver.ui</module>
+		<module>org.eclipse.osbp.dsl.xtext.lazyresolver.api</module>
+
+		<module>org.eclipse.osbp.xtext.builder.metadata.services</module>
+
+		<module>org.eclipse.osbp.dsl.xtext.builder.participant</module>
+		<module>org.eclipse.osbp.xtext.builder.participant.jvmtypes</module>
+		<module>org.eclipse.osbp.xtext.builder.participant.jvmtypes.extender.tests</module>
+		<module>org.eclipse.osbp.xtext.builder.participant.jvmtypes.tests</module>
+		<module>org.eclipse.osbp.xtext.builder.types.bundles</module>
+		<module>org.eclipse.osbp.xtext.builder.ui.access</module>
+		<module>org.eclipse.osbp.xtext.builder.xbase.setups</module>
+
+		<module>org.eclipse.osbp.dsl.eclipse.ui</module>
+		<module>org.eclipse.osbp.dsl.eclipse.ui.examples</module>
+
+		<!-- Tests -->
+		<!-- <module>org.eclipse.osbp.dsl.xtext.builder.participant.tests</module> -->
+		<!-- <module>org.eclipse.osbp.dsl.entity.xtext.tests</module> -->
+		<!-- <module>org.eclipse.osbp.dsl.entity.xtext.grammar.tests</module> -->
+
+		<!-- External bundles for runtimebuilder test -->
+		<!-- <module>org.eclipse.xtext.example.domainmodel</module> -->
+
+		<!-- Example for test -->
+		<!-- <module>org.eclipse.osbp.xtext.builder.participant.dmodelsample</module> -->
+		<!-- <module>org.eclipse.osbp.xtext.builder.participant.dmodelsample.tests</module> -->
+
+		<module>org.eclipse.osbp.xtext.builder.types.loader.api</module>
+		<module>org.eclipse.osbp.xtext.builder.types.loader.runtime</module>
+
+		<!-- P2 features -->
+		<module>org.eclipse.osbp.dsl.feature.entities</module>
+		<module>org.eclipse.osbp.dsl.feature.entities.headless</module>
+		<module>org.eclipse.osbp.dsl.feature.common</module>
+		<module>org.eclipse.osbp.dsl.feature.common.headless</module>
+		<module>org.eclipse.osbp.dsl.feature.dto</module>
+		<module>org.eclipse.osbp.dsl.feature.dto.headless</module>
+		<module>org.eclipse.osbp.dsl.feature.eclipse.ui</module>
+		<module>org.eclipse.osbp.dsl.feature.metadata.builder.participant</module>
+
+		<module>org.eclipse.osbp.xtext.builder.feature.types</module>
+		<module>org.eclipse.osbp.xtext.builder.feature.runtime</module>
+		<module>org.eclipse.osbp.xtext.builder.feature.service.jvmtypes</module>
+		<module>org.eclipse.osbp.xtext.builder.feature.ui.access</module>
+	</modules>
+
+	<build>
+		<pluginManagement>
+			<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>
+								</sources>
+							</configuration>
+						</execution>
+					</executions>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.tycho</groupId>
+					<artifactId>tycho-source-plugin</artifactId>
+					<version>${tycho-version}</version>
+					<executions>
+						<execution>
+							<id>plugin-source</id>
+							<goals>
+								<goal>plugin-source</goal>
+							</goals>
+						</execution>
+					</executions>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.xtend</groupId>
+					<artifactId>xtend-maven-plugin</artifactId>
+					<version>${xtext.version}</version>
+					<executions>
+						<execution>
+							<goals>
+								<goal>compile</goal>
+								<goal>xtend-install-debug-info</goal>
+								<goal>testCompile</goal>
+								<goal>xtend-test-install-debug-info</goal>
+							</goals>
+						</execution>
+					</executions>
+					<configuration>
+						<outputDirectory>xtend-gen</outputDirectory>
+					</configuration>
+				</plugin>
+				<plugin>
+					<groupId>org.eclipse.osbp.tools.maven</groupId>
+					<artifactId>org.eclipse.osbp.tools.maven.entity</artifactId>
+					<version>0.9.0-SNAPSHOT</version>
+					<executions>
+						<execution>
+							<goals>
+								<goal>compile</goal>
+								<goal>testCompile</goal>
+							</goals>
+						</execution>
+					</executions>
+					<configuration>
+						<outputDirectory>src-gen</outputDirectory>
+					</configuration>
+				</plugin>
+			</plugins>
+		</pluginManagement>
+		<plugins>
+			<plugin>
+				<groupId>org.eclipse.tycho</groupId>
+				<artifactId>tycho-compiler-plugin</artifactId>
+				<configuration>
+					<compilerVersion>1.8</compilerVersion>
+					<encoding>UTF-8</encoding>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<artifactId>maven-clean-plugin</artifactId>
+				<configuration>
+					<filesets>
+						<fileset>
+							<directory>xtend-gen</directory>
+							<includes>
+								<include>**</include>
+							</includes>
+						</fileset>
+					</filesets>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.eclipse.xtend</groupId>
+				<artifactId>xtend-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<goals>
+							<goal>compile</goal>
+							<goal>testCompile</goal>
+						</goals>
+						<configuration>
+							<outputDirectory>xtend-gen</outputDirectory>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+</project>